Esempio n. 1
0
 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;
 }
Esempio n. 3
0
 /**
  * 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;
 }
Esempio n. 4
0
 /**
  * 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);
     }
 }
Esempio n. 5
0
	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;

	}
Esempio n. 6
0
    public function testReturnsCorrectCountWithAutogeneratedQuery()
    {
        $expected = 500;
        $actual = $this->_adapter->count();

        $this->assertEquals($expected, $actual);
    }
Esempio n. 7
0
 /**
  * 
  * @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);
 }
Esempio n. 8
0
 public function getItems($offset, $itemCountPerPage)
 {
     $items = parent::getItems($offset, $itemCountPerPage);
     foreach ($items as $key => $data) {
         $items[$key] = $this->getMapper()->toEntity($data);
     }
     return $items;
 }
Esempio n. 9
0
 /**
  * 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;
 }
Esempio n. 10
0
 /**
  * @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());
 }
Esempio n. 11
0
 /**
  * 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();
 }
Esempio n. 12
0
 /**
  * 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;
 }
Esempio n. 13
0
 /**
  * 查找没有回答的问题
  * @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);
 }
Esempio n. 14
0
 /**
  * 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;
 }
Esempio n. 15
0
 /**
  * @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!');
 }
Esempio n. 16
0
 /**
  * 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);
 }
Esempio n. 17
0
 /**
  * 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;
 }
Esempio n. 18
0
 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;
 }
Esempio n. 19
0
 /**
  * @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());
 }
Esempio n. 21
0
 /**
  * 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;
 }
Esempio n. 22
0
 /**
  * @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());
 }
Esempio n. 23
0
 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());
 }
Esempio n. 24
0
 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;
 }