3 declare(strict_types=0);
34 $this->parent_gui = $a_parent_gui;
40 $this->
tabs->activateTab(
'leave');
43 if (!$this->
access->checkAccess(
'join',
'', $this->getRefId())) {
44 $this->
ctrl->setReturn($this->parent_gui,
'infoScreen');
45 $this->
ctrl->returnToParent($this);
49 $next_class = $this->
ctrl->getNextClass($this);
50 switch ($next_class) {
52 $cmd = $this->
ctrl->getCmd(
"show");
61 return $this->
lng->txt(
'member_status');
63 return $this->
lng->txt(
'crs_registration');
68 if ($this->container->getImportantInformation()) {
71 $imp->setValue($value);
72 $this->
form->addItem($imp);
75 if ($this->container->getSyllabus()) {
78 $syl->setValue($value);
79 $this->
form->addItem($syl);
87 if ($this->container->getSubscriptionUnlimitedStatus()) {
90 $this->
form->addItem($reg);
101 $tpl =
new ilTemplate(
'tpl.registration_period_form.html',
true,
true,
'Services/Membership');
108 $warning = $this->
lng->txt(
'mem_reg_not_started');
110 $tpl =
new ilTemplate(
'tpl.registration_period_form.html',
true,
true,
'Services/Membership');
117 $warning = $this->
lng->txt(
'mem_reg_expired');
119 $tpl =
new ilTemplate(
'tpl.registration_period_form.html',
true,
true,
'Services/Membership');
126 if (strlen($warning)) {
129 $this->tpl->setOnScreenMessage(
'failure', $warning);
130 #$reg->setAlert($warning); 132 $this->
form->addItem($reg);
137 if (!$this->container->isSubscriptionMembershipLimited()) {
140 $tpl =
new ilTemplate(
'tpl.max_members_form.html',
true,
true,
'Services/Membership');
143 if ($this->container->getSubscriptionMinMembers()) {
145 $tpl->
setVariable(
'NUM_MIN', $this->container->getSubscriptionMinMembers());
148 if ($this->container->getSubscriptionMaxMembers()) {
150 $tpl->
setVariable(
'NUM_MAX', $this->container->getSubscriptionMaxMembers());
154 $free = $reg_info[
'reg_info_free_places'];
164 $this->container->isSubscriptionMembershipLimited() && $this->container->enabledWaitingList() && (!$free ||
$waiting_list->
getCountUsers())) {
178 !$free && !$this->container->enabledWaitingList()) {
181 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'mem_alert_no_places'));
182 #$alert = $this->lng->txt('mem_alert_no_places'); 184 $this->container->enabledWaitingList() && $this->container->isSubscriptionMembershipLimited() &&
$waiting_list->
isOnList($this->
user->getId())
189 !$free && $this->container->enabledWaitingList() && $this->container->isSubscriptionMembershipLimited()) {
190 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'crs_warn_no_max_set_on_waiting_list'));
191 #$alert = $this->lng->txt('crs_warn_no_max_set_on_waiting_list'); 193 $free && $this->container->enabledWaitingList() && $this->container->isSubscriptionMembershipLimited() && $this->
getWaitingList()->getCountUsers()) {
194 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'crs_warn_wl_set_on_waiting_list'));
195 #$alert = $this->lng->txt('crs_warn_wl_set_on_waiting_list'); 201 if (strlen($alert)) {
202 $max->setAlert($alert);
204 $this->
form->addItem($max);
211 #$reg->setHtml($this->lng->txt('crs_info_reg_deactivated')); 212 $reg->
setAlert($this->
lng->txt(
'crs_info_reg_deactivated'));
213 #ilUtil::sendFailure($this->lng->txt('crs_info_reg_deactivated')); 214 #$reg = new ilNonEditableValueGUI($this->lng->txt('mem_reg_type')); 215 #$reg->setValue($this->lng->txt('crs_info_reg_deactivated')); 216 #$reg->setAlert($this->lng->txt('grp_reg_deactivated_alert')); 217 $this->
form->addItem($reg);
224 switch ($this->container->getSubscriptionType()) {
233 $txt->setValue($this->
lng->txt(
'crs_info_reg_direct'));
240 $txt->setValue($this->
lng->txt(
'crs_subscription_options_password'));
243 $pass->setInputType(
'password');
245 $pass->setMaxLength(32);
246 #$pass->setRequired(true); 247 $pass->setInfo($this->
lng->txt(
'crs_info_reg_password'));
249 $txt->addSubItem($pass);
261 $txt->setValue($this->
lng->txt(
'crs_subscription_options_confirmation'));
264 $sub->
setInfo($this->
lng->txt(
'crs_info_reg_confirmation'));
267 if ($this->participants->isSubscriber($this->user->getId())) {
268 $sub_data = $this->participants->getSubscriberData($this->
user->getId());
269 $sub->setValue($sub_data[
'subject']);
271 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'crs_reg_user_already_subscribed'));
274 $txt->addSubItem($sub);
284 parent::addCommandButtons();
285 switch ($this->container->getSubscriptionType()) {
287 if ($this->participants->isSubscriber($this->user->getId())) {
288 $this->
form->clearCommandButtons();
289 $this->
form->addCommandButton(
290 'updateSubscriptionRequest',
291 $this->
lng->txt(
'crs_update_subscr_request')
293 $this->
form->addCommandButton(
294 'cancelSubscriptionRequest',
295 $this->
lng->txt(
'crs_cancel_subscr_request')
298 $this->
form->clearCommandButtons();
299 $this->
form->addCommandButton(
'join', $this->
lng->txt(
'crs_join_request'));
300 $this->
form->addCommandButton(
'cancel', $this->
lng->txt(
'cancel'));
311 $this->join_error = $this->
lng->txt(
'permission_denied');
319 $this->join_error = $this->
lng->txt(
'mem_error_preconditions');
323 $pass = $this->
http->wrapper()->post()->retrieve(
325 $this->
refinery->kindlyTo()->string()
327 if ((
string) $pass ===
'') {
328 $this->join_error = $this->
lng->txt(
'crs_password_required');
331 if (strcmp($pass, $this->container->getSubscriptionPassword()) !== 0) {
332 $this->join_error = $this->
lng->txt(
'crs_password_not_valid');
337 $this->join_error = $this->
lng->txt(
'fill_out_all_required_fields');
341 $this->join_error = $this->
lng->txt(
'crs_agreement_required');
353 $free = max(0, $this->container->getSubscriptionMaxMembers() - $this->participants->getCountMembers());
355 if ($this->container->isSubscriptionMembershipLimited() && $this->container->enabledWaitingList() && (!$free || $waiting_list->getCountUsers())) {
358 $this->
lng->txt(
'crs_added_to_list'),
359 $waiting_list->getPosition($this->
user->getId())
361 $this->tpl->setOnScreenMessage(
'success', $info,
true);
363 $this->participants->sendNotification(
367 $this->participants->sendNotification(
371 $this->
ctrl->setParameterByClass(
374 $this->tree->getParentId($this->container->getRefId())
376 $this->
ctrl->redirectByClass(
"ilrepositorygui",
"");
379 switch ($this->container->getSubscriptionType()) {
381 $this->participants->addSubscriber($this->
user->getId());
382 $this->participants->updateSubscriptionTime($this->
user->getId(), time());
384 $subject = $this->
http->wrapper()->post()->retrieve(
386 $this->
refinery->kindlyTo()->string()
388 $this->participants->updateSubject($this->
user->getId(), $subject);
389 $this->participants->sendNotification(
394 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"application_completed"),
true);
395 $this->
ctrl->setParameterByClass(
398 $this->tree->getParentId($this->container->getRefId())
400 $this->
ctrl->redirectByClass(
"ilrepositorygui",
"");
405 if ($this->container->isSubscriptionMembershipLimited() && $this->container->getSubscriptionMaxMembers()) {
406 $success =
$GLOBALS[
'DIC'][
'rbacadmin']->assignUserLimited(
408 $this->
user->getId(),
409 $this->container->getSubscriptionMaxMembers(),
413 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'crs_subscription_failed_limit'));
425 if ($this->container->getType() ==
"crs") {
426 $this->container->checkLPStatusSync($this->
user->getId());
429 if (!$pending_goto) {
430 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"crs_subscription_successful"),
true);
431 $this->
ctrl->returnToParent($this);
433 $tgt = $pending_goto;
455 static $active = null;
457 if ($active !== null) {
460 if (!$this->container->enabledWaitingList() || !$this->container->isSubscriptionMembershipLimited()) {
461 return $active =
false;
463 if (!$this->container->getSubscriptionMaxMembers()) {
464 return $active =
false;
467 $free = max(0, $this->container->getSubscriptionMaxMembers() - $this->participants->getCountMembers());
468 return $active = (!$free || $this->
getWaitingList()->getCountUsers());
static get(string $a_var)
getPosition(int $a_usr_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const TYPE_WAITING_LIST_MEMBER
const IL_CRS_SUBSCRIPTION_DIRECT
const IL_CRS_SUBSCRIPTION_DEACTIVATED
static _before(ilDateTime $start, ilDateTime $end, string $a_compare_field='', string $a_tz='')
compare two dates and check start is before end This method does not consider tz offsets.
static lookupRegistrationInfo(int $a_obj_id)
getWaitingList()
Get waiting list object.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false)
get(string $part=self::DEFAULT_BLOCK)
Renders the given block and returns the html string.
setVariable(string $variable, $value='')
Sets the given variable to the given value.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getDefaultMemberRole(int $a_ref_id)
const TYPE_NOTIFICATION_ADMINS
setAccepted(bool $a_status)
const IL_CRS_SUBSCRIPTION_PASSWORD
static http()
Fetches the global http state from ILIAS.
enableRegistration(bool $a_status)
ilGlobalTemplateInterface $tpl
static _getInstanceByObjId(int $a_obj_id)
static _after(ilDateTime $start, ilDateTime $end, string $a_compare_field='', string $a_tz='')
compare two dates and check start is after end This method does not consider tz offsets.
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
const TYPE_NOTIFICATION_ADMINS_REGISTRATION_REQUEST
ilWaitingList $waiting_list
form( $class_path, string $cmd)
ilParticipants $participants
static redirect(string $a_script)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Base class for course and group participants.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct(Container $dic, ilPlugin $plugin)
This class represents a text area property in a property form.
const IL_CRS_SUBSCRIPTION_CONFIRMATION
__construct(ilObject $a_container, object $a_parent_gui)
show(?ilPropertyFormGUI $form=null)
static makeClickable(string $a_text, bool $detectGotoLinks=false)
static clear(string $a_var)
const TYPE_SUBSCRIBE_MEMBER
static checkForumsExistsInsert(int $ref_id, int $user_id)