public function testLimit() { $list = new ArrayList(array( array('Key' => 1), array('Key' => 2), array('Key' => 3) )); $this->assertEquals($list->limit(2,1)->toArray(), array( array('Key' => 2), array('Key' => 3) )); }
/** * @param \DataList|\ArrayList $items * @param $filters * @param array $parameters */ public function sequenceGridListItems(&$items, $filters, &$parameters = []) { $limit = isset($parameters['PageLength']) ? $parameters['PageLength'] : null; // filter items for each filter to current page length if ($limit) { $start = GridList::service()->Filters()->start() ?: 0; $out = new \ArrayList(); $currentFilter = GridList::service()->constraint(Constraints::FilterVar); if ($currentFilter && $currentFilter != 'all') { if ($filter = GridListFilter::get()->filter(['ModelTag' => $currentFilter])->first()) { $out->merge($items->limit($limit, $start)); } } else { foreach ($filters as $filter) { $filtered = new \ArrayList(); foreach ($items as $item) { if ($item instanceof Block) { // only push blocks first page if ($start == 0) { $filtered->push($item); } } else { if ($currentFilter == 'all') { $filtered->push($item); } else { if ($item->GridListFilters()->find('ID', $filter->ID)) { $filtered->push($item); } } } } // merge limited filtered items back in $out->merge($filtered->limit($limit, $start)); } } $items = $out; } }
/** * Returns a collection of Vimeo videos for a given method. * @param string * @param array * @param integer * @return DataObjectSet or boolean false */ function getVideoFeed($method = NULL, $call_params = array(), $page_limit = 10) { if (!self::$api_key || !self::$api_secret_key) { user_error('Fatal error: Invalid API keyand/or secret specified!'); return false; } // Prepare oauth arguments $oauth_params = array('oauth_consumer_key' => self::$api_key, 'oauth_version' => '1.0', 'oauth_signature_method' => 'HMAC-SHA1', 'oauth_timestamp' => time(), 'oauth_nonce' => $this->_generateNonce()); $page = $call_params['start'] == 0 ? 1 : $call_params['start'] / $page_limit + 1; if (self::$token) { $oauth_params['oauth_token'] = self::$token; } $api_params = array('format' => 'php', 'full_response' => 1, 'per_page' => $page_limit, 'page' => $page); if (!empty($method)) { $api_params['method'] = $method; } // Merge args foreach ($call_params as $k => $v) { if (strpos($k, 'oauth_') === 0) { $oauth_params[$k] = $v; } else { $api_params[$k] = $v; } } // Generate the signature $oauth_params['oauth_signature'] = $this->_generateSignature(array_merge($oauth_params, $api_params), self::$api_base_url); // Merge all args $params = array_merge($oauth_params, $api_params); $this->setQueryString($params); $response = $this->request(); $videos = unserialize($response->getBody()); if (isset($videos->videos)) { $results = new ArrayList(); foreach ($videos->videos->video as $video) { $data = $this->_extractVideoInfo($video); /* * @todo Add sorting */ $results->push(new ArrayData($data)); } // since we manually created the dataobjectset, we need to set the pager info manually, too. $results->limit($call_params['start'], $page_limit, intval($videos->videos->total)); } else { $results = false; } return $results; }
function getLatestTweets() { require Director::baseFolder() . '/twitter-feed/libs/tmhOAuth.php'; require Director::baseFolder() . '/twitter-feed/libs/tmhUtilities.php'; $tmhOAuth = new tmhOAuth(array('consumer_key' => self::get_consumer_key(), 'consumer_secret' => self::get_consumer_secret(), 'user_token' => self::get_user_token(), 'user_secret' => self::get_user_secret(), 'curl_ssl_verifypeer' => false)); $code = $tmhOAuth->request('GET', $tmhOAuth->url('1.1/statuses/user_timeline'), array('screen_name' => self::get_username(), 'count' => self::get_tweetcount() + 10, 'exclude_replies' => true)); $response = $tmhOAuth->response['response']; $tweets = json_decode($response, true); if ($this->_errorCheck($tweets)) { return false; } $output = new ArrayList(); foreach ($tweets as &$tweet) { $tweet['text'] = $this->tweetConvert($tweet['text']); $time = SS_Datetime::create('SS_Datetime'); $time->setValue($tweet['created_at']); $tweet['created_at'] = $time; // $tweet['username'] = self::get_username(); $output->push(new ArrayData($tweet)); } return $output->limit(self::get_tweetcount()); }