00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 require_once './Services/Registration/classes/class.ilRegistrationSettings.php';
00025
00036 class ilRegistrationSettingsGUI
00037 {
00038 var $ctrl;
00039 var $tpl;
00040 var $ref_id;
00041
00042 function ilRegistrationSettingsGUI()
00043 {
00044 global $ilCtrl,$tpl,$lng;
00045
00046 $this->tpl =& $tpl;
00047 $this->ctrl =& $ilCtrl;
00048
00049 $this->lng =& $lng;
00050 $this->lng->loadLanguageModule('administration');
00051 $this->lng->loadLanguageModule('registration');
00052
00053 $this->ref_id = (int) $_GET['ref_id'];
00054
00055 $this->registration_settings = new ilRegistrationSettings();
00056 }
00057
00058 function executeCommand()
00059 {
00060 $next_class = $this->ctrl->getNextClass($this);
00061 $cmd = $this->ctrl->getCmd();
00062 switch($next_class)
00063 {
00064 default:
00065 if(!$cmd)
00066 {
00067 $cmd = 'diplayForm';
00068 }
00069 $this->$cmd();
00070 break;
00071 }
00072 return true;
00073 }
00074
00075 function view()
00076 {
00077 global $ilAccess,$ilErr;
00078
00079 if(!$ilAccess->checkAccess('read','',$this->ref_id))
00080 {
00081 $ilErr->raiseError($this->lng->txt("msg_no_perm_read"),$ilErr->MESSAGE);
00082 }
00083
00084 $this->tpl->addBlockfile('ADM_CONTENT','adm_content','tpl.registration_settings.html','Services/Registration');
00085
00086 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00087 $this->tpl->setVariable("TXT_REGISTRATION_SETTINGS",$this->lng->txt('reg_settings_header'));
00088 $this->tpl->setVariable("TXT_REG_TYPE",$this->lng->txt('reg_type'));
00089 $this->tpl->setVariable("TXT_REG_DEACTIVATED",$this->lng->txt('reg_disabled'));
00090 $this->tpl->setVariable("REG_DEACTIVATED_DESC",$this->lng->txt('reg_disabled_info'));
00091 $this->tpl->setVariable("TXT_DIRECT",$this->lng->txt('reg_direct'));
00092 $this->tpl->setVariable("REG_DIRECT_DESC",$this->lng->txt('reg_direct_info'));
00093 $this->tpl->setVariable("TXT_APPROVE",$this->lng->txt('reg_approve'));
00094 $this->tpl->setVariable("REG_APPROVE_DESC",$this->lng->txt('reg_approve_info'));
00095 $this->tpl->setVariable("TXT_ROLE_ASSIGNMENT",$this->lng->txt('reg_role_assignment'));
00096 $this->tpl->setVariable("TXT_REG_FIXED",$this->lng->txt('reg_fixed'));
00097 $this->tpl->setVariable("TXT_AVAILABLE",$this->lng->txt('reg_available_roles'));
00098 $this->tpl->setVariable("TXT_APPROVE_REC",$this->lng->txt('approve_recipient'));
00099 $this->tpl->setVariable("TXT_REG_NOTIFICATION",$this->lng->txt('reg_notification'));
00100 $this->tpl->setVariable("REG_NOTIFICATION_DESC",$this->lng->txt('reg_notification_info'));
00101 $this->tpl->setVariable("TXT_REG_EMAIL",$this->lng->txt('reg_email'));
00102
00103 $this->tpl->setVariable("TXT_REG_ACCESS_LIMITATIONS",$this->lng->txt('reg_access_limitations'));
00104 $this->tpl->setVariable("TXT_ENABLE_ACCESS_LIMITATIONS",$this->lng->txt('reg_enable_access_limitations'));
00105
00106 $this->tpl->setVariable("EDIT",$this->lng->txt('edit'));
00107 $this->tpl->setVariable("LINK_EDIT_FIXED",$this->ctrl->getLinkTarget($this,'editRoles'));
00108 $this->tpl->setVariable("LINK_EDIT_EMAIL",$this->ctrl->getLinkTarget($this,'editEmailAssignments'));
00109 $this->tpl->setVariable("LINK_EDIT_ACCESS_LIMITATIONS",$this->ctrl->getLinkTarget($this,'editRoleAccessLimitations'));
00110
00111 $this->__prepareRoleList();
00112 $this->__prepareAutomaticRoleList();
00113 $this->__prepareAccessLimitationRoleList();
00114
00115
00116 $this->tpl->setVariable("TXT_REG_PWD_FORWARD",$this->lng->txt('passwd_generation'));
00117 $this->tpl->setVariable("REG_INFO_PWD",$this->lng->txt('reg_info_pwd'));
00118
00119 $this->tpl->setVariable("RADIO_DEACTIVATE",ilUtil::formRadioButton(!$this->registration_settings->enabled(),
00120 'reg_type',
00121 IL_REG_DISABLED));
00122
00123 $this->tpl->setVariable("RADIO_DIRECT",ilUtil::formRadioButton($this->registration_settings->directEnabled(),
00124 'reg_type',
00125 IL_REG_DIRECT));
00126
00127 $this->tpl->setVariable("RADIO_APPROVE",ilUtil::formRadioButton($this->registration_settings->approveEnabled(),
00128 'reg_type',
00129 IL_REG_APPROVE));
00130
00131 $this->tpl->setVariable("APPROVER",ilUtil::prepareFormOutput($this->registration_settings->getApproveRecipientLogins()));
00132
00133
00134 $this->tpl->setVariable("CHECK_PWD",ilUtil::formCheckbox($this->registration_settings->passwordGenerationEnabled(),
00135 'reg_pwd',
00136 1));
00137
00138 $this->tpl->setVariable("RADIO_FIXED",ilUtil::formRadioButton($this->registration_settings->roleSelectionEnabled(),
00139 'reg_role_type',
00140 IL_REG_ROLES_FIXED));
00141
00142 $this->tpl->setVariable("RADIO_EMAIL",ilUtil::formRadioButton($this->registration_settings->automaticRoleAssignmentEnabled(),
00143 'reg_role_type',
00144 IL_REG_ROLES_EMAIL));
00145
00146 if ($this->registration_settings->getAccessLimitation())
00147 {
00148 $this->tpl->setVariable("REG_ACCESS_LIMITATION_CHECK","checked=\"checked\"");
00149 $this->tpl->setVariable("CSS_DISPLAY_ACCESS_LIMITATION","block");
00150 }
00151 else
00152 {
00153 $this->tpl->setVariable("CSS_DISPLAY_ACCESS_LIMITATION","none");
00154 }
00155
00156 $this->tpl->setVariable("TXT_SAVE",$this->lng->txt('save'));
00157 }
00158
00159 function save()
00160 {
00161 global $ilAccess,$ilErr;
00162
00163 if(!$ilAccess->checkAccess('write','',$this->ref_id))
00164 {
00165 $ilErr->raiseError($this->lng->txt("msg_no_perm_write"),$ilErr->MESSAGE);
00166 }
00167
00168 $this->registration_settings->setRegistrationType((int) $_POST['reg_type']);
00169 $this->registration_settings->setPasswordGenerationStatus((int) $_POST['reg_pwd']);
00170 $this->registration_settings->setApproveRecipientLogins(ilUtil::stripSlashes($_POST['reg_approver']));
00171 $this->registration_settings->setRoleType((int) $_POST['reg_role_type']);
00172 $this->registration_settings->setAccessLimitation((int) $_POST['reg_access_limitation']);
00173
00174 if($error_code = $this->registration_settings->validate())
00175 {
00176 ilUtil::sendInfo($this->lng->txt('reg_unknown_recipients').' '.$this->registration_settings->getUnknown());
00177 $this->view();
00178 return false;
00179 }
00180
00181 $this->registration_settings->save();
00182 ilUtil::sendInfo($this->lng->txt('saved_successfully'));
00183 $this->view();
00184
00185 return true;
00186 }
00187
00188 function editRoles()
00189 {
00190 include_once './classes/class.ilObjRole.php';
00191
00192 global $ilAccess,$ilErr,$rbacreview;
00193
00194 if(!$ilAccess->checkAccess('write','',$this->ref_id))
00195 {
00196 $ilErr->raiseError($this->lng->txt("msg_no_perm_write"),$ilErr->MESSAGE);
00197 }
00198
00199 $this->tpl->addBlockfile('ADM_CONTENT','adm_content','tpl.edit_roles.html','Services/Registration');
00200
00201 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00202 $this->tpl->setVariable("TXT_SELECTABLE_ROLES",$this->lng->txt('reg_selectable_roles'));
00203 $this->tpl->setVariable("ARR_DOWNRIGHT",ilUtil::getImagePath('arrow_downright.gif'));
00204 $this->tpl->setVariable("ACTIONS",$this->lng->txt('actions'));
00205 $this->tpl->setVariable("UPDATE",$this->lng->txt('save'));
00206 $this->tpl->setVariable("CANCEL",$this->lng->txt('cancel'));
00207
00208 $counter = 0;
00209 foreach($rbacreview->getGlobalRoles() as $role)
00210 {
00211 if($role == SYSTEM_ROLE_ID or
00212 $role == ANONYMOUS_ROLE_ID)
00213 {
00214 continue;
00215 }
00216 $this->tpl->setCurrentBlock("roles");
00217 $this->tpl->setVariable("CSSROW",ilUtil::switchColor(++$counter,'tblrow1','tblrow2'));
00218 $this->tpl->setVariable("CHECK_ROLE",ilUtil::formCheckbox(ilObjRole::_lookupAllowRegister($role),
00219 "roles[$role]",
00220 1));
00221 $this->tpl->setVariable("ROLE",ilObjRole::_lookupTitle($role));
00222 $this->tpl->parseCurrentBlock();
00223
00224 }
00225 }
00226
00227 function updateRoles()
00228 {
00229 global $ilAccess,$ilErr,$rbacreview;
00230
00231 if(!$ilAccess->checkAccess('write','',$this->ref_id))
00232 {
00233 $ilErr->raiseError($this->lng->txt("msg_no_perm_write"),$ilErr->MESSAGE);
00234 }
00235
00236 if(count($_POST['roles']) < 1)
00237 {
00238 ilUtil::sendInfo($this->lng->txt('msg_last_role_for_registration'));
00239 $this->editRoles();
00240 return false;
00241 }
00242
00243 foreach($rbacreview->getGlobalRoles() as $role)
00244 {
00245 if($role_obj = ilObjectFactory::getInstanceByObjId($role,false))
00246 {
00247 $role_obj->setAllowRegister($_POST['roles'][$role] ? 1 : 0);
00248 $role_obj->update();
00249 }
00250 }
00251
00252 ilUtil::sendInfo($this->lng->txt('saved_successfully'));
00253 $this->view();
00254
00255 return true;
00256 }
00257
00258 function editEmailAssignments()
00259 {
00260 global $ilAccess,$ilErr,$rbacreview;
00261
00262 if(!$ilAccess->checkAccess('write','',$this->ref_id))
00263 {
00264 $ilErr->raiseError($this->lng->txt("msg_no_perm_write"),$ilErr->MESSAGE);
00265 }
00266
00267 $this->__initRoleAssignments();
00268
00269 $this->tpl->addBlockfile('ADM_CONTENT','adm_content','tpl.reg_email_role_assignments.html','Services/Registration');
00270 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00271 $this->tpl->setVariable("TXT_EMAIL_ROLE_ASSIGN",$this->lng->txt('reg_email_role_assignment'));
00272 $this->tpl->setVariable("TXT_MAIL",$this->lng->txt('reg_email'));
00273 $this->tpl->setVariable("TXT_ROLE",$this->lng->txt('obj_role'));
00274 $this->tpl->setVariable("TXT_DEFAULT",$this->lng->txt('reg_default'));
00275 $this->tpl->setVariable("ARR_DOWNRIGHT",ilUtil::getImagePath('arrow_downright.gif'));
00276 $this->tpl->setVariable("TXT_DOMAIN",$this->lng->txt('reg_domain'));
00277
00278
00279 $this->tpl->setVariable("BTN_DELETE",$this->lng->txt('delete'));
00280 $this->tpl->setVariable("BTN_SAVE",$this->lng->txt('save'));
00281 $this->tpl->setVariable("BTN_ADD",$this->lng->txt('reg_add_assignment'));
00282 $this->tpl->setVariable("BTN_CANCEL",$this->lng->txt('cancel'));
00283
00284 $counter = 0;
00285 foreach($this->assignments_obj->getAssignments() as $assignment)
00286 {
00287 $this->tpl->setCurrentBlock("roles");
00288 $this->tpl->setVariable("CSSROW",ilUtil::switchColor(++$counter,'tblrow1','tblrow1'));
00289 $this->tpl->setVariable("ASSIGN_ID",$assignment['id']);
00290 $this->tpl->setVariable("DOMAIN",$assignment['domain']);
00291 $this->tpl->setVariable("CHECK_ROLE",ilUtil::formCheckbox(0,'del_assign[]',$assignment['id']));
00292 $this->tpl->setVariable("ROLE_SEL",$this->__buildRoleSelection($assignment['id']));
00293 $this->tpl->parseCurrentBlock();
00294 }
00295
00296 $this->tpl->setVariable("DEF_CSSROW",ilUtil::switchColor(++$counter,'tblrow1','tblrow1'));
00297 $this->tpl->setVariable("TXT_DEFAULT",$this->lng->txt('default'));
00298 $this->tpl->setVariable("DEF_ROLE",$this->__buildRoleSelection(-1));
00299 }
00300
00301 function editRoleAccessLimitations()
00302 {
00303 global $lng,$ilAccess,$ilErr,$rbacreview;
00304
00305 if(!$ilAccess->checkAccess('write','',$this->ref_id))
00306 {
00307 $ilErr->raiseError($this->lng->txt("msg_no_perm_write"),$ilErr->MESSAGE);
00308 }
00309
00310 $this->__initRoleAccessLimitations();
00311
00312 $this->tpl->addBlockfile('ADM_CONTENT','adm_content','tpl.reg_role_access_limitations.html','Services/Registration');
00313
00314 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00315 $this->tpl->setVariable("TXT_REG_ROLE_ACCESS_LIMITATIONS",$lng->txt('reg_role_access_limitations'));
00316 $this->tpl->setVariable("TXT_ROLE",$lng->txt('obj_role'));
00317 $this->tpl->setVariable("TXT_ACCESS_LIMITATION_MODE",$lng->txt('reg_access_limitation_mode'));
00318
00319 $this->tpl->setVariable("BTN_SAVE",$lng->txt('save'));
00320 $this->tpl->setVariable("BTN_CANCEL",$lng->txt('cancel'));
00321
00322 $counter = 0;
00323 include_once './classes/class.ilObjRole.php';
00324
00325 foreach(ilObjRole::_lookupRegisterAllowed() as $role)
00326 {
00327 $this->tpl->setCurrentBlock("roles");
00328 $this->tpl->setVariable("CSSROW",ilUtil::switchColor(++$counter,'tblrow1','tblrow1'));
00329 $this->tpl->setVariable("ROLE_ID",$role['id']);
00330 $this->tpl->setVariable("ROLE_TITLE",$role['title']);
00331 $this->tpl->setVariable("SEL_ACCESS_LIMITATION",$this->__buildAccessLimitationSelection($role['id']));
00332 $this->tpl->setVariable("CSS_DISPLAY_ABSOLUTE",($this->access_limitations_obj->getMode($role['id']) == 'absolute') ? 'inline' : 'none');
00333 $this->tpl->setVariable("CSS_DISPLAY_RELATIVE",($this->access_limitations_obj->getMode($role['id']) == 'relative') ? 'inline' : 'none');
00334 $this->tpl->setVariable("CSS_DISPLAY_UNLIMITED",($this->access_limitations_obj->getMode($role['id']) == 'unlimited') ? 'inline' : 'none');
00335 $this->tpl->setVariable("TXT_ACCESS_LIMITATION_UNLIMITED", $lng->txt('reg_access_limitation_none'));
00336
00337 $date = $this->__prepareDateSelect($this->access_limitations_obj->getAbsolute($role['id']));
00338 $this->tpl->setVariable("SEL_ACCESS_LIMITATION_ABSOLUTE",ilUtil::makeDateSelect('access_limitation_absolute_'.$role['id'],$date['y'],$date['m'],$date['d'],'2007'));
00339
00340 $this->tpl->setVariable("TXT_DAYS",$lng->txt('days'));
00341 $this->tpl->setVariable("TXT_MONTHS",$lng->txt('months'));
00342 $this->tpl->setVariable("TXT_YEARS",$lng->txt('years'));
00343
00344 $this->tpl->setVariable("DAYS",$this->access_limitations_obj->getRelative($role['id'],'d'));
00345 $this->tpl->setVariable("MONTHS",$this->access_limitations_obj->getRelative($role['id'],'m'));
00346 $this->tpl->setVariable("YEARS",$this->access_limitations_obj->getRelative($role['id'],'y'));
00347 $this->tpl->parseCurrentBlock();
00348 }
00349 }
00350
00351 function addAssignment()
00352 {
00353 global $ilAccess,$ilErr,$rbacreview;
00354
00355 if(!$ilAccess->checkAccess('write','',$this->ref_id))
00356 {
00357 $ilErr->raiseError($this->lng->txt("msg_no_perm_write"),$ilErr->MESSAGE);
00358 }
00359
00360 $this->__initRoleAssignments();
00361 $this->assignments_obj->add();
00362
00363 ilUtil::sendInfo($this->lng->txt('reg_added_assignment'));
00364 $this->editEmailAssignments();
00365
00366 return true;
00367 }
00368
00369 function deleteAssignment()
00370 {
00371 global $ilAccess,$ilErr,$rbacreview;
00372
00373 if(!$ilAccess->checkAccess('write','',$this->ref_id))
00374 {
00375 $ilErr->raiseError($this->lng->txt("msg_no_perm_write"),$ilErr->MESSAGE);
00376 }
00377
00378 if(!count($_POST['del_assign']))
00379 {
00380 ilUtil::sendInfo($this->lng->txt('reg_select_one'));
00381 $this->editEmailAssignments();
00382 return false;
00383 }
00384
00385 $this->__initRoleAssignments();
00386
00387 foreach($_POST['del_assign'] as $assignment_id)
00388 {
00389 $this->assignments_obj->delete($assignment_id);
00390 }
00391
00392 ilUtil::sendInfo($this->lng->txt('reg_deleted_assignment'));
00393 $this->editEmailAssignments();
00394
00395 return true;
00396 }
00397
00398 function saveAssignment()
00399 {
00400 global $ilAccess,$ilErr,$rbacreview;
00401
00402 if(!$ilAccess->checkAccess('write','',$this->ref_id))
00403 {
00404 $ilErr->raiseError($this->lng->txt("msg_no_perm_write"),$ilErr->MESSAGE);
00405 }
00406
00407 $this->__initRoleAssignments();
00408
00409 if (!is_array($_POST['domain']))
00410 {
00411 $_POST['domain'] = array();
00412 }
00413
00414 foreach($_POST['domain'] as $id => $data)
00415 {
00416 $this->assignments_obj->setDomain($id,ilUtil::stripSlashes($_POST['domain'][$id]['domain']));
00417 $this->assignments_obj->setRole($id,ilUtil::stripSlashes($_POST['role'][$id]['role']));
00418 }
00419 $this->assignments_obj->setDefaultRole((int) $_POST['default_role']);
00420
00421 if($err = $this->assignments_obj->validate())
00422 {
00423 switch($err)
00424 {
00425 case IL_REG_MISSING_DOMAIN:
00426 ilUtil::sendInfo($this->lng->txt('reg_missing_domain'));
00427 break;
00428
00429 case IL_REG_MISSING_ROLE:
00430 ilUtil::sendInfo($this->lng->txt('reg_missing_role'));
00431 break;
00432 }
00433 $this->editEmailAssignments();
00434 return false;
00435 }
00436
00437
00438 $this->assignments_obj->save();
00439 ilUtil::sendInfo($this->lng->txt('settings_saved'));
00440 $this->view();
00441 return true;
00442 }
00443
00444 function saveRoleAccessLimitations()
00445 {
00446 global $ilAccess,$ilErr,$rbacreview;
00447
00448 if(!$ilAccess->checkAccess('write','',$this->ref_id))
00449 {
00450 $ilErr->raiseError($this->lng->txt("msg_no_perm_write"),$ilErr->MESSAGE);
00451 }
00452
00453 $this->__initRoleAccessLimitations();
00454
00455 include_once './classes/class.ilObjRole.php';
00456
00457 foreach(ilObjRole::_lookupRegisterAllowed() as $role)
00458 {
00459 $this->access_limitations_obj->setMode($_POST['access_limitation_mode_'.$role['id']],$role['id']);
00460 $this->access_limitations_obj->setAbsolute($_POST['access_limitation_absolute_'.$role['id']],$role['id']);
00461 $this->access_limitations_obj->setRelative($_POST['access_limitation_relative_'.$role['id']],$role['id']);
00462 }
00463
00464
00465
00466 if($err = $this->access_limitations_obj->validate())
00467 {
00468 switch($err)
00469 {
00470 case IL_REG_ACCESS_LIMITATION_MISSING_MODE:
00471 ilUtil::sendInfo($this->lng->txt('reg_access_limitation_missing_mode'));
00472 break;
00473
00474 case IL_REG_ACCESS_LIMITATION_OUT_OF_DATE:
00475 ilUtil::sendInfo($this->lng->txt('reg_access_limitation_out_of_date'));
00476 break;
00477 }
00478 $this->editRoleAccessLimitations();
00479 return false;
00480 }
00481
00482
00483 $this->access_limitations_obj->save();
00484 ilUtil::sendInfo($this->lng->txt('settings_saved'));
00485 $this->view();
00486 return true;
00487 }
00488
00489
00490 function __prepareRoleList()
00491 {
00492 include_once './classes/class.ilObjRole.php';
00493
00494 foreach(ilObjRole::_lookupRegisterAllowed() as $role)
00495 {
00496 $this->tpl->setCurrentBlock("fixed_item");
00497 $this->tpl->setVariable("FIXED_ITEM_TITLE",$role['title']);
00498 $this->tpl->parseCurrentBlock();
00499 }
00500 }
00501
00502 function __prepareAutomaticRoleList()
00503 {
00504 include_once './classes/class.ilObjRole.php';
00505 $this->__initRoleAssignments();
00506
00507 foreach($this->assignments_obj->getAssignments() as $assignment)
00508 {
00509 if(strlen($assignment['domain']) and $assignment['role'])
00510 {
00511 $this->tpl->setCurrentBlock("auto_item");
00512 $this->tpl->setVariable("AUTO_ITEM_TITLE",$assignment['domain']);
00513 $this->tpl->setVariable("AUTO_ROLE",ilObjRole::_lookupTitle($assignment['role']));
00514 $this->tpl->parseCurrentBlock();
00515 }
00516 }
00517
00518 if(strlen($this->assignments_obj->getDefaultRole()))
00519 {
00520 $this->tpl->setCurrentBlock("auto_item");
00521 $this->tpl->setVariable("AUTO_ITEM_TITLE",$this->lng->txt('reg_default'));
00522 $this->tpl->setVariable("AUTO_ROLE",ilObjRole::_lookupTitle($this->assignments_obj->getDefaultRole()));
00523 $this->tpl->parseCurrentBlock();
00524 }
00525
00526 $this->tpl->setCurrentBlock("auto");
00527 $this->tpl->parseCurrentBlock();
00528
00529 }
00530
00531 function __prepareAccessLimitationRoleList()
00532 {
00533 global $lng;
00534
00535 $this->__initRoleAccessLimitations();
00536
00537 include_once './classes/class.ilObjRole.php';
00538
00539 foreach(ilObjRole::_lookupRegisterAllowed() as $role)
00540 {
00541 $this->tpl->setCurrentBlock("access_limitation_item");
00542 $this->tpl->setVariable("ACCESS_LIMITATION_ITEM_TITLE",$role['title']);
00543
00544 switch ($this->access_limitations_obj->getMode($role['id']))
00545 {
00546 case 'absolute':
00547 $txt_access_value = $lng->txt('reg_access_limitation_limited_until');
00548 $txt_access_value .= " ".ilFormat::formatUnixTime($this->access_limitations_obj->getAbsolute($role['id']));
00549 break;
00550
00551 case 'relative':
00552 $years = $this->access_limitations_obj->getRelative($role['id'],'y');
00553 $months = $this->access_limitations_obj->getRelative($role['id'],'m');
00554 $days = $this->access_limitations_obj->getRelative($role['id'],'d');
00555
00556 $txt_access_value = $lng->txt('reg_access_limitation_limited_time')." ";
00557
00558 if ($years)
00559 {
00560 $txt_access_value .= $years." ";
00561 $txt_access_value .= ($years == 1) ? $lng->txt('year') : $lng->txt('years');
00562
00563 if ($months)
00564 {
00565 if ($days)
00566 {
00567 $txt_access_value .= ", ";
00568 }
00569 else
00570 {
00571 $txt_access_value .= " ".$lng->txt('and')." ";
00572 }
00573 }
00574 elseif ($days)
00575 {
00576 $txt_access_value .= " ".$lng->txt('and')." ";
00577 }
00578 }
00579
00580 if ($months)
00581 {
00582 $txt_access_value .= $months." ";
00583 $txt_access_value .= ($months == 1) ? $lng->txt('month') : $lng->txt('months');
00584
00585 if ($days)
00586 {
00587 $txt_access_value .= " ".$lng->txt('and')." ";
00588 }
00589 }
00590
00591 if ($days)
00592 {
00593 $txt_access_value .= $days." ";
00594 $txt_access_value .= ($days == 1) ? $lng->txt('day') : $lng->txt('days');
00595 }
00596 break;
00597
00598 default:
00599 $txt_access_value = $lng->txt('reg_access_limitation_none');
00600 break;
00601 }
00602
00603 $this->tpl->setVariable("ACCESS_LIMITATION_VALUE",$txt_access_value);
00604 $this->tpl->setVariable("EDIT_ITEM",$lng->txt('edit'));
00605 $this->tpl->parseCurrentBlock();
00606 }
00607 }
00608
00609 function __initRoleAssignments()
00610 {
00611 if(is_object($this->assignments_obj))
00612 {
00613 return true;
00614 }
00615
00616 include_once 'Services/Registration/classes/class.ilRegistrationEmailRoleAssignments.php';
00617
00618 $this->assignments_obj = new ilRegistrationRoleAssignments();
00619 }
00620
00621 function __initRoleAccessLimitations()
00622 {
00623 if(is_object($this->access_limitations_obj))
00624 {
00625 return true;
00626 }
00627
00628 include_once 'Services/Registration/classes/class.ilRegistrationRoleAccessLimitations.php';
00629
00630 $this->access_limitations_obj = new ilRegistrationRoleAccessLimitations();
00631 }
00632
00633 function __buildRoleSelection($assignment_id)
00634 {
00635 include_once 'classes/class.ilObjRole.php';
00636
00637 global $rbacreview;
00638
00639 $assignments = $this->assignments_obj->getAssignments();
00640 $selected = ($assignment_id > 0) ?
00641 $assignments[$assignment_id]['role'] :
00642 $this->assignments_obj->getDefaultRole();
00643
00644 if(!$selected)
00645 {
00646 $roles[0] = $this->lng->txt('please_choose');
00647 }
00648
00649 foreach($rbacreview->getGlobalRoles() as $role_id)
00650 {
00651 if($role_id == SYSTEM_ROLE_ID or
00652 $role_id == ANONYMOUS_ROLE_ID)
00653 {
00654 continue;
00655 }
00656 $roles[$role_id] = ilObjRole::_lookupTitle($role_id);
00657 }
00658
00659 if($assignment_id > 0)
00660 {
00661 return ilUtil::formSelect($selected,
00662 "role[$assignment_id][role]",
00663 $roles,false,true);
00664 }
00665 else
00666 {
00667 return ilUtil::formSelect($selected,
00668 "default_role",
00669 $roles,false,true);
00670 }
00671 }
00672
00673 function __buildAccessLimitationSelection($a_role_id)
00674 {
00675 global $lng;
00676
00677 $options = array(
00678 'null' => $lng->txt('please_choose'),
00679 'unlimited' => $lng->txt('reg_access_limitation_mode_unlimited'),
00680 'absolute' => $lng->txt('reg_access_limitation_mode_absolute'),
00681 'relative' => $lng->txt('reg_access_limitation_mode_relative')
00682 );
00683
00684 $attribs = array('onchange' => 'displayAccessLimitationSelectionForm(document.cmd.access_limitation_mode_'.$a_role_id.','.$a_role_id.')');
00685
00686 $selected = $this->access_limitations_obj->getMode($a_role_id);
00687
00688 return ilUtil::formSelect($selected,'access_limitation_mode_'.$a_role_id,$options,false,true,0,"",$attribs);
00689
00690 }
00691
00692 function __prepareDateSelect($a_unix_time)
00693 {
00694 if (!$a_unix_time)
00695 {
00696 $a_unix_time = time();
00697 }
00698
00699 return array('y' => date('Y',$a_unix_time),
00700 'm' => date('n',$a_unix_time),
00701 'd' => date('d',$a_unix_time));
00702 }
00703 }
00704 ?>