예제 #1
0
 /**
  * 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);
 }