• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

Services/Registration/classes/class.ilRegistrationSettingsGUI.php

Go to the documentation of this file.
00001 <?php
00002 /*
00003         +-----------------------------------------------------------------------------+
00004         | ILIAS open source                                                           |
00005         +-----------------------------------------------------------------------------+
00006         | Copyright (c) 1998-2001 ILIAS open source, University of Cologne            |
00007         |                                                                             |
00008         | This program is free software; you can redistribute it and/or               |
00009         | modify it under the terms of the GNU General Public License                 |
00010         | as published by the Free Software Foundation; either version 2              |
00011         | of the License, or (at your option) any later version.                      |
00012         |                                                                             |
00013         | This program is distributed in the hope that it will be useful,             |
00014         | but WITHOUT ANY WARRANTY; without even the implied warranty of              |
00015         | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               |
00016         | GNU General Public License for more details.                                |
00017         |                                                                             |
00018         | You should have received a copy of the GNU General Public License           |
00019         | along with this program; if not, write to the Free Software                 |
00020         | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. |
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                 // pwd forwarding
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         // access limitation
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                 // Minimum one role
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                 // update allow register
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                 //var_dump("<pre>",$_POST,$this->access_limitations_obj->getAbsolute(4),time(),"</pre>");exit;
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 ?>

Generated on Fri Dec 13 2013 17:57:00 for ILIAS Release_3_9_x_branch .rev 46835 by  doxygen 1.7.1