123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- <?php
- abstract class Services_Twilio_ListResource extends Services_Twilio_Resource
- implements IteratorAggregate, Countable
- {
- public function __construct($client, $uri) {
- $name = $this->getResourceName(true);
-
- if (!isset($this->instance_name)) {
- $this->instance_name = "Services_Twilio_Rest_" . rtrim($name, 's');
- }
- parent::__construct($client, $uri);
- }
-
- public function get($sid) {
- $instance = new $this->instance_name(
- $this->client, $this->uri . "/$sid"
- );
-
- $instance->sid = $sid;
- return $instance;
- }
-
- 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);
- }
-
- public function delete($sid, $params = array())
- {
- $this->client->deleteData($this->uri . '/' . $sid, $params);
- }
-
- protected function _create($params)
- {
- $params = $this->client->createData($this->uri, $params);
-
- 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);
- }
-
- 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);
- }
-
- $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);
- }
-
- public function count() {
- try {
- $page = $this->getPage(0, 1);
- return $page ? (int)$page->total : 0;
- } catch (Exception $e) {
- return 0;
- }
- }
-
- public function getIterator(
- $page = 0, $size = 50, $filters = array()
- ) {
- return new Services_Twilio_AutoPagingIterator(
- array($this, 'getPageGenerator'), $page, $size, $filters
- );
- }
-
- public function getPageGenerator(
- $page, $size, $filters = array(), $deep_paging_uri = null
- ) {
- return $this->getPage($page, $size, $filters, $deep_paging_uri);
- }
- }
|