protected function storeEventData(CalendarEvent $event, SingleCalendar $calendar) { if (Request::int('isdayevent')) { $dt_string = Request::get('start_date') . ' 00:00:00'; } else { $dt_string = Request::get('start_date') . ' ' . Request::int('start_hour') . ':' . Request::int('start_minute'); } $event->setStart($this->parseDateTime($dt_string)); if (Request::int('isdayevent')) { $dt_string = Request::get('end_date') . ' 23:59:59'; } else { $dt_string = Request::get('end_date') . ' ' . Request::int('end_hour') . ':' . Request::int('end_minute'); } $event->setEnd($this->parseDateTime($dt_string)); if ($event->getStart() > $event->getEnd()) { $messages[] = _('Die Startzeit muss vor der Endzeit liegen.'); } if (Request::isXhr()) { $event->setTitle(studip_utf8decode(Request::get('summary', ''))); $event->event->description = studip_utf8decode(Request::get('description', '')); $event->setUserDefinedCategories(studip_utf8decode(Request::get('categories', ''))); $event->event->location = studip_utf8decode(Request::get('location', '')); } else { $event->setTitle(Request::get('summary')); $event->event->description = Request::get('description', ''); $event->setUserDefinedCategories(Request::get('categories', '')); $event->event->location = Request::get('location', ''); } $event->event->category_intern = Request::int('category_intern', 1); $event->setAccessibility(Request::option('accessibility', 'PRIVATE')); $event->setPriority(Request::int('priority', 0)); if (!$event->getTitle()) { $messages[] = _('Es muss eine Zusammenfassung angegeben werden.'); } $rec_type = Request::option('recurrence', 'single'); $expire = Request::option('exp_c', 'never'); $rrule = array('linterval' => null, 'sinterval' => null, 'wdays' => null, 'month' => null, 'day' => null, 'rtype' => 'SINGLE', 'count' => null, 'expire' => null); if ($expire == 'count') { $rrule['count'] = Request::int('exp_count', 10); } else { if ($expire == 'date') { if (Request::isXhr()) { $exp_date = studip_utf8decode(Request::get('exp_date')); } else { $exp_date = Request::get('exp_date'); } $exp_date = $exp_date ?: strftime('%x', time()); $rrule['expire'] = $this->parseDateTime($exp_date . ' 12:00'); } } switch ($rec_type) { case 'daily': if (Request::option('type_daily', 'day') == 'day') { $rrule['linterval'] = Request::int('linterval_d', 1); $rrule['rtype'] = 'DAILY'; } else { $rrule['linterval'] = 1; $rrule['wdays'] = '12345'; $rrule['rtype'] = 'WEEKLY'; } break; case 'weekly': $rrule['linterval'] = Request::int('linterval_w', 1); $rrule['wdays'] = implode('', Request::intArray('wdays', array(strftime('%u', $event->getStart())))); $rrule['rtype'] = 'WEEKLY'; break; case 'monthly': if (Request::option('type_m', 'day') == 'day') { $rrule['linterval'] = Request::int('linterval_m1', 1); $rrule['day'] = Request::int('day_m', strftime('%e', $event->getStart())); $rrule['rtype'] = 'MONTHLY'; } else { $rrule['linterval'] = Request::int('linterval_m2', 1); $rrule['sinterval'] = Request::int('sinterval_m', 1); $rrule['wdays'] = Request::int('wday_m', strftime('%u', $event->getStart())); $rrule['rtype'] = 'MONTHLY'; } break; case 'yearly': if (Request::option('type_y', 'day') == 'day') { $rrule['linterval'] = 1; $rrule['day'] = Request::int('day_y', strftime('%e', $event->getStart())); $rrule['month'] = Request::int('month_y1', date('n', $event->getStart())); $rrule['rtype'] = 'YEARLY'; } else { $rrule['linterval'] = 1; $rrule['sinterval'] = Request::int('sinterval_y', 1); $rrule['wdays'] = Request::int('wday_y', strftime('%u', $event->getStart())); $rrule['month'] = Request::int('month_y2', date('n', $event->getStart())); $rrule['rtype'] = 'YEARLY'; } break; } if (sizeof($messages)) { PageLayout::postMessage(MessageBox::error(_('Bitte Eingaben korrigieren'), $messages)); return false; } else { $event->setRecurrence($rrule); $exceptions = array_diff(Request::getArray('exc_dates'), Request::getArray('del_exc_dates')); $event->setExceptions($this->parseExceptions($exceptions)); // if this is a group event, store event in the calendars of each attendee if (get_config('CALENDAR_GROUP_ENABLE')) { $attendee_ids = Request::optionArray('attendees'); return $calendar->storeEvent($event, $attendee_ids); } else { return $calendar->storeEvent($event); } } }