예제 #1
0
 /**
  * Update event controller
  * 
  * @param array $params 
  */
 public function edit($params)
 {
     $event = $this->getEventForParams($params);
     $language = OW::getLanguage();
     $form = new EventAddForm('event_edit');
     $form->getElement('title')->setValue($event->getTitle());
     $form->getElement('desc')->setValue($event->getDescription());
     $form->getElement('location')->setValue($event->getLocation());
     $form->getElement('who_can_view')->setValue($event->getWhoCanView());
     $form->getElement('who_can_invite')->setValue($event->getWhoCanInvite());
     $form->getElement('who_can_invite')->setValue($event->getWhoCanInvite());
     $startTimeArray = array('hour' => date('G', $event->getStartTimeStamp()), 'minute' => date('i', $event->getStartTimeStamp()));
     $form->getElement('start_time')->setValue($startTimeArray);
     $startDate = date('Y', $event->getStartTimeStamp()) . '/' . date('n', $event->getStartTimeStamp()) . '/' . date('j', $event->getStartTimeStamp());
     $form->getElement('start_date')->setValue($startDate);
     if ($event->getEndTimeStamp() !== null) {
         $endTimeArray = array('hour' => date('G', $event->getEndTimeStamp()), 'minute' => date('i', $event->getEndTimeStamp()));
         $form->getElement('end_time')->setValue($endTimeArray);
         $endTimeStamp = $event->getEndTimeStamp();
         if ($event->getEndTimeDisable()) {
             $endTimeStamp = strtotime("-1 day", $endTimeStamp);
         }
         $endDate = date('Y', $endTimeStamp) . '/' . date('n', $endTimeStamp) . '/' . date('j', $endTimeStamp);
         $form->getElement('end_date')->setValue($endDate);
     }
     if ($event->getStartTimeDisable()) {
         $form->getElement('start_time')->setValue('all_day');
     }
     if ($event->getEndTimeDisable()) {
         $form->getElement('end_time')->setValue('all_day');
     }
     $form->getSubmitElement('submit')->setValue(OW::getLanguage()->text('event', 'edit_form_submit_label'));
     $checkboxId = UTIL_HtmlTag::generateAutoId('chk');
     $tdId = UTIL_HtmlTag::generateAutoId('td');
     $this->assign('tdId', $tdId);
     $this->assign('chId', $checkboxId);
     OW::getDocument()->addScript(OW::getPluginManager()->getPlugin("event")->getStaticJsUrl() . 'event.js');
     OW::getDocument()->addOnloadScript("new eventAddForm(" . json_encode(array('checkbox_id' => $checkboxId, 'end_date_id' => $form->getElement('end_date')->getId(), 'tdId' => $tdId)) . ")");
     if ($event->getImage()) {
         $this->assign('imgsrc', $this->eventService->generateImageUrl($event->getImage(), true));
     }
     $endDateFlag = $event->getEndDateFlag();
     if (OW::getRequest()->isPost()) {
         $endDateFlag = !empty($_POST['endDateFlag']);
         //$this->assign('endDateFlag', !empty($_POST['endDateFlag']));
         if ($form->isValid($_POST)) {
             $data = $form->getValues();
             $serviceEvent = new OW_Event(EVENT_BOL_EventService::EVENT_BEFORE_EVENT_EDIT, array('eventId' => $event->id), $data);
             OW::getEventManager()->trigger($serviceEvent);
             $data = $serviceEvent->getData();
             $dateArray = explode('/', $data['start_date']);
             $startStamp = mktime(0, 0, 0, $dateArray[1], $dateArray[2], $dateArray[0]);
             if ($data['start_time'] != 'all_day') {
                 $startStamp = mktime($data['start_time']['hour'], $data['start_time']['minute'], 0, $dateArray[1], $dateArray[2], $dateArray[0]);
             }
             if (!empty($_POST['endDateFlag']) && !empty($data['end_date'])) {
                 $dateArray = explode('/', $data['end_date']);
                 $endStamp = mktime(0, 0, 0, $dateArray[1], $dateArray[2], $dateArray[0]);
                 $endStamp = strtotime("+1 day", $endStamp);
                 if ($data['end_time'] != 'all_day') {
                     $hour = 0;
                     $min = 0;
                     if ($data['end_time'] != 'all_day') {
                         $hour = $data['end_time']['hour'];
                         $min = $data['end_time']['minute'];
                     }
                     $dateArray = explode('/', $data['end_date']);
                     $endStamp = mktime($hour, $min, 0, $dateArray[1], $dateArray[2], $dateArray[0]);
                 }
             }
             $event->setStartTimeStamp($startStamp);
             if (empty($endStamp)) {
                 $endStamp = strtotime("+1 day", $startStamp);
                 $endStamp = mktime(0, 0, 0, date('n', $endStamp), date('j', $endStamp), date('Y', $endStamp));
             }
             if ($startStamp > $endStamp) {
                 OW::getFeedback()->error($language->text('event', 'add_form_invalid_end_date_error_message'));
                 $this->redirect();
             } else {
                 $event->setEndTimeStamp($endStamp);
                 if (!empty($_FILES['image']['name'])) {
                     if ((int) $_FILES['image']['error'] !== 0 || !is_uploaded_file($_FILES['image']['tmp_name']) || !UTIL_File::validateImage($_FILES['image']['name'])) {
                         OW::getFeedback()->error($language->text('base', 'not_valid_image'));
                         $this->redirect();
                     } else {
                         $event->setImage(uniqid());
                         $this->eventService->saveEventImage($_FILES['image']['tmp_name'], $event->getImage());
                     }
                 }
                 $event->setTitle(htmlspecialchars($data['title']));
                 $event->setLocation(UTIL_HtmlTag::autoLink(strip_tags($data['location'])));
                 $event->setWhoCanView((int) $data['who_can_view']);
                 $event->setWhoCanInvite((int) $data['who_can_invite']);
                 $event->setDescription($data['desc']);
                 $event->setEndDateFlag(!empty($_POST['endDateFlag']));
                 $event->setStartTimeDisable($data['start_time'] == 'all_day');
                 $event->setEndTimeDisable($data['end_time'] == 'all_day');
                 $this->eventService->saveEvent($event);
                 $e = new OW_Event(EVENT_BOL_EventService::EVENT_AFTER_EVENT_EDIT, array('eventId' => $event->id));
                 OW::getEventManager()->trigger($e);
                 OW::getFeedback()->info($language->text('event', 'edit_form_success_message'));
                 $this->redirect(OW::getRouter()->urlForRoute('event.view', array('eventId' => $event->getId())));
             }
         }
     }
     if (!$endDateFlag) {
         // $form->getElement('start_time')->addAttribute('disabled', 'disabled');
         // $form->getElement('start_time')->addAttribute('style', 'display:none;');
         $form->getElement('end_date')->addAttribute('disabled', 'disabled');
         $form->getElement('end_date')->addAttribute('style', 'display:none;');
         $form->getElement('end_time')->addAttribute('disabled', 'disabled');
         $form->getElement('end_time')->addAttribute('style', 'display:none;');
     }
     $this->assign('endDateFlag', $endDateFlag);
     $this->setPageHeading($language->text('event', 'edit_page_heading'));
     $this->setPageTitle($language->text('event', 'edit_page_title'));
     OW::getNavigation()->activateMenuItem(OW_Navigation::MAIN, 'event', 'main_menu_item');
     $this->addForm($form);
 }