public function defaultAttributes() { $defaults = array('status' => self::STATUS_CONFIRMED, 'start_time' => \GO\Base\Util\Date::roundQuarters(time()), 'end_time' => \GO\Base\Util\Date::roundQuarters(time() + 3600)); $settings = Settings::model()->getDefault(\GO::user()); if ($settings) { $defaults = array_merge($defaults, array('reminder' => $settings->reminder, 'calendar_id' => $settings->calendar_id, 'background' => $settings->background)); } return $defaults; }
<?php $calendar = \GO\Calendar\Model\Calendar::model()->getDefault(\GO::user()); $settings = \GO\Calendar\Model\Settings::model()->getDefault(\GO::user()); if ($calendar) { $GO_SCRIPTS_JS .= 'GO.calendar.defaultCalendar = ' . json_encode($calendar->getAttributes()) . ';'; } $GO_SCRIPTS_JS .= 'GO.calendar.categoryRequired="' . \GO\Calendar\CalendarModule::commentsRequired() . '";'; $GO_SCRIPTS_JS .= 'GO.calendar.disablePublishing=' . (!empty(\GO::config()->calendar_disable_publishing) ? 'true' : 'false') . ';'; if ($settings) { $GO_SCRIPTS_JS .= 'GO.calendar.showStatuses=' . ($settings->show_statuses ? 'true;' : 'false;'); }
/** * Handle's a request from an organizer from another externals system * * @param Sabre\VObject\Component $vevent * @param type $recurrenceDate * @return boolean * @throws \GO\Base\Exception\NotFound */ private function _handleIcalendarRequest(\Sabre\VObject\Component $vevent, $recurrenceDate, \GO\Email\Model\Account $account) { $settings = \GO\Calendar\Model\Settings::model()->getDefault($account->user); if (!$settings->calendar) { throw new \Exception(GO::t('noDefaultCalendar', 'calendar')); } $masterEvent = \GO\Calendar\Model\Event::model()->findByUuid((string) $vevent->uid, 0, $settings->calendar_id); if (!$settings->calendar->checkPermissionLevel(\GO\Base\Model\Acl::WRITE_PERMISSION)) { throw new \Exception(sprintf(\GO::t('cannotHandleInvitation', 'calendar'), $masterEvent->calendar->name)); } //delete existing data if (!$recurrenceDate) { //if no recurring instance was given delete the master event if ($masterEvent) { if (!$masterEvent->calendar->checkPermissionLevel(\GO\Base\Model\Acl::DELETE_PERMISSION)) { throw new \Exception(sprintf(\GO::t('cannotHandleInvitation2', 'calendar'), $masterEvent->calendar->name)); } $masterEvent->delete(); } } else { if ($masterEvent) { $exceptionEvent = $masterEvent->findException($recurrenceDate); if ($exceptionEvent) { if (!$masterEvent->calendar->checkPermissionLevel(\GO\Base\Model\Acl::DELETE_PERMISSION)) { throw new \Exception(sprintf(\GO::t('cannotHandleInvitation2', 'calendar'), $masterEvent->calendar->name)); } $exceptionEvent->delete(); } else { $event = $this->findByStartTime($vevent, $settings->calendar_id); if ($event) { $event->delete(); } } $exception = $masterEvent->hasException($recurrenceDate); if ($exception) { if (!$masterEvent->calendar->checkPermissionLevel(\GO\Base\Model\Acl::DELETE_PERMISSION)) { throw new \Exception(sprintf(\GO::t('cannotHandleInvitation2', 'calendar'), $masterEvent->calendar->name)); } $exception->delete(); } } else { // throw new \Exception("ja"); $event = $this->findByStartTime($vevent, $settings->calendar_id); if ($event) { $event->delete(); } } } $eventUpdated = !$recurrenceDate && $masterEvent || $recurrenceDate && !empty($exceptionEvent); $importAttributes = array('is_organizer' => false, 'calendar_id' => $settings->calendar_id); //import it $event = new \GO\Calendar\Model\Event(); $event->importVObject($vevent, $importAttributes, false, true); //notify orgnizer $participant = $event->getParticipantOfCalendar(); // if(!$participant) // { // //this is a bad situation. The import thould have detected a user for one of the participants. // //It uses the E-mail account aliases to determine a user. See \GO\Calendar\Model\Event::importVObject // $participant = new \GO\Calendar\Model\Participant(); // $participant->event_id=$event->id; // $participant->user_id=$event->calendar->user_id; // $participant->email=$event->calendar->user->email; // $participant->save(); // } // if($status) // $participant->status=$status; // $participant->save(); // $event->replyToOrganizer(); $langKey = $eventUpdated ? 'eventUpdatedIn' : 'eventScheduledIn'; $response['attendance_event_id'] = $event->id; $response['feedback'] = sprintf(\GO::t($langKey, 'calendar'), $event->calendar->name, $participant->statusName); $response['success'] = true; return $response; }