public function testParamRemoveLast() { $u = new MpUtils\Url('http://mojepanstwo.pl?q1=1'); $u->removeParam('q1'); $this->assertSame('http://mojepanstwo.pl', $u->buildUrl()); }
private function _index($params = array()) { $allowed_query_params = array('conditions', 'limit', 'page', 'order', 'highlight', '_type'); if ($this->isPortalCalling) { array_push($allowed_query_params, 'aggs'); } if (!isset($this->request->query['_type'])) { $this->request->query['_type'] = 'objects'; } $original_query = $query = array_intersect_key($this->request->query, array_flip($allowed_query_params)); if ($query['_type'] == 'collections') { $query['conditions']['user_id'] = $this->Auth->user('id'); } else { if (isset($params['dataset']) && $params['dataset']) { $query['conditions']['dataset'] = $params['dataset']; } if (isset($params['_main']) && $params['_main']) { $query['conditions']['_main'] = true; } if (isset($params['_feed']) && $params['_feed']) { $query['conditions']['_feed'] = $params['_feed']; } if (isset($query['conditions']['subscribtions']) && $query['conditions']['subscribtions']) { $query['conditions']['subscribtions'] = array('user_type' => $this->Auth->user('type'), 'user_id' => $this->Auth->user('id')); } if (isset($query['conditions']['user-pages']) && $query['conditions']['user-pages']) { $query['conditions']['user-pages'] = array('user_type' => $this->Auth->user('type'), 'user_id' => $this->Auth->user('id')); } } // ograniczenie limit if (isset($query['limit'])) { if ($query['limit'] > DataobjectsController::RESULTS_COUNT_MAX) { $query['limit'] = DataobjectsController::RESULTS_COUNT_MAX; } } else { $query['limit'] = DataobjectsController::RESULTS_COUNT_DEFAULT; } $objects = $this->Dataobject->find('all', $query); $lr_stats = @$this->Dataobject->getDataSource()->lastResponseStats; $count = @$lr_stats['count']; $took = @$lr_stats['took_ms']; $_serialize = array('Dataobject', 'Count', 'Took'); // HATEOS if ($this->request->is('get')) { // using post, aggregated arrays are failing on MpUrils/Url.php:145 $processed_query = $this->Dataobject->buildQuery('all', $query); $page = $processed_query['page']; // starts with 1 $url = new MpUtils\Url(Router::url(null, true)); $url->setParams($original_query); $_links = array('self' => $url->buildUrl()); $lastPage = (int) (($count - 1) / $processed_query['limit']) + 1; if ($page > 1 && $page <= $lastPage) { $url->setParam('page', 1); $_links['first'] = $url->buildUrl(); $url->setParam('page', $page - 1); $_links['prev'] = $url->buildUrl(); } if ($page < $lastPage) { $url->setParam('page', $page + 1); $_links['next'] = $url->buildUrl(); $url->setParam('page', $lastPage); $_links['last'] = $url->buildUrl(); } // page out of bounds if ($page > $lastPage or $page < 1) { $url->setParam('page', 1); $_links['first'] = $url->buildUrl(); $url->setParam('page', $lastPage); $_links['last'] = $url->buildUrl(); } array_push($_serialize, 'Links'); $this->set('Links', $_links); } if (!empty($this->Dataobject->getDataSource()->Aggs)) { $this->set('Aggs', $this->Dataobject->getDataSource()->Aggs); $_serialize[] = 'Aggs'; } $this->set('Dataobject', $objects); $this->set('Count', $count); $this->set('Took', $took); $this->set('_serialize', $_serialize); }