From b650fe6a8ea9481e729ae84151497f2a11949784 Mon Sep 17 00:00:00 2001 From: Rajesh Taneja Date: Fri, 13 Sep 2013 15:00:07 +0800 Subject: [PATCH] MDL-41744 Users: Convert key to value in bulk upload Menu profile field expects value, during bulk upload if value is passed by form then options key is passed. So converting key to value if passed though form --- admin/tool/uploaduser/index.php | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/admin/tool/uploaduser/index.php b/admin/tool/uploaduser/index.php index 509374cf6a3..405061bc52d 100644 --- a/admin/tool/uploaduser/index.php +++ b/admin/tool/uploaduser/index.php @@ -100,12 +100,16 @@ $STD_FIELDS = array('id', 'firstname', 'lastname', 'username', 'email', $PRF_FIELDS = array(); -if ($prof_fields = $DB->get_records('user_info_field')) { - foreach ($prof_fields as $prof_field) { - $PRF_FIELDS[] = 'profile_field_'.$prof_field->shortname; +if ($proffields = $DB->get_records('user_info_field')) { + foreach ($proffields as $key => $proffield) { + $profilefieldname = 'profile_field_'.$proffield->shortname; + $PRF_FIELDS[] = $profilefieldname; + // Re-index $proffields with key as shortname. This will be + // used while checking if profile data is key and needs to be converted (eg. menu profile field) + $proffields[$profilefieldname] = $proffield; + unset($proffields[$key]); } } -unset($prof_fields); if (empty($iid)) { $mform1 = new admin_uploaduser_form1(); @@ -372,6 +376,16 @@ if ($formdata = $mform2->is_cancelled()) { if (isset($formdata->$field)) { // process templates $user->$field = uu_process_template($formdata->$field, $user); + + // Form contains key and later code expects value. + // Convert key to value for required profile fields. + require_once($CFG->dirroot.'/user/profile/field/'.$proffields[$field]->datatype.'/field.class.php'); + $profilefieldclass = 'profile_field_'.$proffields[$field]->datatype; + $profilefield = new $profilefieldclass($proffields[$field]->id); + if (method_exists($profilefield, 'convert_external_data')) { + $user->$field = $profilefield->edit_save_data_preprocess($user->$field, null); + } + $formdefaults[$field] = true; } } -- 2.43.0