/**
  * IS: Terdeklarasinya filter dan param di session, dan page_row
  * FS: Mengirimkan ke viewer: cleanUrl, message, filter_alert, page_row,
  *     all_category, dan paginator
  * Desc: Mengatur aksi yang dilakukan untuk halaman index event
  */
 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_event = new Model_DbTable_Event();
     $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->filter = $filter;
         switch ($filter) {
             case 0:
                 $param = null;
             case 1:
                 $param = $_POST['filterName'];
                 break;
             case 2:
                 $param = $_POST['filterDestination'];
                 break;
             case 3:
                 $param = $_POST['filterCategory'];
                 break;
             case 4:
                 $param = $_POST['filterDate1'];
                 $param2 = $_POST['filterDate2'];
                 break;
         }
         $this->_paginator_sess->param = $param;
     }
     //set paginator for list of destination data
     $filter = $this->_paginator_sess->filter;
     $param = $this->_paginator_sess->param;
     if (isset($param2)) {
         $select = $table_event->getQueryAllByLang($filter, $param, $param2, 2);
     } else {
         $select = $table_event->getQueryAllByLang($filter, $param, null, 2);
     }
     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;
     $filter_data = $table_category->getAllParentCategoryIdNameByLangId(2);
     $this->view->all_category = $filter_data;
     /** Return alert to view on filter selected */
     switch ($filter) {
         case 0:
             $filter_alert = "Show all events";
             break;
         case 1:
             $filter_alert = "Events which name with keyword '" . $param . "'";
             break;
         case 2:
             $filter_alert = "Events that related to '" . $param . "'";
             break;
         case 3:
             foreach ($filter_data as $category) {
                 $parent[$category['category_id']] = $category['name'];
             }
             $filter_alert = "Events with '" . $parent[$param] . "' category";
             break;
         case 4:
             if (!empty($param) && !empty($param2)) {
                 $filter_alert = "Events between " . $param . " and " . $param2;
             } else {
                 if (!empty($param) && empty($param2)) {
                     $filter_alert = "Events after " . $param;
                 } else {
                     if (empty($param) && !empty($param2)) {
                         $filter_alert = "Events before " . $param2;
                     } else {
                         $filter_alert = "Show all events";
                     }
                 }
             }
             break;
     }
     $this->view->alert = $filter_alert;
 }