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__); }