4include_once(
'./Services/Membership/classes/class.ilRegistrationGUI.php');
28 parent::__construct($a_container);
30 $this->parent_gui = $a_parent_gui;
43 $ilTabs->activateTab(
'leave');
47 $this->ctrl->setReturn($this->parent_gui,
'infoScreen');
48 $this->ctrl->returnToParent($this);
52 $next_class = $this->ctrl->getNextClass($this);
53 switch ($next_class) {
55 $cmd = $this->ctrl->getCmd(
"show");
73 return $this->lng->txt(
'member_status');
75 return $this->lng->txt(
'crs_registration');
87 if ($this->container->getImportantInformation()) {
90 $imp->setValue($value);
91 $this->form->addItem($imp);
94 if ($this->container->getSyllabus()) {
97 $syl->setValue($value);
98 $this->form->addItem($syl);
109 include_once(
'./Services/Calendar/classes/class.ilDateTime.php');
112 if ($this->container->getSubscriptionUnlimitedStatus()) {
114 $reg->setValue($this->lng->txt(
'mem_unlimited'));
115 $this->form->addItem($reg);
125 $tpl =
new ilTemplate(
'tpl.registration_period_form.html',
true,
true,
'Services/Membership');
126 $tpl->setVariable(
'TXT_FIRST', $this->lng->txt(
'mem_start'));
129 $tpl->setVariable(
'TXT_END', $this->lng->txt(
'mem_end'));
132 $warning = $this->lng->txt(
'mem_reg_not_started');
134 $tpl =
new ilTemplate(
'tpl.registration_period_form.html',
true,
true,
'Services/Membership');
135 $tpl->setVariable(
'TXT_FIRST', $this->lng->txt(
'mem_start'));
138 $tpl->setVariable(
'TXT_END', $this->lng->txt(
'mem_end'));
142 $warning = $this->lng->txt(
'mem_reg_expired');
144 $tpl =
new ilTemplate(
'tpl.registration_period_form.html',
true,
true,
'Services/Membership');
145 $tpl->setVariable(
'TXT_FIRST', $this->lng->txt(
'mem_end'));
150 $reg->setHtml(
$tpl->get());
155 #$reg->setAlert($warning);
157 $this->form->addItem($reg);
173 if (!$this->container->isSubscriptionMembershipLimited()) {
176 $tpl =
new ilTemplate(
'tpl.max_members_form.html',
true,
true,
'Services/Membership');
178 if ($this->container->getSubscriptionMinMembers()) {
179 $tpl->setVariable(
'TXT_MIN', $this->lng->txt(
'mem_min_users') .
':');
180 $tpl->setVariable(
'NUM_MIN', $this->container->getSubscriptionMinMembers());
183 if ($this->container->getSubscriptionMaxMembers()) {
184 $tpl->setVariable(
'TXT_MAX', $this->lng->txt(
'mem_max_users'));
185 $tpl->setVariable(
'NUM_MAX', $this->container->getSubscriptionMaxMembers());
187 $tpl->setVariable(
'TXT_FREE', $this->lng->txt(
'mem_free_places') .
":");
188 include_once
'./Modules/Course/classes/class.ilObjCourseAccess.php';
190 $free = $reg_info[
'reg_info_free_places'];
193 $tpl->setVariable(
'NUM_FREE', $free);
195 $tpl->setVariable(
'WARN_FREE', $free);
198 include_once(
'./Modules/Course/classes/class.ilCourseWaitingList.php');
201 $this->container->isSubscriptionMembershipLimited() and
202 $this->container->enabledWaitingList() and
205 $tpl->setVariable(
'TXT_WAIT', $this->lng->txt(
'mem_waiting_list_position'));
208 $tpl->setVariable(
'TXT_WAIT', $this->lng->txt(
'mem_waiting_list'));
220 !$this->container->enabledWaitingList()) {
224 #$alert = $this->lng->txt('mem_alert_no_places');
226 $this->container->enabledWaitingList() and
227 $this->container->isSubscriptionMembershipLimited() and
234 $this->container->enabledWaitingList() and
235 $this->container->isSubscriptionMembershipLimited()) {
237 #$alert = $this->lng->txt('crs_warn_no_max_set_on_waiting_list');
240 $this->container->enabledWaitingList() and
241 $this->container->isSubscriptionMembershipLimited() and
242 $this->getWaitingList()->getCountUsers()) {
244 #$alert = $this->lng->txt('crs_warn_wl_set_on_waiting_list');
249 $max->setHtml(
$tpl->get());
250 if (strlen($alert)) {
251 $max->setAlert($alert);
253 $this->form->addItem($max);
269 #$reg->setHtml($this->lng->txt('crs_info_reg_deactivated'));
270 $reg->setAlert($this->lng->txt(
'crs_info_reg_deactivated'));
271 #ilUtil::sendFailure($this->lng->txt('crs_info_reg_deactivated'));
272 #$reg = new ilNonEditableValueGUI($this->lng->txt('mem_reg_type'));
273 #$reg->setValue($this->lng->txt('crs_info_reg_deactivated'));
274 #$reg->setAlert($this->lng->txt('grp_reg_deactivated_alert'));
275 $this->form->addItem($reg);
282 switch ($this->container->getSubscriptionType()) {
291 $txt->setValue($this->lng->txt(
'crs_info_reg_direct'));
293 $this->form->addItem(
$txt);
298 $txt->setValue($this->lng->txt(
'crs_subscription_options_password'));
302 $pass->setInputType(
'password');
304 $pass->setMaxLength(32);
305 #$pass->setRequired(true);
306 $pass->setInfo($this->lng->txt(
'crs_info_reg_password'));
309 $this->form->addItem(
$txt);
320 $txt->setValue($this->lng->txt(
'crs_subscription_options_confirmation'));
323 $sub->setValue(
$_POST[
'subject']);
324 $sub->setInfo($this->lng->txt(
'crs_info_reg_confirmation'));
327 if ($this->participants->isSubscriber(
$ilUser->getId())) {
328 $sub_data = $this->participants->getSubscriberData(
$ilUser->getId());
329 $sub->setValue($sub_data[
'subject']);
334 $txt->addSubItem($sub);
335 $this->form->addItem(
$txt);
354 parent::addCommandButtons();
357 switch ($this->container->getSubscriptionType()) {
359 if ($this->participants->isSubscriber(
$ilUser->getId())) {
360 $this->form->clearCommandButtons();
361 $this->form->addCommandButton(
'updateSubscriptionRequest', $this->lng->txt(
'crs_update_subscr_request'));
362 $this->form->addCommandButton(
'cancelSubscriptionRequest', $this->lng->txt(
'crs_cancel_subscr_request'));
364 $this->form->clearCommandButtons();
365 $this->form->addCommandButton(
'join', $this->lng->txt(
'crs_join_request'));
366 $this->form->addCommandButton(
'cancel', $this->lng->txt(
'cancel'));
388 if (
$ilUser->getId() == ANONYMOUS_USER_ID) {
389 $this->join_error = $this->lng->txt(
'permission_denied');
397 $this->join_error = $this->lng->txt(
'mem_error_preconditions');
402 $this->join_error = $this->lng->txt(
'crs_password_required');
405 if (strcmp(
$pass, $this->container->getSubscriptionPassword()) !== 0) {
406 $this->join_error = $this->lng->txt(
'crs_password_not_valid');
411 $this->join_error = $this->lng->txt(
'fill_out_all_required_fields');
415 $this->join_error = $this->lng->txt(
'crs_agreement_required');
438 include_once(
'./Modules/Course/classes/class.ilCourseWaitingList.php');
439 $free = max(0, $this->container->getSubscriptionMaxMembers() - $this->participants->getCountMembers());
441 if ($this->container->isSubscriptionMembershipLimited() and $this->container->enabledWaitingList() and (!$free or
$waiting_list->getCountUsers())) {
444 $this->lng->txt(
'crs_added_to_list'),
449 $this->participants->sendNotification($this->participants->NOTIFY_SUBSCRIPTION_REQUEST,
$ilUser->getId());
450 $this->participants->sendNotification($this->participants->NOTIFY_WAITING_LIST,
$ilUser->getId());
454 $tree->getParentId($this->container->getRefId())
456 $ilCtrl->redirectByClass(
"ilrepositorygui",
"");
459 switch ($this->container->getSubscriptionType()) {
461 $this->participants->addSubscriber(
$ilUser->getId());
462 $this->participants->updateSubscriptionTime(
$ilUser->getId(), time());
464 $this->participants->sendNotification($this->participants->NOTIFY_SUBSCRIPTION_REQUEST,
$ilUser->getId());
470 $tree->getParentId($this->container->getRefId())
472 $ilCtrl->redirectByClass(
"ilrepositorygui",
"");
477 if ($this->container->isSubscriptionMembershipLimited() && $this->container->getSubscriptionMaxMembers()) {
481 $this->container->getSubscriptionMaxMembers(),
492 $this->participants->sendNotification($this->participants->NOTIFY_ADMINS,
$ilUser->getId());
493 $this->participants->sendNotification($this->participants->NOTIFY_REGISTERED,
$ilUser->getId());
495 include_once
'./Modules/Forum/classes/class.ilForumNotification.php';
498 if ($this->container->getType() ==
"crs") {
499 $this->container->checkLPStatusSync(
$ilUser->getId());
504 $this->ctrl->returnToParent($this);
524 include_once(
'./Modules/Course/classes/class.ilCourseParticipants.php');
535 include_once
'./Modules/Course/classes/class.ilCourseWaitingList.php';
545 static $active =
null;
547 if ($active !==
null) {
550 if (!$this->container->enabledWaitingList() or !$this->container->isSubscriptionMembershipLimited()) {
551 return $active =
false;
553 if (!$this->container->getSubscriptionMaxMembers()) {
554 return $active =
false;
557 $free = max(0, $this->container->getSubscriptionMaxMembers() - $this->participants->getCountMembers());
558 return $active = (!$free or $this->
getWaitingList()->getCountUsers());
sprintf('%.4f', $callTime)
An exception for terminatinating execution or to throw for unit testing.
const IL_CRS_SUBSCRIPTION_PASSWORD
const IL_CRS_SUBSCRIPTION_CONFIRMATION
const IL_CRS_SUBSCRIPTION_DEACTIVATED
const IL_CRS_SUBSCRIPTION_DIRECT
static _getInstanceByObjId($a_obj_id)
Get singleton instance.
GUI class for course registrations.
getFormTitle()
get form title
initParticipants()
Init course participants.
fillInformations()
fill informations
fillRegistrationPeriod()
show informations about the registration period
validate()
Validate subscription request.
addCommandButtons()
Add group specific command buttons.
__construct($a_container, $a_parent_gui)
Constructor.
executeCommand()
Execute command.
fillMaxMembers()
fill max members
fillRegistrationType()
fill registration type
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false)
Format a date @access public.
@classDescription Date and time handling
static _after(ilDateTime $start, ilDateTime $end, $a_compare_field='', $a_tz='')
compare two dates and check start is after end This method does not consider tz offsets.
static _before(ilDateTime $start, ilDateTime $end, $a_compare_field='', $a_tz='')
compare two dates and check start is before end This method does not consider tz offsets.
static checkForumsExistsInsert($ref_id, $user_id=0)
This class represents a non editable value in a property form.
static lookupRegistrationInfo($a_obj_id)
Lookup registration info @global ilDB $ilDB @global ilObjUser $ilUser @global ilLanguage $lng.
static getDefaultMemberRole($a_ref_id)
Base class for Course and Group registration.
getContainer()
Parent object.
validateAgreement()
Check Agreement.
setAccepted($a_status)
Set Agreement accepted.
validateCustomFields()
Check required course fields.
enableRegistration($a_status)
set registration disabled
getWaitingList()
Get waiting list object.
show(ilPropertyFormGUI $form=null)
show registration form
isRegistrationPossible()
check if registration is possible
special template class to simplify handling of ITX/PEAR
This class represents a text area property in a property form.
This class represents a text property in a property form.
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static redirect($a_script)
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static makeClickable($a_text, $detectGotoLinks=false)
makeClickable In Texten enthaltene URLs und Mail-Adressen klickbar machen
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
$GLOBALS['loaded']
Global hash that tracks already loaded includes.