ldap_user.install in Lightweight Directory Access Protocol (LDAP) 8.2
Same filename and directory in other branches
Install, update and uninstall functions for the LDAP User module.
File
ldap_user/ldap_user.installView source
<?php
/**
* @file
* Install, update and uninstall functions for the LDAP User module.
*/
/**
* Implements hook_requirements().
*/
function ldap_user_requirements($phase) {
$requirements = array();
if ($phase == 'runtime') {
// check for all $user->* fields created
$missing_fields = ldap_user_update_check_user_fields(TRUE);
if (count($missing_fields)) {
$requirements['ldap_user']['title'] = t('User Fields for LDAP User Module Missing');
$requirements['ldap_user']['severity'] = REQUIREMENT_ERROR;
$requirements['ldap_user']['value'] = NULL;
$requirements['ldap_user']['description'] = t('Fields are added to the
Drupal User entity for LDAP User module functionality. These fields should
have been created in LDAP User update 7203. The following userfields are missing:') . theme('item_list', array(
'items' => $missing_fields,
'type' => 'ul',
'title' => NULL,
)) . t('Rerun update 7203 to correct this; it will not write over destroy existing fields.');
}
}
// check that ldapauth not installed.
return $requirements;
}
/**
* Implements hook_install().
*/
function ldap_user_install() {
foreach (ldap_user_user_entity_fields() as $field_id => $field_conf) {
$field_info = field_info_field($field_id);
if (!$field_info) {
field_create_field($field_conf['field']);
field_create_instance($field_conf['instance']);
}
}
// make ldap user weight slightly less than other ldap modules so it can load
// user's associated ldap data first and save on ldap queries.
db_query("UPDATE {system} SET weight = -1 WHERE name = 'ldap_user'");
_ldap_user_install_update_authmap();
}
function _ldap_user_install_update_authmap() {
db_update('authmap')
->fields(array(
'module' => 'ldap_user',
))
->condition('module', 'ldap_authentication')
->execute();
}
/**
* Implements hook_uninstall().
*/
function ldap_user_uninstall() {
foreach (ldap_user_user_entity_fields() as $field_id => $field_conf) {
$instance = field_info_instance($field_conf['instance']['entity_type'], $field_conf['instance']['field_name'], $field_conf['instance']['bundle']);
if ($instance) {
field_delete_instance($instance);
}
$field_info = field_info_field($field_conf['field']['field_name']);
if ($field_info) {
field_delete_field($field_conf['field']['field_name']);
}
}
variable_del('ldap_user_conf');
variable_del('ldap_user_cron_last_orphan_checked');
variable_del('ldap_user_cron_last_uid_checked');
}
/**
* Implements hook_schema().
*/
function ldap_user_schema() {
}
// see http://api.drupal.org/api/drupal/modules%21field%21field.module/group/field/7
function ldap_user_user_entity_fields() {
$fields = array();
$field_name = 'ldap_user_puid_sid';
$fields[$field_name]['field'] = array(
'field_name' => $field_name,
'type' => 'text',
'entity_types' => array(
'user',
),
'cardinality' => 1,
'translatable' => 0,
'locked' => 1,
'module' => 'text',
'no_ui' => 1,
'settings' => array(),
);
$fields[$field_name]['instance'] = array(
'field_name' => $field_name,
'entity_type' => 'user',
'bundle' => 'user',
'label' => 'LDAP Server ID that puid was derived from. NULL if puid is independent of server configuration instance.',
'description' => 'This field should not be edited.',
'required' => 0,
'default_value_function' => 'ldap_user_provisioned_sid_default',
'settings' => array(
'text_processing' => 0,
),
'widget' => array(
'type' => 'ldap_user_hidden',
'settings' => array(),
'module' => 'ldap_user',
),
'display' => array(
'default' => array(
'label' => 'hidden',
'type' => 'hidden',
),
'full' => array(
'label' => 'hidden',
'type' => 'hidden',
),
'teaser' => array(
'label' => 'hidden',
'type' => 'hidden',
),
),
);
$field_name = 'ldap_user_puid';
$fields[$field_name]['field'] = array(
'field_name' => $field_name,
'type' => 'text',
'entity_types' => array(
'user',
),
'cardinality' => 1,
'translatable' => 0,
'locked' => 1,
'module' => 'text',
'no_ui' => 1,
'settings' => array(),
);
$fields[$field_name]['instance'] = array(
'field_name' => $field_name,
'entity_type' => 'user',
'bundle' => 'user',
'label' => 'Value of user\'s permanent unique id. This should never change for a given ldap identified user.',
'description' => 'This field should not be edited.',
'required' => 0,
'default_value_function' => 'ldap_user_puid_default',
'settings' => array(
'text_processing' => 0,
),
'widget' => array(
'type' => 'ldap_user_hidden',
'settings' => array(),
'module' => 'ldap_user',
),
'display' => array(
'default' => array(
'label' => 'hidden',
'type' => 'hidden',
),
'full' => array(
'label' => 'hidden',
'type' => 'hidden',
),
'teaser' => array(
'label' => 'hidden',
'type' => 'hidden',
),
),
);
$field_name = 'ldap_user_puid_property';
$fields[$field_name]['field'] = array(
'field_name' => $field_name,
'type' => 'text',
'entity_types' => array(
'user',
),
'cardinality' => 1,
'translatable' => 0,
'locked' => 1,
'module' => 'text',
'no_ui' => 1,
'settings' => array(),
);
$fields[$field_name]['instance'] = array(
'field_name' => $field_name,
'entity_type' => 'user',
'bundle' => 'user',
'label' => 'Property specified as user\'s puid.',
'description' => 'This field should not be edited.',
'required' => 0,
'default_value_function' => 'ldap_user_puid_property_default',
'settings' => array(
'text_processing' => 0,
),
'widget' => array(
'type' => 'ldap_user_hidden',
'settings' => array(),
'module' => 'ldap_user',
),
'display' => array(
'default' => array(
'label' => 'hidden',
'type' => 'hidden',
),
'full' => array(
'label' => 'hidden',
'type' => 'hidden',
),
'teaser' => array(
'label' => 'hidden',
'type' => 'hidden',
),
),
);
$field_name = 'ldap_user_current_dn';
$fields[$field_name]['field'] = array(
'field_name' => $field_name,
'type' => 'text',
'entity_types' => array(
'user',
),
'cardinality' => 1,
'translatable' => 0,
'locked' => 1,
'module' => 'text',
'no_ui' => 1,
'settings' => array(),
);
$fields[$field_name]['instance'] = array(
'field_name' => $field_name,
'entity_type' => 'user',
'bundle' => 'user',
'label' => 'User LDAP DN',
'description' => 'May change when user\'s DN changes. This field should not be edited.',
'required' => 0,
'default_value_function' => 'ldap_user_dn_default',
'settings' => array(
'text_processing' => 0,
),
'widget' => array(
'type' => 'ldap_user_hidden',
'settings' => array(),
'module' => 'ldap_user',
),
'display' => array(
'default' => array(
'label' => 'hidden',
'type' => 'hidden',
),
'full' => array(
'label' => 'hidden',
'type' => 'hidden',
),
'teaser' => array(
'label' => 'hidden',
'type' => 'hidden',
),
),
);
$field_name = 'ldap_user_prov_entries';
$fields[$field_name]['field'] = array(
'field_name' => $field_name,
'type' => 'text',
'entity_types' => array(
'user',
),
'cardinality' => FIELD_CARDINALITY_UNLIMITED,
'translatable' => 0,
'locked' => 1,
'module' => 'text',
'no_ui' => 1,
'settings' => array(),
);
$fields[$field_name]['instance'] = array(
'field_name' => $field_name,
'entity_type' => 'user',
'bundle' => 'user',
'label' => 'LDAP Entries that have been provisioned from this Drupal user.',
'description' => 'This field should not be edited.',
'required' => 0,
'default_value' => NULL,
'settings' => array(
'text_processing' => 0,
),
'widget' => array(
'type' => 'ldap_user_hidden',
'settings' => array(),
'module' => 'ldap_user',
),
'display' => array(
'default' => array(
'label' => 'hidden',
'type' => 'hidden',
),
'full' => array(
'label' => 'hidden',
'type' => 'hidden',
),
'teaser' => array(
'label' => 'hidden',
'type' => 'hidden',
),
),
);
$field_name = 'ldap_user_last_checked';
$fields[$field_name]['field'] = array(
'field_name' => $field_name,
'type' => 'number_integer',
'entity_types' => array(
'user',
),
'cardinality' => 1,
'translatable' => 0,
'locked' => 1,
'module' => 'number',
'no_ui' => 1,
'settings' => array(),
);
$fields[$field_name]['instance'] = array(
'field_name' => $field_name,
'entity_type' => 'user',
'bundle' => 'user',
'label' => 'Unix timestamp of when Drupal user was compard to ldap entry. This could be for purposes of synching, deleteing drupal account, etc.',
'description' => 'This field should not be edited.',
'required' => 0,
'default_value' => NULL,
'settings' => array(),
'widget' => array(
'type' => 'ldap_user_hidden',
'settings' => array(),
'module' => 'ldap_user',
),
'display' => array(
'default' => array(
'label' => 'hidden',
'type' => 'hidden',
),
'full' => array(
'label' => 'hidden',
'type' => 'hidden',
),
'teaser' => array(
'label' => 'hidden',
'type' => 'hidden',
),
),
);
$field_name = 'ldap_user_ldap_exclude';
$fields[$field_name]['field'] = array(
'field_name' => $field_name,
'type' => 'number_integer',
'entity_types' => array(
'user',
),
'cardinality' => 1,
'translatable' => 0,
'locked' => 1,
'module' => 'number',
'no_ui' => 1,
'settings' => array(),
);
$fields[$field_name]['instance'] = array(
'field_name' => $field_name,
'entity_type' => 'user',
'bundle' => 'user',
'label' => 'Whether to exclude the user from LDAP functionality',
'description' => 'This field should not be edited.',
'required' => 0,
'default_value' => 0,
'settings' => array(),
'widget' => array(
'type' => 'ldap_user_hidden',
'settings' => array(),
'module' => 'ldap_user',
),
'display' => array(
'default' => array(
'label' => 'hidden',
'type' => 'hidden',
),
'full' => array(
'label' => 'hidden',
'type' => 'hidden',
),
'teaser' => array(
'label' => 'hidden',
'type' => 'hidden',
),
),
);
return $fields;
}
/**
* update authmap table, changing ldap_authentication to ldap_user, disable ldap_profile
*/
function ldap_user_update_7201() {
if (module_exists('ldap_profile')) {
module_disable(array(
'ldap_profile',
TRUE,
));
}
_ldap_user_install_update_authmap();
}
/**
* attach ldap_user_last_checked field to user entity to track reconciliation of ldap and drupal accounts
*/
function ldap_user_update_7202() {
return t('ldap_user_last_checked field added to user entity.');
}
/**
* make sure all user entity fields are created
*/
function ldap_user_update_7203() {
if (module_exists('ldap_groups')) {
module_disable(array(
'ldap_groups',
TRUE,
));
}
$fields_added = ldap_user_update_check_user_fields();
if (count($fields_added)) {
$fields = join(', ', $fields_added);
return t('%fields added to user entity.', array(
'%fields' => $fields,
));
}
else {
return t('no fields needed to be added to user entity.');
}
}
/**
* make sure all user entity field instances are created
*/
function ldap_user_update_7204() {
$fields_added = ldap_user_update_check_user_fields();
if (count($fields_added)) {
$fields = join(', ', $fields_added);
return t('%fields added to user entity.', array(
'%fields' => $fields,
));
}
else {
return t('no fields needed to be added to user entity.');
}
}
/**
* make sure all user entity field instances are created
*/
function ldap_user_update_7205() {
return ldap_user_update_7204();
}
function ldap_user_update_check_user_fields($query = FALSE) {
if (!$query) {
module_enable(array(
'number',
));
}
$fields_added = array();
foreach (ldap_user_user_entity_fields() as $field_id => $field_conf) {
$field_info = field_info_field($field_id);
if (!$field_info) {
$fields_added[] = $field_id;
if (!$query) {
field_create_field($field_conf['field']);
}
}
$field_instance_info = field_info_instance('user', $field_id, 'user');
if (!$field_instance_info) {
$fields_added[] = $field_id . " instance";
if (!$query) {
field_create_instance($field_conf['instance']);
}
}
}
return $fields_added;
}
/**
* Converts default_file_main variable to config.
*
* @ingroup config_upgrade
*/
function ldap_user_update_8000() {
update_variables_to_config('ldap_user.settings', array(
'ldap_user_cron_last_uid_checked' => 'cron_last_uid_checked',
));
}
Functions
Name | Description |
---|---|
ldap_user_install | Implements hook_install(). |
ldap_user_requirements | Implements hook_requirements(). |
ldap_user_schema | Implements hook_schema(). |
ldap_user_uninstall | Implements hook_uninstall(). |
ldap_user_update_7201 | update authmap table, changing ldap_authentication to ldap_user, disable ldap_profile |
ldap_user_update_7202 | attach ldap_user_last_checked field to user entity to track reconciliation of ldap and drupal accounts |
ldap_user_update_7203 | make sure all user entity fields are created |
ldap_user_update_7204 | make sure all user entity field instances are created |
ldap_user_update_7205 | make sure all user entity field instances are created |
ldap_user_update_8000 | Converts default_file_main variable to config. |
ldap_user_update_check_user_fields | |
ldap_user_user_entity_fields | |
_ldap_user_install_update_authmap |