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);
 }