/** * Save date-information * @param $termin_id * @throws Trails_DoubleRenderError */ public function saveDate_action($termin_id) { $termin = CourseDate::find($termin_id); $date = strtotime(sprintf('%s %s:00', Request::get('date'), Request::get('start_time'))); $end_time = strtotime(sprintf('%s %s:00', Request::get('date'), Request::get('end_time'))); //time changed for regular date. create normal singledate and cancel the regular date if (($termin->metadate_id != '' || isset($termin->metadate_id)) && ($date != $termin->date || $end_time != $termin->end_time)) { $termin_values = $termin->toArray(); $termin_info = $termin->getFullname(); $termin->cancelDate(); PageLayout::postInfo(sprintf(_('Der Termin %s wurde aus der Liste der regelmäßigen Termine' . ' gelöscht und als unregelmäßiger Termin eingetragen, da Sie die Zeiten des Termins verändert haben,' . ' so dass dieser Termin nun nicht mehr regelmäßig ist.'), $termin_info)); $termin = new CourseDate(); unset($termin_values['termin_id']); unset($termin_values['metadate_id']); $termin->setData($termin_values); } $termin->date = $date; $termin->end_time = $end_time; $termin->date_typ = Request::get('course_type'); $related_groups = Request::get('related_statusgruppen'); $termin->statusgruppen = array(); if (!empty($related_groups)) { $related_groups = explode(',', $related_groups); $termin->statusgruppen = Statusgruppen::findMany($related_groups); } $related_users = Request::get('related_teachers'); $termin->dozenten = array(); if (!empty($related_users)) { $related_users = explode(',', $related_users); $termin->dozenten = User::findMany($related_users); } // Set Room if (Request::option('room') == 'room') { $room_id = Request::option('room_sd', '0'); if ($room_id != '0' && $room_id != $termin->room_assignment->resource_id) { ResourceAssignment::deleteBySQL('assign_user_id = :termin', array(':termin' => $termin->termin_id)); $resObj = new ResourceObject($room_id); $termin->raum = ''; $room = new ResourceAssignment(); $room->assign_user_id = $termin->termin_id; $room->resource_id = Request::get('room_sd'); $room->begin = $termin->date; $room->end = $termin->end_time; $room->repeat_end = $termin->end_time; $room->store(); $this->course->createMessage(sprintf(_('Der Termin %s wurde geändert und der Raum %s gebucht, etwaige freie Ortsangaben wurden entfernt.'), $termin->getFullname(), $resObj->getName())); } elseif ($room_id == '0') { $this->course->createError(sprintf(_('Der angegebene Raum konnte für den Termin %s nicht gebucht werden!'), $termin->getFullname())); } } elseif (Request::option('room') == 'noroom') { $termin->raum = ''; ResourceAssignment::deleteBySQL('assign_user_id = :termin', array(':termin' => $termin->termin_id)); $this->course->createMessage(sprintf(_('Der Termin %s wurde geändert, etwaige freie Ortsangaben und Raumbuchungen wurden entfernt.'), '<b>' . $termin->getFullname() . '</b>')); } elseif (Request::option('room') == 'freetext') { $termin->raum = Request::get('freeRoomText_sd'); ResourceAssignment::deleteBySQL('assign_user_id = :termin', array(':termin' => $termin->termin_id)); $this->course->createMessage(sprintf(_('Der Termin %s wurde geändert, etwaige Raumbuchungen wurden entfernt und stattdessen der angegebene Freitext eingetragen!'), '<b>' . $termin->getFullname() . '</b>')); } if ($termin->store()) { NotificationCenter::postNotification('CourseDidChangeSchedule', $this->course); $this->displayMessages(); } $this->redirect($this->url_for('course/timesrooms/index#' . $termin->metadate_id, array('contentbox_open' => $termin->metadate_id))); }