backend = $backend; if (empty($columns) || $columns === '*') { $this->columns = $this->available_columns; } else { $this->columns = $columns; } $this->init(); } public function applyFilters($filters = array()) { foreach ($filters as $key => $val) { $this->where($key, $val); } return $this; } abstract protected function init(); protected function finalize() {} /** * Return a pagination adapter for the current query * * @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 \Icinga\Web\Paginator\Adapter\QueryAdapter($this) ); $paginator->setItemCountPerPage($limit); $paginator->setCurrentPageNumber($page); return $paginator; } }