Пример #1
0
 public function editAction()
 {
     $this->authorize('admin.event');
     $serviceManager = $this->getServiceLocator();
     $eventManager = $serviceManager->get('Event\\Manager\\EventManager');
     $formElementManager = $serviceManager->get('FormElementManager');
     $eid = $this->params()->fromRoute('eid');
     if ($eid) {
         $event = $eventManager->get($eid);
         $eventManager->getSecondsPerDay($event);
     } else {
         $event = null;
     }
     $editForm = $formElementManager->get('Backend\\Form\\Event\\EditForm');
     if ($this->getRequest()->isPost()) {
         $editForm->setData($this->params()->fromPost());
         if ($editForm->isValid()) {
             $data = $editForm->getData();
             if (!$event) {
                 $event = new Event();
             }
             $locale = $this->config('i18n.locale');
             $event->setMeta('name', $data['ef-name'], $locale);
             $event->setMeta('description', $data['ef-description'], $locale);
             $dateStart = new \DateTime($data['ef-date-start']);
             $timeStartParts = explode(':', $data['ef-time-start']);
             $dateStart->setTime($timeStartParts[0], $timeStartParts[1], 0);
             $dateEnd = new \DateTime($data['ef-date-end']);
             $timeEndParts = explode(':', $data['ef-time-end']);
             $dateEnd->setTime($timeEndParts[0], $timeEndParts[1], 0);
             $event->set('datetime_start', $dateStart->format('Y-m-d H:i:s'));
             $event->set('datetime_end', $dateEnd->format('Y-m-d H:i:s'));
             $sid = $data['ef-sid'];
             if ($sid == 'null') {
                 $sid = null;
             }
             $event->set('sid', $sid);
             $capacity = $data['ef-capacity'];
             if (!$capacity) {
                 $capacity = null;
             }
             $event->set('capacity', $capacity);
             $event->setMeta('notes', $data['ef-notes']);
             $eventManager->save($event);
             $this->flashMessenger()->addSuccessMessage('Event has been saved');
             return $this->redirectBack()->toOrigin();
         }
     } else {
         if ($event) {
             $editForm->setData(array('ef-name' => $event->getMeta('name'), 'ef-description' => $event->getMeta('description'), 'ef-date-start' => $this->dateFormat($event->needExtra('datetime_start'), \IntlDateFormatter::MEDIUM), 'ef-time-start' => $event->needExtra('datetime_start')->format('H:i'), 'ef-date-end' => $this->dateFormat($event->needExtra('datetime_end'), \IntlDateFormatter::MEDIUM), 'ef-time-end' => $event->needExtra('datetime_end')->format('H:i'), 'ef-sid' => $event->get('sid'), 'ef-capacity' => $event->get('capacity', 0), 'ef-notes' => $event->getMeta('notes')));
         } else {
             $params = $this->backendBookingDetermineParams();
             $editForm->setData(array('ef-date-start' => $this->dateFormat($params['dateTimeStart'], \IntlDateFormatter::MEDIUM), 'ef-time-start' => $params['dateTimeStart']->format('H:i'), 'ef-date-end' => $this->dateFormat($params['dateTimeEnd'], \IntlDateFormatter::MEDIUM), 'ef-time-end' => $params['dateTimeEnd']->format('H:i'), 'ef-sid' => $params['square']->get('sid'), 'ef-capacity' => 0));
         }
     }
     return array('event' => $event, 'editForm' => $editForm);
 }