function cas_attributes_admin_settings in CAS Attributes 7
Same name and namespace in other branches
- 6.3 cas_attributes.admin.inc \cas_attributes_admin_settings()
Administrative settings form.
1 string reference to 'cas_attributes_admin_settings'
- cas_attributes_menu in ./
cas_attributes.module - Implements hook_menu().
File
- ./
cas_attributes.admin.inc, line 11 - Provides settings pages for the CAS Attributes module.
Code
function cas_attributes_admin_settings() {
$form['cas_attributes_sync_every_login'] = array(
'#type' => 'radios',
'#title' => t('Fetch CAS Attributes'),
'#default_value' => variable_get('cas_attributes_sync_every_login', NULL),
'#options' => array(
0 => 'only when a CAS account is created (i.e., the first login of a CAS user).',
1 => 'every time a CAS user logs in.',
),
'#weight' => -10,
);
$form['cas_attributes_overwrite'] = array(
'#type' => 'radios',
'#title' => t('Overwrite existing values'),
'#default_value' => variable_get('cas_attributes_overwrite', TRUE),
'#options' => array(
0 => 'only store data from attributes for fields that are empty (don\'t overwrite user fields that already have data).',
1 => 'always store data from attributes (overwrite user fields that already have data).',
),
'#weight' => -9,
);
$relations = variable_get('cas_attributes_relations', array());
$form['cas_attributes_relations'] = array(
'#tree' => TRUE,
'#type' => 'fieldset',
'#title' => t('CAS attribute mappings'),
);
$form['cas_attributes_relations']['help'] = array(
'#markup' => t('Token replacement strings used to populate each <a href="@url">user field</a>? Only text fields are eligible to be populated. Entries left blank will be ignored.', array(
'@url' => url('admin/config/people/accounts/fields'),
)),
);
// Provide fields for username and e-mail address.
$form['cas_attributes_relations']['name'] = array(
'#type' => 'textfield',
'#title' => t('Username'),
'#default_value' => isset($relations['name']) ? $relations['name'] : '',
'#size' => 50,
'#description' => t('The account username.'),
);
$form['cas_attributes_relations']['mail'] = array(
'#type' => 'textfield',
'#title' => t('E-mail address'),
'#default_value' => isset($relations['mail']) ? $relations['mail'] : '',
'#size' => 50,
'#description' => t('The account e-mail address.'),
);
// Provide fields for fields attached to the user bundle.
foreach (field_info_instances('user', 'user') as $name => $instance) {
$field = field_info_field($instance['field_name']);
if ($field['type'] == 'text') {
$form['cas_attributes_relations'][$name] = array(
'#type' => 'textfield',
'#title' => t($instance['label']),
'#default_value' => isset($relations[$name]) ? $relations[$name] : '',
'#size' => 50,
'#description' => t('The account field with name %field_name.', array(
'%field_name' => $instance['field_name'],
)),
);
}
}
// Role Management
$form['cas_attributes_roles'] = array(
'#type' => 'fieldset',
'#title' => t('Role Mapping'),
'#access' => user_access('administer permissions'),
'#description' => t('You may choose to manage assignment of one or more of the roles on this Drupal site based on the values of certain CAS attributes. ' . 'Only the roles you select to manage will be affected. Managed roles will be assigned or revoked whenever a user logs in thru CAS (regardless of how you set the ' . '"Overwrite existing values" setting above).<br>' . 'For each managed role: if the role name is present in at least one of the attributes you specify, ' . 'the role will be granted to the user. If the role name is not present in any of the attributes, it will be removed from the user.<br>' . 'Roles must be specified by name (not by numeric ID, since that is site specific).<br>'),
);
if (module_exists('cas_ldap')) {
$links = array(
'@cas_attr' => url('admin/config/people/cas/attributes/cas'),
'@ldap_attr' => url('admin/config/people/cas/attributes/ldap'),
);
$form['cas_attributes_roles']['cas_attributes_roles_cas_or_ldap'] = array(
'#type' => 'radios',
'#title' => t('CAS or LDAP attributes?'),
'#description' => t('Specify if you are matching roles based on ' . '<a href="@cas_attr">CAS attributes</a> or <a href="@ldap_attr">LDAP attributes</a>. ' . 'Both cannot be supported at once due to namespace collisions with the attribute names.', $links),
'#options' => array(
'cas' => t('CAS'),
'ldap' => t('LDAP'),
),
'#default_value' => variable_get('cas_attributes_roles_cas_or_ldap', 'cas'),
);
}
$roles = user_roles(TRUE);
unset($roles[DRUPAL_AUTHENTICATED_RID]);
asort($roles);
$form['cas_attributes_roles']['cas_attributes_roles_manage'] = array(
'#type' => 'checkboxes',
'#title' => t('Roles to manage'),
'#description' => t('Which roles should be managed by these attributes.'),
'#default_value' => variable_get('cas_attributes_roles_manage', array()),
'#options' => $roles,
);
$form['cas_attributes_roles']['cas_attributes_roles_mapping'] = array(
'#type' => 'textarea',
'#title' => t('Attributes'),
'#description' => t('List the names of the CAS attributes which may ' . 'contain names of the managed roles. List one attribute per line - ' . 'for example, <strong>department</strong> or <strong>affiliations' . '</strong>. Do not use token syntax, as it will not be processed. ' . 'If the name of a managed role is present in at least one of these ' . 'attributes, that role will be given to the user; otherwise, it will ' . 'be taken away.'),
'#default_value' => variable_get('cas_attributes_roles_mapping', ''),
);
$form['token_tree'] = array(
'#theme' => 'token_tree',
'#token_types' => array(
'cas',
),
'#global_types' => FALSE,
);
return system_settings_form($form);
}