protected function parseDynamicTitle($a_type) { global $lng; $title = $style = ""; switch ($a_type) { case "consultationhour": include_once 'Services/Booking/classes/class.ilBookingEntry.php'; $entry = new ilBookingEntry($this->getContextId()); if ($entry) { if ($entry->isOwner()) { $max = (int) $entry->getNumberOfBookings(); $current = (int) $entry->getCurrentNumberOfBookings($this->getEntryId()); if (!$current) { $style = ';border-left-width: 5px; border-left-style: solid; border-left-color: green'; $title = $lng->txt('cal_book_free'); } elseif ($current >= $max) { $style = ';border-left-width: 5px; border-left-style: solid; border-left-color: red'; $title = $lng->txt('cal_booked_out'); } else { $style = ';border-left-width: 5px; border-left-style: solid; border-left-color: yellow'; $title = $current . '/' . $max; } } else { /* * if($entry->hasBooked($this->getEntryId())) */ include_once 'Services/Calendar/classes/ConsultationHours/class.ilConsultationHourAppointments.php'; $apps = ilConsultationHourAppointments::getAppointmentIds($entry->getObjId(), $this->getContextId(), $this->getStart()); $orig_event = $apps[0]; if ($entry->hasBooked($orig_event)) { $style = ';border-left-width: 5px; border-left-style: solid; border-left-color: green'; $title = $lng->txt('cal_date_booked'); } } } break; } if ($style) { $this->presentation_style = $style; } return $title; }
/** * Confirmation screen to cancel consultation appointment or ressource booking * depends on calendar category */ public function cancelBooking() { global $ilUser, $tpl; $entry = (int) $_GET['app_id']; include_once 'Services/Calendar/classes/class.ilCalendarEntry.php'; $entry = new ilCalendarEntry($entry); $category = $this->calendarEntryToCategory($entry); if ($category->getType() == ilCalendarCategory::TYPE_CH) { include_once 'Services/Booking/classes/class.ilBookingEntry.php'; $booking = new ilBookingEntry($entry->getContextId()); if (!$booking->hasBooked($entry->getEntryId())) { $this->ctrl->returnToParent($this); return false; } $entry_title = ' ' . $entry->getTitle() . " (" . ilObjUser::_lookupFullname($booking->getObjId()) . ')'; } else { if ($category->getType() == ilCalendarCategory::TYPE_BOOK) { $entry_title = ' ' . $entry->getTitle(); } else { $this->ctrl->returnToParent($this); return false; } } $title = ilDatePresentation::formatPeriod($entry->getStart(), $entry->getEnd()); include_once 'Services/Utilities/classes/class.ilConfirmationGUI.php'; $conf = new ilConfirmationGUI(); $conf->setFormAction($this->ctrl->getFormAction($this)); $conf->setHeaderText($this->lng->txt('cal_cancel_booking_info')); $conf->setConfirm($this->lng->txt('cal_cancel_booking'), 'cancelconfirmed'); $conf->setCancel($this->lng->txt('cancel'), 'cancel'); $conf->addItem('app_id', $entry->getEntryId(), $title . ' - ' . $entry_title); $tpl->setContent($conf->getHTML()); }
/** * get HTML * * @access public * @param * @return */ public function getHTML($a_app) { global $tree, $lng, $ilUser; self::$counter++; $this->tpl = new ilTemplate('tpl.appointment_panel.html', true, true, 'Services/Calendar'); // Panel variables $this->tpl->setVariable('PANEL_NUM', self::$counter); $this->tpl->setVariable('PANEL_TITLE', str_replace(' ()', '', $a_app['event']->getPresentationTitle(false))); if ($a_app["event"]->isMilestone()) { $this->tpl->setVariable('PANEL_DETAILS', $this->lng->txt('cal_ms_details')); } else { $this->tpl->setVariable('PANEL_DETAILS', $this->lng->txt('cal_details')); } $this->tpl->setVariable('PANEL_TXT_DATE', $this->lng->txt('date')); if ($a_app['fullday']) { $this->tpl->setVariable('PANEL_DATE', ilDatePresentation::formatPeriod(new ilDate($a_app['dstart'], IL_CAL_UNIX), new ilDate($a_app['dend'], IL_CAL_UNIX))); } else { $this->tpl->setVariable('PANEL_DATE', ilDatePresentation::formatPeriod(new ilDateTime($a_app['dstart'], IL_CAL_UNIX), new ilDateTime($a_app['dend'], IL_CAL_UNIX))); } if ($a_app['event']->getLocation()) { $this->tpl->setVariable('PANEL_TXT_WHERE', $this->lng->txt('cal_where')); $this->tpl->setVariable('PANEL_WHERE', ilUtil::makeClickable($a_app['event']->getLocation()), true); } if ($a_app['event']->getDescription()) { $this->tpl->setVariable('PANEL_TXT_DESC', $this->lng->txt('description')); $this->tpl->setVariable('PANEL_DESC', ilUtil::makeClickable(nl2br($a_app['event']->getDescription()))); } if ($a_app['event']->isMilestone() && $a_app['event']->getCompletion() > 0) { $this->tpl->setVariable('PANEL_TXT_COMPL', $this->lng->txt('cal_task_completion')); $this->tpl->setVariable('PANEL_COMPL', $a_app['event']->getCompletion() . " %"); } if ($a_app['event']->isMilestone()) { // users responsible $users = $a_app['event']->readResponsibleUsers(); $delim = ""; foreach ($users as $r) { $value .= $delim . $r["lastname"] . ", " . $r["firstname"] . " [" . $r["login"] . "]"; $delim = "<br />"; } if (count($users) > 0) { $this->tpl->setVariable('PANEL_TXT_RESP', $this->lng->txt('cal_responsible')); $this->tpl->setVariable('PANEL_RESP', $value); } } include_once './Services/Calendar/classes/class.ilCalendarCategoryAssignments.php'; $cat_id = ilCalendarCategoryAssignments::_lookupCategory($a_app['event']->getEntryId()); $cat_info = ilCalendarCategories::_getInstance()->getCategoryInfo($cat_id); $entry_obj_id = isset($cat_info['subitem_obj_ids'][$cat_id]) ? $cat_info['subitem_obj_ids'][$cat_id] : $cat_info['obj_id']; $this->tpl->setVariable('PANEL_TXT_CAL_TYPE', $this->lng->txt('cal_cal_type')); switch ($cat_info['type']) { case ilCalendarCategory::TYPE_GLOBAL: $this->tpl->setVariable('PANEL_CAL_TYPE', $this->lng->txt('cal_type_system')); break; case ilCalendarCategory::TYPE_USR: $this->tpl->setVariable('PANEL_CAL_TYPE', $this->lng->txt('cal_type_personal')); break; case ilCalendarCategory::TYPE_OBJ: $type = ilObject::_lookupType($cat_info['obj_id']); $this->tpl->setVariable('PANEL_CAL_TYPE', $this->lng->txt('cal_type_' . $type)); // Course group appointment registration if ($this->settings->isCGRegistrationEnabled() and $type == 'crs' or type == 'grp') { if (!$a_app['event']->isAutoGenerated()) { include_once './Services/Calendar/classes/class.ilCalendarRegistration.php'; $reg = new ilCalendarRegistration($a_app['event']->getEntryId()); if ($reg->isRegistered($ilUser->getId(), new ilDateTime($a_app['dstart'], IL_CAL_UNIX), new ilDateTime($a_app['dend'], IL_CAL_UNIX))) { $this->tpl->setCurrentBlock('panel_cancel_book_link'); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'seed', $this->getSeed()->get(IL_CAL_DATE)); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'app_id', $a_app['event']->getEntryId()); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'dstart', $a_app['dstart']); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'dend', $a_app['dend']); $this->tpl->setVariable('TXT_PANEL_CANCELBOOK', $this->lng->txt('cal_reg_unregister')); $this->tpl->setVariable('PANEL_CANCELBOOK_HREF', $this->ctrl->getLinkTargetByClass('ilcalendarappointmentgui', 'confirmUnregister')); $this->tpl->parseCurrentBlock(); } else { $this->tpl->setCurrentBlock('panel_book_link'); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'seed', $this->getSeed()->get(IL_CAL_DATE)); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'app_id', $a_app['event']->getEntryId()); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'dstart', $a_app['dstart']); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'dend', $a_app['dend']); $this->tpl->setVariable('TXT_PANEL_BOOK', $this->lng->txt('cal_reg_register')); $this->tpl->setVariable('PANEL_BOOK_HREF', $this->ctrl->getLinkTargetByClass('ilcalendarappointmentgui', 'confirmRegister')); $this->tpl->parseCurrentBlock(); } include_once './Services/Link/classes/class.ilLink.php'; $registrations = array(); foreach ($reg->getRegisteredUsers(new ilDateTime($a_app['dstart'], IL_CAL_UNIX), new ilDateTime($a_app['dend'], IL_CAL_UNIX)) as $usr_data) { $usr_id = $usr_data['usr_id']; $this->ctrl->setParameterByClass('ilconsultationhoursgui', 'user', $usr_id); $registrations[] = '<a href="' . $this->ctrl->getLinkTargetByClass('ilconsultationhoursgui', 'showprofile') . '">' . ilObjUser::_lookupFullname($usr_id); $this->ctrl->setParameterByClass('ilconsultationhoursgui', 'user', ''); } if (count($registrations)) { $this->tpl->setCurrentBlock('panel_current_booking'); $this->tpl->setVariable('PANEL_TXT_CURRENT_BOOKING', $this->lng->txt('cal_reg_registered_users')); $this->tpl->setVariable('PANEL_CURRENT_BOOKING', implode('<br />', $registrations)); $this->tpl->parseCurrentBlock(); } } } break; case ilCalendarCategory::TYPE_CH: $this->tpl->setVariable('PANEL_CAL_TYPE', $this->lng->txt('cal_ch_ch')); include_once 'Services/Booking/classes/class.ilBookingEntry.php'; $entry = new ilBookingEntry($a_app['event']->getContextId()); $is_owner = $entry->isOwner(); $user_entry = $cat_info['obj_id'] == $ilUser->getId(); if ($user_entry && !$is_owner) { // find source calendar entry in owner calendar include_once 'Services/Calendar/classes/ConsultationHours/class.ilConsultationHourAppointments.php'; $apps = ilConsultationHourAppointments::getAppointmentIds($entry->getObjId(), $a_app['event']->getContextId(), $a_app['event']->getStart()); $ref_event = $apps[0]; } else { $ref_event = $a_app['event']->getEntryId(); } $this->tpl->setCurrentBlock('panel_booking_owner'); $this->tpl->setVariable('PANEL_TXT_BOOKING_OWNER', $this->lng->txt('cal_ch_booking_owner')); $this->tpl->setVariable('PANEL_BOOKING_OWNER', ilObjUser::_lookupFullname($entry->getObjId())); $this->tpl->parseCurrentBlock(); $this->tpl->setCurrentBlock('panel_max_booking'); $this->tpl->setVariable('PANEL_TXT_MAX_BOOKING', $this->lng->txt('cal_ch_num_bookings')); $this->tpl->setVariable('PANEL_MAX_BOOKING', $entry->getNumberOfBookings()); $this->tpl->parseCurrentBlock(); if (!$is_owner) { if ($entry->hasBooked($ref_event)) { if (ilDateTime::_after($a_app['event']->getStart(), new ilDateTime(time(), IL_CAL_UNIX))) { $this->tpl->setCurrentBlock('panel_cancel_book_link'); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'app_id', $ref_event); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'seed', $this->getSeed()->get(IL_CAL_DATE)); $this->tpl->setVariable('TXT_PANEL_CANCELBOOK', $this->lng->txt('cal_ch_cancel_booking')); $this->tpl->setVariable('PANEL_CANCELBOOK_HREF', $this->ctrl->getLinkTargetByClass('ilcalendarappointmentgui', 'cancelBooking')); $this->tpl->parseCurrentBlock(); } } elseif ($entry->isAppointmentBookableForUser($ref_event, $GLOBALS['ilUser']->getId())) { $this->tpl->setCurrentBlock('panel_book_link'); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'app_id', $ref_event); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'seed', $this->getSeed()->get(IL_CAL_DATE)); $this->tpl->setVariable('TXT_PANEL_BOOK', $this->lng->txt('cal_ch_book')); $this->tpl->setVariable('PANEL_BOOK_HREF', $this->ctrl->getLinkTargetByClass('ilcalendarappointmentgui', 'book')); $this->tpl->parseCurrentBlock(); } $this->tpl->setCurrentBlock('panel_current_booking'); $this->tpl->setVariable('PANEL_TXT_CURRENT_BOOKING', $this->lng->txt('cal_ch_current_bookings')); $this->tpl->setVariable('PANEL_CURRENT_BOOKING', $entry->getCurrentNumberOfBookings($ref_event)); $this->tpl->parseCurrentBlock(); } else { $obj_ids = $entry->getTargetObjIds(); foreach ($obj_ids as $obj_id) { $title = ilObject::_lookupTitle($obj_id); $refs = ilObject::_getAllReferences($obj_id); include_once './Services/Link/classes/class.ilLink.php'; $this->tpl->setCurrentBlock('panel_booking_target_row'); $this->tpl->setVariable('PANEL_BOOKING_TARGET_TITLE', $title); $this->tpl->setVariable('PANEL_BOOKING_TARGET', ilLink::_getLink(end($refs))); $this->tpl->parseCurrentBlock(); } if ($obj_ids) { $this->tpl->setCurrentBlock('panel_booking_target'); $this->tpl->setVariable('PANEL_TXT_BOOKING_TARGET', $this->lng->txt('cal_ch_target_object')); $this->tpl->parseCurrentBlock(); } $link_users = true; if (ilCalendarCategories::_getInstance()->getMode() == ilCalendarCategories::MODE_PORTFOLIO_CONSULTATION) { $link_users = false; } include_once './Services/Link/classes/class.ilLink.php'; $bookings = array(); $this->ctrl->setParameterByClass('ilconsultationhoursgui', 'panel', 1); foreach ($entry->getCurrentBookings($a_app['event']->getEntryId()) as $user_id) { if ($link_users) { $this->ctrl->setParameterByClass('ilconsultationhoursgui', 'user', $user_id); $bookings[] = '<a href="' . $this->ctrl->getLinkTargetByClass('ilconsultationhoursgui', 'showprofile') . '">' . ilObjUser::_lookupFullname($user_id) . '</a>'; $this->ctrl->setParameterByClass('ilconsultationhoursgui', 'user', ''); } else { $bookings[] = ilObjUser::_lookupFullname($user_id); } } $this->ctrl->setParameterByClass('ilconsultationhoursgui', 'panel', ''); $this->tpl->setCurrentBlock('panel_current_booking'); $this->tpl->setVariable('PANEL_TXT_CURRENT_BOOKING', $this->lng->txt('cal_ch_current_bookings')); $this->tpl->setVariable('PANEL_CURRENT_BOOKING', implode('<br />', $bookings)); $this->tpl->parseCurrentBlock(); } break; case ilCalendarCategory::TYPE_BOOK: $this->tpl->setVariable('PANEL_CAL_TYPE', $this->lng->txt('cal_ch_booking')); $this->tpl->setCurrentBlock('panel_cancel_book_link'); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'app_id', $a_app['event']->getEntryId()); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'seed', $this->getSeed()->get(IL_CAL_DATE)); $this->tpl->setVariable('TXT_PANEL_CANCELBOOK', $this->lng->txt('cal_ch_cancel_booking')); $this->tpl->setVariable('PANEL_CANCELBOOK_HREF', $this->ctrl->getLinkTargetByClass('ilcalendarappointmentgui', 'cancelBooking')); $this->tpl->parseCurrentBlock(); break; } $this->tpl->setVariable('PANEL_TXT_CAL_NAME', $this->lng->txt('cal_calendar_name')); $this->tpl->setVariable('PANEL_CAL_NAME', $cat_info['title']); if ($cat_info['editable'] and !$a_app['event']->isAutoGenerated()) { $this->tpl->setCurrentBlock('panel_edit_link'); $this->tpl->setVariable('TXT_PANEL_EDIT', $this->lng->txt('edit')); $this->ctrl->clearParametersByClass('ilcalendarappointmentgui'); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'seed', $this->getSeed()->get(IL_CAL_DATE)); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'app_id', $a_app['event']->getEntryId()); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'dt', $a_app['dstart']); $this->tpl->setVariable('PANEL_EDIT_HREF', $this->ctrl->getLinkTargetByClass('ilcalendarappointmentgui', 'askEdit')); $this->tpl->setCurrentBlock('panel_delete_link'); $this->tpl->setVariable('TXT_PANEL_DELETE', $this->lng->txt('delete')); $this->ctrl->clearParametersByClass('ilcalendarappointmentgui'); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'seed', $this->getSeed()->get(IL_CAL_DATE)); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'app_id', $a_app['event']->getEntryId()); $this->ctrl->setParameterByClass('ilcalendarappointmentgui', 'dt', $a_app['dstart']); $this->tpl->setVariable('PANEL_DELETE_HREF', $this->ctrl->getLinkTargetByClass('ilcalendarappointmentgui', 'askdelete')); $this->tpl->parseCurrentBlock(); } include_once './Services/Calendar/classes/class.ilCalendarCategory.php'; if ($cat_info['type'] == ilCalendarCategory::TYPE_OBJ) { $refs = ilObject::_getAllReferences($entry_obj_id); $type = ilObject::_lookupType($entry_obj_id); $title = ilObject::_lookupTitle($entry_obj_id) ? ilObject::_lookupTitle($entry_obj_id) : $lng->txt('obj_' . $type); include_once './Services/Link/classes/class.ilLink.php'; $href = ilLink::_getStaticLink(current($refs), ilObject::_lookupType($entry_obj_id)); $parent = $tree->getParentId(current($refs)); $parent_title = ilObject::_lookupTitle(ilObject::_lookupObjId($parent)); $this->tpl->setVariable('PANEL_TXT_LINK', $this->lng->txt('ext_link')); $this->tpl->setVariable('PANEL_LINK_HREF', $href); $this->tpl->setVariable('PANEL_LINK_NAME', $title); $this->tpl->setVariable('PANEL_PARENT', $parent_title); } return $this->tpl->get(); }
/** * * @return */ public function send() { global $rbacreview, $lng; switch ($this->getType()) { case self::TYPE_USER: $rcp = array_pop($this->getRecipients()); $this->initLanguage($rcp); $this->getLanguage()->loadLanguageModule('dateplaner'); $this->initMail(); $this->setSubject(sprintf($this->getLanguageText('cal_mail_notification_subject'), $this->getAppointment()->getTitle())); $this->setBody(ilMail::getSalutation($rcp, $this->getLanguage())); $this->appendBody("\n\n"); $this->appendBody($this->getLanguageText('cal_mail_notification_body')); $this->appendBody("\n\n"); $this->appendAppointmentDetails(); $this->appendBody("\n\n"); $this->getMail()->appendInstallationSignature(true); $this->addAttachment(); $this->sendMail($this->getRecipients(), array('system'), true); break; case self::TYPE_USER_ANONYMOUS: $rcp = array_pop($this->getRecipients()); $this->setLanguage(ilLanguageFactory::_getLanguage($lng->getDefaultLanguage())); $this->getLanguage()->loadLanguageModule('dateplaner'); $this->getLanguage()->loadLanguageModule('mail'); $this->initMail(); $this->setSubject(sprintf($this->getLanguageText('cal_mail_notification_subject'), $this->getAppointment()->getTitle())); $this->setBody(ilMail::getSalutation(0, $this->getLanguage())); $this->appendBody("\n\n"); $this->appendBody($this->getLanguageText('cal_mail_notification_body')); $this->appendBody("\n\n"); $this->appendAppointmentDetails(); $this->appendBody("\n\n"); $this->getMail()->appendInstallationSignature(true); $this->addAttachment(); $this->sendMail($this->getRecipients(), array('email'), false); break; case self::TYPE_GRP_NEW_NOTIFICATION: $this->setLanguage(ilLanguageFactory::_getLanguage($lng->getDefaultLanguage())); $this->getLanguage()->loadLanguageModule('grp'); $this->getLanguage()->loadLanguageModule('dateplaner'); $this->initMail(); $this->setSubject(sprintf($this->getLanguageText('cal_grp_new_notification_sub'), $this->getObjectTitle(true))); $this->setBody($this->getLanguageText('grp_notification_salutation')); $this->appendBody("\n\n"); $this->appendBody(sprintf($this->getLanguageText('cal_grp_new_notification_body'), $this->getObjectTitle(true))); $this->appendBody("\n\n"); $this->appendBody($this->getLanguageText('grp_mail_permanent_link')); $this->appendBody("\n\n"); $this->appendAppointmentDetails(); $this->appendBody("\n\n"); $this->appendBody($this->createPermanentLink()); $this->getMail()->appendInstallationSignature(true); $this->addAttachment(); $this->sendMail(array('#il_grp_admin_' . $this->getRefId(), '#il_grp_member_' . $this->getRefId()), array('system'), false); break; case self::TYPE_GRP_NOTIFICATION: $this->setLanguage(ilLanguageFactory::_getLanguage($lng->getDefaultLanguage())); $this->getLanguage()->loadLanguageModule('grp'); $this->getLanguage()->loadLanguageModule('dateplaner'); $this->initMail(); $this->setSubject(sprintf($this->getLanguageText('cal_grp_notification_sub'), $this->getObjectTitle(true))); $this->setBody($this->getLanguageText('grp_notification_salutation')); $this->appendBody("\n\n"); $this->appendBody(sprintf($this->getLanguageText('cal_grp_notification_body'), $this->getObjectTitle(true))); $this->appendBody("\n\n"); $this->appendAppointmentDetails(); $this->appendBody("\n\n"); $this->appendBody($this->getLanguageText('grp_mail_permanent_link')); $this->appendBody("\n\n"); $this->appendBody($this->createPermanentLink()); $this->getMail()->appendInstallationSignature(true); $this->addAttachment(); $this->sendMail(array('#il_grp_admin_' . $this->getRefId(), '#il_grp_member_' . $this->getRefId()), array('system'), false); break; case self::TYPE_CRS_NEW_NOTIFICATION: $this->setLanguage(ilLanguageFactory::_getLanguage($lng->getDefaultLanguage())); $this->getLanguage()->loadLanguageModule('crs'); $this->getLanguage()->loadLanguageModule('dateplaner'); $this->initMail(); $this->setSubject(sprintf($this->getLanguageText('cal_crs_new_notification_sub'), $this->getObjectTitle(true))); $this->setBody($this->getLanguageText('crs_notification_salutation')); $this->appendBody("\n\n"); $this->appendBody(sprintf($this->getLanguageText('cal_crs_new_notification_body'), $this->getObjectTitle(true))); $this->appendBody("\n\n"); $this->appendBody($this->getLanguageText('crs_mail_permanent_link')); $this->appendBody("\n\n"); $this->appendAppointmentDetails(); $this->appendBody("\n\n"); $this->appendBody($this->createPermanentLink()); $this->getMail()->appendInstallationSignature(true); $this->addAttachment(); $this->sendMail(array('#il_crs_admin_' . $this->getRefId(), '#il_crs_tutor_' . $this->getRefId(), '#il_crs_member_' . $this->getRefId()), array('system'), false); break; case self::TYPE_CRS_NOTIFICATION: $this->setLanguage(ilLanguageFactory::_getLanguage($lng->getDefaultLanguage())); $this->getLanguage()->loadLanguageModule('crs'); $this->getLanguage()->loadLanguageModule('dateplaner'); $this->initMail(); $this->setSubject(sprintf($this->getLanguageText('cal_crs_notification_sub'), $this->getObjectTitle(true))); $this->setBody($this->getLanguageText('crs_notification_salutation')); $this->appendBody("\n\n"); $this->appendBody(sprintf($this->getLanguageText('cal_crs_notification_body'), $this->getObjectTitle(true))); $this->appendBody("\n\n"); $this->appendAppointmentDetails(); $this->appendBody("\n\n"); $this->appendBody($this->getLanguageText('crs_mail_permanent_link')); $this->appendBody("\n\n"); $this->appendBody($this->createPermanentLink()); $this->getMail()->appendInstallationSignature(true); $this->addAttachment(); $this->sendMail(array('#il_crs_admin_' . $this->getRefId(), '#il_crs_tutor_' . $this->getRefId(), '#il_crs_member_' . $this->getRefId()), array('system'), false); break; case self::TYPE_BOOKING_CONFIRMATION: $user_id = array_pop($this->getRecipients()); include_once 'Services/Calendar/classes/class.ilCalendarEntry.php'; include_once 'Services/Booking/classes/class.ilBookingEntry.php'; $entry = new ilCalendarEntry($this->getAppointmentId()); $booking = new ilBookingEntry($entry->getContextId()); $this->initLanguage($user_id); $this->getLanguage()->loadLanguageModule('dateplaner'); $this->initMail(); $this->setSubject(sprintf($this->getLanguageText('cal_booking_confirmation_subject'), $entry->getTitle())); $this->setBody(ilMail::getSalutation($user_id, $this->getLanguage())); $this->appendBody("\n\n"); $this->appendBody(sprintf($this->getLanguageText('cal_booking_confirmation_body'), ilObjUser::_lookupFullname($booking->getObjId()))); $this->appendBody("\n\n"); $this->appendAppointmentDetails($booking); /* $this->appendBody("\n\n"); $this->appendBody($this->getLanguageText('cal_booking_confirmation_link')); $this->appendBody("\n\n"); $this->appendBody($this->createPermanentLink()); */ $this->getMail()->appendInstallationSignature(true); $this->sendMail(array($user_id), array('system'), true); $this->appendBody("\n\n"); $this->appendBody($this->getLanguageText('cal_booking_confirmation_user') . "\n"); $this->appendBody(ilObjUser::_lookupFullname($user_id)); $this->sendMail(array($booking->getObjId()), array('system'), true); break; case self::TYPE_BOOKING_CANCELLATION: $user_id = array_pop($this->getRecipients()); include_once 'Services/Calendar/classes/class.ilCalendarEntry.php'; include_once 'Services/Booking/classes/class.ilBookingEntry.php'; $entry = new ilCalendarEntry($this->getAppointmentId()); $booking = new ilBookingEntry($entry->getContextId()); $user_id = array_pop($this->getRecipients()); $this->initLanguage($user_id); $this->getLanguage()->loadLanguageModule('dateplaner'); $this->initMail(); $this->setSubject(sprintf($this->getLanguageText('cal_booking_cancellation_subject'), $entry->getTitle())); $this->setBody(ilMail::getSalutation($user_id, $this->getLanguage())); $this->appendBody("\n\n"); $this->appendBody(sprintf($this->getLanguageText('cal_booking_cancellation_body'), ilObjUser::_lookupFullname($booking->getObjId()))); $this->appendBody("\n\n"); $this->appendAppointmentDetails($booking); $this->getMail()->appendInstallationSignature(true); $this->sendMail(array($user_id), array('system'), true); $this->appendBody("\n\n"); $this->appendBody($this->getLanguageText('cal_booking_cancellation_user') . "\n"); $this->appendBody(ilObjUser::_lookupFullname($user_id)); $this->sendMail(array($booking->getObjId()), array('system'), true); break; } $this->deleteAttachments(); }
/** * Confirmation screen to cancel consultation appointment or ressource booking * depends on calendar category */ public function cancelBooking() { global $ilUser, $tpl; $entry = (int) $_GET['app_id']; include_once 'Services/Calendar/classes/class.ilCalendarEntry.php'; $entry = new ilCalendarEntry($entry); $category = $this->calendarEntryToCategory($entry); if ($category->getType() == ilCalendarCategory::TYPE_CH) { include_once 'Services/Booking/classes/class.ilBookingEntry.php'; $booking = new ilBookingEntry($entry->getContextId()); if (!$booking->hasBooked($entry->getEntryId())) { $this->ctrl->returnToParent($this); return false; } $entry_title = ' ' . $entry->getTitle() . " (" . ilObjUser::_lookupFullname($booking->getObjId()) . ')'; } else { if ($category->getType() == ilCalendarCategory::TYPE_BOOK) { $entry_title = ' ' . $entry->getTitle(); } else { $this->ctrl->returnToParent($this); return false; } } $user_settings = ilCalendarUserSettings::_getInstanceByUserId($ilUser->getId()); $timezone = $ilUser->getTimeZone(); switch ($user_settings->getTimeFormat()) { case ilCalendarSettings::TIME_FORMAT_24: $title = $entry->getStart()->get(IL_CAL_FKT_DATE, 'H:i', $timezone); $title .= "-" . $entry->getEnd()->get(IL_CAL_FKT_DATE, 'H:i', $timezone); break; case ilCalendarSettings::TIME_FORMAT_12: $title = $entry->getStart()->get(IL_CAL_FKT_DATE, 'h:ia', $timezone); $title .= "-" . $entry->getEnd()->get(IL_CAL_FKT_DATE, 'h:ia', $timezone); break; } include_once 'Services/Utilities/classes/class.ilConfirmationGUI.php'; $conf = new ilConfirmationGUI(); $conf->setFormAction($this->ctrl->getFormAction($this)); $conf->setHeaderText($this->lng->txt('cal_cancel_booking_info')); $conf->setConfirm($this->lng->txt('cal_cancel_booking'), 'cancelconfirmed'); $conf->setCancel($this->lng->txt('cancel'), 'cancel'); $conf->addItem('app_id', $entry->getEntryId(), $title . ' - ' . $entry_title); $tpl->setContent($conf->getHTML()); }