From fc3aa0fbafac3f0849316460ce40ce04afcfe84b Mon Sep 17 00:00:00 2001 From: Rajesh Taneja Date: Tue, 15 May 2012 21:53:09 +0400 Subject: [PATCH] MDL-32787 user: rule required for custom profile fields applies to all users editing own profile --- user/edit.php | 3 ++- user/edit_form.php | 27 ++++++++++++++++----------- user/editadvanced.php | 3 ++- user/editadvanced_form.php | 24 ++++++++++++++---------- user/profile/lib.php | 8 +++++--- 5 files changed, 39 insertions(+), 26 deletions(-) diff --git a/user/edit.php b/user/edit.php index ca52ed3074602..76448616682fe 100644 --- a/user/edit.php +++ b/user/edit.php @@ -165,7 +165,8 @@ //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); diff --git a/user/edit_form.php b/user/edit_form.php index e53672fe7fa3c..b077a0c2143f3 100644 --- a/user/edit_form.php +++ b/user/edit_form.php @@ -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 @@ function definition () { } /// Next the customisable profile fields - profile_definition($mform); + profile_definition($mform, $userid); $this->add_action_buttons(false, get_string('updatemyprofile')); } diff --git a/user/editadvanced.php b/user/editadvanced.php index 5226c0a54e907..cdf03bd86e7bf 100644 --- a/user/editadvanced.php +++ b/user/editadvanced.php @@ -146,7 +146,8 @@ //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()) { diff --git a/user/editadvanced_form.php b/user/editadvanced_form.php index 7092f021a871a..dbe6d829cab7a 100644 --- a/user/editadvanced_form.php +++ b/user/editadvanced_form.php @@ -13,16 +13,20 @@ function definition() { 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 @@ function definition() { 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')); } diff --git a/user/profile/lib.php b/user/profile/lib.php index 54649d7029b90..fd30d581180c2 100644 --- a/user/profile/lib.php +++ b/user/profile/lib.php @@ -169,7 +169,8 @@ function edit_field_set_default($mform) { * @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); } }