diff --git a/modules/user.module b/modules/user.module index ff0961cd51eb9ad51084b86b3ef8f9c4f5f4db35..76513f325de7ebce232573cca5a5fed58b154d58 100644 --- a/modules/user.module +++ b/modules/user.module @@ -205,10 +205,12 @@ function user_save($account, $array = array(), $category = 'account') { db_query("UPDATE {users} SET data = '%s' WHERE uid = %d", serialize($data), $user->uid); // Save user roles (delete just to be safe). - db_query('DELETE FROM {users_roles} WHERE uid = %d', $array['uid']); - foreach (array_keys($array['roles']) as $rid) { - if (!in_array($rid, array(DRUPAL_ANONYMOUS_RID, DRUPAL_AUTHENTICATED_RID))) { - db_query('INSERT INTO {users_roles} (uid, rid) VALUES (%d, %d)', $array['uid'], $rid); + if (is_array($array['roles'])) { + db_query('DELETE FROM {users_roles} WHERE uid = %d', $array['uid']); + foreach (array_keys($array['roles']) as $rid) { + if (!in_array($rid, array(DRUPAL_ANONYMOUS_RID, DRUPAL_AUTHENTICATED_RID))) { + db_query('INSERT INTO {users_roles} (uid, rid) VALUES (%d, %d)', $array['uid'], $rid); + } } } @@ -1236,9 +1238,11 @@ function user_register_submit($form_id, $form_values) { $mail = $form_values['mail']; $name = $form_values['name']; $pass = $admin ? $form_values['pass'] : user_password(); - $roles = array_filter($form_values['roles']); // Remove unset roles $notify = $form_values['notify']; $from = variable_get('site_mail', ini_get('sendmail_from')); + if (isset($form_values['roles'])) { + $roles = array_filter($form_values['roles']); // Remove unset roles + } if (!$admin && array_intersect(array_keys($form_values), array('uid', 'roles', 'init', 'session', 'status'))) { watchdog('security', t('Detected malicious attempt to alter protected user fields.'), WATCHDOG_WARNING); diff --git a/modules/user/user.module b/modules/user/user.module index ff0961cd51eb9ad51084b86b3ef8f9c4f5f4db35..76513f325de7ebce232573cca5a5fed58b154d58 100644 --- a/modules/user/user.module +++ b/modules/user/user.module @@ -205,10 +205,12 @@ function user_save($account, $array = array(), $category = 'account') { db_query("UPDATE {users} SET data = '%s' WHERE uid = %d", serialize($data), $user->uid); // Save user roles (delete just to be safe). - db_query('DELETE FROM {users_roles} WHERE uid = %d', $array['uid']); - foreach (array_keys($array['roles']) as $rid) { - if (!in_array($rid, array(DRUPAL_ANONYMOUS_RID, DRUPAL_AUTHENTICATED_RID))) { - db_query('INSERT INTO {users_roles} (uid, rid) VALUES (%d, %d)', $array['uid'], $rid); + if (is_array($array['roles'])) { + db_query('DELETE FROM {users_roles} WHERE uid = %d', $array['uid']); + foreach (array_keys($array['roles']) as $rid) { + if (!in_array($rid, array(DRUPAL_ANONYMOUS_RID, DRUPAL_AUTHENTICATED_RID))) { + db_query('INSERT INTO {users_roles} (uid, rid) VALUES (%d, %d)', $array['uid'], $rid); + } } } @@ -1236,9 +1238,11 @@ function user_register_submit($form_id, $form_values) { $mail = $form_values['mail']; $name = $form_values['name']; $pass = $admin ? $form_values['pass'] : user_password(); - $roles = array_filter($form_values['roles']); // Remove unset roles $notify = $form_values['notify']; $from = variable_get('site_mail', ini_get('sendmail_from')); + if (isset($form_values['roles'])) { + $roles = array_filter($form_values['roles']); // Remove unset roles + } if (!$admin && array_intersect(array_keys($form_values), array('uid', 'roles', 'init', 'session', 'status'))) { watchdog('security', t('Detected malicious attempt to alter protected user fields.'), WATCHDOG_WARNING);