diff --git a/single_user_role.module b/single_user_role.module index a00617e..0ed11d0 100755 --- a/single_user_role.module +++ b/single_user_role.module @@ -13,13 +13,18 @@ */ function single_user_role_form_alter(&$form, &$form_state, $form_id) { if ($form_id == 'user_register_form' || $form_id == 'user_profile_form') { - // Set user role field name. - $role_field_name = 'roles'; - if (module_exists('role_delegation')) { - if (!user_access('administer permissions')) { - $role_field_name = 'roles_change'; - } + // The name of the role field may be different depending on if + // role_delegation has done its thing. + if (isset($form['account']['roles_change'])) { + $role_field_name = 'roles_change'; + } + elseif (isset($form['account']['roles'])) { + $role_field_name = 'roles'; } + else { + return; + } + // Change role field type from checkbox to select or radio field. $form['account'][$role_field_name]['#type'] = variable_get('single_user_role_field_type', 'select'); $form['account'][$role_field_name]['#multiple'] = FALSE; @@ -30,11 +35,13 @@ function single_user_role_form_alter(&$form, &$form_state, $form_id) { // Remove authenticated user checkbox. $form['account'][$role_field_name][2]['#access'] = FALSE; // Set default role. - foreach($form['account'][$role_field_name]['#default_value'] as $key => $value){ - if($value != 2){ - // Set first assigned role as default. - $form['account'][$role_field_name]['#default_value'] = $value; - break; + if (isset($form['account'][$role_field_name]['#default_value']) && is_array($form['account'][$role_field_name]['#default_value'])) { + foreach($form['account'][$role_field_name]['#default_value'] as $key => $value){ + if($value != 2){ + // Set first assigned role as default. + $form['account'][$role_field_name]['#default_value'] = $value; + break; + } } } $form['account'][$role_field_name][2]['#access'] = FALSE;