4include_once(
'./Services/Membership/classes/class.ilRegistrationGUI.php');
28 parent::__construct($a_container);
30 $this->parent_gui = $a_parent_gui;
44 $ilTabs->activateTab(
'leave');
49 $this->ctrl->setReturn($this->parent_gui,
'infoScreen');
50 $this->ctrl->returnToParent($this);
54 $next_class = $this->ctrl->getNextClass($this);
58 $cmd = $this->ctrl->getCmd(
"show");
77 return $this->lng->txt(
'member_status');
79 return $this->lng->txt(
'crs_registration');
91 if($this->container->getImportantInformation())
95 $imp->setValue($value);
96 $this->form->addItem($imp);
99 if($this->container->getSyllabus())
103 $syl->setValue($value);
104 $this->form->addItem($syl);
115 include_once(
'./Services/Calendar/classes/class.ilDateTime.php');
118 if($this->container->getSubscriptionUnlimitedStatus())
121 $reg->setValue($this->lng->txt(
'mem_unlimited'));
122 $this->form->addItem($reg);
135 $tpl =
new ilTemplate(
'tpl.registration_period_form.html',
true,
true,
'Services/Membership');
136 $tpl->setVariable(
'TXT_FIRST',$this->lng->txt(
'mem_start'));
139 $tpl->setVariable(
'TXT_END',$this->lng->txt(
'mem_end'));
142 $warning = $this->lng->txt(
'mem_reg_not_started');
146 $tpl =
new ilTemplate(
'tpl.registration_period_form.html',
true,
true,
'Services/Membership');
147 $tpl->setVariable(
'TXT_FIRST',$this->lng->txt(
'mem_start'));
150 $tpl->setVariable(
'TXT_END',$this->lng->txt(
'mem_end'));
154 $warning = $this->lng->txt(
'mem_reg_expired');
158 $tpl =
new ilTemplate(
'tpl.registration_period_form.html',
true,
true,
'Services/Membership');
159 $tpl->setVariable(
'TXT_FIRST',$this->lng->txt(
'mem_end'));
164 $reg->setHtml(
$tpl->get());
170 #$reg->setAlert($warning);
172 $this->form->addItem($reg);
188 if(!$this->container->isSubscriptionMembershipLimited())
192 $tpl =
new ilTemplate(
'tpl.max_members_form.html',
true,
true,
'Services/Membership');
194 if($this->container->getSubscriptionMinMembers())
196 $tpl->setVariable(
'TXT_MIN',$this->lng->txt(
'mem_min_users').
':');
197 $tpl->setVariable(
'NUM_MIN',$this->container->getSubscriptionMinMembers());
200 if($this->container->getSubscriptionMaxMembers())
202 $tpl->setVariable(
'TXT_MAX',$this->lng->txt(
'mem_max_users'));
203 $tpl->setVariable(
'NUM_MAX',$this->container->getSubscriptionMaxMembers());
205 $tpl->setVariable(
'TXT_FREE',$this->lng->txt(
'mem_free_places').
":");
206 include_once
'./Modules/Course/classes/class.ilObjCourseAccess.php';
208 $free = $reg_info[
'reg_info_free_places'];
212 $tpl->setVariable(
'NUM_FREE',$free);
216 $tpl->setVariable(
'WARN_FREE',$free);
219 include_once(
'./Modules/Course/classes/class.ilCourseWaitingList.php');
222 $this->container->isSubscriptionMembershipLimited() and
223 $this->container->enabledWaitingList() and
228 $tpl->setVariable(
'TXT_WAIT',$this->lng->txt(
'mem_waiting_list_position'));
234 $tpl->setVariable(
'TXT_WAIT',$this->lng->txt(
'mem_waiting_list'));
245 !$this->container->enabledWaitingList())
250 #$alert = $this->lng->txt('mem_alert_no_places');
253 $this->container->enabledWaitingList() and
254 $this->container->isSubscriptionMembershipLimited() and
263 $this->container->enabledWaitingList() and
264 $this->container->isSubscriptionMembershipLimited())
268 #$alert = $this->lng->txt('crs_warn_no_max_set_on_waiting_list');
272 $this->container->enabledWaitingList() and
273 $this->container->isSubscriptionMembershipLimited() and
274 $this->getWaitingList()->getCountUsers())
277 #$alert = $this->lng->txt('crs_warn_wl_set_on_waiting_list');
282 $max->setHtml(
$tpl->get());
285 $max->setAlert($alert);
287 $this->form->addItem($max);
304 #$reg->setHtml($this->lng->txt('crs_info_reg_deactivated'));
305 $reg->setAlert($this->lng->txt(
'crs_info_reg_deactivated'));
306 #ilUtil::sendFailure($this->lng->txt('crs_info_reg_deactivated'));
307 #$reg = new ilNonEditableValueGUI($this->lng->txt('mem_reg_type'));
308 #$reg->setValue($this->lng->txt('crs_info_reg_deactivated'));
309 #$reg->setAlert($this->lng->txt('grp_reg_deactivated_alert'));
310 $this->form->addItem($reg);
317 switch($this->container->getSubscriptionType())
328 $txt->setValue($this->lng->txt(
'crs_info_reg_direct'));
330 $this->form->addItem(
$txt);
335 $txt->setValue($this->lng->txt(
'crs_subscription_options_password'));
339 $pass->setInputType(
'password');
341 $pass->setMaxLength(32);
342 #$pass->setRequired(true);
343 $pass->setInfo($this->lng->txt(
'crs_info_reg_password'));
346 $this->form->addItem(
$txt);
358 $txt->setValue($this->lng->txt(
'crs_subscription_options_confirmation'));
361 $sub->setValue(
$_POST[
'subject']);
362 $sub->setInfo($this->lng->txt(
'crs_info_reg_confirmation'));
365 if($this->participants->isSubscriber(
$ilUser->getId()))
367 $sub_data = $this->participants->getSubscriberData(
$ilUser->getId());
368 $sub->setValue($sub_data[
'subject']);
373 $txt->addSubItem($sub);
374 $this->form->addItem(
$txt);
393 parent::addCommandButtons();
396 switch($this->container->getSubscriptionType())
399 if($this->participants->isSubscriber(
$ilUser->getId()))
401 $this->form->clearCommandButtons();
402 $this->form->addCommandButton(
'updateSubscriptionRequest', $this->lng->txt(
'crs_update_subscr_request'));
403 $this->form->addCommandButton(
'cancelSubscriptionRequest', $this->lng->txt(
'crs_cancel_subscr_request'));
407 $this->form->clearCommandButtons();
408 $this->form->addCommandButton(
'join', $this->lng->txt(
'crs_join_request'));
409 $this->form->addCommandButton(
'cancel',$this->lng->txt(
'cancel'));
432 if(
$ilUser->getId() == ANONYMOUS_USER_ID)
434 $this->join_error = $this->lng->txt(
'permission_denied');
443 $this->join_error = $this->lng->txt(
'mem_error_preconditions');
450 $this->join_error = $this->lng->txt(
'crs_password_required');
453 if(strcmp(
$pass,$this->container->getSubscriptionPassword()) !== 0)
455 $this->join_error = $this->lng->txt(
'crs_password_not_valid');
461 $this->join_error = $this->lng->txt(
'fill_out_all_required_fields');
466 $this->join_error = $this->lng->txt(
'crs_agreement_required');
489 include_once(
'./Modules/Course/classes/class.ilCourseWaitingList.php');
490 $free = max(0,$this->container->getSubscriptionMaxMembers() - $this->participants->getCountMembers());
492 if($this->container->isSubscriptionMembershipLimited() and $this->container->enabledWaitingList() and (!$free or
$waiting_list->getCountUsers()))
495 $info = sprintf($this->lng->txt(
'crs_added_to_list'),
499 $this->participants->sendNotification($this->participants->NOTIFY_SUBSCRIPTION_REQUEST,
$ilUser->getId());
500 $this->participants->sendNotification($this->participants->NOTIFY_WAITING_LIST,
$ilUser->getId());
501 $ilCtrl->setParameterByClass(
"ilrepositorygui",
"ref_id",
502 $tree->getParentId($this->container->getRefId()));
503 $ilCtrl->redirectByClass(
"ilrepositorygui",
"");
506 switch($this->container->getSubscriptionType())
509 $this->participants->addSubscriber(
$ilUser->getId());
510 $this->participants->updateSubscriptionTime(
$ilUser->getId(),time());
512 $this->participants->sendNotification($this->participants->NOTIFY_SUBSCRIPTION_REQUEST,
$ilUser->getId());
515 $ilCtrl->setParameterByClass(
"ilrepositorygui",
"ref_id",
516 $tree->getParentId($this->container->getRefId()));
517 $ilCtrl->redirectByClass(
"ilrepositorygui",
"");
522 if($this->container->isSubscriptionMembershipLimited() && $this->container->getSubscriptionMaxMembers())
527 $this->container->getSubscriptionMaxMembers(),
539 $this->participants->sendNotification($this->participants->NOTIFY_ADMINS,
$ilUser->getId());
540 $this->participants->sendNotification($this->participants->NOTIFY_REGISTERED,
$ilUser->getId());
542 include_once
'./Modules/Forum/classes/class.ilForumNotification.php';
545 if($this->container->getType() ==
"crs")
547 $this->container->checkLPStatusSync(
$ilUser->getId());
553 $this->ctrl->returnToParent($this);
575 include_once(
'./Modules/Course/classes/class.ilCourseParticipants.php');
586 include_once
'./Modules/Course/classes/class.ilCourseWaitingList.php';
596 static $active =
null;
602 if(!$this->container->enabledWaitingList() or !$this->container->isSubscriptionMembershipLimited())
604 return $active =
false;
606 if(!$this->container->getSubscriptionMaxMembers())
608 return $active =
false;
611 $free = max(0,$this->container->getSubscriptionMaxMembers() - $this->participants->getCountMembers());
612 return $active = (!$free or $this->
getWaitingList()->getCountUsers());
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)
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.
show()
show registration form
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.
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)
http redirect to other 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['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.