Esempio n. 1
0
    /**
     * Returns an array of "local" pages given a page number and range.
     *
     * @param  Zend_Paginator $paginator
     * @param  integer $pageRange (Optional) Page range
     * @return array
     */
    public function getPages(Zend_Paginator $paginator, $pageRange = null)
    {
        if ($pageRange === null) {
            $pageRange = $paginator->getPageRange();
        }

        $pageNumber = $paginator->getCurrentPageNumber();
        $pageCount  = count($paginator);

        if ($pageRange > $pageCount) {
            $pageRange = $pageCount;
        }

        $delta = ceil($pageRange / 2);

        if ($pageNumber - $delta > $pageCount - $pageRange) {
            $lowerBound = $pageCount - $pageRange + 1;
            $upperBound = $pageCount;
        } else {
            if ($pageNumber - $delta < 0) {
                $delta = $pageNumber;
            }

            $offset     = $pageNumber - $delta;
            $lowerBound = $offset + 1;
            $upperBound = $offset + $pageRange;
        }

        return $paginator->getPagesInRange($lowerBound, $upperBound);
    }
Esempio n. 2
0
 /**
  * Returns an array of "local" pages given a page number and range.
  *
  * @param  Zend_Paginator $paginator
  * @param  integer $pageRange (Optional) Page range
  * @return array
  */
 public function getPages(Zend_Paginator $paginator, $pageRange = null)
 {
     // This is unused
     if ($pageRange === null) {
         $pageRange = $paginator->getPageRange();
     }
     $pageNumber = $paginator->getCurrentPageNumber();
     $pageCount = count($paginator);
     $range = array();
     if ($pageCount < 10) {
         // Show all pages if we have less than 10.
         for ($i = 1; $i < 10; $i++) {
             if ($i > $pageCount) {
                 break;
             }
             $range[$i] = $i;
         }
     } else {
         // More than 10 pages:
         foreach (array(1, 2) as $i) {
             $range[$i] = $i;
         }
         if ($pageNumber < 6) {
             // We are on page 1-5 from
             for ($i = 1; $i <= 7; $i++) {
                 $range[$i] = $i;
             }
         } else {
             // Current page > 5
             $range[] = '...';
             // Less than 5 pages left
             if ($pageCount - $pageNumber < 5) {
                 $start = 5 - ($pageCount - $pageNumber);
             } else {
                 $start = 1;
             }
             for ($i = $pageNumber - $start; $i < $pageNumber + (4 - $start); $i++) {
                 if ($i > $pageCount) {
                     break;
                 }
                 $range[$i] = $i;
             }
         }
         if ($pageNumber < $pageCount - 2) {
             $range[] = '...';
         }
         foreach (array($pageCount - 1, $pageCount) as $i) {
             $range[$i] = $i;
         }
     }
     if (empty($range)) {
         $range[] = 1;
     }
     return $range;
 }
Esempio n. 3
0
 /**
  * Returns an array of "local" pages given a page number and range.
  * 
  * @param  Zend_Paginator $paginator
  * @param  integer $pageRange Unused
  * @return array
  */
 public function getPages(Zend_Paginator $paginator, $pageRange = null)
 {
     $pageRange = $paginator->getPageRange();
     $pageNumber = $paginator->getCurrentPageNumber();
     $originalPageRange = $pageRange;
     $pageRange = $pageRange * 2 - 1;
     if ($originalPageRange + $pageNumber - 1 < $pageRange) {
         $pageRange = $originalPageRange + $pageNumber - 1;
     }
     return parent::getPages($paginator, $pageRange);
 }
Esempio n. 4
0
 /**
  * @group ZF-4193
  */
 public function testCastsIntegerValuesToInteger()
 {
     // Current page number
     $this->_paginator->setCurrentPageNumber(3.3);
     $this->assertTrue($this->_paginator->getCurrentPageNumber() == 3);
     // Item count per page
     $this->_paginator->setItemCountPerPage(3.3);
     $this->assertTrue($this->_paginator->getItemCountPerPage() == 3);
     // Page range
     $this->_paginator->setPageRange(3.3);
     $this->assertTrue($this->_paginator->getPageRange() == 3);
 }
Esempio n. 5
0
 /**
  * Returns an array of "local" pages given a page number and range.
  *
  * @param  Zend_Paginator $paginator
  * @param  integer $pageRange Unused
  * @return array
  */
 public function getPages(Zend_Paginator $paginator, $pageRange = null)
 {
     $pageRange = $paginator->getPageRange();
     $pageNumber = $paginator->getCurrentPageNumber();
     $delta = $pageNumber % $pageRange;
     if ($delta == 0) {
         $delta = $pageRange;
     }
     $offset = $pageNumber - $delta;
     $lowerBound = $offset + 1;
     $upperBound = $offset + $pageRange;
     return $paginator->getPagesInRange($lowerBound, $upperBound);
 }
Esempio n. 6
0
 public function testGetSetCurrentPageNumber()
 {
     $this->_restorePaginatorDefaults();
     $this->assertEquals(1, $this->_paginator->getCurrentPageNumber());
     $this->_paginator->setCurrentPageNumber(-1);
     $this->assertEquals(1, $this->_paginator->getCurrentPageNumber());
     $this->_paginator->setCurrentPageNumber(11);
     $this->assertEquals(11, $this->_paginator->getCurrentPageNumber());
     $this->_paginator->setCurrentPageNumber(111);
     $this->assertEquals(11, $this->_paginator->getCurrentPageNumber());
     $this->_paginator->setCurrentPageNumber(1);
     $this->assertEquals(1, $this->_paginator->getCurrentPageNumber());
 }
Esempio n. 7
0
 /**
  * Returns a paginated list of all sites matching the given parameters.
  * 
  * @param array $params
  * @return array
  */
 public static function search(array $params)
 {
     $siteDb = Yadda_Db_Table::getInstance('site');
     $select = $siteDb->select()->setIntegrityCheck(false)->from('site')->joinLeft('deal', 'site.id = deal.site_id', array('latest_deal' => 'MAX(deal.created)'))->where('site.status = ?', 'active')->group('site.id')->order('site.name');
     // fetch
     $paginator = new Zend_Paginator(new Zend_Paginator_Adapter_DbSelect($select));
     $paginator->setCurrentPageNumber(isset($params['page']) ? (int) $params['page'] : 1);
     $paginator->setItemCountPerPage(isset($params['count']) ? (int) $params['count'] : 10);
     $return = array('params' => $params, 'total' => $paginator->getTotalItemCount(), 'page' => $paginator->getCurrentPageNumber(), 'pages' => $paginator->count(), 'results' => array());
     $sites = new Zend_Db_Table_Rowset(array('table' => $siteDb, 'data' => (array) $paginator->getCurrentItems()));
     foreach ($sites as $site) {
         $return['results'][] = self::toArray($site);
     }
     return $return;
 }
 /**
  * Returns an array of "local" pages given a page number and range.
  *
  * @param  Zend_Paginator $paginator
  * @param  integer $pageRange (Optional) Page range
  * @return array
  */
 public function getPages(Zend_Paginator $paginator, $pageRange = null)
 {
     if ($pageRange === null) {
         $pageRange = $paginator->getPageRange();
     }
     $pageNumber = $paginator->getCurrentPageNumber();
     $pageCount = count($paginator);
     $range = array();
     if ($pageCount < 15) {
         for ($i = 1; $i < 15; $i++) {
             if ($i > $pageCount) {
                 break;
             }
             $range[$i] = $i;
         }
     } else {
         foreach (array(1, 2) as $i) {
             $range[$i] = $i;
         }
         if ($pageNumber > 8) {
             $range[] = '...';
             $start = 5;
             if ($pageCount - $pageNumber < 8) {
                 $start = 9 - ($pageCount - $pageNumber);
             }
             for ($i = $pageNumber - $start; $i < $pageNumber + (10 - $start); $i++) {
                 if ($i > $pageCount) {
                     break;
                 }
                 $range[$i] = $i;
             }
         } else {
             for ($i = 3; $i <= 10; $i++) {
                 $range[$i] = $i;
             }
         }
         if ($pageNumber < $pageCount - 7) {
             $range[] = '...';
             foreach (array($pageCount - 1, $pageCount) as $i) {
                 $range[$i] = $i;
             }
         }
     }
     if (empty($range)) {
         $range[] = 1;
     }
     return $range;
 }
Esempio n. 9
0
 public static function search($params)
 {
     // build query
     $subscriptionDb = Yadda_Db_Table::getInstance('subscription');
     $select = $subscriptionDb->select()->setIntegrityCheck(false)->from('subscription')->joinLeft('user', 'subscription.user_id = user.id', array('user_email' => 'email'))->where('subscription.status = ?', 'active')->order('created DESC');
     // fetch
     $paginator = new Zend_Paginator(new Zend_Paginator_Adapter_DbSelect($select));
     $paginator->setCurrentPageNumber(isset($params['page']) ? (int) $params['page'] : 1);
     $paginator->setItemCountPerPage(isset($params['count']) ? (int) $params['count'] : 10);
     $return = array('params' => $params, 'total' => $paginator->getTotalItemCount(), 'page' => $paginator->getCurrentPageNumber(), 'pages' => $paginator->count(), 'results' => array());
     $subscriptions = new Zend_Db_Table_Rowset(array('table' => $subscriptionDb, 'data' => (array) $paginator->getCurrentItems()));
     foreach ($subscriptions as $subscription) {
         $return['results'][] = self::toArray($subscription);
     }
     return $return;
 }
Esempio n. 10
0
 /**
  * Returns a paginated list of regions matching the given parameters.
  * 
  * @param array $params
  * @return array
  */
 public static function search(array $params)
 {
     // build query
     $regionDb = Yadda_Db_Table::getInstance('region');
     $select = $regionDb->select()->from('region')->where('status = ?', 'active')->order('name');
     // fetch
     $paginator = new Zend_Paginator(new Zend_Paginator_Adapter_DbSelect($select));
     $paginator->setCurrentPageNumber(isset($params['page']) ? (int) $params['page'] : 1);
     $paginator->setItemCountPerPage(isset($params['count']) ? (int) $params['count'] : 10);
     $return = array('params' => $params, 'total' => $paginator->getTotalItemCount(), 'page' => $paginator->getCurrentPageNumber(), 'pages' => $paginator->count(), 'results' => array());
     $regions = new Zend_Db_Table_Rowset(array('table' => $regionDb, 'data' => (array) $paginator->getCurrentItems()));
     foreach ($regions as $region) {
         $return['results'][] = self::toArray($region);
     }
     return $return;
 }
Esempio n. 11
0
 /**
  * Create the grid data structure
  * 
  * @return object
  */
 protected function _createGridData(Zend_Controller_Request_Abstract $request)
 {
     // Instantiate Zend_Paginator with the required data source adaptor
     if (!$this->_paginator instanceof Zend_Paginator) {
         $this->_paginator = new Zend_Paginator($this->_adapter);
         $this->_paginator->setDefaultItemCountPerPage($request->getParam('rows', $this->_defaultItemCountPerPage));
     }
     // Filter items by supplied search criteria
     if ($request->getParam('_search') == 'true') {
         $filter = $this->_getFilterParams($request);
         $this->_paginator->getAdapter()->filter($filter['field'], $filter['value'], $filter['expression'], $filter['options']);
     }
     // Sort items by the supplied column field
     if ($request->getParam('sidx')) {
         $this->_paginator->getAdapter()->sort($request->getParam('sidx'), $request->getParam('sord', 'asc'));
     }
     // Pass the current page number to paginator
     $this->_paginator->setCurrentPageNumber($request->getParam('page', 1));
     // Fetch a row of items from the adapter
     $rows = $this->_paginator->getCurrentItems();
     $grid = new stdClass();
     $grid->page = $this->_paginator->getCurrentPageNumber();
     $grid->total = $this->_paginator->getItemCountPerPage();
     $grid->records = $this->_paginator->getTotalItemCount();
     $grid->rows = array();
     foreach ($rows as $k => $row) {
         if (isset($row['id'])) {
             $grid->rows[$k]['id'] = $row['id'];
         }
         $grid->rows[$k]['cell'] = array();
         foreach ($this->_columns as $column) {
             array_push($grid->rows[$k]['cell'], $column->cellValue($row));
         }
     }
     return $grid;
 }
Esempio n. 12
0
 public function listAction()
 {
     if ($this->_request->isXmlHttpRequest()) {
         $pageId = $this->_getParam('page', 1);
         $limit = $this->_getParam('limit', 10);
         $sortCol = $this->_getParam('sortCol', 1);
         $sortOrder = $this->_getParam('sortOrder', 'asc');
         $whereParam = $this->_getParam('where', '');
         $modelTable = $this->_getModel();
         $modelTableName = $modelTable->info(Centurion_Db_Table_Abstract::NAME);
         $where = $this->_getSelect();
         if (get_magic_quotes_gpc()) {
             $whereParam = stripslashes($whereParam);
         }
         $whereParam = (array) json_decode($whereParam);
         foreach ($whereParam as $param => $values) {
             if (isset($this->_filters[$param]['type']) && $this->_filters[$param]['type'] === self::FILTER_EXPR) {
                 foreach ($values as $key => $value) {
                     $where->filter($this->_filters[$param]['data'][$value]['expr']);
                 }
                 unset($whereParam[$param]);
             }
             if (isset($this->_filters[$param]) && $this->_filters[$param]['type'] === self::FILTER_CUSTOM && is_callable($this->_filters[$param]['callback'])) {
                 $where = call_user_func($this->_filters[$param]['callback'], $where, $values, $param);
                 unset($whereParam[$param]);
             }
             if (isset($this->_filters[$param]['method']) && is_callable($this->_filters[$param]['method'])) {
                 call_user_func_array($this->_filters[$param]['method'], array($where, $values));
                 unset($whereParam[$param]);
             }
         }
         $where->filter($whereParam);
         $cols = array();
         $naturals = $modelTable->info(Centurion_Db_Table_Abstract::COLS);
         $queryCols = $where->getColumnsName();
         foreach ($this->_displays as $col => $value) {
             if (is_array($value)) {
                 if ($value['expr'] instanceof Zend_Db_Expr) {
                     $cols[] = $value['expr'];
                 }
             } else {
                 if (in_array($col, $naturals)) {
                     if (!$where->isInQuery($col, $modelTableName)) {
                         $cols[] = new Zend_Db_Expr(sprintf(sprintf('%s.%s', $modelTable->getAdapter()->quoteIdentifier($modelTableName), $modelTable->getAdapter()->quoteIdentifier($col))));
                     }
                 } else {
                     if (!in_array($col, $queryCols)) {
                         $cols[] = new Zend_Db_Expr(sprintf('%s AS %s', $where->addRelated($col), $modelTable->getAdapter()->quoteIdentifier($col)));
                     }
                 }
             }
         }
         $where->columns($cols);
         if (in_array($sortCol, array_keys($this->_extras)) && method_exists($this, 'resolveCol' . ucfirst($sortCol))) {
             $sortCol = $this->{'resolveCol' . ucfirst($sortCol)}($where);
             $where->order(sprintf('%s %s', $sortCol, $sortOrder));
         } else {
             if ($sortCol !== 1 && in_array($sortCol, array_keys($this->_displays))) {
                 $where->order(sprintf('%s %s', $sortCol, $sortOrder));
             }
         }
         $this->_preList();
         $adapter = new Zend_Paginator_Adapter_DbTableSelect($where);
         $paginator = new Zend_Paginator($adapter);
         $paginator->setCurrentPageNumber($pageId)->setItemCountPerPage($limit);
         $result = array('pageId' => $paginator->getCurrentPageNumber(), 'nbPages' => $paginator->count(), 'nbRows' => $paginator->getTotalItemCount(), 'rows' => array());
         foreach ($paginator->getCurrentItems() as $modelRow) {
             $tempArray = $modelRow->toArray();
             foreach ($this->_extras as $key => $extra) {
                 if (method_exists($this, $key)) {
                     $tempArray[$key] = $this->{$key}($modelRow);
                 } elseif (method_exists($modelRow, $key)) {
                     $tempArray[$key] = call_user_func(array($modelRow, $key));
                 } else {
                     $tempArray[$key] = $modelRow->{$key};
                 }
             }
             array_push($result['rows'], array('id' => $modelRow->pk, 'cell' => $tempArray));
         }
         $result = $this->_postList($result);
         $json = Zend_Json::encode($result);
         $this->getResponse()->appendBody($json);
     }
 }
Esempio n. 13
0
 /** The lister function of all guardian articles
  * @access public
  */
 public function indexAction()
 {
     $page = $this->getParam('page');
     $key = md5('pas' . self::QUERY);
     if (!$this->getCache()->test($key)) {
         $guardian = self::GUARDIANAPI_URL . 'search?q=' . urlencode(self::QUERY) . '&page-size=50&order-by=newest&format=' . self::FORMAT . '&show-fields=all&show-tags=all&show-factboxes=all&show-references=all&api-key=' . $this->_apikey;
         $this->_curl->setUri($guardian);
         $this->_curl->getRequest();
         $articles = $this->_curl->getJson();
         $this->getCache()->save($articles);
     } else {
         $articles = $this->getCache()->load($key);
     }
     $results = array();
     foreach ($articles->response->results as $article) {
         if (isset($article->fields->thumbnail)) {
             $image = $article->fields->thumbnail;
         } else {
             $image = null;
         }
         if (isset($article->fields->standfirst)) {
             $stand = $article->fields->standfirst;
         } else {
             $stand = null;
         }
         $tags = array();
         foreach ($article->tags as $k => $v) {
             $tags[$k] = $v;
         }
         if (isset($article->fields->byline)) {
             $byline = $article->fields->byline;
         } else {
             $byline = null;
         }
         $results[] = array('id' => $article->id, 'headline' => $article->fields->headline, 'byline' => $byline, 'image' => $image, 'pubDate' => $article->webPublicationDate, 'content' => $article->fields->body, 'trailtext' => $article->fields->trailText, 'publication' => $article->fields->publication, 'sectionName' => $article->sectionName, 'linkText' => $article->webTitle, 'standfirst' => $stand, 'section' => $article->sectionName, 'url' => $article->webUrl, 'shortUrl' => $article->fields->shortUrl, 'publication' => $article->fields->publication, 'tags' => $tags);
     }
     $paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Array($results));
     Zend_Paginator::setCache($this->getCache());
     if (isset($page) && $page != "") {
         $paginator->setCurrentPageNumber((int) $page);
     }
     $paginator->setItemCountPerPage(20)->setPageRange(10);
     if (in_array($this->_helper->contextSwitch()->getCurrentContext(), array('xml', 'json', 'rss', 'atom'))) {
         $paginated = array();
         foreach ($paginator as $k => $v) {
             $paginated[$k] = $v;
         }
         $data = array('pageNumber' => $paginator->getCurrentPageNumber(), 'total' => number_format($paginator->getTotalItemCount(), 0), 'itemsReturned' => $paginator->getCurrentItemCount(), 'totalPages' => number_format($paginator->getTotalItemCount() / $paginator->getItemCountPerPage(), 0));
         $this->view->data = $data;
         $this->view->guardianStories = array('guardianStory' => $paginated);
     } else {
         $this->view->data = $paginator;
     }
 }
 public function membersAction()
 {
     $page = $this->_getParam('page');
     if (!$this->_cache->test('members')) {
         $query = 'getMps';
         $output = '&output=xml';
         $key = '&key=' . self::TWFYAPIKEY;
         $twfy = self::TWFYURL . $query . $output . $key;
         $data = Zend_Json::fromXml($this->get($twfy), true);
         $data = json_decode($data);
         $this->_cache->save($data);
     } else {
         $data = $this->_cache->load('members');
     }
     $data2 = array();
     foreach ($data->twfy->match as $a) {
         if (in_array($a->constituency, $this->_remove)) {
             unset($a->name);
             unset($a->person_id);
             unset($a->party);
             unset($a->constituency);
         }
         if (isset($a->name)) {
             $data2[] = array('name' => $a->name, 'person_id' => $a->person_id, 'constituency' => $a->constituency, 'party' => $a->party);
         }
     }
     $paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Array($data2));
     if (isset($page) && $page != "") {
         $paginator->setCurrentPageNumber((int) $page);
     }
     $paginator->setItemCountPerPage(40)->setPageRange(10);
     if (in_array($this->_helper->contextSwitch()->getCurrentContext(), array('xml', 'json'))) {
         $data = array('pageNumber' => $paginator->getCurrentPageNumber(), 'total' => number_format($paginator->getTotalItemCount(), 0), 'itemsReturned' => $paginator->getCurrentItemCount(), 'totalPages' => number_format($paginator->getTotalItemCount() / $paginator->getItemCountPerPage(), 0));
         $this->view->data = $data;
         $members = array();
         foreach ($paginator as $k => $v) {
             $members[] = array();
             $members[$k] = $v;
         }
         $this->view->members = $members;
     } else {
         $this->view->data = $paginator;
     }
 }