From 31bc6d8b07fbb9dd4e2290d1ddf6395a8222c231 Mon Sep 17 00:00:00 2001 From: Tim Steiner <tsteiner2@unl.edu> Date: Thu, 17 May 2012 13:29:25 -0500 Subject: [PATCH] [gh-382] Change the module whitelist to be configurable --- sites/all/modules/unl/includes/unl.admin.inc | 24 ++++++++++++++++++++ sites/all/modules/unl/unl.install | 13 +++++++++++ sites/all/modules/unl/unl.module | 5 +--- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/sites/all/modules/unl/includes/unl.admin.inc b/sites/all/modules/unl/includes/unl.admin.inc index 9c898a49..c61be7fa 100644 --- a/sites/all/modules/unl/includes/unl.admin.inc +++ b/sites/all/modules/unl/includes/unl.admin.inc @@ -37,6 +37,29 @@ function unl_config($form, &$form_state) { '#type' => 'submit', '#value' => 'Update', ); + + // Grab a list of available modules (active or not). + // Based on system_modules() from modules/system.admin.inc. + $files = system_rebuild_module_data(); + require_once DRUPAL_ROOT . '/modules/system/system.admin.inc'; + uasort($files, 'system_sort_modules_by_info_name'); + + $modules = array(); + foreach ($files as $filename => $file) { + if (!empty($file->info['hidden'])) { + continue; + } + $modules[$filename] = $file->info['name']; + } + + $form['root']['module_whitelist'] = array( + '#type' => 'select', + '#title' => 'Module White List (Global)', + '#multiple' => TRUE, + '#options' => $modules, + '#size' => 15, + '#default_value' => unl_shared_variable_get('unl_module_whitelist', array()), + ); return $form; } @@ -47,4 +70,5 @@ function unl_config_submit($form, &$form_state) { if (class_exists('Tidy')) { variable_set('unl_tidy', $form_state['values']['root']['unl_tidy']); } + variable_set('unl_module_whitelist', $form_state['values']['root']['module_whitelist']); } diff --git a/sites/all/modules/unl/unl.install b/sites/all/modules/unl/unl.install index a6836993..b68f6815 100644 --- a/sites/all/modules/unl/unl.install +++ b/sites/all/modules/unl/unl.install @@ -376,3 +376,16 @@ function unl_update_7111() { db_add_unique_key('unl_sites', 'uri', array('uri')); db_add_unique_key('unl_sites', 'db_prefix', array('db_prefix')); } + +/** + * Add the hard-coded white list as the default whitelist. + */ +function unl_update_7112() { + $modules = array( + 'aggregator', 'blog', 'book', 'comment', 'translation', 'dashboard', 'forum', 'help', 'list', 'locale', 'number', 'taxonomy', 'trigger', // Core on this line, Contrib below + 'action_email_role', 'context', 'context_layouts', 'context_ui', 'features', 'unl_news', 'imce', 'imce_mkdir', 'imce_rename', 'menu_block', 'menu_block_export', + 'form_builder', 'form_builder_webform_ui', 'webform', 'webform_alt_ui', + 'workbench', 'workbench_access', 'workbench_files', 'workbench_media', 'workbench_moderation' + ); + unl_shared_variable_set('unl_module_whitelist', $modules); +} diff --git a/sites/all/modules/unl/unl.module b/sites/all/modules/unl/unl.module index 777bb0aa..6a02aeb3 100644 --- a/sites/all/modules/unl/unl.module +++ b/sites/all/modules/unl/unl.module @@ -620,10 +620,7 @@ function unl_form_field_ui_display_overview_form_alter(&$form, &$form_state, $fo */ function unl_form_system_modules_alter(&$form, &$form_state, $form_id) { // Whitelist of modules that Site Admin are allowed to turn on and off on admin/modules - $modules = array('aggregator', 'blog', 'book', 'comment', 'translation', 'dashboard', 'forum', 'help', 'list', 'locale', 'number', 'taxonomy', 'trigger', // Core on this line, Contrib below - 'action_email_role', 'context', 'context_layouts', 'context_ui', 'features', 'unl_news', 'imce', 'imce_mkdir', 'imce_rename', 'menu_block', 'menu_block_export', - 'form_builder', 'form_builder_webform_ui', 'webform', 'webform_alt_ui', - 'workbench', 'workbench_access', 'workbench_files', 'workbench_media', 'workbench_moderation'); + $modules = unl_shared_variable_get('unl_module_whitelist', array()); if (!unl_user_is_administrator() && isset($form['modules'])) { foreach ($form['modules'] as $category_name => $category) { -- GitLab