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
00034 require_once "include/inc.header.php";
00035 require_once "classes/class.ilUserAgreement.php";
00036
00037
00038 if (!$ilias->getSetting("enable_registration"))
00039 {
00040 $ilErr->raiseError($lng->txt('permission_denied'),$ilErr->FATAL);
00041 }
00042
00043 switch ($_GET["cmd"])
00044 {
00045 case "save":
00046 saveForm();
00047 break;
00048
00049 case "login":
00050 loginPage();
00051 break;
00052
00053 default:
00054 displayForm();
00055 break;
00056 }
00057
00058 function loginPage()
00059 {
00060 global $tpl,$ilias,$lng;
00061
00062 $tpl->addBlockFile("CONTENT", "content", "tpl.usr_registered.html");
00063 $tpl->setVariable("FORMACTION","login.php");
00064 $tpl->setVariable("TARGET","target=\"_parent\"");
00065 $tpl->setVariable("TXT_PAGEHEADLINE", $lng->txt("registration"));
00066 $tpl->setVariable("TXT_WELCOME", $lng->txt("welcome").", ".urldecode(ilUtil::stripSlashes($_GET["name"]))."!");
00067 if ($ilias->getSetting("auto_registration"))
00068 {
00069 $tpl->setVariable("TXT_REGISTERED", $lng->txt("txt_registered"));
00070 }
00071 else
00072 {
00073 $tpl->setVariable("TXT_REGISTERED", $lng->txt("txt_submitted"));
00074 }
00075 $tpl->setVariable("TXT_LOGIN", $lng->txt("login_to_ilias"));
00076 $tpl->setVariable("USERNAME", base64_decode($_GET["user"]));
00077 $tpl->setVariable("PASSWORD", base64_decode($_GET["pass"]));
00078
00079 $ilias->auth->logout();
00080 session_destroy();
00081
00082 $tpl->show();
00083 }
00084
00085 function saveForm()
00086 {
00087 global $tpl, $ilias, $lng, $rbacadmin, $ilDB, $ilErr;
00088
00089
00090 $settings = $ilias->getAllSettings();
00091
00092
00093
00094
00095
00096
00097 if (! ($_POST["status"]=="accepted") )
00098 {
00099 $ilias->raiseError($lng->txt("force_accept_usr_agreement"),$ilias->error_obj->MESSAGE);
00100 }
00101
00102
00103 foreach ($settings as $key => $val)
00104 {
00105 if (substr($key,0,8) == "require_")
00106 {
00107 if ($settings["passwd_auto_generate"] == 1 and ($key == "require_passwd" or $key == "require_passwd2"))
00108 {
00109 continue;
00110 }
00111
00112 $require_keys[] = substr($key,8);
00113 }
00114 }
00115
00116 foreach ($require_keys as $key => $val)
00117 {
00118 if (isset($settings["require_" . $val]) && $settings["require_" . $val])
00119 {
00120 if (empty($_POST["Fobject"][$val]))
00121 {
00122 $ilias->raiseError($lng->txt("fill_out_all_required_fields") . ": " . $lng->txt($val),$ilias->error_obj->MESSAGE);
00123 }
00124 }
00125 }
00126
00127
00128 if (!ilUtil::isLogin($_POST["Fobject"]["login"]))
00129 {
00130 $ilias->raiseError($lng->txt("login_invalid"),$ilias->error_obj->MESSAGE);
00131 }
00132
00133
00134 if (loginExists($_POST["Fobject"]["login"]))
00135 {
00136 $ilias->raiseError($lng->txt("login_exists"),$ilias->error_obj->MESSAGE);
00137 }
00138
00139 if ($settings["passwd_auto_generate"] != 1)
00140 {
00141
00142 if ($_POST["Fobject"]["passwd"] != $_POST["Fobject"]["passwd2"])
00143 {
00144 $ilias->raiseError($lng->txt("passwd_not_match"),$ilias->error_obj->MESSAGE);
00145 }
00146
00147
00148 if (!ilUtil::isPassword($_POST["Fobject"]["passwd"]))
00149 {
00150 $ilias->raiseError($lng->txt("passwd_invalid"),$ilias->error_obj->MESSAGE);
00151 }
00152 }
00153 else
00154 {
00155 $passwd = ilUtil::generatePasswords(1);
00156 $_POST["Fobject"]["passwd"] = $passwd[0];
00157 }
00158
00159
00160 require_once "classes/class.ilObjUser.php";
00161 $_POST["Fobject"]["passwd_type"] = IL_PASSWD_PLAIN;
00162
00163
00164 if (!ilUtil::is_email($_POST["Fobject"]["email"]))
00165 {
00166 $ilias->raiseError($lng->txt("email_not_valid"),$ilias->error_obj->MESSAGE);
00167 }
00168
00169
00170 include_once("classes/class.ilObjRole.php");
00171 if (!ilObjRole::_lookupAllowRegister($_POST["Fobject"]["default_role"]))
00172 {
00173 $ilias->raiseError("Invalid role selection in registration: ".
00174 ilObject::_lookupTitle($_POST["Fobject"]["default_role"])." [".$_POST["Fobject"]["default_role"]."]".
00175 ", IP: ".$_SERVER["REMOTE_ADDR"],$ilias->error_obj->FATAL);
00176 }
00177
00178
00179 $auth_mode = ilObjRole::_getAuthMode($_POST["Fobject"]["default_role"]);
00180 $_POST["Fobject"]['auth_mode'] = $auth_mode;
00181
00182
00183
00184
00185
00186 if ($auth_mode == "radius")
00187 {
00188 $_POST['username'] = $_POST["Fobject"]["login"];
00189 $_POST['password'] = $_POST["Fobject"]["passwd"];
00190 include_once('classes/class.ilRADIUSAuthentication.php');
00191 $radius_servers = ilRADIUSAuthentication::_getServers($ilDB);
00192 $settings = $ilias->getAllSettings();
00193
00194 foreach ($radius_servers as $radius_server)
00195 {
00196 $rad_params['servers'][] = array($radius_server,$settings["radius_port"],$settings["radius_shared_secret"]);
00197 }
00198 $auth = new Auth("RADIUS", $rad_params,"",false);
00199 $auth->start();
00200 $err = $ilErr->getLastError();
00201 if (!$auth->getAuth())
00202 {
00203 $add = (!is_object($err))
00204 ? ""
00205 : "<br>".$err->getMessage();
00206 $ilias->raiseError($lng->txt("could_not_verify_account").
00207 $add, $ilErr->MESSAGE);
00208 }
00209 }
00210
00211
00212
00213
00214
00215
00216 $userObj = new ilObjUser();
00217 $userObj->assignData($_POST["Fobject"]);
00218 $userObj->setTitle($userObj->getFullname());
00219 $userObj->setDescription($userObj->getEmail());
00220
00221
00222 $userObj->setTimeLimitOwner(7);
00223 $userObj->setTimeLimitUnlimited(1);
00224 $userObj->setTimeLimitFrom(time());
00225 $userObj->setTimeLimitUntil(time());
00226
00227 $userObj->create();
00228
00229 if (isset($settings["auto_registration"]) && ($settings["auto_registration"] == 1))
00230 {
00231 $userObj->setActive(1, 6);
00232 }
00233 else
00234 {
00235 $userObj->setActive(0, 0);
00236 }
00237
00238 $userObj->updateOwner();
00239
00240
00241 $userObj->saveAsNew();
00242
00243
00244 $userObj->writeAccepted();
00245
00246
00247 $userObj->setLanguage($_POST["Fobject"]["language"]);
00248 $userObj->setPref("hits_per_page", $ilias->getSetting("hits_per_page"));
00249 $userObj->setPref("show_users_online", $ilias->getSetting("show_users_online"));
00250 $userObj->writePrefs();
00251
00252
00253 $rbacadmin->assignUser($_POST["Fobject"]["default_role"],$userObj->getId(),true);
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270 if (!$ilias->getSetting("auto_registration"))
00271 {
00272 $approve_recipient = $ilias->getSetting("approve_recipient");
00273 if (empty($approve_recipient))
00274 {
00275 $approve_recipient = $userObj->getLoginByUserId(6);
00276 }
00277
00278 include_once "classes/class.ilFormatMail.php";
00279
00280 $umail = new ilFormatMail($userObj->getId());
00281 $umail->enableSoap(false);
00282
00283
00284 $subject = $lng->txt("usr_new");
00285
00286
00287 $body = $lng->txt("login").": ".$userObj->getLogin()."\n".
00288 $lng->txt("title").": ".$userObj->getTitle()."\n".
00289 $lng->txt("gender").": ".$userObj->getGender()."\n".
00290 $lng->txt("firstname").": ".$userObj->getFirstname()."\n".
00291 $lng->txt("lastname").": ".$userObj->getLastname()."\n".
00292 $lng->txt("institution").": ".$userObj->getInstitution()."\n".
00293 $lng->txt("department").": ".$userObj->getDepartment()."\n".
00294 $lng->txt("street").": ".$userObj->getStreet()."\n".
00295 $lng->txt("city").": ".$userObj->getCity()."\n".
00296 $lng->txt("zipcode").": ".$userObj->getZipcode()."\n".
00297 $lng->txt("country").": ".$userObj->getCountry()."\n".
00298 $lng->txt("phone_office").": ".$userObj->getPhoneOffice()."\n".
00299 $lng->txt("phone_home").": ".$userObj->getPhoneHome()."\n".
00300 $lng->txt("phone_mobile").": ".$userObj->getPhoneMobile()."\n".
00301 $lng->txt("fax").": ".$userObj->getFax()."\n".
00302 $lng->txt("email").": ".$userObj->getEmail()."\n".
00303 $lng->txt("hobby").": ".$userObj->getHobby()."\n".
00304 $lng->txt("referral_comment").": ".$userObj->getComment()."\n".
00305 $lng->txt("matriculation").": ".$userObj->getMatriculation()."\n".
00306 $lng->txt("create_date").": ".$userObj->getCreateDate()."\n".
00307 $lng->txt("default_role").": ".$_POST["Fobject"]["default_role"]."\n";
00308
00309 $error_message = $umail->sendMail($approve_recipient,"","",$subject,$body,array(),array("normal"));
00310 }
00311
00312 if ($settings["passwd_auto_generate"] == 1)
00313 {
00314 include_once "classes/class.ilMimeMail.php";
00315
00316 $mmail = new ilMimeMail();
00317 $mmail->autoCheck(false);
00318 $mmail->From($settings["admin_email"]);
00319 $mmail->To($userObj->getEmail());
00320
00321
00322 $subject = $lng->txt("reg_mail_subject");
00323
00324
00325 $body = $lng->txt("reg_mail_body_salutation")." ".$userObj->getFullname().",\n".
00326 #$lng->txt("reg_mail_body_welcome")."\n".
00327 $lng->txt("reg_mail_body_text1")."\n".
00328 $lng->txt("reg_mail_body_text2")."\n".
00329 ILIAS_HTTP_PATH."/login.php?client_id=".$ilias->client_id."\n".
00330 $lng->txt("login").": ".$userObj->getLogin()."\n".
00331 $lng->txt("passwd").": ".$_POST["Fobject"]["passwd"]."\n\n".
00332 $lng->txt("reg_mail_body_text3")."\n".
00333 $lng->txt("title").": ".$userObj->getTitle()."\n".
00334 $lng->txt("gender").": ".$userObj->getGender()."\n".
00335 $lng->txt("firstname").": ".$userObj->getFirstname()."\n".
00336 $lng->txt("lastname").": ".$userObj->getLastname()."\n".
00337 $lng->txt("institution").": ".$userObj->getInstitution()."\n".
00338 $lng->txt("department").": ".$userObj->getDepartment()."\n".
00339 $lng->txt("street").": ".$userObj->getStreet()."\n".
00340 $lng->txt("city").": ".$userObj->getCity()."\n".
00341 $lng->txt("zipcode").": ".$userObj->getZipcode()."\n".
00342 $lng->txt("country").": ".$userObj->getCountry()."\n".
00343 $lng->txt("phone_office").": ".$userObj->getPhoneOffice()."\n".
00344 $lng->txt("phone_home").": ".$userObj->getPhoneHome()."\n".
00345 $lng->txt("phone_mobile").": ".$userObj->getPhoneMobile()."\n".
00346 $lng->txt("fax").": ".$userObj->getFax()."\n".
00347 $lng->txt("email").": ".$userObj->getEmail()."\n".
00348 $lng->txt("hobby").": ".$userObj->getHobby()."\n".
00349 $lng->txt("referral_comment").": ".$userObj->getComment()."\n".
00350 $lng->txt("create_date").": ".$userObj->getCreateDate()."\n".
00351 $lng->txt("default_role").": ".$_POST["Fobject"]["default_role"]."\n";
00352
00353 $mmail->Subject($subject);
00354 $mmail->Body($body);
00355 $mmail->Send();
00356 }
00357
00358 ilUtil::redirect("register.php?lang=".$_GET["lang"]."&cmd=login&user=".base64_encode($_POST["Fobject"]["login"])."&pass=".base64_encode($_POST["Fobject"]["passwd"])."&name=".urlencode(ilUtil::stripSlashes($userObj->getFullname())));
00359 }
00360
00361
00362 function displayForm()
00363 {
00364 global $tpl,$ilias,$lng,$ObjDefinition;
00365
00366
00367 $settings = $ilias->getAllSettings();
00368
00369
00370 $tpl->addBlockFile("CONTENT", "content", "tpl.usr_registration.html");
00371 $tpl->addBlockFile("STATUSLINE", "statusline", "tpl.statusline.html");
00372
00373
00374
00375
00376
00377 include_once("classes/class.ilObjRole.php");
00378 $reg_roles = ilObjRole::_lookupRegisterAllowed();
00379
00380 $rol = array();
00381 foreach ($reg_roles as $role)
00382 {
00383 $rol[$role["id"]] = $role["title"];
00384 }
00385
00386 $role = ilUtil::formSelect($_SESSION["error_post_vars"]["Fobject"]["default_role"],"Fobject[default_role]",$rol,false,true);
00387
00388 $data = array();
00389 $data["fields"] = array();
00390 $data["fields"]["login"] = "";
00391
00392 if ($settings["passwd_auto_generate"] != 1)
00393 {
00394 $data["fields"]["passwd"] = "";
00395 $data["fields"]["passwd2"] = "";
00396 }
00397
00398 $data["fields"]["title"] = "";
00399 $data["fields"]["gender"] = "";
00400 $data["fields"]["firstname"] = "";
00401 $data["fields"]["lastname"] = "";
00402 $data["fields"]["institution"] = "";
00403 $data["fields"]["department"] = "";
00404 $data["fields"]["street"] = "";
00405 $data["fields"]["city"] = "";
00406 $data["fields"]["zipcode"] = "";
00407 $data["fields"]["country"] = "";
00408 $data["fields"]["phone_office"] = "";
00409 $data["fields"]["phone_home"] = "";
00410 $data["fields"]["phone_mobile"] = "";
00411 $data["fields"]["fax"] = "";
00412 $data["fields"]["email"] = "";
00413 $data["fields"]["hobby"] = "";
00414 $data["fields"]["referral_comment"] = "";
00415 $data["fields"]["matriculation"] = "";
00416 $data["fields"]["default_role"] = $role;
00417
00418
00419 foreach ($data["fields"] as $key => $val)
00420 {
00421 $str = $lng->txt($key);
00422 if ($key == "title")
00423 {
00424 $str = $lng->txt("person_title");
00425 }
00426
00427 if (!in_array($key, array("default_role", "login", "passwd", "passwd2",
00428 "firstname", "lastname", "gender")))
00429 {
00430 if ($settings["usr_settings_hide_".$key] != 1)
00431 {
00432 $tpl->setCurrentBlock($key."_section");
00433
00434 }
00435 else
00436 {
00437 continue;
00438 }
00439 }
00440
00441
00442 if (isset($settings["require_" . $key]) && $settings["require_" . $key])
00443 {
00444 $str = $str . '<span class="asterisk">*</span>';
00445 }
00446
00447 $tpl->setVariable("TXT_".strtoupper($key), $str);
00448
00449
00450 if ($key == "default_role")
00451 {
00452 $tpl->setVariable(strtoupper($key), $val);
00453 }
00454 else
00455 {
00456 if (isset($_SESSION["error_post_vars"]["Fobject"]))
00457 {
00458 $val = $_SESSION["error_post_vars"]["Fobject"][$key];
00459 }
00460 $tpl->setVariable(strtoupper($key), ilUtil::prepareFormOutput($val,true));
00461
00462 }
00463
00464 if (!in_array($key, array("default_role", "login", "passwd", "passwd2",
00465 "firstname", "lastname", "gender")))
00466 {
00467 $tpl->parseCurrentBlock();
00468
00469 }
00470 }
00471
00472
00473 if ($settings["passwd_auto_generate"] != 1)
00474 {
00475
00476 $str = $lng->txt("retype_password");
00477 if (isset($settings["require_passwd2"]) && $settings["require_passwd2"])
00478 {
00479 $str = $str . '<span class="asterisk">*</span>';
00480 }
00481
00482 $tpl->setVariable("TXT_PASSWD2", $str);
00483 }
00484 else
00485 {
00486 $tpl->setVariable("TXT_PASSWD_SELECT", $lng->txt("passwd"));
00487 $tpl->setVariable("TXT_PASSWD_VIA_MAIL", $lng->txt("reg_passwd_via_mail"));
00488 }
00489
00490 $tpl->setVariable("FORMACTION", "register.php?cmd=save&lang=".$_GET["lang"]);
00491 $tpl->setVariable("TXT_SAVE", $lng->txt("save"));
00492 $tpl->setVariable("TXT_REQUIRED_FIELDS", $lng->txt("required_field"));
00493 $tpl->setVariable("TXT_LOGIN_DATA", $lng->txt("login_data"));
00494 $tpl->setVariable("TXT_PERSONAL_DATA", $lng->txt("personal_data"));
00495 $tpl->setVariable("TXT_CONTACT_DATA", $lng->txt("contact_data"));
00496 $tpl->setVariable("TXT_SETTINGS", $lng->txt("settings"));
00497 $tpl->setVariable("TXT_OTHER", $lng->txt("user_profile_other"));
00498 $tpl->setVariable("TXT_LANGUAGE",$lng->txt("language"));
00499 $tpl->setVariable("TXT_GENDER_F",$lng->txt("gender_f"));
00500 $tpl->setVariable("TXT_GENDER_M",$lng->txt("gender_m"));
00501 $tpl->setVariable("TXT_OK",$lng->txt("ok"));
00502 $tpl->setVariable("TXT_CHOOSE_LANGUAGE", $lng->txt("choose_language"));
00503
00504
00505 $languages = $lng->getInstalledLanguages();
00506
00507 $count = (int) round(count($languages) / 2);
00508 $num = 1;
00509
00510 foreach ($languages as $lang_key)
00511 {
00512
00513
00514
00515
00516
00517
00518
00519 $tpl->setCurrentBlock("languages");
00520 $tpl->setVariable("LINK_LANG", "./register.php?lang=".$lang_key);
00521 $tpl->setVariable("LANG_NAME",
00522 ilLanguage::_lookupEntry($lang_key, "meta", "meta_l_".$lang_key));
00523 $tpl->setVariable("LANG_ICON", $lang_key);
00524 $tpl->setVariable("BORDER", 0);
00525 $tpl->setVariable("VSPACE", 0);
00526 $tpl->parseCurrentBlock();
00527
00528 $num++;
00529 }
00530
00531
00532
00533
00534
00535
00536
00537
00538
00539 $selected_lang = (isset($_SESSION["error_post_vars"]["Fobject"]["language"])) ? $_SESSION["error_post_vars"]["Fobject"]["language"] : $lng->lang_key;
00540
00541 foreach ($languages as $lang_key)
00542 {
00543 $tpl->setCurrentBlock("language_selection");
00544 $tpl->setVariable("LANG", $lng->txt("lang_".$lang_key));
00545 $tpl->setVariable("LANGSHORT", $lang_key);
00546
00547 if ($selected_lang == $lang_key)
00548 {
00549 $tpl->setVariable("SELECTED_LANG", "selected=\"selected\"");
00550 }
00551
00552 $tpl->parseCurrentBlock();
00553 }
00554
00555
00556 if (isset($_SESSION["error_post_vars"]["Fobject"]))
00557 {
00558
00559 $gender = strtoupper($_SESSION["error_post_vars"]["Fobject"]["gender"]);
00560
00561 if (!empty($gender))
00562 {
00563 $tpl->setVariable("BTN_GENDER_".$gender,"checked=\"checked\"");
00564 }
00565 }
00566
00567 $tpl->setVariable("TXT_PAGEHEADLINE", $lng->txt("registration"));
00568 $tpl->setVariable("TXT_PAGETITLE", "ILIAS3 - ".$lng->txt("registration"));
00569 $tpl->setVariable("TXT_REGISTER_INFO", $lng->txt("register_info"));
00570 $tpl->setVariable("AGREEMENT", ilUserAgreement::_getText());
00571 $tpl->setVariable("ACCEPT_CHECKBOX", ilUtil::formCheckbox(0, "status", "accepted"));
00572 $tpl->setVariable("ACCEPT_AGREEMENT", $lng->txt("accept_usr_agreement") . '<span class="asterisk">*</span>');
00573
00574 $tpl->show();
00575
00576 }
00577
00578 ?>
00579