Details
-
Type:
Bug
-
Status:
Open
-
Priority:
Major
-
Resolution: Unresolved
-
Affects Version/s: 1.9.2
-
Fix Version/s: None
-
Component/s: Administration
-
Affected Branches:MOODLE_19_STABLE
Description
When uploading users from a csv file a menu-type custom user profile does not get the values inserted.
For example I have a user profile field with a shortname of studionumber that is a menu type field. The options are:
1234
2341
3421
In the csv I have:
firstname, lastname, username, email, profile_field_studionumber
testfirst, testlast, testuser, testuser@localhost.com, 2341
When I upload the user, the user gets added, but the custom menu field does not take the supplied value.
I get this error:
Column 'data' cannot be null
INSERT INTO mdl_user_info_data ( USERID, FIELDID, DATA ) VALUES ( 23, 3, null )
- line 1554 of lib\dmllib.php: call to debugging()
- line 102 of user\profile\lib.php: call to insert_record()
- line 355 of user\profile\lib.php: call to profile_field_base->edit_save_data()
- line 548 of admin\uploaduser.php: call to profile_save_data()
The problem is this:
profile_field_base->edit_save_data() calls profile_field_menu->edit_save_data_preprocess(). This function expects the key of the options array (which is what it is when it is called from editadvanced.php and other forms). However, since the csv file likely (and sensibly) contains a value and not a key edit_save_data_preprocess gets the value as a parameter instead of the key and returns NULL as a result.
I tried a quick hack as a solution and have attached the svn diff of the potential fix (it works, but may not be the most elegant solution).
Hope this helps.
Attachments
Issue Links
| This issue has a non-specific relationship to: | ||||
| MDL-10908 | Have additional proflie fields allowed to be data mapped with auth plugins |
|
|
|
Hmm, I think we should better convert the strings to key in uploadusers code before sending to other parts of moodle instead of making the code in /user/* more complex