MDL-32787 user: rule required for custom profile fields applies to all users editing...
authorRajesh Taneja <rajesh@moodle.com>
Tue, 15 May 2012 17:53:09 +0000 (21:53 +0400)
committerRajesh Taneja <rajesh@moodle.com>
Tue, 3 Jul 2012 05:48:18 +0000 (13:48 +0800)
user/edit.php
user/edit_form.php
user/editadvanced.php
user/editadvanced_form.php
user/profile/lib.php

index ca52ed3..7644861 100644 (file)
@@ -165,7 +165,8 @@ $user->imagefile = $draftitemid;
 //create form
 $userform = new user_edit_form(null, array(
     'editoroptions' => $editoroptions,
-    'filemanageroptions' => $filemanageroptions));
+    'filemanageroptions' => $filemanageroptions,
+    'userid' => $user->id));
 if (empty($user->country)) {
     // MDL-16308 - we must unset the value here so $CFG->country can be used as default one
     unset($user->country);
index e53672f..b077a0c 100644 (file)
@@ -10,18 +10,23 @@ class user_edit_form extends moodleform {
 
     // Define the form
     function definition () {
-        global $CFG, $COURSE;
+        global $CFG, $COURSE, $USER;
 
         $mform =& $this->_form;
-        if (is_array($this->_customdata) && array_key_exists('editoroptions', $this->_customdata)) {
-            $editoroptions = $this->_customdata['editoroptions'];
-        } else {
-            $editoroptions = null;
-        }
-        if (is_array($this->_customdata) && array_key_exists('filemanageroptions', $this->_customdata)) {
-            $filemanageroptions = $this->_customdata['filemanageroptions'];
-        } else {
-            $filemanageroptions = null;
+        $editoroptions = null;
+        $filemanageroptions = null;
+        $userid = $USER->id;
+
+        if (is_array($this->_customdata)) {
+            if (array_key_exists('editoroptions', $this->_customdata)) {
+                $editoroptions = $this->_customdata['editoroptions'];
+            }
+            if (array_key_exists('filemanageroptions', $this->_customdata)) {
+                $filemanageroptions = $this->_customdata['filemanageroptions'];
+            }
+            if (array_key_exists('userid', $this->_customdata)) {
+                $userid = $this->_customdata['userid'];
+            }
         }
         //Accessibility: "Required" is bad legend text.
         $strgeneral  = get_string('general');
@@ -47,7 +52,7 @@ class user_edit_form extends moodleform {
         }
 
         /// Next the customisable profile fields
-        profile_definition($mform);
+        profile_definition($mform, $userid);
 
         $this->add_action_buttons(false, get_string('updatemyprofile'));
     }
index 5226c0a..cdf03bd 100644 (file)
@@ -146,7 +146,8 @@ $user->imagefile = $draftitemid;
 //create form
 $userform = new user_editadvanced_form(null, array(
     'editoroptions' => $editoroptions,
-    'filemanageroptions' => $filemanageroptions));
+    'filemanageroptions' => $filemanageroptions,
+    'userid' => $user->id));
 $userform->set_data($user);
 
 if ($usernew = $userform->get_data()) {
index 7092f02..dbe6d82 100644 (file)
@@ -13,16 +13,20 @@ class user_editadvanced_form extends moodleform {
         global $USER, $CFG, $COURSE;
 
         $mform =& $this->_form;
+        $editoroptions = null;
+        $filemanageroptions = null;
+        $userid = $USER->id;
 
-        if (is_array($this->_customdata) && array_key_exists('editoroptions', $this->_customdata)) {
-            $editoroptions = $this->_customdata['editoroptions'];
-        } else {
-            $editoroptions = null;
-        }
-        if (is_array($this->_customdata) && array_key_exists('filemanageroptions', $this->_customdata)) {
-            $filemanageroptions = $this->_customdata['filemanageroptions'];
-        } else {
-            $filemanageroptions = null;
+        if (is_array($this->_customdata)) {
+            if (array_key_exists('editoroptions', $this->_customdata)) {
+                $editoroptions = $this->_customdata['editoroptions'];
+            }
+            if (array_key_exists('filemanageroptions', $this->_customdata)) {
+                $filemanageroptions = $this->_customdata['filemanageroptions'];
+            }
+            if (array_key_exists('userid', $this->_customdata)) {
+                $userid = $this->_customdata['userid'];
+            }
         }
 
         //Accessibility: "Required" is bad legend text.
@@ -66,7 +70,7 @@ class user_editadvanced_form extends moodleform {
         useredit_shared_definition($mform, $editoroptions, $filemanageroptions);
 
         /// Next the customisable profile fields
-        profile_definition($mform);
+        profile_definition($mform, $userid);
 
         $this->add_action_buttons(false, get_string('updatemyprofile'));
     }
index 54649d7..fd30d58 100644 (file)
@@ -169,7 +169,8 @@ class profile_field_base {
      * @param   object   instance of the moodleform class
      */
     function edit_field_set_required($mform) {
-        if ($this->is_required() and !has_capability('moodle/user:update', get_context_instance(CONTEXT_SYSTEM))) {
+        global $USER;
+        if ($this->is_required() && ($this->userid == $USER->id)) {
             $mform->addRule($this->inputname, get_string('required'), 'required', null, 'client');
         }
     }
@@ -352,8 +353,9 @@ function profile_load_data($user) {
 /**
  * Print out the customisable categories and fields for a users profile
  * @param  object   instance of the moodleform class
+ * @param int $userid id of user whose profile is being edited.
  */
-function profile_definition($mform) {
+function profile_definition($mform, $userid = 0) {
     global $CFG, $DB;
 
     // if user is "admin" fields are displayed regardless
@@ -377,7 +379,7 @@ function profile_definition($mform) {
                     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 = new $newfield($field->id, $userid);
                         $formfield->edit_field($mform);
                     }
                 }