/** * Lists all servicePacks matching a criteria */ public function indexAction() { // Check permissions $sp = new ServicePackModel(); $this->_helper->allowed('list', $sp); // Pagination $params = $this->_getPaginatorParams(); // Filters $filters = $this->_mapToFilter($this->_getFilterParams()); $this->_checkFilterParams($filters, ServicePackFilterFields::getWhiteList()); $filterList = $this->_spSrv->buildFilterList($filters); $this->_helper->filterNotAllowedFilters('filter_by', $filterList); // Search $spList = $this->_spSrv->listAll($filterList, $params); if ($spList) { $list = array(); foreach ($spList->getItems() as $item) { try { $this->_helper->allowed('read', $item); $this->_helper->filterNotAllowedFields('read_field', $item); $list[] = $item; } catch (Exception $e) { // Do nothing } } // Simulate pagination $it = new ArrayIterator($list); $paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Iterator($it)); $paginator->setItemCountPerPage($params['count']); // Result $iterator = $paginator->getItemsByPage($params['page']); $this->view->servicePacks = iterator_to_array($iterator, false); } }
/** * Builds a filter list based on params. * @param array $params * @return App_ListFilter | null */ public function buildFilterList(array $params, $throwEx = false) { $factory = new \App_ListFilter_FilterFactory(); $factory->setWhiteList(ServicePackFilterFields::getWhiteList()); $factory->setSortingWhiteList(ServicePackFilterFields::getWhiteList()); $filterList = $factory->constructFilter($params); $filterList->setResourceId(ServicePackFilterFields::getResourceId()); $filterList->setValidators(ServicePackFilterFields::getValidatorSpec()); $filterList->setThrowExceptionOnValidationFail($throwEx); if (!$filterList->isValid()) { $filterList = $factory->constructFilter(array()); } $filterList->addExtraData('filterType', 'servicePack'); \App::log()->debug('Unused filters [' . implode(',', $factory->getUnusedList()) . ']'); return $filterList; }