/var/www/hkosl.com/b2b2c/webadmin/libraies/twilio/sdk/Services/Twilio/ListResource.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
<?php

/**
 * @author   Neuman Vong neuman@twilio.com
 * @license  http://creativecommons.org/licenses/MIT/ MIT
 * @link     http://pear.php.net/package/Services_Twilio
 */

/**
 * Abstraction of a list resource from the Twilio API.
 *
 * The list resource implements the `IteratorAggregate
 * <http://php.net/manual/en/class.iteratoraggregate.php>`_ and the `Countable
 * <http://php.net/manual/en/class.countable.php>`_ interfaces.
 *
 */
abstract class Services_Twilio_ListResource extends Services_Twilio_Resource
    
implements IteratorAggregate
{

    public function 
__construct($client$uri) {
        
$name $this->getResourceName(true);
        
/*
         * By default trim the 's' from the end of the list name to get the
         * instance name (ex Accounts -> Account). This behavior can be
         * overridden by child classes if the rule doesn't work.
         */
        
if (!isset($this->instance_name)) {
            
$this->instance_name "Services_Twilio_Rest_" rtrim($name's');
        }

        
parent::__construct($client$uri);
    }

    
/**
     * Gets a resource from this list.
     *
     * :param string $sid: The resource SID
     * :return: The resource
     * :rtype: :php:class:`InstanceResource <Services_Twilio_InstanceResource>`
     */
    
public function get($sid) {
        
$instance = new $this->instance_name(
            
$this->client$this->uri "/$sid"
        
);
        
// XXX check if this is actually a sid in all cases.
        
$instance->sid $sid;
        return 
$instance;
    }

    
/**
     * Construct an :php:class:`InstanceResource
     * <Services_Twilio_InstanceResource>` with the specified params.
     *
     * :param array $params: usually a JSON HTTP response from the API
     * :return: An instance with properties
     *      initialized to the values in the params array.
     * :rtype: :php:class:`InstanceResource <Services_Twilio_InstanceResource>`
     */
    
public function getObjectFromJson($params$idParam "sid")
    {
        if (isset(
$params->{$idParam})) {
            
$uri $this->uri "/" $params->{$idParam};
        } else {
            
$uri $this->uri;
        }
        return new 
$this->instance_name($this->client$uri$params);
    }

    
/**
     * Deletes a resource from this list.
     *
     * :param string $sid: The resource SID
     * :rtype: null
     */
    
public function delete($sid$params = array())
    {
        
$this->client->deleteData($this->uri '/' $sid$params);
    }

    
/**
     * Create a resource on the list and then return its representation as an
     * InstanceResource.
     *
     * :param array $params: The parameters with which to create the resource
     *
     * :return: The created resource
     * :rtype: :php:class:`InstanceResource <Services_Twilio_InstanceResource>`
     */
    
protected function _create($params)
    {
        
$params $this->client->createData($this->uri$params);
        
/* Some methods like verified caller ID don't return sids. */
        
if (isset($params->sid)) {
            
$resource_uri $this->uri '/' $params->sid;
        } else {
            
$resource_uri $this->uri;
        }
        return new 
$this->instance_name($this->client$resource_uri$params);
    }

    
/**
     * Returns a page of :php:class:`InstanceResources
     * <Services_Twilio_InstanceResource>` from this list.
     *
     * :param int    $page: The start page
     * :param int    $size: Number of items per page
     * :param array  $filters: Optional filters
     * :param string $deep_paging_uri: if provided, the $page and $size
     *      parameters will be ignored and this URI will be requested directly.
     *
     * :return: A page of resources
     * :rtype: :php:class:`Services_Twilio_Page`
     */
    
public function getPage(
        
$page 0$size 50$filters = array(), $deep_paging_uri null
    
) {
        
$list_name $this->getResourceName();
        if (
$deep_paging_uri !== null) {
            
$page $this->client->retrieveData($deep_paging_uri, array(), true);
        } else {
            
$page $this->client->retrieveData($this->uri, array(
                
'Page' => $page,
                
'PageSize' => $size,
            ) + 
$filters);
        }

        
/* create a new PHP object for each json obj in the api response. */
        
$page->$list_name array_map(
            array(
$this'getObjectFromJson'),
            
$page->$list_name
        
);
        if (isset(
$page->next_page_uri)) {
            
$next_page_uri $page->next_page_uri;
        } else {
            
$next_page_uri null;
        }
        return new 
Services_Twilio_Page($page$list_name$next_page_uri);
    }

    
/**
     * Returns an iterable list of
     * :php:class:`instance resources <Services_Twilio_InstanceResource>`.
     *
     * :param int   $page: The start page
     * :param int   $size: Number of items per page
     * :param array $filters: Optional filters.
     *      The filter array can accept full datetimes when StartTime or DateCreated
     *      are used. Inequalities should be within the key portion of the array and
     *      multiple filter parameters can be combined for more specific searches.
     *
     *      .. code-block:: php
     *
     *          array('DateCreated>' => '2011-07-05 08:00:00', 'DateCreated<' => '2011-08-01')
     *
     *      .. code-block:: php
     *
     *          array('StartTime<' => '2011-07-05 08:00:00')
     *
     * :return: An iterator
     * :rtype: :php:class:`Services_Twilio_AutoPagingIterator`
     */
    
public function getIterator(
        
$page 0$size 50$filters = array()
    ) {
        return new 
Services_Twilio_AutoPagingIterator(
            array(
$this'getPageGenerator'), $page$size$filters
        
);
    }

    
/**
     * Retrieve a new page of API results, and update iterator parameters. This
     * function is called by the paging iterator to retrieve a new page and
     * shouldn't be called directly.
     */
    
public function getPageGenerator(
        
$page$size$filters = array(), $deep_paging_uri null
    
) {
        return 
$this->getPage($page$size$filters$deep_paging_uri);
    }
}