18 require_once 
'./Services/Registration/classes/class.ilRegistrationSettings.php';
 
   19 require_once 
"./Services/User/classes/class.ilUserAgreement.php";
 
   36                 $this->ctrl->saveParameter($this,
'lang');
 
   39                 $this->lng->loadLanguageModule(
'registration');
 
   48                 if($this->registration_settings->getRegistrationType() == 
IL_REG_DISABLED)
 
   50                         $ilErr->raiseError($this->lng->txt(
'reg_disabled'),$ilErr->FATAL);
 
   53                 $next_class = $this->ctrl->getNextClass($this);
 
   54                 $cmd = $this->ctrl->getCmd();
 
   77                 $this->tpl->addBlockFile(
"CONTENT", 
"content", 
"tpl.usr_registration.html");
 
   78                 $this->tpl->addBlockFile(
"STATUSLINE", 
"statusline", 
"tpl.statusline.html");
 
   80                 $this->tpl->setVariable(
"TXT_PAGEHEADLINE", $lng->txt(
"registration"));
 
   83                 $this->tpl->setVariable(
"FORMACTION",$this->ctrl->getFormAction($this));
 
   84                 $this->tpl->setVariable(
"TXT_OK",$lng->txt(
"ok"));
 
   85                 $this->tpl->setVariable(
"TXT_CHOOSE_LANGUAGE", $lng->txt(
"choose_language"));
 
   86                 $this->ctrl->getFormAction($this);
 
   87                 foreach ($lng->getInstalledLanguages() as $lang_key)
 
   89                         $this->tpl->setCurrentBlock(
"languages");
 
   90                         $this->tpl->setVariable(
"LINK_LANG",$this->ctrl->getLinkTarget($this,
'displayForm'));
 
   91                         $this->tpl->setVariable(
"LANG_NAME",
 
   93                         $this->tpl->setVariable(
"LANG_ICON", $lang_key);
 
   94                         $this->tpl->setVariable(
"BORDER", 0);
 
   95                         $this->tpl->setVariable(
"VSPACE", 0);
 
   96                         $this->tpl->parseCurrentBlock();
 
  103                 $this->tpl->setVariable(
"FORM", $this->form->getHTML());
 
  108                 global 
$lng, $ilUser;
 
  110                 include_once(
"Services/Form/classes/class.ilPropertyFormGUI.php");
 
  112                 $this->form->setFormAction($this->ctrl->getFormAction($this));
 
  117                 $user_defined_data = $ilUser->getUserDefinedData();
 
  119                 include_once 
'./Services/User/classes/class.ilUserDefinedFields.php';
 
  121                 $custom_fields = array();
 
  122                 foreach($user_defined_fields->getRegistrationDefinitions() as $field_id => $definition)
 
  126                                 $custom_fields[
"udf_".$definition[
'field_id']] =
 
  127                                         new ilTextInputGUI($definition[
'field_name'], 
"udf_".$definition[
'field_id']);
 
  128                                 $custom_fields[
"udf_".$definition[
'field_id']]->setValue($user_defined_data[
"f_".$field_id]);
 
  129                                 $custom_fields[
"udf_".$definition[
'field_id']]->setMaxLength(255);
 
  130                                 $custom_fields[
"udf_".$definition[
'field_id']]->setSize(40);
 
  134                                 $custom_fields[
"udf_".$definition[
'field_id']] =
 
  136                                 $custom_fields[
"udf_".$definition[
'field_id']]->setValue($user_defined_data[
"f_".$field_id]);
 
  137                                 $custom_fields[
"udf_".$definition[
'field_id']]->setUseRte(
true);
 
  141                                 $custom_fields[
"udf_".$definition[
'field_id']] =
 
  142                                         new ilSelectInputGUI($definition[
'field_name'], 
"udf_".$definition[
'field_id']);
 
  143                                 $custom_fields[
"udf_".$definition[
'field_id']]->setValue($user_defined_data[
"f_".$field_id]);
 
  144                                 $custom_fields[
"udf_".$definition[
'field_id']]->setOptions(
 
  145                                         $user_defined_fields->fieldValuesToSelectArray($definition[
'field_values']));
 
  147                         if($definition[
'required'])
 
  149                                 $custom_fields[
"udf_".$definition[
'field_id']]->setRequired(
true);
 
  154                 include_once(
"./Services/User/classes/class.ilUserProfile.php");
 
  157                 $up->skipGroup(
"preferences");
 
  160                 $up->addStandardFieldsToForm($this->form, NULL, $custom_fields);
 
  161                 unset($custom_fields);
 
  167                 $field->setTitle($lng->txt(
"usr_agreement"));
 
  168                 $this->form->addItem($field);
 
  172                 $this->form->addItem($field);
 
  177                 $this->form->addItem($field);
 
  179                 $this->form->addCommandButton(
"saveForm", $lng->txt(
"register"));
 
  187                 if($this->form->checkInput())
 
  189                         require_once 
'Services/User/classes/class.ilObjUser.php';
 
  195                         if(!$this->form->getInput(
"usr_agreement"))
 
  202                         if($this->registration_settings->registrationCodeRequired() ||
 
  203                                 $this->registration_settings->getAllowCodes())
 
  205                                 $code = $this->form->getInput(
"usr_registration_code");
 
  206                                 if($code || $this->registration_settings->registrationCodeRequired())
 
  208                                         include_once 
'./Services/Registration/classes/class.ilRegistrationCode.php';
 
  211                                                 $code_obj = $this->form->getItemByPostVar(
'usr_registration_code');
 
  212                                                 $code_obj->setAlert($lng->txt(
'registration_code_not_valid'));
 
  219                         $login_obj = $this->form->getItemByPostVar(
'username');
 
  220                         $login = $this->form->getInput(
"username");
 
  223                                 $login_obj->setAlert($lng->txt(
"login_invalid"));
 
  228                                 $login_obj->setAlert($lng->txt(
"login_exists"));
 
  231                         else if ((
int)$ilSetting->get(
'allow_change_loginname') &&
 
  232                                 (int)$ilSetting->get(
'prevent_reuse_of_loginnames') &&
 
  235                                 $login_obj->setAlert($lng->txt(
'login_exists'));
 
  250                                 $this->
login($password);
 
  255                 $this->form->setValuesByPost();
 
  266                 include_once(
"./Services/User/classes/class.ilUserProfile.php");
 
  271                 $up->skipGroup(
"preferences");
 
  272                 $up->skipGroup(
"settings");
 
  273                 $up->skipGroup(
"instant_messengers");
 
  274                 $up->skipField(
"password");
 
  275                 $up->skipField(
"birthday");
 
  276                 $up->skipField(
"upload");
 
  277                 foreach ($up->getStandardFields() as $k => $v)
 
  281                                 $method = 
"set".substr($v[
"method"], 3);
 
  282                                 if(method_exists($this->userObj, $method))
 
  284                                         if ($k != 
"username")
 
  288                                         $field_obj = $this->form->getItemByPostVar($k);
 
  291                                                 $this->userObj->$method($this->form->getInput($k));
 
  297                 $this->userObj->setFullName();
 
  299                 $birthday_obj = $this->form->getItemByPostVar(
"usr_birthday");
 
  302                         $birthday = $this->form->getInput(
"usr_birthday");
 
  303                         $birthday = $birthday[
"date"];
 
  306                         if(!is_array($birthday))
 
  308                                 $this->userObj->setBirthday($birthday);
 
  313                 $map = array(
"icq", 
"yahoo", 
"msn", 
"aim", 
"skype", 
"jabber", 
"voip");
 
  316                         $field = 
"usr_im_".$client;
 
  317                         $field_obj = $this->form->getItemByPostVar($field);
 
  320                                 $this->userObj->setInstantMessengerId($client, $this->form->getInput($field));
 
  324                 $this->userObj->setTitle($this->userObj->getFullname());
 
  325                 $this->userObj->setDescription($this->userObj->getEmail());
 
  327                 if ($this->registration_settings->passwordGenerationEnabled())
 
  330                         $password = $password[0];
 
  334                         $password = $this->form->getInput(
"usr_password");
 
  336                 $this->userObj->setPasswd($password);
 
  340                 include_once 
'./Services/User/classes/class.ilUserDefinedFields.php';
 
  342                 $defs = $user_defined_fields->getRegistrationDefinitions();
 
  344                 foreach (
$_POST as $k => $v)
 
  346                         if (substr($k, 0, 4) == 
"udf_")
 
  352                 $this->userObj->setUserDefinedData($udf);
 
  354                 $this->userObj->setTimeLimitOwner(7);
 
  357                 $default_role = 
false;
 
  358                 if ($this->registration_settings->roleSelectionEnabled())
 
  360                         $default_role = $this->form->getInput(
'usr_roles');
 
  365                         include_once 
'Services/Registration/classes/class.ilRegistrationEmailRoleAssignments.php';
 
  367                         $default_role = $registration_role_assignments->getRoleByEmail($this->userObj->getEmail());
 
  371                 $code = $this->form->getInput(
'usr_registration_code');
 
  372                 $this->code_was_used = 
false;
 
  373                 if($this->registration_settings->getRegistrationType() == 
IL_REG_CODES ||
 
  374                         ($code && $this->registration_settings->getAllowCodes()))
 
  376                         include_once 
'./Services/Registration/classes/class.ilRegistrationCode.php';
 
  379                         $this->code_was_used = 
true;
 
  383                 if ($this->registration_settings->getAccessLimitation())
 
  385                         include_once 
'Services/Registration/classes/class.ilRegistrationRoleAccessLimitations.php';
 
  388                         $access_limit_mode = $access_limitations_obj->getMode($default_role);
 
  389                         if ($access_limit_mode == 
'absolute')
 
  391                                 $access_limit = $access_limitations_obj->getAbsolute($default_role);
 
  392                                 $this->userObj->setTimeLimitUnlimited(0);
 
  393                                 $this->userObj->setTimeLimitUntil($access_limit);
 
  395                         elseif ($access_limit_mode == 
'relative')
 
  397                                 $rel_d = (int) $access_limitations_obj->getRelative($default_role,
'd');
 
  398                                 $rel_m = (int) $access_limitations_obj->getRelative($default_role,
'm');
 
  399                                 $rel_y = (int) $access_limitations_obj->getRelative($default_role,
'y');
 
  401                                 $access_limit = $rel_d * 86400 + $rel_m * 2592000 + $rel_y * 31536000 + time();
 
  402                                 $this->userObj->setTimeLimitUnlimited(0);
 
  403                                 $this->userObj->setTimeLimitUntil($access_limit);
 
  407                                 $this->userObj->setTimeLimitUnlimited(1);
 
  408                                 $this->userObj->setTimeLimitUntil(time());
 
  413                         $this->userObj->setTimeLimitUnlimited(1);
 
  414                         $this->userObj->setTimeLimitUntil(time());
 
  417                 $this->userObj->setTimeLimitFrom(time());
 
  419                 $this->userObj->create();
 
  422                 if($this->registration_settings->getRegistrationType() == 
IL_REG_DIRECT ||
 
  423                         $this->registration_settings->getRegistrationType() == 
IL_REG_CODES ||
 
  426                         $this->userObj->setActive(1,0);
 
  428                 else if($this->registration_settings->getRegistrationType() == 
IL_REG_ACTIVATION)
 
  430                         $this->userObj->setActive(0,0);
 
  434                         $this->userObj->setActive(0,0);
 
  437                 $this->userObj->updateOwner();
 
  442                 $this->userObj->setLastPasswordChangeTS( time() );
 
  445                 $this->userObj->saveAsNew();
 
  448                 $this->userObj->writeAccepted();
 
  451                 $this->userObj->setLanguage($this->form->getInput(
'usr_language'));
 
  452                 $hits_per_page = $ilSetting->get(
"hits_per_page");
 
  453                 if ($hits_per_page < 10)
 
  457                 $this->userObj->setPref(
"hits_per_page", $hits_per_page);
 
  458                 $show_online = $ilSetting->get(
"show_users_online");
 
  459                 if ($show_online == 
"")
 
  463                 $this->userObj->setPref(
"show_users_online", $show_online);
 
  464                 $this->userObj->writePrefs();
 
  466                 $rbacadmin->assignUser((
int)$default_role, $this->userObj->getId(), 
true);
 
  476                 include_once(
"./Services/AccessControl/classes/class.ilObjRole.php");
 
  477                 if ($this->registration_settings->roleSelectionEnabled() and
 
  480                         $ilias->raiseError(
"Invalid role selection in registration: ".
 
  482                                                            ", IP: ".$_SERVER[
"REMOTE_ADDR"],$ilias->error_obj->FATAL);
 
  491                 include_once 
'./Services/Language/classes/class.ilLanguage.php';
 
  492                 include_once 
'./Services/User/classes/class.ilObjUser.php';
 
  493                 include_once 
"Services/Mail/classes/class.ilFormatMail.php";
 
  494                 include_once 
'./Services/Registration/classes/class.ilRegistrationMailNotification.php';
 
  501                         $mail->setRecipients($this->registration_settings->getApproveRecipients());
 
  502                         $mail->setAdditionalInformation(array(
'usr' => $this->userObj));
 
  509                         $mail->setRecipients($this->registration_settings->getApproveRecipients());
 
  510                         $mail->setAdditionalInformation(array(
'usr' => $this->userObj));
 
  519                         include_once 
'Services/Mail/classes/class.ilMail.php';
 
  520                         $mail_obj = 
new ilMail(ANONYMOUS_USER_ID);                      
 
  523                         $subject = $this->lng->txt(
"reg_mail_subject_confirmation");
 
  527                         $body = $this->lng->txt(
"reg_mail_body_salutation").
" ".$this->userObj->getFullname().
",\n\n";
 
  528                         $body .= $this->lng->txt(
'reg_mail_body_confirmation').
"\n".
 
  529                                 ILIAS_HTTP_PATH.
'/confirmReg.php?client_id='.CLIENT_ID.
"&rh=".$hashcode.
"\n\n";
 
  531                         $body .= sprintf($this->lng->txt(
'reg_mail_body_2_confirmation'),
 
  534                         $body .= $this->lng->txt(
'reg_mail_body_3_confirmation');                       
 
  536                         $mail_obj->enableSoap(
false);
 
  537                         $mail_obj->appendInstallationSignature(
true);
 
  538                         $mail_obj->sendMail($this->userObj->getEmail(), 
'', 
'',
 
  541                                 array(), array(
'normal'));
 
  546                         include_once(
"Services/Mail/classes/class.ilAccountMail.php");
 
  547                         include_once 
'./Services/User/classes/class.ilObjUserFolder.php';
 
  549                         if (trim($amail[
"body"]) != 
"" && trim($amail[
"subject"]) != 
"")
 
  552                                 $acc_mail->setUser($this->userObj);
 
  553                                 if ($this->registration_settings->passwordGenerationEnabled())
 
  555                                         $acc_mail->setUserPassword($password);
 
  561                                 include_once 
"Services/Mail/classes/class.ilMimeMail.php";
 
  564                                 $mmail->autoCheck(
false);
 
  565                                 $mmail->From($ilSetting->get(
"admin_email"));
 
  566                                 $mmail->To($this->userObj->getEmail());
 
  569                                 $subject = $this->lng->txt(
"reg_mail_subject");
 
  572                                 $body = $this->lng->txt(
"reg_mail_body_salutation").
" ".$this->userObj->getFullname().
",\n\n".
 
  573                                         $this->lng->txt(
"reg_mail_body_text1").
"\n\n".
 
  574                                         $this->lng->txt(
"reg_mail_body_text2").
"\n".
 
  575                                         ILIAS_HTTP_PATH.
"/login.php?client_id=".$ilias->client_id.
"\n";                 
 
  576                                 $body .= $this->lng->txt(
"login").
": ".$this->userObj->getLogin().
"\n";
 
  578                                 if ($this->registration_settings->passwordGenerationEnabled())
 
  580                                         $body.= $this->lng->txt(
"passwd").
": ".$password.
"\n";
 
  587                                         $body .= ($this->lng->txt(
'reg_mail_body_pwd_generation').
"\n\n");
 
  590                                 $body .= ($this->lng->txt(
"reg_mail_body_text3").
"\n\r");
 
  591                                 $body .= $this->userObj->getProfileAsString($this->lng);
 
  592                                 $mmail->Subject($subject);
 
  603                 $ilLog->write(
"Entered login");
 
  605                 $this->tpl->addBlockFile(
"CONTENT", 
"content", 
"tpl.usr_registered.html");
 
  607                 $this->tpl->setVariable(
"IMG_USER",
 
  609                 $this->tpl->setVariable(
"TXT_PAGEHEADLINE", $lng->txt(
"registration"));
 
  610                 $this->tpl->setVariable(
"TXT_WELCOME", $lng->txt(
"welcome").
", ".$this->userObj->getTitle().
"!");
 
  612                 if (($this->registration_settings->getRegistrationType() == 
IL_REG_DIRECT or
 
  613                                 $this->registration_settings->getRegistrationType() == 
IL_REG_CODES or
 
  615                         !$this->registration_settings->passwordGenerationEnabled())
 
  617                         $this->tpl->setCurrentBlock(
"activation");
 
  618                         $this->tpl->setVariable(
"TXT_REGISTERED", $lng->txt(
"txt_registered"));
 
  619                         $this->tpl->setVariable(
"FORMACTION", 
"login.php?cmd=post&target=".
$_GET[
"target"]);
 
  620                         $this->tpl->setVariable(
"TARGET",
"target=\"_parent\"");
 
  621                         $this->tpl->setVariable(
"TXT_LOGIN", $lng->txt(
"login_to_ilias"));
 
  622                         $this->tpl->setVariable(
"USERNAME",$this->userObj->getLogin());
 
  623                         $this->tpl->setVariable(
"PASSWORD",$password);
 
  624                         $this->tpl->parseCurrentBlock();
 
  626                 else if ($this->registration_settings->getRegistrationType() == 
IL_REG_APPROVE)
 
  628                         $this->tpl->setVariable(
"TXT_REGISTERED", $lng->txt(
"txt_submitted"));
 
  630                 else if($this->registration_settings->getRegistrationType() == 
IL_REG_ACTIVATION)
 
  632                         $this->tpl->setVariable(
"TXT_REGISTERED", sprintf($lng->txt(
"reg_confirmation_link_successful"), 
'./login.php'));
 
  633                         $this->tpl->setVariable(
"REDIRECT_URL", 
'./login.php');
 
  637                         $this->tpl->setVariable(
"TXT_REGISTERED", $lng->txt(
"txt_registered_passw_gen"));