| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 | 
							- <?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, Countable
 
- {
 
-     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);
 
-     }
 
-     /**
 
-      * Get the total number of instances for this list.
 
-      *
 
-      * This will make one HTTP request to retrieve the total, every time this
 
-      * method is called.
 
-      *
 
-      * If the total is not set, or an Exception was thrown, returns 0
 
-      *
 
-      * :return: The total number of instance members
 
-      * :rtype: integer
 
-      */
 
-     public function count() {
 
-         try {
 
-             $page = $this->getPage(0, 1);
 
-             return $page ? (int)$page->total : 0;
 
-         } catch (Exception $e) {
 
-             return 0;
 
-         }
 
-     }
 
-     /**
 
-      * 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);
 
-     }
 
- }
 
 
  |