View source
<?php
define('INSTANCE_SETTINGS_ADMIN_PAGE_PATH', 'admin/config/system/instance-settings');
function instance_settings_permission() {
return array(
'administer instance settings' => array(
'title' => t('Administer instance settings module'),
'description' => t('Perform administration tasks for instance settings module.'),
),
);
}
function instance_settings_menu() {
$items[INSTANCE_SETTINGS_ADMIN_PAGE_PATH] = array(
'title' => 'Instance settings',
'description' => 'Manage the settings of Instance settings module.',
'page callback' => 'drupal_get_form',
'page arguments' => array(
'instance_settings_admin_settings',
),
'weight' => 10,
'access arguments' => array(
'administer instance settings',
),
'file' => 'includes/instance_settings.admin.inc',
);
return $items;
}
function instance_settings_init() {
if (variable_get('instance_settings_apply_on_page_load', 0)) {
drupal_set_message(t('Apply instance settings on each page load mode is enabled. You need to disable it for production instances !link', array(
'!link' => l(t('here'), INSTANCE_SETTINGS_ADMIN_PAGE_PATH),
)));
instance_settings_apply();
}
}
function instance_settings_requirements($phase) {
$requirements = array();
$t = get_t();
if ($phase == 'runtime') {
$requirements['instance_settings'] = array(
'title' => $t('Instance settings included files'),
'value' => implode(' -> ', variable_get('instance_settings_included_files', array())),
'severity' => REQUIREMENT_INFO,
);
}
return $requirements;
}
function instance_settings_modules_enabled($modules) {
$disable_modules = array();
if ($module_pools = variable_get('instance_settings_module_pools', array())) {
foreach ($modules as $enable_module) {
foreach ($module_pools as $pool) {
if (in_array($enable_module, $pool)) {
foreach ($pool as $pool_module) {
if ($pool_module != $enable_module) {
$disable_modules[] = $pool_module;
}
}
}
}
}
}
instance_settings_module_disable($disable_modules);
}
function instance_settings_apply() {
$result = module_invoke_all('instance_settings_apply');
return $result;
}
function instance_settings_instance_settings_apply() {
$verbose_mode = variable_get('instance_settings_verbose_mode', 0);
$rebuild = FALSE;
if ($disable_modules = variable_get('instance_settings_disable_modules')) {
$rebuild = instance_settings_module_disable($disable_modules) || $rebuild;
}
if ($enable_modules = variable_get('instance_settings_enable_modules')) {
if (!empty($enable_modules)) {
$rebuild = instance_settings_module_enable(array_combine($enable_modules, $enable_modules)) || $rebuild;
}
}
if ($variables = variable_get('instance_settings_variables')) {
foreach ($variables as $name => $value) {
variable_set($name, $value);
if ($verbose_mode) {
drupal_set_message(t('Variable "@name" set to "@value".', array(
'@name' => $name,
'@value' => $value,
)));
}
}
drupal_set_message(t('Variables updated.'));
}
if ($rebuild) {
cache_clear_all();
menu_rebuild();
}
return TRUE;
}
function instance_settings_module_enable($enable_modules) {
$verbose_mode = variable_get('instance_settings_verbose_mode', 0);
$rebuild = FALSE;
foreach ($enable_modules as $id => $module) {
if (module_exists($module)) {
unset($enable_modules[$id]);
if ($verbose_mode) {
drupal_set_message(t('Module @module already enabled.', array(
'@module' => $module,
)));
}
}
}
if (!empty($enable_modules)) {
foreach ($enable_modules as $module) {
if (module_enable(array(
$module,
))) {
drupal_set_message(t('Module @module enabled.', array(
'@module' => $module,
)));
}
else {
drupal_set_message(t('Module @module was not enabled.', array(
'@module' => $module,
)));
}
$rebuild = TRUE;
}
}
return $rebuild;
}
function instance_settings_module_disable($disable_modules) {
$verbose_mode = variable_get('instance_settings_verbose_mode', 0);
$rebuild = FALSE;
foreach ($disable_modules as $key => $disable_module) {
if (!module_exists($disable_module)) {
if ($verbose_mode) {
drupal_set_message(t('Module @module is not exists or already disabled.', array(
'@module' => $disable_module,
)));
}
unset($disable_modules[$key]);
}
}
if (!empty($disable_modules)) {
module_disable($disable_modules);
drupal_set_message(t('Module(s) @modules disabled.', array(
'@modules' => implode(', ', $disable_modules),
)));
$rebuild = TRUE;
}
return $rebuild;
}