function _instance_settings_init_params in Instance settings 7.2
Initialize Instance settings.
1 call to _instance_settings_init_params()
- include.settings.inc in includes/
include.settings.inc
File
- includes/
include.settings.inc, line 42
Code
function _instance_settings_init_params() {
global $conf, $databases;
if (!isset($conf['instance_settings']['env_get_method'])) {
$conf['instance_settings']['env_get_method'] = 'env_file';
}
$default_values = array();
$default_values['included_files'] = array();
$default_values['file_extensions'] = array(
'.settings.inc',
);
$default_values['site_dir_full'] = DRUPAL_ROOT . '/' . conf_path();
$default_values['site_dir'] = current(array_slice(explode('/', conf_path()), -1));
$default_values['environment'] = _instance_settings_get_environment($default_values['site_dir_full'], $conf['instance_settings']['env_get_method']);
// TODO: Allow override here.
$default_values['settings_dirs'] = array(
DRUPAL_ROOT . '/' . INSTANCE_SETTINGS_CONTRIB_PATH . '/instance_settings/settings',
DRUPAL_ROOT . '/sites/all/settings',
DRUPAL_ROOT . '/sites/default/settings',
);
// Name of the site's dir should be in format:
// {PROJECT}{SEPARATOR}{SUBPROJECT}{SEPARATOR}{INSTANCE} to pick up these settings
// automatically, where {SEPARATOR} could be "." or "_".
// {SUBPROJECT} is optional.
$default_values['project_name_full'] = $default_values['site_dir'];
$project_name = isset($conf['instance_settings']['project_name_full']) ? $conf['instance_settings']['project_name_full'] : $default_values['site_dir'];
$dir_name_parts = preg_split("/[-_,\\. ]/", $project_name);
$default_values['project_names'] = array();
foreach ($dir_name_parts as $name_part) {
foreach ($default_values['project_names'] as $pname) {
$default_values['project_names'][] = $pname . '.' . $name_part;
}
$default_values['project_names'][] = $name_part;
}
$default_values['instance'] = array_pop($dir_name_parts);
$default_values['project'] = $dir_name_parts ? implode('.', $dir_name_parts) : $default_values['instance'];
$default_values['projects'] = array();
$default_values['projects_path_variants'] = array(
'code',
'projects',
);
// TODO: Remove patterns if no tokens present.
$default_values['pattern_types'] = array(
// Default patterns to find settings files based on params defined.
'default' => array(
'all',
'!environment_group',
'!environment',
'!instance',
'!instance/!environment_group',
'!instance/!environment',
'!instance.!environment_group',
'!instance.!environment',
'!environment_group.!instance',
'!environment.!instance',
'!environment_group/!instance',
'!environment/!instance',
'subsite.!subsite',
),
'final' => array(
'final.all',
'final.!environment',
'final.subsite.!subsite',
),
);
if (isset($conf['instance_settings'])) {
$conf['instance_settings'] = _instance_settings_include_array_merge_deep_no_duplicate_values(array(
$default_values,
$conf['instance_settings'],
));
}
else {
$conf['instance_settings'] = $default_values;
}
// Set drubone specific config.
if (function_exists('_drubone_infrastructure_config')) {
$conf['infrastructure'] = _drubone_infrastructure_config($conf['instance_settings']['environment'], $conf['instance_settings']['project'], $conf['instance_settings']['instance']);
$conf['instance_settings']['projects'] = _instance_settings_include_array_merge_deep_no_duplicate_values(array(
$conf['infrastructure']['projects'],
$conf['instance_settings']['projects'],
));
if (isset($conf['infrastructure']['project']['databases'])) {
$databases = $conf['infrastructure']['project']['databases'];
}
if (isset($conf['infrastructure']['params']['conf']) && is_array($conf['infrastructure']['params']['conf'])) {
foreach ($conf['infrastructure']['params']['conf'] as $param_name => $param_value) {
if (isset($conf[$param_name]) && is_array($conf[$param_name]) && is_array($param_value)) {
$conf[$param_name] = _drubone_array_deep_merge(array(
$conf[$param_name],
$param_value,
));
}
else {
$conf[$param_name] = $param_value;
}
}
}
if (isset($conf['infrastructure']['site']['group_name']) && !isset($conf['instance_settings']['subsite'])) {
$conf['instance_settings']['subsite'] = $conf['infrastructure']['site']['group_name'];
}
}
// TODO: unset pattern_types that not have token values.
// Params for patterns.
$conf['instance_settings']['token_values'] = array(
'!environment' => $conf['instance_settings']['environment'],
'!environment_group' => isset($conf['instance_settings_environment_group']) ? $conf['instance_settings_environment_group'] : $conf['instance_settings']['environment'],
'!instance' => $conf['instance_settings']['instance'],
'!project' => $conf['instance_settings']['project'],
'!subsite' => isset($conf['instance_settings']['subsite']) ? $conf['instance_settings']['subsite'] : '',
);
// If no projects are defined, try to find project by project name.
// TODO: support projects hierarchy in project name.
if (!$conf['instance_settings']['projects']) {
$drupal_root = rtrim(DRUPAL_ROOT, '/');
$root = substr($drupal_root, 0, strrpos($drupal_root, '/'));
foreach ($conf['instance_settings']['projects_path_variants'] as $projects_path_variant) {
foreach ($conf['instance_settings']['project_names'] as $project_name) {
if (is_dir($root . '/' . $projects_path_variant . '/' . $project_name)) {
$conf['instance_settings']['projects'][$project_name] = array(
'params' => array(
'path' => $projects_path_variant . '/' . $project_name,
),
);
}
}
}
}
// Set settings dirs.
_instance_settings_settings_dirs($conf['instance_settings']['settings_dirs']);
_instance_settings_settings_dirs(array_values(_instance_settings_get_project_settings_dirs($conf['instance_settings']['projects'])));
_instance_settings_settings_dirs(array(
$conf['instance_settings']['site_dir_full'],
));
}