]> git.mjollnir.org Git - moodle.git/commitdiff
Adding custom profile fields to the signup page.
authorikawhero <ikawhero>
Mon, 20 Aug 2007 08:30:34 +0000 (08:30 +0000)
committerikawhero <ikawhero>
Mon, 20 Aug 2007 08:30:34 +0000 (08:30 +0000)
The only two authentication plugins this affects are email and ldap.

auth/email/auth.php
auth/ldap/auth.php
login/signup_form.php
user/profile/lib.php

index 2fc47c06724058c994b2931e066fa4527bc60974..2480271ec5a55ff840c10951bc712bfd3bdab446 100644 (file)
@@ -74,11 +74,18 @@ class auth_plugin_email extends auth_plugin_base {
      * @param boolean $notify print notice with link and terminate
      */
     function user_signup($user, $notify=true) {
+        global $CFG;
+        require_once($CFG->dirroot.'/user/profile/lib.php');
+        
         $user->password = hash_internal_user_password($user->password);
 
         if (! ($user->id = insert_record('user', $user)) ) {
             print_error('auth_emailnoinsert','auth');
         }
+        
+        /// Save any custom profile field information
+        profile_save_data($user);
+
         if (! send_confirmation_email($user)) {
             print_error('auth_emailnoemail','auth');
         }
index ea0c5c5b2ca658abd7cc83ffb7c0fbe7028c3836..cb2ec2efbf115c9751fe491c0ecd47221787ae55 100644 (file)
@@ -340,6 +340,9 @@ class auth_plugin_ldap extends auth_plugin_base {
      * @param boolean $notify print notice with link and terminate
      */
     function user_signup($user, $notify=true) {
+        global $CFG;
+        require_once($CFG->dirroot.'/user/profile/lib.php');
+        
         if ($this->user_exists($user->username)) {
             print_error('auth_ldap_user_exists', 'auth');
         }
@@ -355,6 +358,9 @@ class auth_plugin_ldap extends auth_plugin_base {
             print_error('auth_emailnoinsert', 'auth');
         }
 
+        /// Save any custom profile field information
+        profile_save_data($user);
+
         $this->update_user_record($user->username);
         update_internal_user_password($user, $plainslashedpassword);
 
index df2f0a1e96d657b481bb57de16c82bb1bb77f7fc..c335774f9907d65a089a9b1979c845864aa1c696 100644 (file)
@@ -1,6 +1,7 @@
 <?php  // $Id$
 
 require_once($CFG->libdir.'/formslib.php');
+require_once($CFG->dirroot.'/user/profile/lib.php');
 
 class login_signup_form extends moodleform {
     function definition() {
@@ -57,6 +58,8 @@ class login_signup_form extends moodleform {
         $mform->addRule('country', get_string('missingcountry'), 'required', null, 'server');
         $mform->setDefault('country', '');
 
+        profile_signup_fields($mform);
+
         if (!empty($CFG->sitepolicy)) {
             $mform->addElement('header', '', get_string('policyagreement'), '');
             $mform->addElement('static', 'policylink', '', '<a href="'.$CFG->sitepolicy.'" onclick="this.target=\'_blank\'">'.get_String('policyagreementclick').'</a>');
index 84ea1288ab36bc4733fb3963b3ff947f38a03223..1d09efc31f7896e8a1dc451bae5b0a90e9ab7ad2 100644 (file)
@@ -366,7 +366,22 @@ function profile_display_fields($userid) {
     }
 }
 
-
-
+/**
+ * Adds code snippet to a moodle form object for custom profile fields that
+ * should appear on the signup page
+ * @param  object  moodle form object
+ */
+function profile_signup_fields(&$mform) {
+    global $CFG;
+    
+    if ($fields = get_records('user_info_field', 'signup', 1)) {
+        foreach ($fields as $field) {
+            require_once($CFG->dirroot.'/user/profile/field/'.$field->datatype.'/field.class.php');
+            $newfield = 'profile_field_'.$field->datatype;
+            $formfield = new $newfield($field->id);
+            $formfield->edit_field($mform);
+        }
+    }
+}
 
 ?>