Exemple #1
0
 public function createRecurring()
 {
     FD::checkToken();
     $eventId = $this->input->getInt('eventId');
     $schedule = $this->input->getString('datetime');
     $parentEvent = FD::event($eventId);
     $duration = $parentEvent->hasEventEnd() ? $parentEvent->getEventEnd()->toUnix() - $parentEvent->getEventStart()->toUnix() : false;
     $data = $this->input->getVar('postdata');
     // Because this comes form a form, the $data['id'] might be an existing id especially if the create recurring comes from "edit"
     unset($data['id']);
     // Because this comes from a form, $data['applyRecurring'] might be 1 for applying purposes, but for creation, we do not this flag
     unset($data['applyRecurring']);
     // Mark the data as createRecurring
     $data['createRecurring'] = true;
     // Manually change the start end time
     $data['startDatetime'] = FD::date($schedule)->toSql();
     if ($duration) {
         $data['endDatetime'] = FD::date($schedule + $duration)->toSql();
     } else {
         unset($data['endDatetime']);
     }
     $my = FD::user();
     $fieldsLib = FD::fields();
     $options = array();
     $options['uid'] = $parentEvent->category_id;
     $options['group'] = SOCIAL_FIELDS_GROUP_EVENT;
     $fields = FD::model('fields')->getCustomFields($options);
     $event = new SocialEvent();
     $event->category_id = $parentEvent->category_id;
     $event->creator_uid = $parentEvent->creator_uid;
     $event->creator_type = SOCIAL_TYPE_USER;
     $event->state = SOCIAL_STATE_PUBLISHED;
     $event->key = md5(FD::date()->toSql() . $my->password . uniqid());
     $event->parent_id = $parentEvent->id;
     $event->parent_type = SOCIAL_TYPE_EVENT;
     $args = array(&$data, &$event);
     $fieldsLib->trigger('onAdminEditBeforeSave', SOCIAL_FIELDS_GROUP_EVENT, $fields, $args);
     $event->bind($data);
     $event->save();
     // Duplicate nodes from parent
     FD::model('Events')->duplicateGuests($parentEvent->id, $event->id);
     $args = array(&$data, &$event);
     $fieldsLib->trigger('onAdminEditAfterSave', SOCIAL_FIELDS_GROUP_EVENT, $fields, $args);
     $event->bindCustomFields($data);
     $args = array(&$data, &$event);
     $fieldsLib->trigger('onAdminEditAfterSaveFields', SOCIAL_FIELDS_GROUP_EVENT, $fields, $args);
     return $this->view->call(__FUNCTION__);
 }