backend = $backend; if (empty($columns) || $columns === '*') { $this->columns = $this->available_columns; } else { $this->columns = $columns; } $this->init(); } /** * @param array $filters * @return $this */ public function applyFilters($filters = array()) { foreach ($filters as $key => $val) { $this->where($key, $val); } return $this; } /** * @return mixed */ abstract protected function init(); /* * */ protected function finalize() { } /** * Return a pagination adapter for the current query * * @param null $limit * @param null $page * @return \Zend_Paginator */ public function paginate($limit = null, $page = null) { $this->finalize(); $request = \Zend_Controller_Front::getInstance()->getRequest(); if ($page === null) { $page = $request->getParam('page', 0); } if ($limit === null) { $limit = $request->getParam('limit', 20); } $paginator = new \Zend_Paginator( new QueryAdapter($this) ); $paginator->setItemCountPerPage($limit); $paginator->setCurrentPageNumber($page); return $paginator; } }