Namespaces | Functions

register.php File Reference

Go to the source code of this file.

Namespaces

namespace  ilias
 

admin objects frameset


Functions

if(!$ilias->getSetting("enable_registration"))
switch($_GET["cmd"]) 
loginPage ()
 saveForm ()
 displayForm ()

Function Documentation

displayForm (  ) 

Definition at line 364 of file register.php.

References $_GET, $_SESSION, $count, $data, $ilias, $languages, $lng, $num, $settings, $tpl, ilUserAgreement::_getText(), ilLanguage::_lookupEntry(), ilObjRole::_lookupRegisterAllowed(), ilUtil::formCheckbox(), ilUtil::formSelect(), and ilUtil::prepareFormOutput().

{
        global $tpl,$ilias,$lng,$ObjDefinition;

    //load ILIAS settings
    $settings = $ilias->getAllSettings();

        // load login template
        $tpl->addBlockFile("CONTENT", "content", "tpl.usr_registration.html");
        $tpl->addBlockFile("STATUSLINE", "statusline", "tpl.statusline.html");

        //sendInfo();
        //infoPanel();
        // role selection (only those roles marked with allow_register)
        // TODO put query in a function
        include_once("classes/class.ilObjRole.php");
        $reg_roles = ilObjRole::_lookupRegisterAllowed();

        $rol = array();
        foreach ($reg_roles as $role)
        {
                $rol[$role["id"]] = $role["title"];
        }

        $role = ilUtil::formSelect($_SESSION["error_post_vars"]["Fobject"]["default_role"],"Fobject[default_role]",$rol,false,true);

        $data = array();
        $data["fields"] = array();
        $data["fields"]["login"] = "";

    if ($settings["passwd_auto_generate"] != 1)
    {
        $data["fields"]["passwd"] = "";
        $data["fields"]["passwd2"] = "";
    }
    
        $data["fields"]["title"] = "";
        $data["fields"]["gender"] = "";
        $data["fields"]["firstname"] = "";
        $data["fields"]["lastname"] = "";
        $data["fields"]["institution"] = "";
        $data["fields"]["department"] = "";
        $data["fields"]["street"] = "";
        $data["fields"]["city"] = "";
        $data["fields"]["zipcode"] = "";
        $data["fields"]["country"] = "";
        $data["fields"]["phone_office"] = "";
        $data["fields"]["phone_home"] = "";
        $data["fields"]["phone_mobile"] = "";
        $data["fields"]["fax"] = "";
        $data["fields"]["email"] = "";
        $data["fields"]["hobby"] = "";
        $data["fields"]["referral_comment"] = "";
        $data["fields"]["matriculation"] = "";
        $data["fields"]["default_role"] = $role;

        // fill presets
        foreach ($data["fields"] as $key => $val)
        {
                $str = $lng->txt($key);
                if ($key == "title")
                {
                        $str = $lng->txt("person_title");
                }
                
                if (!in_array($key, array("default_role", "login", "passwd", "passwd2",
                        "firstname", "lastname", "gender")))
                {
                         if ($settings["usr_settings_hide_".$key] != 1)
                         {
                                 $tpl->setCurrentBlock($key."_section");
//echo "<br>+section+".$key."_section"."+";
                         }
                         else
                         {
                                 continue;
                         }
                }

        // check to see if dynamically required
        if (isset($settings["require_" . $key]) && $settings["require_" . $key])
        {
            $str = $str . '<span class="asterisk">*</span>';
        }

                $tpl->setVariable("TXT_".strtoupper($key), $str);
//echo ".TXT_".strtoupper($key).".".$str.".";

                if ($key == "default_role")
                {
                        $tpl->setVariable(strtoupper($key), $val);
                }
                else
                {
                        if (isset($_SESSION["error_post_vars"]["Fobject"]))
                        {
                                $val = $_SESSION["error_post_vars"]["Fobject"][$key];
                        }
                        $tpl->setVariable(strtoupper($key), ilUtil::prepareFormOutput($val,true));
//echo "-".strtoupper($key)."-".ilUtil::prepareFormOutput($val,true)."-";
                }
                
                if (!in_array($key, array("default_role", "login", "passwd", "passwd2",
                        "firstname", "lastname", "gender")))
                {
                        $tpl->parseCurrentBlock();
//echo ":parseCurrentBlock";
                }
        }


    if ($settings["passwd_auto_generate"] != 1)
    {
        // text label for passwd2 is nonstandard
        $str = $lng->txt("retype_password");
        if (isset($settings["require_passwd2"]) && $settings["require_passwd2"])
        {
            $str = $str . '<span class="asterisk">*</span>';
        }

        $tpl->setVariable("TXT_PASSWD2", $str);
    }
    else
    {
        $tpl->setVariable("TXT_PASSWD_SELECT", $lng->txt("passwd"));
        $tpl->setVariable("TXT_PASSWD_VIA_MAIL", $lng->txt("reg_passwd_via_mail"));
    }
//$tpl->show(); exit;
        $tpl->setVariable("FORMACTION", "register.php?cmd=save&lang=".$_GET["lang"]);
        $tpl->setVariable("TXT_SAVE", $lng->txt("save"));
        $tpl->setVariable("TXT_REQUIRED_FIELDS", $lng->txt("required_field"));
        $tpl->setVariable("TXT_LOGIN_DATA", $lng->txt("login_data"));
        $tpl->setVariable("TXT_PERSONAL_DATA", $lng->txt("personal_data"));
        $tpl->setVariable("TXT_CONTACT_DATA", $lng->txt("contact_data"));
        $tpl->setVariable("TXT_SETTINGS", $lng->txt("settings"));
        $tpl->setVariable("TXT_OTHER", $lng->txt("user_profile_other"));
        $tpl->setVariable("TXT_LANGUAGE",$lng->txt("language"));
        $tpl->setVariable("TXT_GENDER_F",$lng->txt("gender_f"));
        $tpl->setVariable("TXT_GENDER_M",$lng->txt("gender_m"));
        $tpl->setVariable("TXT_OK",$lng->txt("ok"));
        $tpl->setVariable("TXT_CHOOSE_LANGUAGE", $lng->txt("choose_language"));

        // language selection
        $languages = $lng->getInstalledLanguages();
        
                $count = (int) round(count($languages) / 2);
                $num = 1;
                
                foreach ($languages as $lang_key)
                {
                        /*
                        if ($num === $count)
                        {
                                $tpl->touchBlock("lng_new_row");
                        }
                        */

                        $tpl->setCurrentBlock("languages");
                        $tpl->setVariable("LINK_LANG", "./register.php?lang=".$lang_key);
                        $tpl->setVariable("LANG_NAME",
                                ilLanguage::_lookupEntry($lang_key, "meta", "meta_l_".$lang_key));
                        $tpl->setVariable("LANG_ICON", $lang_key);
                        $tpl->setVariable("BORDER", 0);
                        $tpl->setVariable("VSPACE", 0);
                        $tpl->parseCurrentBlock();

                        $num++;
                }
                
                /*
                if (count($languages) % 2)
                {
                        $tpl->touchBlock("lng_empty_cell");
                }
                */

        // preselect previous chosen language otherwise default language
        $selected_lang = (isset($_SESSION["error_post_vars"]["Fobject"]["language"])) ? $_SESSION["error_post_vars"]["Fobject"]["language"] : $lng->lang_key;

        foreach ($languages as $lang_key)
        {
                $tpl->setCurrentBlock("language_selection");
                $tpl->setVariable("LANG", $lng->txt("lang_".$lang_key));
                $tpl->setVariable("LANGSHORT", $lang_key);

                if ($selected_lang == $lang_key)
                {
                        $tpl->setVariable("SELECTED_LANG", "selected=\"selected\"");
                }

                $tpl->parseCurrentBlock();
        } // END language selection

        // FILL SAVED VALUES IN CASE OF ERROR
        if (isset($_SESSION["error_post_vars"]["Fobject"]))
        {
                // gender selection
                $gender = strtoupper($_SESSION["error_post_vars"]["Fobject"]["gender"]);

                if (!empty($gender))
                {
                        $tpl->setVariable("BTN_GENDER_".$gender,"checked=\"checked\"");
                }
        }
        
        $tpl->setVariable("TXT_PAGEHEADLINE", $lng->txt("registration"));
        $tpl->setVariable("TXT_PAGETITLE", "ILIAS3 - ".$lng->txt("registration"));
        $tpl->setVariable("TXT_REGISTER_INFO", $lng->txt("register_info"));
        $tpl->setVariable("AGREEMENT", ilUserAgreement::_getText());
        $tpl->setVariable("ACCEPT_CHECKBOX", ilUtil::formCheckbox(0, "status", "accepted"));
    $tpl->setVariable("ACCEPT_AGREEMENT", $lng->txt("accept_usr_agreement") . '<span class="asterisk">*</span>');

        $tpl->show();

}

Here is the call graph for this function:

if (!$ilias->getSetting("enable_registration")) switch ($_GET["cmd"]) loginPage (  ) 

Definition at line 61 of file register.php.

References $_GET, $ilias, $lng, $tpl, and ilUtil::stripSlashes().

{
        global $tpl,$ilias,$lng;

        $tpl->addBlockFile("CONTENT", "content", "tpl.usr_registered.html");
        $tpl->setVariable("FORMACTION","login.php");
        $tpl->setVariable("TARGET","target=\"_parent\"");
        $tpl->setVariable("TXT_PAGEHEADLINE", $lng->txt("registration"));
        $tpl->setVariable("TXT_WELCOME", $lng->txt("welcome").", ".urldecode(ilUtil::stripSlashes($_GET["name"]))."!");
    if ($ilias->getSetting("auto_registration"))
    {
        $tpl->setVariable("TXT_REGISTERED", $lng->txt("txt_registered"));
    }
    else
    {
        $tpl->setVariable("TXT_REGISTERED", $lng->txt("txt_submitted"));
    }
        $tpl->setVariable("TXT_LOGIN", $lng->txt("login_to_ilias"));
        $tpl->setVariable("USERNAME", base64_decode($_GET["user"]));
        $tpl->setVariable("PASSWORD", base64_decode($_GET["pass"]));

        $ilias->auth->logout();
        session_destroy();

        $tpl->show();
}

Here is the call graph for this function:

saveForm (  ) 

Definition at line 88 of file register.php.

References $_GET, $_POST, $add, $auth, $ilErr, $ilias, $lng, $rbacadmin, $settings, $tpl, $umail, ilObjRole::_getAuthMode(), ilRADIUSAuthentication::_getServers(), ilObjRole::_lookupAllowRegister(), ilObject::_lookupTitle(), ilUtil::generatePasswords(), ilUtil::is_email(), ilUtil::isLogin(), ilUtil::isPassword(), loginExists(), ilUtil::redirect(), and ilUtil::stripSlashes().

{
        global $tpl, $ilias, $lng, $rbacadmin, $ilDB, $ilErr;

    //load ILIAS settings
    $settings = $ilias->getAllSettings();

        //$tpl->addBlockFile("CONTENT", "content", "tpl.group_basic.html");
        //sendInfo();
        //InfoPanel();

        //check, whether user-agreement has been accepted
        if (! ($_POST["status"]=="accepted") )
        {
                $ilias->raiseError($lng->txt("force_accept_usr_agreement"),$ilias->error_obj->MESSAGE);
    }

    // check dynamically required fields
    foreach ($settings as $key => $val)
    {
        if (substr($key,0,8) == "require_")
        {
            if ($settings["passwd_auto_generate"] == 1 and ($key == "require_passwd" or $key == "require_passwd2"))
            {
                continue;
            }
            
            $require_keys[] = substr($key,8);
        }
    }

    foreach ($require_keys as $key => $val)
    {
        if (isset($settings["require_" . $val]) && $settings["require_" . $val])
        {
            if (empty($_POST["Fobject"][$val]))
            {
                $ilias->raiseError($lng->txt("fill_out_all_required_fields") . ": " . $lng->txt($val),$ilias->error_obj->MESSAGE);
            }
        }
    }

    // validate username
        if (!ilUtil::isLogin($_POST["Fobject"]["login"]))
        {
                $ilias->raiseError($lng->txt("login_invalid"),$ilias->error_obj->MESSAGE);
        }

        // check loginname
        if (loginExists($_POST["Fobject"]["login"]))
        {
                $ilias->raiseError($lng->txt("login_exists"),$ilias->error_obj->MESSAGE);
        }

    if ($settings["passwd_auto_generate"] != 1)
    {
        // check passwords
        if ($_POST["Fobject"]["passwd"] != $_POST["Fobject"]["passwd2"])
        {
            $ilias->raiseError($lng->txt("passwd_not_match"),$ilias->error_obj->MESSAGE);
        }

        // validate password
        if (!ilUtil::isPassword($_POST["Fobject"]["passwd"]))
        {
            $ilias->raiseError($lng->txt("passwd_invalid"),$ilias->error_obj->MESSAGE);
        }
    }
    else
    {    
        $passwd = ilUtil::generatePasswords(1);
        $_POST["Fobject"]["passwd"] = $passwd[0];
    }
        // The password type is not passed in the post data. Therefore we
        // append it here manually.
        require_once "classes/class.ilObjUser.php";
    $_POST["Fobject"]["passwd_type"] = IL_PASSWD_PLAIN;

        // validate email
        if (!ilUtil::is_email($_POST["Fobject"]["email"]))
        {
                $ilias->raiseError($lng->txt("email_not_valid"),$ilias->error_obj->MESSAGE);
        }

        // validate role
        include_once("classes/class.ilObjRole.php");
        if (!ilObjRole::_lookupAllowRegister($_POST["Fobject"]["default_role"]))
        {
                $ilias->raiseError("Invalid role selection in registration: ".
                        ilObject::_lookupTitle($_POST["Fobject"]["default_role"])." [".$_POST["Fobject"]["default_role"]."]".
                        ", IP: ".$_SERVER["REMOTE_ADDR"],$ilias->error_obj->FATAL);
        }
        
        // get auth mode of role
        $auth_mode = ilObjRole::_getAuthMode($_POST["Fobject"]["default_role"]);
        $_POST["Fobject"]['auth_mode'] = $auth_mode;
        
        // validate authentication, if mode != LOCAL
        // to do: if auth is taken out of ilias class, this should be
        // implemented better
        // to do: also needed for ldap
        if ($auth_mode == "radius")
        {
                $_POST['username'] = $_POST["Fobject"]["login"];
                $_POST['password'] = $_POST["Fobject"]["passwd"];
                include_once('classes/class.ilRADIUSAuthentication.php');
                $radius_servers = ilRADIUSAuthentication::_getServers($ilDB);
                $settings = $ilias->getAllSettings();
                
                foreach ($radius_servers as $radius_server)
                {
                        $rad_params['servers'][] = array($radius_server,$settings["radius_port"],$settings["radius_shared_secret"]);
                }
                $auth = new Auth("RADIUS", $rad_params,"",false);
                $auth->start();
                $err = $ilErr->getLastError();
                if (!$auth->getAuth())
                {
                        $add = (!is_object($err))
                                ? ""
                                : "<br>".$err->getMessage();
                        $ilias->raiseError($lng->txt("could_not_verify_account").
                                $add, $ilErr->MESSAGE);
                }
        }

        // TODO: check if login or passwd already exists
        // TODO: check length of login and passwd

        // checks passed. save user

        $userObj = new ilObjUser();
        $userObj->assignData($_POST["Fobject"]);
        $userObj->setTitle($userObj->getFullname());
        $userObj->setDescription($userObj->getEmail());

        // Time limit
        $userObj->setTimeLimitOwner(7);
        $userObj->setTimeLimitUnlimited(1);
        $userObj->setTimeLimitFrom(time());
        $userObj->setTimeLimitUntil(time());

        $userObj->create();

    if (isset($settings["auto_registration"]) && ($settings["auto_registration"] == 1))
    {
        $userObj->setActive(1, 6);
    }
    else
    {
        $userObj->setActive(0, 0);
    }

    $userObj->updateOwner();

        //insert user data in table user_data
        $userObj->saveAsNew();
        
        // store acceptance of user agreement
        $userObj->writeAccepted();

        // setup user preferences
        $userObj->setLanguage($_POST["Fobject"]["language"]);
        $userObj->setPref("hits_per_page", $ilias->getSetting("hits_per_page"));
        $userObj->setPref("show_users_online", $ilias->getSetting("show_users_online"));
        $userObj->writePrefs();

        //set role entries
        $rbacadmin->assignUser($_POST["Fobject"]["default_role"],$userObj->getId(),true);

        // CREATE ENTRIES FOR MAIL BOX
        /* moved folder creation to ObjUser->saveAsNew
        include_once ("classes/class.ilMailbox.php");
        $mbox = new ilMailbox($userObj->getId());
        $mbox->createDefaultFolder();

        include_once "classes/class.ilMailOptions.php";
        $mail_options = new ilMailOptions($userObj->getId());
        $mail_options->createMailOptionsEntry();

        // create personal bookmark folder tree
        include_once "classes/class.ilBookmarkFolder.php";
        $bmf = new ilBookmarkFolder(0, $userObj->getId());
        $bmf->createNewBookmarkTree();*/

    if (!$ilias->getSetting("auto_registration"))
    {
        $approve_recipient = $ilias->getSetting("approve_recipient");
        if (empty($approve_recipient))
        {
            $approve_recipient = $userObj->getLoginByUserId(6);
        }

        include_once "classes/class.ilFormatMail.php";

        $umail = new ilFormatMail($userObj->getId());

        // mail subject
        $subject = $lng->txt("client_id") . " " . $ilias->client_id . ": " . $lng->txt("usr_new");

        // mail body
        $body = $lng->txt("login").": ".$userObj->getLogin()."\n\r".
                $lng->txt("title").": ".$userObj->getTitle()."\n\r".
                $lng->txt("gender").": ".$userObj->getGender()."\n\r".
                $lng->txt("firstname").": ".$userObj->getFirstname()."\n\r".
                $lng->txt("lastname").": ".$userObj->getLastname()."\n\r".
                $lng->txt("institution").": ".$userObj->getInstitution()."\n\r".
                $lng->txt("department").": ".$userObj->getDepartment()."\n\r".
                $lng->txt("street").": ".$userObj->getStreet()."\n\r".
                $lng->txt("city").": ".$userObj->getCity()."\n\r".
                $lng->txt("zipcode").": ".$userObj->getZipcode()."\n\r".
                $lng->txt("country").": ".$userObj->getCountry()."\n\r".
                $lng->txt("phone_office").": ".$userObj->getPhoneOffice()."\n\r".
                $lng->txt("phone_home").": ".$userObj->getPhoneHome()."\n\r".
                $lng->txt("phone_mobile").": ".$userObj->getPhoneMobile()."\n\r".
                $lng->txt("fax").": ".$userObj->getFax()."\n\r".
                $lng->txt("email").": ".$userObj->getEmail()."\n\r".
                $lng->txt("hobby").": ".$userObj->getHobby()."\n\r".
                $lng->txt("referral_comment").": ".$userObj->getComment()."\n\r".
                $lng->txt("matriculation").": ".$userObj->getMatriculation()."\n\r".
                $lng->txt("create_date").": ".$userObj->getCreateDate()."\n\r".
                $lng->txt("default_role").": ".$_POST["Fobject"]["default_role"]."\n\r";

        $error_message = $umail->sendMail($approve_recipient,"","",$subject,$body,array(),array("normal"));
    }

    if ($settings["passwd_auto_generate"] == 1)
    {
        include_once "classes/class.ilMimeMail.php";

                $mmail = new ilMimeMail();
                $mmail->autoCheck(false);
                $mmail->From($settings["admin_email"]);
                $mmail->To($userObj->getEmail());

        // mail subject
        $subject = $lng->txt("reg_mail_subject");

                // mail body
                $body = $lng->txt("reg_mail_body_salutation")." ".$userObj->getFullname().",\n\r".
                                $lng->txt("reg_mail_body_welcome")."\n\r".
                                $lng->txt("reg_mail_body_text1")."\n\r".
                                $lng->txt("reg_mail_body_text2")."\n\r".
                                ILIAS_HTTP_PATH."login.php?client_id=".$ilias->client_id."\n\r".
                                $lng->txt("login").": ".$userObj->getLogin()."\n\r".
                                $lng->txt("passwd").": ".$_POST["Fobject"]["passwd"]."\n\r\n\r".
                                $lng->txt("reg_mail_body_text3")."\n\r".
                                $lng->txt("title").": ".$userObj->getTitle()."\n\r".
                                $lng->txt("gender").": ".$userObj->getGender()."\n\r".
                                $lng->txt("firstname").": ".$userObj->getFirstname()."\n\r".
                                $lng->txt("lastname").": ".$userObj->getLastname()."\n\r".
                                $lng->txt("institution").": ".$userObj->getInstitution()."\n\r".
                                $lng->txt("department").": ".$userObj->getDepartment()."\n\r".
                                $lng->txt("street").": ".$userObj->getStreet()."\n\r".
                                $lng->txt("city").": ".$userObj->getCity()."\n\r".
                                $lng->txt("zipcode").": ".$userObj->getZipcode()."\n\r".
                                $lng->txt("country").": ".$userObj->getCountry()."\n\r".
                                $lng->txt("phone_office").": ".$userObj->getPhoneOffice()."\n\r".
                                $lng->txt("phone_home").": ".$userObj->getPhoneHome()."\n\r".
                                $lng->txt("phone_mobile").": ".$userObj->getPhoneMobile()."\n\r".
                                $lng->txt("fax").": ".$userObj->getFax()."\n\r".
                                $lng->txt("email").": ".$userObj->getEmail()."\n\r".
                                $lng->txt("hobby").": ".$userObj->getHobby()."\n\r".
                                $lng->txt("referral_comment").": ".$userObj->getComment()."\n\r".
                                $lng->txt("create_date").": ".$userObj->getCreateDate()."\n\r".
                                $lng->txt("default_role").": ".$_POST["Fobject"]["default_role"]."\n\r";

                $mmail->Subject($subject);
                $mmail->Body($body);
                $mmail->Send();
    }

        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())));
}

Here is the call graph for this function: