protected function _addPaginator($oOperation) { //dodaj standardowe metody grida // list($sDBSort, $sDBOrder) = $this->_getDatabaseSort(); // $oOperation->setSort($sDBSort); // $oOperation->setOrder($sDBOrder); // $oOperation->setSearch($this->_getDatabaseSearch()); $oOperation->init(); //grid paginowany $page = $this->getRequest()->getParam('page', 1); // $iResultLimit = $this->_getDatabaseResultLimit(); if (method_exists($oOperation, 'pageLimit')) { $iResultLimit = $oOperation->pageLimit(); } $adapter = new Zend_Paginator_Adapter_DbSelect($oOperation->getSelect()); $adapter->setRowCount($oOperation->getSelectCount()); $paginator = new Zend_Paginator($adapter); $paginator->setCurrentPageNumber($page); $paginator->setItemCountPerPage($iResultLimit); if ($paginator->count() == 0) { Message_Operation_Flash::setMsg('Brak rekordów', Message_Operation_Flash::LEVEL_DANGER); } $this->view->paginator = $paginator; //config $this->view->config_url = $this->_oConfig->url; }
public function testSetInvalidRowCount() { try { $this->_adapter->setRowCount('invalid'); } catch (Exception $e) { $this->assertType('Zend_Paginator_Exception', $e); $this->assertEquals('Invalid row count', $e->getMessage()); } }
public function testThrowsExceptionIfInvalidRowCountValueSupplied() { try { $this->_adapter->setRowCount('invalid'); } catch (\Exception $e) { $this->assertType('Zend\\Paginator\\Exception', $e); $this->assertEquals('Invalid row count', $e->getMessage()); } }
public function indexAction() { $adapter = new Zend_Paginator_Adapter_DbSelect($this->registry->DB->select()->from('places')); $adapter->setRowCount(14034475); $paginator = new Zend_Paginator($adapter); $paginator::setDefaultItemCountPerPage(20); $paginator->setCurrentPageNumber($this->_getParam('page')); $this->view->paginator = $paginator; }
/** * * @param type $dataArray * @return type */ public function servicegrid($dataArray) { $actnArr = array(); $sortStr = isset($dataArray['by']) ? $dataArray['by'] : ""; if (isset($dataArray['menuName']) && $dataArray['menuName'] != '') { $menuName = $dataArray['menuName']; } $gridFieldsArr = array(); $tmpActionsArr = array(); array_pop($tmpActionsArr); //last element of actions array is menuname so delete that & check the privileges are empty or not... $actnArr = $tmpActionsArr; if (($key = array_search('add', $actnArr)) !== false) { unset($actnArr[$key]); } if (empty($tmpActionsArr)) { unset($gridFieldsArr['action']); $gridFieldsArr = $dataArray['tableheader']; $dataArray['tableheader'] = $gridFieldsArr; } if (isset($dataArray['menuName'])) { $menuName = $dataArray['menuName']; } $page_adapter = new Zend_Paginator_Adapter_DbSelect($dataArray['tablecontent']); $page_adapter->setRowCount($dataArray['row_count']); $paginator = new Zend_Paginator($page_adapter); $paginator->setItemCountPerPage($dataArray['perPage'])->setCurrentPageNumber($dataArray['pageNo']); if (empty($dataArray['tableheader'])) { $widgetsModel = new Default_Model_Widgets(); $columnData = $widgetsModel->getTableFields('/' . $dataArray['objectname']); $dataArray['tableheader'] = json_decode($columnData['menufields'], true); } $msgtitle = $dataArray['objectname'] . '_delete'; $msgtitle = strtoupper($msgtitle); $formgridVal = ''; $extra['action'] = array(); $extra['options'] = array(); $addaction = ''; if (isset($dataArray['add']) && $dataArray['add'] != '') { $addaction = $dataArray['add']; $addpermission = "true"; } else { $addaction = ''; $addpermission = "false"; } return $this->generateGrid($dataArray, $paginator, $extra, true, $formgridVal, $addaction, $menuName, $addpermission, $sortStr, $actnArr); }
/** * @group ZF-10884 */ public function testSetRowCountWithAlias() { $select = $this->_db->select(); $select->from('test', array(Zend_Paginator_Adapter_DbSelect::ROW_COUNT_COLUMN => new Zend_Db_Expr('COUNT(DISTINCT number)'))); $this->_db->setProfiler(true); $adapter = new Zend_Paginator_Adapter_DbSelect($this->_db->select()); $adapter->setRowCount($select); $adapter->count(); $expected = 'SELECT COUNT(DISTINCT number) AS "zend_paginator_row_count" FROM "test"'; $lastQuery = $this->_db->getProfiler()->getLastQueryProfile()->getQuery(); $this->assertEquals($expected, $lastQuery); }
/** * @group ZF-6989 */ public function testPaginatorGeneratesSameCacheIdentifierForDbTableSelectAdaptersWithIdenticalSqlStatements() { $dbAdapterOne = $this->getMockForAbstractClass('Zend_Db_Adapter_Abstract', array(''), __FUNCTION__ . 'DbAdapterOne', false); $selectOne = new Zend_Db_Select($dbAdapterOne); $selectOne->from('ZF_6989'); $paginatorAdapterOne = new Zend_Paginator_Adapter_DbSelect($selectOne); $paginatorAdapterOne->setRowCount(6989); $paginatorOne = new Zend_Paginator_TestCache($paginatorAdapterOne); $dbAdapterTwo = $this->getMockForAbstractClass('Zend_Db_Adapter_Abstract', array(''), __FUNCTION__ . 'DbAdapterTwo', false); $selectTwo = new Zend_Db_Select($dbAdapterTwo); $selectTwo->from('ZF_6989'); $paginatorAdapterTwo = new Zend_Paginator_Adapter_DbSelect($selectTwo); $paginatorAdapterTwo->setRowCount(6989); $paginatorTwo = new Zend_Paginator_TestCache($paginatorAdapterTwo); $this->assertSame($paginatorOne->getCacheInternalId(), $paginatorTwo->getCacheInternalId(), 'DbSelect adapters with identical select statements should have the same cache internal IDs!'); }
public function testThrowsExceptionIfInvalidRowCountValueSupplied() { $this->setExpectedException('Zend\\Paginator\\Adapter\\Exception\\InvalidArgumentException', 'Invalid row count'); $this->_adapter->setRowCount('invalid'); }
/** * Get the array of records satisfying the criteria specified in the parameter $options using Zend_Paginator * * @param Zend_Db_Adapter_Abstract $db * @param array $options * @return array Default_Model_DbTable_BlogPost objects */ public static function GetPaginatorPosts($db, $options = array()) { $arrResult = array(); $_config = Zend_Registry::get('config'); $itemCountPerPage = (int) $_config['paginator']['itemCountPerPage']; $pagesInRange = (int) $_config['paginator']['pagesInRange']; //--------------------------------------------------------- // инициализация опций $defaults = array('itemCountPerPage' => $itemCountPerPage, 'pagesInRange' => $pagesInRange, 'page' => 1, 'offset' => 0, 'limit' => 0, 'order' => 'p.ts_created', 'sort' => true); foreach ($defaults as $k => $v) { $options[$k] = array_key_exists($k, $options) ? $options[$k] : $v; } $select = self::_GetBaseQuery($db, $options); // установим поля таблицы для запроса $select->from(null, 'p.*'); // set the offset, limit, and ordering of results if ($options['limit'] > 0) { $select->limit($options['limit'], $options['offset']); } // Установим параметры сортировки для таблицы if ($options['sort']) { $select = self::GetSelectForSort($select, $options); } //------ Создадим обьект Zend_Paginator --------- $strSelect = $select->__toString(); $adapter = new Zend_Paginator_Adapter_DbSelect($select); $count = self::GetPostsCount($db, $options); $adapter->setRowCount($count); $paginator = new Zend_Paginator($adapter); // Установим максимальное количество отображаемых на странице элементов $paginator->setItemCountPerPage($options['itemCountPerPage']); // Установи массив страниц, возвращенный текущим стилем прокрутки $paginator->setPageRange($options['pagesInRange']); // Установим текущую страницу $paginator->setCurrentPageNumber($options['page']); //----- Конфигурирование кеша для Paginator ----- $pgCache = Default_Plugin_SysBox::getCache('paginator'); if ($pgCache->getOption('caching')) { // Установим кеш для Paginator Zend_Paginator::setCache($pgCache); // Очищение кеша if (Default_Plugin_SysBox::isCleanCache()) { $paginator->clearPageItemCache(); } } // получим данные в виде массива обьектов Default_Model_DbTable_BlogPost $posts = self::BuildMultiple($db, __CLASS__, $paginator); $post_ids = array_keys($posts); if (count($post_ids) == 0) { return array(); } // получим данные о загруженных сообщениях $profiles = Default_Model_Profile::BuildMultiple($db, 'Default_Model_DbTable_BlogPostProfile', array($post_ids)); foreach ($posts as $post_id => $post) { if (array_key_exists($post_id, $profiles) && $profiles[$post_id] instanceof Default_Model_DbTable_BlogPostProfile) { $posts[$post_id]->profile = $profiles[$post_id]; } else { $posts[$post_id]->profile->setPostId($post_id); } //!!!!------ Начало установки признака сортировки -----!!!!! if (isset($options['sortColumn'])) { $posts[$post_id]->sortColumn = $options['sortColumn']; } if (isset($options['ascDescFlg'])) { $posts[$post_id]->ascDescFlg = $options['ascDescFlg']; } //!!!!------ Конец установки признака сортировки -----!!!!! } // load the images for each post $options = array('post_id' => $post_ids); $images = Default_Model_DbTable_BlogPostImage::GetImages($db, $options); foreach ($images as $image) { $posts[$image->post_id]->images[$image->getId()] = $image; } // load the locations for each post $locations = Default_Model_DbTable_BlogPostLocation::GetLocations($db, $options); foreach ($locations as $l) { $posts[$l->post_id]->locations[$l->getId()] = $l; } // load the audio for each post $audios = Default_Model_DbTable_BlogPostAudio::GetAudio($db, $options); foreach ($audios as $audio) { $posts[$audio->post_id]->audio[$audio->getId()] = $audio; } // load the video for each post $videos = Default_Model_DbTable_BlogPostVideo::GetVideo($db, $options); foreach ($videos as $video) { $posts[$video->post_id]->video[$video->getId()] = $video; } // load the comments for each post $comments = Default_Model_DbTable_BlogPostComment::GetComments($db, $options); foreach ($comments as $comment) { $posts[$comment->post_id]->comments[$comment->getId()] = $comment; } $arrResult['pages'] = $paginator->getPages(); $arrResult['items'] = $posts; return $arrResult; }
/** * 查找没有回答的问题 * @param int $categoryId * @param int $limit * @return array|null */ public function zeros($categoryId = null, $paged = null, $limit = 30) { $select = $this->_questionSQLSelect($categoryId); $select->where('q.answers = 0'); $select->order('q.created_at desc'); if (null !== $paged) { $adapter = new Zend_Paginator_Adapter_DbSelect($select); $count = clone $select; $count->reset(Zend_Db_Select::COLUMNS); $count->reset(Zend_Db_Select::FROM); $count->from('Question as q', new Zend_Db_Expr('COUNT(*) AS `zend_paginator_row_count`')); $adapter->setRowCount($count); $paginator = new Zend_Paginator($adapter); $paginator->setItemCountPerPage($limit)->setCurrentPageNumber((int) $paged); return $paginator; } return $this->_db->fetchAll($select); }
protected function _addSecPaginator($oOperation) { $oOperation->init(); //grid paginowany $page = $this->getRequest()->getParam('form_page', $this->getRequest()->getParam('page1', 1)); $iResultLimit = $this->_getDatabaseResultLimit(); if (method_exists($oOperation, 'pageLimit')) { $iResultLimit = $oOperation->pageLimit(); } $adapter = new Zend_Paginator_Adapter_DbSelect($oOperation->getSelect()); $adapter->setRowCount($oOperation->getSelectCount()); $paginator = new Zend_Paginator($adapter); $paginator->setCurrentPageNumber($page); $paginator->setItemCountPerPage($iResultLimit); if ($paginator->count() == 0) { Message_Operation_Flash::setMsg('Brak rekordów', Message_Operation_Flash::LEVEL_DANGER); } $this->view->paginator2 = $paginator; //config $this->view->config_url2 = $this->_oConfig->url; }