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 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; }
/** * Fetch data from Db end return records subset, full count records, success = true * @param Zend_Db_Select $select * @return array */ public function getData(Zend_Db_Select $select) { $adapter = new Zend_Paginator_Adapter_DbSelect($select); $result = array(); $result['data'] = $select->query()->fetchAll(); $result['total'] = $adapter->count(); $result['success'] = true; return $result; }
/** * Dot_Paginator constructor that sets the main parameters * If $page is 0 (zero), Zend_Paginator will not be called * @access public * @param Zend_Db_Select $select * @param int $page [optional] * @param int $resultsPerPage [optional] * @return Dot_Paginator */ public function __construct($select, $page = 0, $resultsPerPage = 0) { $this->db = Zend_Registry::get('database'); $this->_select = $select; $this->_currentPage = $page; $this->_itemCountPerPage = $resultsPerPage; $settings = Zend_Registry::get('settings'); if ($this->_currentPage > 0) { $adapter = new Zend_Paginator_Adapter_DbSelect($select); $this->_paginator = new Zend_Paginator($adapter); $this->_paginator->totalItems = $adapter->count(); // page range = the pages on the left + the pages on the right + the current page $this->_paginator->setPageRange($settings->paginationStep * 2 + 1); } }
public function getItems($offset, $itemCountPerPage) { $rows = parent::getItems($offset, $itemCountPerPage); $results = array(); $model = $this->getModel(); foreach ($rows as $row) { $entry = clone $model; try { $map = $entry->clear(); //sets all mapped properties to null } catch (Exception $e) { //echo get_class($entry); //echo "<pre>"; //throw new Exception($e->getMessage()); return $rows; } $entry->fromArray($row); $results[] = $entry; unset($entry); } return $results; }
public function testReturnsCorrectCountWithAutogeneratedQuery() { $expected = 500; $actual = $this->_adapter->count(); $this->assertEquals($expected, $actual); }
/** * * @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); }
public function getItems($offset, $itemCountPerPage) { $items = parent::getItems($offset, $itemCountPerPage); foreach ($items as $key => $data) { $items[$key] = $this->getMapper()->toEntity($data); } return $items; }
/** * Returns an array of items as objects for a page. * * @param integer $offset Page offset * @param integer $itemCountPerPage Number of items per page * @return array An array of Myblog_ModelAbstract objects */ public function getItems($offset, $itemCountPerPage) { $items = parent::getItems($offset, $itemCountPerPage); $objects = array(); foreach ($items as $item) { $objects[] = $this->_mapper->loadModel($item, null); } return $objects; }
/** * @group ZF-4177 */ public function testSelectDistinctAllUsesRegularCountAll() { $query = $this->_db->select()->from('test')->distinct(); $adapter = new Zend_Paginator_Adapter_DbSelect($query); $this->assertEquals(500, $adapter->count()); }
/** * Get SQL for get record count * * @return Varien_Db_Select */ public function getSelectCountSql() { $this->_renderFilters(); $paginatorAdapter = new Zend_Paginator_Adapter_DbSelect($this->getSelect()); return $paginatorAdapter->getCountSelect(); }
/** * Returns an array of items for a page. * * @param integer $offset Page offset * @param integer $itemCountPerPage Number of items per page * @return array */ public function getItems($offset, $itemCountPerPage) { // Cast to integers, as $itemCountPerPage can be string sometimes and that would fail later checks $offset = (int) $offset; $itemCountPerPage = (int) $itemCountPerPage; if ($this->_lastOffset === $offset && $this->_lastItemCount === $itemCountPerPage && null !== $this->_lastItems) { return $this->_lastItems; } $this->_lastOffset = $offset; $this->_lastItemCount = $itemCountPerPage; // Optimization: by using the MySQL feature SQL_CALC_FOUND_ROWS // we can get the count and the results in a single query. $db = $this->_select->getAdapter(); if (null === $this->_count && $db instanceof \Zend_Db_Adapter_Mysqli) { $this->_select->limit($itemCountPerPage, $offset); $sql = $this->_select->__toString(); if (\MUtil_String::startsWith($sql, 'select ', true)) { $sql = 'SELECT SQL_CALC_FOUND_ROWS ' . substr($sql, 7); } $this->_lastItems = $db->fetchAll($sql); $this->_count = $db->fetchOne('SELECT FOUND_ROWS()'); } else { $this->_lastItems = $this->_selectAdapter->getItems($offset, $itemCountPerPage); } if (is_array($this->_lastItems)) { if (isset($this->_model->prefetchIterator) && $this->_model->prefetchIterator) { $this->_lastItems = new \ArrayIterator($this->_lastItems); } $this->_lastItems = $this->_model->processAfterLoad($this->_lastItems, false, false); } return $this->_lastItems; }
/** * 查找没有回答的问题 * @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); }
/** * Count interface implementation * @return int */ public function count() { if (null !== $this->_count) { return $this->_count; } // Why implement again what has already been done :) $pag = new \Zend_Paginator_Adapter_DbSelect($this->_select); $this->_count = $pag->count(); return $this->_count; }
/** * @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!'); }
/** * Returns an array of items for a page. * * @param integer $offset Page offset * @param integer $itemCountPerPage Number of items per page * @return array */ public function getItems($offset, $itemCountPerPage) { $result = parent::getItems($offset, $itemCountPerPage); $entityCollectionClass = App_Model::getClassSibling($this->_mapper, App_Model::MODEL_TYPE_COLLECTION); return new $entityCollectionClass($result); }
/** * 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; }
public function manageAction() { $userForm = new Application_Form_User(); $userForm->getElement('password')->setRequired(false); if ($this->getRequest()->isPost()) { //if we are updating $userId = $this->getRequest()->getParam('id'); if ($userId) { $userForm->setId($userId); } if ($userForm->isValid($this->getRequest()->getParams())) { $data = $userForm->getValues(); $user = new Application_Model_Models_User($data); Application_Model_Mappers_UserMapper::getInstance()->save($user); $this->_helper->response->success($this->_helper->language->translate('Saved')); exit; } else { $this->_helper->response->fail(Tools_Content_Tools::proccessFormMessages($userForm->getMessages())); exit; } } $pnum = (int) filter_var($this->getParam('pnum'), FILTER_SANITIZE_NUMBER_INT); $offset = 0; if ($pnum) { $offset = 10 * ($pnum - 1); } $select = $this->_zendDbTable->getAdapter()->select()->from('user'); $by = filter_var($this->getParam('by', 'last_login'), FILTER_SANITIZE_STRING); $order = filter_var($this->getParam('order', 'desc'), FILTER_SANITIZE_STRING); $searchKey = filter_var($this->getParam('key'), FILTER_SANITIZE_STRING); if (!in_array($order, array('asc', 'desc'))) { $order = 'desc'; } $select = $select->order($by . ' ' . $order); $paginatorOrderLink = '/by/' . $by . '/order/' . $order; if (!empty($searchKey)) { $select->where('email LIKE ?', '%' . $searchKey . '%')->orWhere('full_name LIKE ?', '%' . $searchKey . '%')->orWhere('role_id LIKE ?', '%' . $searchKey . '%')->orWhere('last_login LIKE ?', '%' . date("Y-m-d", strtotime($searchKey)) . '%')->orWhere('ipaddress LIKE ?', '%' . $searchKey . '%'); $paginatorOrderLink .= '/key/' . $searchKey; } $adapter = new Zend_Paginator_Adapter_DbSelect($select); $users = $adapter->getItems($offset, 10); $userPaginator = new Zend_Paginator($adapter); $userPaginator->setCurrentPageNumber($pnum); $userPaginator->setItemCountPerPage(10); $pager = $this->view->paginationControl($userPaginator, 'Sliding', 'backend/user/pager.phtml', array('urlData' => $this->_websiteUrl . 'backend/backend_user/manage', 'order' => $paginatorOrderLink)); if ($order === 'desc') { $order = 'asc'; } else { $order = 'desc'; } if (!empty($searchKey)) { $this->view->orderParam = $order . '/key/' . $searchKey; } else { $this->view->orderParam = $order; } $this->view->by = $by; $this->view->order = $order; $this->view->key = $searchKey; $this->view->pager = $pager; $this->view->users = $users; $this->view->helpSection = 'users'; $this->view->userForm = $userForm; }
/** * @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-10704 */ public function testObjectSelectWithBind() { $select = $this->_db->select(); $select->from('test', array('number'))->where('number = ?')->distinct(true)->bind(array(250)); $adapter = new Zend_Paginator_Adapter_DbSelect($select); $this->assertEquals(1, $adapter->count()); $select->reset(Zend_Db_Select::DISTINCT); $select2 = clone $select; $select2->reset(Zend_Db_Select::WHERE)->where('number = 500'); $selectUnion = $this->_db->select()->bind(array(250)); $selectUnion->union(array($select, $select2)); $adapter = new Zend_Paginator_Adapter_DbSelect($selectUnion); $this->assertEquals(2, $adapter->count()); }
/** * Returns the recordcount for a given filter * * @param array $filter filter array * @param int $surveyId Gems Survey Id * @param string $sourceSurveyId Optional Survey Id used by source * @return int */ public function getRawTokenAnswerRowsCount(array $filter, $surveyId, $sourceSurveyId = null) { $select = $this->getRawTokenAnswerRowsSelect($filter, $surveyId, $sourceSurveyId); $p = new \Zend_Paginator_Adapter_DbSelect($select); $count = $p->getCountSelect()->query()->fetchColumn(); return $count; }
/** * @group ZF-7127 */ public function testMultipleGroupSelect() { $select = $this->_db->select()->from('test')->group('testgroup')->group('number')->where('number > 250'); $adapter = new Zend_Paginator_Adapter_DbSelect($select); $expected = 'SELECT COUNT(1) AS "zend_paginator_row_count" FROM (SELECT "test".* FROM "test" WHERE (number > 250) GROUP BY "testgroup"' . ",\n\t" . '"number") AS "t"'; $this->assertEquals($expected, $adapter->getCountSelect()->__toString()); $this->assertEquals(250, $adapter->count()); }
public function testGroupByQueryOnEmptyTableReturnsRowCountZero() { $query = $this->_db->select()->from('test_empty')->order('number ASC')->limit(1000, 0); $adapter = new Zend_Paginator_Adapter_DbSelect($query); $this->assertEquals(0, $adapter->count()); }
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; }