/**
  * 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;
 }