/** * Update multiple sequence items * @return */ protected function updateMulti() { global $ilObjDataCache; $this->initFormSequence(self::MODE_MULTI); if ($this->form->checkInput()) { $this->form->setValuesByPost(); $apps = explode(';', $_POST['apps']); include_once 'Services/Booking/classes/class.ilBookingEntry.php'; include_once 'Services/Calendar/classes/class.ilCalendarEntry.php'; // do collision-check if max bookings were reduced // no collision check $first = $apps; $first = array_shift($first); $entry = ilBookingEntry::getInstanceByCalendarEntryId($first); #if($this->form->getInput('bo') < $entry->getNumberOfBookings()) #{ # $this->edit(); # return; #} // create new context $booking = new ilBookingEntry(); $booking->setObjId($this->getUserId()); $booking->setNumberOfBookings($this->form->getInput('bo')); $deadline = $this->form->getInput('dead'); $deadline = $deadline['dd'] * 24 + $deadline['hh']; $booking->setDeadlineHours($deadline); $tgt = explode(',', $this->form->getInput('tgt')); $obj_ids = array(); foreach ((array) $tgt as $ref_id) { if (!trim($ref_id)) { continue; } $obj_id = $ilObjDataCache->lookupObjId($ref_id); $type = ilObject::_lookupType($obj_id); $valid_types = array('crs', 'grp'); if (!$obj_id or !in_array($type, $valid_types)) { ilUtil::sendFailure($this->lng->txt('cal_ch_unknown_repository_object')); $this->edit(); return; } $obj_ids[] = $obj_id; } $booking->setTargetObjIds($obj_ids); include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourGroups.php'; if (ilConsultationHourGroups::getCountGroupsOfUser($this->getUserId())) { $booking->setBookingGroup($this->form->getInput('grp')); } $booking->save(); // update entries $title = $this->form->getInput('ti'); $location = $this->form->getInput('lo'); $description = $this->form->getInput('de'); foreach ($apps as $item_id) { $entry = new ilCalendarEntry($item_id); $entry->setContextId($booking->getId()); $entry->setTitle($title); $entry->setLocation($location); $entry->setDescription($description); $entry->update(); } ilBookingEntry::removeObsoleteEntries(); ilUtil::sendSuccess($this->lng->txt('settings_saved'), true); $this->ctrl->redirect($this, 'appointmentList'); } $this->tpl->setContent($this->form->getHTML()); }
protected function renderConsultationHoursTeaser($a_user_id, $a_mode, $a_group_ids) { global $lng; if ($a_mode == "auto") { $mode = $lng->txt("cont_cach_mode_automatic"); $groups = null; } else { $mode = $lng->txt("cont_cach_mode_manual"); include_once "Services/Calendar/classes/ConsultationHours/class.ilConsultationHourGroups.php"; $groups = array(); foreach ($a_group_ids as $grp_id) { $groups[] = ilConsultationHourGroups::lookupTitle($grp_id); } $groups = " (" . implode(", ", $groups) . ")"; } $lng->loadLanguageModule("dateplaner"); return "<div style=\"margin:5px\">" . $lng->txt("app_consultation_hours") . ": \"" . $mode . "\"" . $groups . "</div>"; }
/** * Init consultation hours form * * @param bool $a_insert * @return ilPropertyFormGUI */ protected function initForm($a_insert = false) { global $ilCtrl, $ilUser, $lng; include_once "./Services/Form/classes/class.ilPropertyFormGUI.php"; $form = new ilPropertyFormGUI(); $form->setFormAction($ilCtrl->getFormAction($this)); if ($a_insert) { $form->setTitle($this->lng->txt("cont_insert_consultation_hours")); } else { $form->setTitle($this->lng->txt("cont_update_consultation_hours")); } $mode = new ilRadioGroupInputGUI($this->lng->txt("cont_cach_mode"), "mode"); $mode->setRequired(true); $form->addItem($mode); $opt_auto = new ilRadioOption($this->lng->txt("cont_cach_mode_automatic"), "auto"); $opt_auto->setInfo($this->lng->txt("cont_cach_mode_automatic_info")); $mode->addOption($opt_auto); $opt_manual = new ilRadioOption($this->lng->txt("cont_cach_mode_manual"), "manual"); $opt_manual->setInfo($this->lng->txt("cont_cach_mode_manual_info")); $mode->addOption($opt_manual); if (!$this->getPageConfig()->getEnablePCType("PlaceHolder")) { include_once "Services/Calendar/classes/ConsultationHours/class.ilConsultationHourGroups.php"; $grp_ids = ilConsultationHourGroups::getGroupsOfUser($ilUser->getId()); if (sizeof($grp_ids)) { $this->lng->loadLanguageModule("dateplaner"); $groups = new ilCheckboxGroupInputGUI($this->lng->txt("cal_ch_app_grp"), "grp"); $groups->setRequired(true); $opt_manual->addSubItem($groups); foreach ($grp_ids as $grp_obj) { $groups->addOption(new ilCheckboxOption($grp_obj->getTitle(), $grp_obj->getGroupId())); } } else { $opt_manual->setDisabled(true); } } else { $opt_manual->setDisabled(true); } if ($a_insert) { $mode->setValue("auto"); $form->addCommandButton("create_consultation_hours", $this->lng->txt("select")); $form->addCommandButton("cancelCreate", $this->lng->txt("cancel")); } else { // set values $grp_ids = $this->content_obj->getGroupIds(); if (sizeof($grp_ids)) { $mode->setValue("manual"); $groups->setValue($grp_ids); } else { $mode->setValue("auto"); } $form->addCommandButton("update", $this->lng->txt("select")); $form->addCommandButton("cancelUpdate", $this->lng->txt("cancel")); } return $form; }
protected function renderConsultationHoursTeaser($a_user_id, $a_mode, $a_group_ids) { // not used // $user_id = $this->getPageContentUserId($a_user_id); if ($a_mode == "auto") { $mode = $this->lng->txt("cont_cach_mode_automatic"); $groups = null; } else { $mode = $this->lng->txt("cont_cach_mode_manual"); include_once "Services/Calendar/classes/ConsultationHours/class.ilConsultationHourGroups.php"; $groups = array(); foreach ($a_group_ids as $grp_id) { $groups[] = ilConsultationHourGroups::lookupTitle($grp_id); } $groups = " (" . implode(", ", $groups) . ")"; } $this->lng->loadLanguageModule("dateplaner"); return $this->renderTeaser("consultation_hours", $this->lng->txt("app_consultation_hours"), $mode . $groups); }
/** * Check if a calendar appointment is bookable for a specific user * @param type $a_cal_entry_id * @param type $a_user_id * @return bool */ public function isAppointmentBookableForUser($a_app_id, $a_user_id) { // #12025 if ($a_user_id == ANONYMOUS_USER_ID) { return false; } // Check max bookings if ($this->getNumberOfBookings() <= $this->getCurrentNumberOfBookings($a_app_id)) { #$GLOBALS['ilLog']->write(__METHOD__.': Number of bookings exceeded'); return false; } // Check deadline $dead_limit = new ilDateTime(time(), IL_CAL_UNIX); $dead_limit->increment(IL_CAL_HOUR, $this->getDeadlineHours()); include_once 'Services/Calendar/classes/class.ilCalendarEntry.php'; $entry = new ilCalendarEntry($a_app_id); if (ilDateTime::_after($dead_limit, $entry->getStart())) { #$GLOBALS['ilLog']->write(__METHOD__.': Deadline reached'); return false; } // Check group restrictions if (!$this->getBookingGroup()) { #$GLOBALS['ilLog']->write(__METHOD__.': No booking group'); return true; } include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourAppointments.php'; $group_apps = ilConsultationHourAppointments::getAppointmentIdsByGroup($this->getObjId(), $this->getBookingGroup()); // Number of bookings in group $bookings = self::lookupBookingsOfUser($group_apps, $a_user_id); include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourGroups.php'; #$GLOBALS['ilLog']->write(__METHOD__.': '.ilConsultationHourGroups::lookupMaxBookings($this->getBookingGroup())); if (count($bookings) >= ilConsultationHourGroups::lookupMaxBookings($this->getBookingGroup())) { #$GLOBALS['ilLog']->write(__METHOD__.': Personal booking limit reached'); return false; } #$GLOBALS['ilLog']->write(__METHOD__.': Is bookable!'); return true; }