예제 #1
0
파일: timesrooms.php 프로젝트: ratbird/hope
 /**
  * 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)));
 }