/** * IS: Terdeklarasinya filter dan param di session, dan page_row * FS: Mengirimkan ke viewer: cleanUrl, message, page_row, paginator, * all_area, all_category, filter_alert * Desc: Mengatur aksi yang dilakukan untuk halaman index */ public function indexAction() { //variable initiation and instance creation $this->view->cleanurl = $this->_cleanUrl; //get messages from CRUD process $message = $this->_flash->getMessages(); if (!empty($message)) { $this->view->message = $message; } //create table instances $table_destination = new Model_DbTable_Destination(); $table_area = new Model_DbTable_Area(); $table_category = new Model_DbTable_Category(); //set variable initial value $filter = null; $new_search = FALSE; //get params for the filter if ($this->getRequest()->isPost()) { $filter = $_POST['filterPage']; $new_search = TRUE; $this->_paginator_sess->filterDestinationIndo = $filter; switch ($filter) { case 0: $param = null; case 1: $param = $_POST['filterName']; break; case 2: $param = $_POST['filterArea']; break; case 3: $param = $_POST['filterCategory']; break; case 4: $param = $_POST['filterStatus']; break; case 5: $param = $_POST['filterSpecial']; break; } $this->_paginator_sess->param = $param; } //set paginator for list of destination data $filter = $this->_paginator_sess->filterDestinationIndo; $param = $this->_paginator_sess->param; $select = $table_destination->getQueryAllByLang($filter, $param, 2); //get pagerow setting and send to the paginator control $page_row = $this->_getParam('filterPageRow'); $this->view->row = $page_row; if ($page_row != null) { $paginator = parent::setPaginator($select, $page_row); } else { $paginator = parent::setPaginator($select); } //if this is a new search then return the page number back to the 1st page if ($new_search) { $paginator->setCurrentPageNumber(1); } //send data to the view $this->view->paginator = $paginator; $area_data = $table_area->getallAreaNameId(2); $this->view->all_area = $area_data; $category_data = $table_category->getAllCategoryIdNameByLangId(2); $this->view->all_category = $category_data; /** Return alert to view on filter selected */ switch ($filter) { case 0: $filter_alert = "Show all destinations"; break; case 1: $filter_alert = "Destinations which name with keyword '" . $param . "'"; break; case 2: foreach ($area_data as $area) { $parent[$area['area_id']] = $area['name']; } $filter_alert = "Destinations that located at '" . trim($parent[$param]) . "' area"; break; case 3: foreach ($category_data as $category) { $parent[$category['category_id']] = $category['name']; } $filter_alert = "Destinations with '" . $parent[$param] . "' category"; break; case 4: $param == '1' ? $state = 'Published' : ($state = 'Draft'); $filter_alert = "Destinations with '" . $state . "' status"; break; case 5: $param == '1' ? $state = 'Featured' : ($state = 'Non Featured'); $filter_alert = "Destinations that are '" . $state . "'"; break; } $this->view->alert = $filter_alert; }