Browse files

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
  • Loading branch information...
1 parent c7c613b commit 623b678c3e5f1438eee52b58cdbb08bca7414d0c @rajeshtaneja rajeshtaneja committed Sep 13, 2013
Showing with 18 additions and 4 deletions.
  1. +18 −4 admin/tool/uploaduser/index.php
View
22 admin/tool/uploaduser/index.php
@@ -98,12 +98,16 @@
$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();
@@ -331,6 +335,16 @@
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;
}
}

0 comments on commit 623b678

Please sign in to comment.