dokeos-auth
[ class tree: dokeos-auth ] [ index: dokeos-auth ] [ all elements ]

Source for file inscription.php

Documentation is available at inscription.php

  1. <?php
  2. // $Id: inscription.php 14212 2008-01-31 02:09:57Z yannoo $
  3. /*
  4. ==============================================================================
  5.     Dokeos - elearning and course management software
  6.  
  7.     Copyright (c) 2004 Dokeos S.A.
  8.     Copyright (c) 2003 Ghent University (UGent)
  9.     Copyright (c) 2001 Universite catholique de Louvain (UCL)
  10.     Copyright (c) various contributors
  11.     Copyright (c) Bart Mollet, Hogeschool Gent
  12.  
  13.     For a full list of contributors, see "credits.txt".
  14.     The full license can be read in "license.txt".
  15.  
  16.     This program is free software; you can redistribute it and/or
  17.     modify it under the terms of the GNU General Public License
  18.     as published by the Free Software Foundation; either version 2
  19.     of the License, or (at your option) any later version.
  20.  
  21.     See the GNU General Public License for more details.
  22.  
  23.     Contact: Dokeos, 181 rue Royale, B-1000 Brussels, Belgium, info@dokeos.com
  24. ==============================================================================
  25. */
  26. /**
  27. ==============================================================================
  28. *    This script displays a form for registering new users.
  29. *    @package     dokeos.auth
  30. ==============================================================================
  31. */
  32. // name of the language file that needs to be included
  33. $language_file "registration";
  34.  
  35. include ("../inc/global.inc.php");
  36.  
  37. require_once (api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php');
  38. require_once (api_get_path(LIBRARY_PATH).'usermanager.lib.php');
  39. require_once (api_get_path(CONFIGURATION_PATH).'profile.conf.php');
  40. $tool_name get_lang('Registration');
  41.  
  42. Display :: display_header($tool_name);
  43.  
  44. // Forbidden to self-register
  45. if (get_setting('allow_registration'== 'false')
  46. {
  47.     api_not_allowed();
  48. }
  49. //api_display_tool_title($tool_name);
  50. if (get_setting('allow_registration')=='approval')
  51. {
  52.     Display::display_normal_message(get_lang('YourAccountHasToBeApproved'));
  53. }
  54. //if openid was not found
  55. if (!empty($_GET['openid_msg']&& $_GET['openid_msg'== 'idnotfound')
  56. {
  57.     Display::display_warning_message(get_lang('OpenIDCouldNotBeFoundPleaseRegister'));    
  58. }
  59.  
  60. $fck_attribute['Height'"150";
  61. $fck_attribute['Width'"450";
  62. $fck_attribute['ToolbarSet'"Profil";
  63.  
  64. $form new FormValidator('registration');
  65. //    LAST NAME and FIRST NAME
  66. $form->addElement('text''lastname',  get_lang('LastName'),  array('size' => 40));
  67. $form->addElement('text''firstname'get_lang('FirstName')array('size' => 40));
  68. $form->addRule('lastname',  get_lang('ThisFieldIsRequired')'required');
  69. $form->addRule('firstname'get_lang('ThisFieldIsRequired')'required');
  70. //    EMAIL
  71. $form->addElement('text''email'get_lang('Email')array('size' => 40));
  72. if (api_get_setting('registration''email'== 'true')
  73.     $form->addRule('email'get_lang('ThisFieldIsRequired')'required');
  74. $form->addRule('email'get_lang('EmailWrong')'email');
  75. if (api_get_setting('openid_authentication')=='true')
  76. {
  77.     $form->addElement('text''openid'get_lang('OpenIDURL')array('size' => 40));    
  78. }
  79. //    OFFICIAL CODE
  80. if (CONFVAL_ASK_FOR_OFFICIAL_CODE)
  81. {
  82.     $form->addElement('text''official_code'get_lang('OfficialCode')array('size' => 40));
  83.     if (api_get_setting('registration''officialcode'== 'true')
  84.         $form->addRule('official_code'get_lang('ThisFieldIsRequired')'required');
  85. }
  86. //    USERNAME
  87. $form->addElement('text''username'get_lang('UserName')array('size' => 20));
  88. $form->addRule('username'get_lang('ThisFieldIsRequired')'required');
  89. $form->addRule('username'get_lang('UsernameWrong')'username');
  90. $form->addRule('username'get_lang('UserTaken')'username_available');
  91. $form->addRule('username'sprintf(get_lang('UsernameMaxXCharacters'),'20')'maxlength',20);
  92. //    PASSWORD
  93. $form->addElement('password''pass1'get_lang('Pass'),         array('size' => 40));
  94. $form->addElement('password''pass2'get_lang('Confirmation')array('size' => 40));
  95. $form->addRule('pass1'get_lang('ThisFieldIsRequired')'required');
  96. $form->addRule('pass2'get_lang('ThisFieldIsRequired')'required');
  97. $form->addRule(array('pass1''pass2')get_lang('PassTwo')'compare');
  98. if (CHECK_PASS_EASY_TO_FIND)
  99.     $form->addRule('password1'get_lang('PassTooEasy').': '.api_generate_password()'callback''api_check_password');
  100. //    LANGUAGE
  101. if (get_setting('registration''language'== 'true')
  102. {
  103.     $form->addElement('select_language''language'get_lang('Language'));
  104. }
  105. //    STUDENT/TEACHER
  106. if (get_setting('allow_registration_as_teacher'<> 'false')
  107. {
  108.     $form->addElement('radio''status'get_lang('Status')get_lang('RegStudent')STUDENT);
  109.     $form->addElement('radio''status'nullget_lang('RegAdmin')COURSEMANAGER);
  110. }
  111. //    EXTENDED FIELDS
  112. if (api_get_setting('extended_profile'== 'true' AND api_get_setting('extendedprofile_registration','mycomptetences'== 'true')
  113. {
  114.     $form->add_html_editor('competences'get_lang('MyCompetences')false);
  115. }
  116. if (api_get_setting('extended_profile'== 'true' AND api_get_setting('extendedprofile_registration','mydiplomas'== 'true')
  117. {
  118.     $form->add_html_editor('diplomas'get_lang('MyDiplomas')false);
  119. }
  120. if (api_get_setting('extended_profile'== 'true' AND api_get_setting('extendedprofile_registration','myteach'== 'true')
  121. {
  122.     $form->add_html_editor('teach'get_lang('MyTeach')false);
  123. }
  124. if (api_get_setting('extended_profile'== 'true' AND api_get_setting('extendedprofile_registration','mypersonalopenarea'== 'true')
  125. {
  126.     $form->add_html_editor('openarea'get_lang('MyPersonalOpenArea')false);
  127. }
  128. if (api_get_setting('extended_profile'== 'true')
  129. {
  130.     if (api_get_setting('extendedprofile_registrationrequired','mycomptetences'== 'true')
  131.     {
  132.         $form->addRule('competences'get_lang('ThisFieldIsRequired')'required');
  133.     }
  134.     if (api_get_setting('extendedprofile_registrationrequired','mydiplomas'== 'true')
  135.     {
  136.         $form->addRule('diplomas'get_lang('ThisFieldIsRequired')'required');
  137.     }
  138.     if (api_get_setting('extendedprofile_registrationrequired','myteach'== 'true')
  139.     {
  140.         $form->addRule('teach'get_lang('ThisFieldIsRequired')'required');
  141.     }
  142.     if (api_get_setting('extendedprofile_registrationrequired','mypersonalopenarea'== 'true')
  143.     {
  144.         $form->addRule('openarea'get_lang('ThisFieldIsRequired')'required');
  145.     }
  146. }
  147.  
  148.  
  149.  
  150. $form->addElement('submit''submit'get_lang('Ok'));
  151. if(isset($_SESSION["user_language_choice"]&& $_SESSION["user_language_choice"]!=""){
  152.     $defaults['language'$_SESSION["user_language_choice"];
  153. }
  154. else{
  155.     $defaults['language'api_get_setting('platformLanguage');
  156. }
  157. if(!empty($_GET['username']))
  158. {
  159.     $defaults['username'Security::remove_XSS($_GET['username']);
  160. }
  161. if(!empty($_GET['email']))
  162. {
  163.     $defaults['email'Security::remove_XSS($_GET['email']);
  164. }
  165. if (api_get_setting('openid_authentication')=='true' && !empty($_GET['openid']))
  166. {
  167.     $defaults['openid'Security::remove_XSS($_GET['openid']);    
  168. }
  169. $defaults['status'STUDENT;
  170. $form->setDefaults($defaults);
  171.  
  172. if ($form->validate())
  173. {
  174.     /*-----------------------------------------------------
  175.       STORE THE NEW USER DATA INSIDE THE MAIN DOKEOS DATABASE
  176.       -----------------------------------------------------*/
  177.     $values $form->exportValues();
  178.     $values['username'substr($values['username'],0,20)//make *sure* the login isn't too long
  179.  
  180.     if (get_setting('allow_registration_as_teacher'== 'false')
  181.     {
  182.         $values['status'STUDENT;
  183.     }
  184.  
  185.     // creating a new user
  186.     $user_id UserManager::create_user($values['firstname'],$values['lastname'],$values['status'],$values['email'],$values['username'],$values['pass1'],$values['official_code']$values['language']);
  187.  
  188.  
  189.  
  190.     if ($user_id)
  191.     {
  192.         // storing the extended profile
  193.         $store_extended false;
  194.         $sql "UPDATE ".Database::get_main_table(TABLE_MAIN_USER)." SET ";
  195.         if (api_get_setting('extended_profile'== 'true' AND api_get_setting('extendedprofile_registration','mycomptetences'== 'true')
  196.         {
  197.             $sql_set["competences = '".Database::escape_string($values['competences'])."'";
  198.             $store_extended true;
  199.         }
  200.         if (api_get_setting('extended_profile'== 'true' AND api_get_setting('extendedprofile_registration','mydiplomas'== 'true')
  201.         {
  202.             $sql_set["diplomas = '".Database::escape_string($values['diplomas'])."'";
  203.             $store_extended true;
  204.         }
  205.         if (api_get_setting('extended_profile'== 'true' AND api_get_setting('extendedprofile_registration','myteach'== 'true')
  206.         {
  207.             $sql_set["teach = '".Database::escape_string($values['teach'])."'";
  208.             $store_extended true;
  209.         }
  210.         if (api_get_setting('extended_profile'== 'true' AND api_get_setting('extendedprofile_registration','mypersonalopenarea'== 'true')
  211.         {
  212.             $sql_set["openarea = '".Database::escape_string($values['openarea'])."'";
  213.             $store_extended true;
  214.         }
  215.         if ($store_extended)
  216.         {
  217.             $sql .= implode(',',$sql_set);
  218.             $sql .= " WHERE user_id = '".Database::escape_string($user_id)."'";
  219.             api_sql_query($sql,__FILE__,__LINE__);
  220.         }
  221.  
  222.         // if there is a default duration of a valid account then we have to change the expiration_date accordingly
  223.         if (get_setting('account_valid_duration')<>'')
  224.         {
  225.             $sql "UPDATE ".Database::get_main_table(TABLE_MAIN_USER)."
  226.                         SET expiration_date='registration_date+1' WHERE user_id='".$user_id."'";
  227.             api_sql_query($sql,__FILE__,__LINE__);
  228.         }
  229.  
  230.         // if the account has to be approved then we set the account to inactive, sent a mail to the platform admin and exit the page.
  231.         if (get_setting('allow_registration')=='approval')
  232.         {
  233.             // 1. set account inactive
  234.             $sql "UPDATE ".Database::get_main_table(TABLE_MAIN_USER)."
  235.                         SET active='0' WHERE user_id='".$user_id."'";
  236.             api_sql_query($sql,__FILE__,__LINE__);
  237.  
  238.             // 2. send mail to the platform admin
  239.             $emailfromaddr     api_get_setting('emailAdministrator');
  240.             $emailfromname     api_get_setting('siteName');
  241.             $emailto        api_get_setting('emailAdministrator');
  242.             $emailsubject    get_lang('ApprovalForNewAccount').': '.$values['username'];
  243.             $emailbody        get_lang('ApprovalForNewAccount')."\n";
  244.             $emailbody        .=get_lang('UserName').': '.$values['username']."\n";
  245.             $emailbody        .=get_lang('LastName').': '.$values['lastname']."\n";
  246.             $emailbody        .=get_lang('FirstName').': '.$values['firstname']."\n";
  247.             $emailbody        .=get_lang('Email').': '.$values['email']."\n";
  248.             $emailbody        .=get_lang('Status').': '.$values['status']."\n\n";
  249.             $emailbody        .=get_lang('ManageUser').': '.api_get_path(WEB_CODE_PATH).'admin/user_edit.php?user_id='.$user_id;
  250.             $emailheaders "From: ".get_setting('administratorSurname')." ".get_setting('administratorName')." <".get_setting('emailAdministrator').">\n";
  251.             $emailheaders .= "Reply-To: ".get_setting('emailAdministrator');
  252.             api_send_mail($emailto$emailsubject$emailbody$emailheaders);
  253.  
  254.             // 3. exit the page
  255.             unset($user_id);
  256.             Display :: display_footer();
  257.             exit;
  258.         }
  259.  
  260.  
  261.         /*--------------------------------------
  262.                   SESSION REGISTERING
  263.           --------------------------------------*/
  264.         $_user['firstName'stripslashes($values['firstname']);
  265.         $_user['lastName']     stripslashes($values['lastname']);
  266.         $_user['mail']         $values['email'];
  267.         $_user['language']     $values['language'];
  268.         $_user['user_id']    $user_id;
  269.         $is_allowedCreateCourse ($values['status'== 1true false;
  270.         api_session_register('_user');
  271.         api_session_register('is_allowedCreateCourse');
  272.  
  273.         //stats
  274.         include (api_get_path(LIBRARY_PATH)."events.lib.inc.php");
  275.         event_login();
  276.         // last user login date is now
  277.         $user_last_login_datetime 0// used as a unix timestamp it will correspond to : 1 1 1970
  278.  
  279.         api_session_register('user_last_login_datetime');
  280.  
  281.         /*--------------------------------------
  282.                      EMAIL NOTIFICATION
  283.           --------------------------------------*/
  284.  
  285.         if (strstr($values['email']'@'))
  286.         {
  287.             // Lets predefine some variables. Be sure to change the from address!
  288.             $firstname $values['firstname'];
  289.             $lastname $values['lastname'];
  290.             $emailto "\"$firstname $lastname\" <".$values['email'].">";
  291.             $emailfromaddr api_get_setting('emailAdministrator');
  292.             $emailfromname api_get_setting('siteName');
  293.             $emailsubject "[".get_setting('siteName')."] ".get_lang('YourReg')." ".get_setting('siteName');
  294.  
  295.             // The body can be as long as you wish, and any combination of text and variables
  296.  
  297.             $emailbody get_lang('Dear')." ".stripslashes("$firstname $lastname").",\n\n".get_lang('YouAreReg')." ".get_setting('siteName')." ".get_lang('Settings')." ".$values['username']."\n".get_lang('Pass')." : ".stripslashes($values['pass1'])."\n\n".get_lang('Address')." ".get_setting('siteName')." ".get_lang('Is')." : ".$_configuration['root_web']."\n\n".get_lang('Problem')."\n\n".get_lang('Formula').",\n\n".get_setting('administratorName')." ".get_setting('administratorSurname')."\n".get_lang('Manager')." ".get_setting('siteName')."\nT. ".get_setting('administratorTelephone')."\n".get_lang('Email')." : ".get_setting('emailAdministrator');
  298.  
  299.             // Here we are forming one large header line
  300.             // Every header must be followed by a \n except the last
  301.             $emailheaders "From: ".get_setting('administratorSurname')." ".get_setting('administratorName')." <".get_setting('emailAdministrator').">\n";
  302.             $emailheaders .= "Reply-To: ".get_setting('emailAdministrator');
  303.  
  304.             // Because I predefined all of my variables, this api_send_mail() function looks nice and clean hmm?
  305.             api_send_mail($emailto$emailsubject$emailbody$emailheaders);
  306.         }
  307.     }
  308.  
  309.     echo "<p>".get_lang('Dear')." ".stripslashes("$firstname $lastname").",<br><br>".get_lang('PersonalSettings').".</p>\n";
  310.  
  311.     if (!empty ($values['email']))
  312.     {
  313.         echo "<p>".get_lang('MailHasBeenSent').".</p>";
  314.     }
  315.  
  316.     if ($is_allowedCreateCourse)
  317.     {
  318.         echo "<p>"get_lang('NowGoCreateYourCourse')".</p>\n";
  319.         $actionUrl "../create_course/add_course.php";
  320.     }
  321.     else
  322.     {
  323.         echo "<p>"get_lang('NowGoChooseYourCourses')".</p>\n";
  324.         $actionUrl "courses.php?action=subscribe";
  325.     }
  326.     // ?uidReset=true&uidReq=$_user['user_id']
  327.  
  328.     echo "<form action=\""$actionUrl"\"  method=\"post\">\n""<input type=\"submit\" name=\"next\" value=\""get_lang('Next')"\" validationmsg=\" "get_lang('Next')" \">\n""</form><br>\n";
  329.  
  330. }
  331. else
  332. {
  333.     $form->display();
  334. }
  335. ?>
  336. <a href="<?php echo api_get_path(WEB_PATH)?>">&lt;&lt; <?php echo get_lang('Back')?></a>
  337. <?php
  338. /*
  339. ==============================================================================
  340.         FOOTER
  341. ==============================================================================
  342. */
  343.  
  344. ?>

Documentation generated on Thu, 12 Jun 2008 13:52:40 -0500 by phpDocumentor 1.4.1