@@ -217,8 +217,8 @@ public static function create_users($users) {
217217 profile_save_data ((object ) $ user );
218218 }
219219
220+ $ userobject = (object )$ user ;
220221 if ($ createpassword ) {
221- $ userobject = (object )$ user ;
222222 setnew_password_and_mail ($ userobject );
223223 unset_user_preference ('create_password ' , $ userobject );
224224 set_user_preference ('auth_forcepasswordchange ' , 1 , $ userobject );
@@ -230,7 +230,7 @@ public static function create_users($users) {
230230 // Preferences.
231231 if (!empty ($ user ['preferences ' ])) {
232232 foreach ($ user ['preferences ' ] as $ preference ) {
233- set_user_preference ($ preference ['type ' ], $ preference ['value ' ], $ user [ ' id ' ] );
233+ self :: set_user_preference ($ preference ['type ' ], $ preference ['value ' ], $ userobject );
234234 }
235235 }
236236
@@ -459,7 +459,7 @@ public static function update_users($users) {
459459 // Preferences.
460460 if (!empty ($ user ['preferences ' ])) {
461461 foreach ($ user ['preferences ' ] as $ preference ) {
462- set_user_preference ($ preference ['type ' ], $ preference ['value ' ], $ user [ ' id ' ] );
462+ self :: set_user_preference ($ preference ['type ' ], $ preference ['value ' ], $ existinguser );
463463 }
464464 }
465465 }
@@ -1453,6 +1453,35 @@ public static function view_user_profile_returns() {
14531453 );
14541454 }
14551455
1456+ /**
1457+ * Validates preference value and updates the user preference
1458+ *
1459+ * @param string $name
1460+ * @param string $value
1461+ * @param stdClass $user
1462+ */
1463+ protected static function set_user_preference ($ name , $ value , $ user ) {
1464+ $ preferences = array (
1465+ 'auth_forcepasswordchange ' => PARAM_BOOL ,
1466+ 'htmleditor ' => PARAM_COMPONENT ,
1467+ 'usemodchooser ' => PARAM_BOOL ,
1468+ 'badgeprivacysetting ' => PARAM_BOOL ,
1469+ 'blogpagesize ' => PARAM_INT ,
1470+ 'forum_markasreadonnotification ' => PARAM_INT ,
1471+ 'calendar_timeformat ' => PARAM_NOTAGS ,
1472+ 'calendar_startwday ' => PARAM_INT ,
1473+ 'calendar_maxevents ' => PARAM_INT ,
1474+ 'calendar_lookahead ' => PARAM_INT ,
1475+ 'calendar_persistflt ' => PARAM_INT
1476+ );
1477+ if (isset ($ preferences [$ name ])) {
1478+ $ value = clean_param ($ value , $ preferences [$ name ]);
1479+ if ($ preferences [$ name ] == PARAM_BOOL ) {
1480+ $ value = (int )$ value ;
1481+ }
1482+ set_user_preference ($ name , $ value , $ user );
1483+ }
1484+ }
14561485}
14571486
14581487 /**
0 commit comments