/** * Binds form data to filters, and then adds those filters to a new instance of FilterCollection, * discarding the original and any filters that do not have values * * @param array $data * @param FilterCollection $filters * * @return FilterCollection */ public function bindData(array $data, FilterCollection $filters) { $boundFilters = new FilterCollection(); foreach ($data as $key => $value) { if ($filters->exists($key) && $value) { $filter = $filters[$key]; $filter->setValue($value); $boundFilters->add($filter); } } return $boundFilters; }
public function view_hotel_portfolio_list($pageNum = NULL) { if (!$this->securitypolicy->validateAccessRight(4, 'read')) { $this->_redirectInvalidAccess(); } $filters = new FilterCollection(); $portfolios = new PortfolioColl(); # Reinitialize used filters if ($this->input->post('filter-used')) { foreach ($this->input->post('filter-used') as $filterClassName => $filtersUsed) { foreach ($filtersUsed as $index => $filterUsed) { switch ($filterClassName) { case "PrtfoFltr": $filter = new PrtfoFltr(); $data = is_int($filterUsed) ? array('id' => $filterUsed) : array('name' => $filterUsed); $filterToRemove = $this->input->post('remove-filter'); $remove = false; if (isset($filterToRemove[$filterClassName][0])) { if ($filterToRemove[$filterClassName][0] == $index) { $remove = true; } } if (!$remove) { $filter->setFilter($data); $filters->add($filter); } break; } } } } # Initialize new filters if ($this->input->post('submit-portfolio') && $this->input->post('hotel-portfolio')) { $filter = new PrtfoFltr(); $filter->setFilter(array('name' => $this->input->post('hotel-portfolio'))); $filters->add($filter); } # Add filters to the portfolio collection if ($filters->count() > 0) { $this->_viewData['filters'] = $filters; foreach ($filters as $filter) { $portfolios->addFilter($filter); } } # Pagination $pageNum = isset($pageNum) ? $pageNum : '1'; $currentPage = $pageNum; $startItem = $currentPage * 10 - $this->_pagination; $portfolios->setStartItem($startItem); $portfolios->setOffsetCount($this->_pagination); $portfolios->setAll(); # Setting pagination $this->_viewData['portfolios'] = $portfolios; $this->_viewData['pagination'] = $this->_pagination; $this->_viewData['pages'] = ceil($portfolios->getTotalResults() / $this->_pagination); $this->_viewData['page'] = $currentPage; # Portfolio deletion message if ($this->_viewData['status'] == 'success' && $this->session->userdata('previous-action') == 'remove_portfolio') { $this->_viewData['showmsg'] = true; } $this->load->view('hotel_mngt_hotel_portfolio_list', $this->_viewData); }