/**
  * IS: Parameter id terdeklarasi
  * FS: Mengirimkan ke viewer: form, date_view, show_clock, event_time,
  *     event_id
  * Desc: Mengatur aksi yang dilakukan untuk halaman edit
  */
 public function editAction()
 {
     //set parameter
     $language_id = $this->_getParam('lang');
     $event_id = $this->_getParam('id');
     //creating instance
     $form = new Admin_Form_EventForm();
     $form->setCategorySelectData();
     $table_event = new Model_DbTable_Event();
     $table_event_description = new Model_DbTable_EventDesc();
     $table_poitoevent = new Model_DbTable_PoiToEvent();
     //if this is a post request
     if ($this->getRequest()->isPost()) {
         //preparing data and update for event description
         $event_name = htmlspecialchars($_POST['eventName'], ENT_QUOTES);
         $event_description = htmlspecialchars($_POST['eventDescription'], ENT_QUOTES);
         if ($language_id == 1) {
             $indo = $table_event_description->checkForIndo($event_id, 1);
             if ($indo) {
                 $data = array('event_id' => $event_id, 'language_id' => $language_id, 'name' => $event_name, 'description' => $event_description);
                 $table_event_description->updateEvent($data, $event_id, $language_id);
             } else {
                 $data2 = array('event_id' => $event_id, 'language_id' => $language_id, 'name' => $event_name, 'description' => $event_description);
                 $table_event_description->insertEvent($data2);
             }
         } else {
             if ($_POST['dateStart'] == $_POST['dateEnd']) {
                 $startdate = $_POST['dateStart'] . ' ' . $_POST['timeStart'] . ':00';
                 $enddate = $_POST['dateStart'] . ' ' . $_POST['timeEnd'] . ':00';
             } else {
                 $startdate = $_POST['dateStart'] . ' ' . $_POST['timeStart'] . ':00';
                 $enddate = $_POST['dateEnd'] . ' ' . $_POST['timeEnd'] . ':00';
             }
             //preparing data and update for event table
             $data = array('main_pics' => $_POST['eventImage'], 'date_start' => $startdate, 'date_end' => $enddate, 'category' => $_POST['mainCategory']);
             $table_event->updateEvent($data, $event_id);
             $data = array('event_id' => $event_id, 'language_id' => $language_id, 'name' => $event_name, 'description' => $event_description);
             $table_event_description->updateEvent($data, $event_id, $language_id);
             $poi_count = $_POST['poiMax'];
             $poiarr = array();
             for ($i = 0; $i <= $poi_count; $i++) {
                 if ($_POST['poiValue' . $i] != '') {
                     array_push($poiarr, $_POST['poiValue' . $i]);
                 }
             }
             //create poi related to event list
             $saved_poitoevent = array();
             $saved_list = $table_poitoevent->getAllPoiNameByEventId($event_id);
             //convert to a non ASSOC array
             foreach ($saved_list as $list) {
                 array_push($saved_poitoevent, $list['poi_id']);
             }
             //compare the new list with the new one, if the new one doesnt exist then insert then new one
             foreach ($poiarr as $poi_new) {
                 if (!in_array($poi_new, $saved_poitoevent)) {
                     $data = array('event_id' => $event_id, 'poi_id' => $poi_new);
                     $table_poitoevent->insertEvent($data);
                 }
             }
             //do the complementary process, if the old one doesnot exist in the new list then delete the old ones
             foreach ($saved_poitoevent as $poi_old) {
                 if (!in_array($poi_old, $poiarr)) {
                     if ($poi_old != '') {
                         $table_poitoevent->deleteEvent($event_id, $poi_old);
                     }
                 }
             }
         }
         //preparing data for updating the poi to event data
         $this->loggingaction('event', 'edit', $event_id, $language_id);
         $this->_flash->addMessage("1\\Event Update Success!");
         $this->_redirect($this->view->rootUrl('/admin/eventindo/'));
     }
     if ($language_id == 1) {
         $indo = $table_event_description->checkForIndo($event_id, $language_id);
         if ($indo) {
             $saved_list = $table_poitoevent->getAllPoiNameByEventId($event_id, $language_id);
         }
     } else {
         $saved_list = $table_poitoevent->getAllPoiNameByEventId($event_id, $language_id);
     }
     //data processing
     $event_data = $table_event->getAllWithDescById($event_id, $language_id);
     $event_name = $this->view->HtmlDecode($event_data[0]['name']);
     $event_description = $this->view->HtmlDecode($event_data[0]['description']);
     $poiCount = $table_poitoevent->countRelatedPoiByEventId($event_id);
     $datetime_start = explode(' ', $event_data[0]['date_start']);
     $datetime_end = explode(' ', $event_data[0]['date_end']);
     //set form element value
     $form->eventName->setValue($event_name);
     $form->eventDescription->setValue($event_description);
     $form->eventImage->setValue($event_data[0]['main_pics']);
     $form->dateEnd->setValue($datetime_end[0]);
     $form->dateStart->setValue($datetime_start[0]);
     $form->timeStart->setValue(substr($datetime_start[1], 0, 5));
     $form->timeEnd->setValue(substr($datetime_end[1], 0, 5));
     $form->mainCategory->setValue($event_data[0]['category']);
     $form->poiMax->setValue($poiCount);
     if ($datetime_start[0] == $datetime_end[0]) {
         $this->view->date_view = $datetime_start[0] . ' one day event';
         $this->view->show_clock = TRUE;
     } else {
         $this->view->date_view = $datetime_start[0] . ' until ' . $datetime_end[0];
         $this->view->show_clock = FALSE;
     }
     $this->view->event_time = array($datetime_start[1], $datetime_end[1]);
     $this->view->event_id = $event_id;
     $this->view->form = $form;
     $this->view->langId = $language_id;
 }