From 551d896b1589c050c97be6654e735ad4945dc820 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Mon, 28 May 2012 17:30:57 +0200 Subject: [PATCH] Fixing mark/unmark settings, only can be configured in the main portal by the global admin --- main/admin/access_url_edit.php | 3 ++- main/admin/settings.lib.php | 24 ++++++++++++----- main/admin/settings.php | 47 ++++++++++++++++++++-------------- main/inc/ajax/admin.ajax.php | 8 +++--- main/inc/lib/main_api.lib.php | 7 +++-- 5 files changed, 58 insertions(+), 31 deletions(-) diff --git a/main/admin/access_url_edit.php b/main/admin/access_url_edit.php index ad9a91bc76..73d3d017e3 100644 --- a/main/admin/access_url_edit.php +++ b/main/admin/access_url_edit.php @@ -12,6 +12,7 @@ $this_section = SECTION_PLATFORM_ADMIN; //api_protect_admin_script(); api_protect_global_admin_script(); + if (!api_get_multiple_access_url()) { header('Location: index.php'); exit; @@ -103,7 +104,7 @@ if( $form->validate()) { } -$form->addElement('text','url', 'URL',array('size'=>'30')); +$form->addElement('text','url', 'URL', array('class'=>'span6')); $form->addRule('url', get_lang('ThisFieldIsRequired'), 'required'); $form->addRule('url', '', 'maxlength',254); $form->addElement('textarea','description',get_lang('Description')); diff --git a/main/admin/settings.lib.php b/main/admin/settings.lib.php index 1ef5349d4f..dd6ba8e3f2 100644 --- a/main/admin/settings.lib.php +++ b/main/admin/settings.lib.php @@ -1055,7 +1055,9 @@ function generate_settings_form($settings, $settings_by_access_list) { $form->addElement('hidden', 'search_field', Security::remove_XSS($_GET['search_field'])); - if ( $_configuration['multiple_access_urls'] && api_is_global_platform_admin()) { + $url_id = api_get_current_access_url_id(); + + if ( $_configuration['multiple_access_urls'] && api_is_global_platform_admin() && $url_id == 1) { $group = array(); $group[] = $form->createElement('button', 'mark_all', get_lang('MarkAll')); $group[] = $form->createElement('button', 'unmark_all', get_lang('UnmarkAll')); @@ -1071,12 +1073,22 @@ function generate_settings_form($settings, $settings_by_access_list) { if ( $_configuration['multiple_access_urls']) { if (api_is_global_platform_admin()) { if ($row['access_url_locked'] == 0) { - if ($row['access_url_changeable'] == '1') { - $form->addElement('html', '
'); + if ($url_id == 1) { + if ($row['access_url_changeable'] == '1') { + $form->addElement('html', '
'); + } else { + $form->addElement('html', '
'); + } } else { - $form->addElement('html', '
'); + if ($row['access_url_changeable'] == '1') { + $form->addElement('html', '
'. + Display::return_icon('shared_setting.png', get_lang('ChangeSharedSetting')).'
'); + } else { + $form->addElement('html', '
'. + Display::return_icon('shared_setting_na.png', get_lang('ChangeSharedSetting')).'
'); + } } } } diff --git a/main/admin/settings.php b/main/admin/settings.php index f685080a54..56c681276e 100644 --- a/main/admin/settings.php +++ b/main/admin/settings.php @@ -87,22 +87,22 @@ $form_search->setDefaults(array('search_field' => $_REQUEST['search_field'])); $form_search_html = $form_search->return_form(); +$url_id = api_get_current_access_url_id(); $settings = null; -// Build the form. -if (!empty($_GET['category']) && !in_array($_GET['category'], array('Plugins', 'stylesheets', 'Search'))) { - $my_category = Database::escape_string($_GET['category']); - - if ($_configuration['access_url'] == 1) { - $settings = api_get_settings($my_category, 'group', $_configuration['access_url']); +function get_settings($category = null) { + $url_id = api_get_current_access_url_id(); + + if ($url_id == 1) { + $settings = api_get_settings($category, 'group', $url_id); } else { - $url_info = api_get_access_url($_configuration['access_url']); + $url_info = api_get_access_url($url_id); if ($url_info['active'] == 1) { // The default settings of Chamilo - $settings = api_get_settings($my_category, 'group', 1, 0); + $settings = api_get_settings($category, 'group', 1, 0); // The settings that are changeable from a particular site. - $settings_by_access = api_get_settings($my_category, 'group', $_configuration['access_url'], 1); + $settings_by_access = api_get_settings($category, 'group', $url_id, 1); $settings_by_access_list = array(); foreach ($settings_by_access as $row) { @@ -122,17 +122,24 @@ if (!empty($_GET['category']) && !in_array($_GET['category'], array('Plugins', ' } } - if (isset($_GET['category']) && $_GET['category'] == 'search_setting') { + if (isset($category) && $category== 'search_setting') { if (!empty($_REQUEST['search_field'])) { $settings = search_setting($_REQUEST['search_field']); } } + return $settings; +} + +// Build the form. +if (!empty($_GET['category']) && !in_array($_GET['category'], array('Plugins', 'stylesheets', 'Search'))) { + $my_category = isset($_GET['category']) ? $_GET['category'] : null; + $settings = get_settings($my_category); $form = generate_settings_form($settings, $settings_by_access_list); $message = array(); - if ($form->validate()) { + if ($form->validate()) { $values = $form->exportValues(); $mark_all = false; @@ -157,22 +164,24 @@ if (!empty($_GET['category']) && !in_array($_GET['category'], array('Plugins', ' $changeable = 0; if ($mark_all) { $changeable = 1; - } + } $params = array('variable = ?' => array($key)); $data = api_get_settings_params($params); if (!empty($data)) { foreach ($data as $item) { - $params = array('id' =>$item['id'], 'access_url_changeable' => $changeable); - api_set_setting_simple($params); + $params = array('id' =>$item['id'], 'access_url_changeable' => $changeable); + api_set_setting_simple($params); } } } } + //Reload settings + $settings = get_settings($my_category); + $form = generate_settings_form($settings, $settings_by_access_list); } - } - + } $pdf_export_watermark_path = $_FILES['pdf_export_watermark_path']; if (isset($pdf_export_watermark_path) && !empty($pdf_export_watermark_path['name'])) { @@ -211,7 +220,7 @@ if (!empty($_GET['category']) && !in_array($_GET['category'], array('Plugins', ' foreach ($values as $key => $value) { if (in_array($key, $settings_to_avoid)) { continue; } $key = Database::escape_string($key); - $sql = "UPDATE $table_settings_current SET selected_value = 'false' WHERE variable = '".$key."' AND access_url = ".intval($_configuration['access_url'])." AND type IN ('checkbox', 'radio') "; + $sql = "UPDATE $table_settings_current SET selected_value = 'false' WHERE variable = '".$key."' AND access_url = ".intval($url_id)." AND type IN ('checkbox', 'radio') "; $res = Database::query($sql); } @@ -266,7 +275,7 @@ if (!empty($_GET['category']) && !in_array($_GET['category'], array('Plugins', ' break; } if ($old_value != $value) $keys[] = $key; - $result = api_set_setting($key, $value, null, null, $_configuration['access_url']); + $result = api_set_setting($key, $value, null, null, $url_id); } else { $sql = "SELECT subkey FROM $table_settings_current WHERE variable = '$key'"; $res = Database::query($sql); @@ -279,7 +288,7 @@ if (!empty($_GET['category']) && !in_array($_GET['category'], array('Plugins', ' } } foreach ($value as $subkey => $subvalue) { - $result = api_set_setting($key, 'true', $subkey, null, $_configuration['access_url']); + $result = api_set_setting($key, 'true', $subkey, null, $url_id); } } diff --git a/main/inc/ajax/admin.ajax.php b/main/inc/ajax/admin.ajax.php index 72e80c21f5..fd9c8a9ba0 100644 --- a/main/inc/ajax/admin.ajax.php +++ b/main/inc/ajax/admin.ajax.php @@ -12,9 +12,11 @@ $action = isset($_REQUEST['a']) ? $_REQUEST['a'] : null; switch ($action) { case 'update_changeable_setting': - if (api_is_global_platform_admin()) { - if (isset($_GET['id']) && !empty($_GET['id'])) { - $params = array('variable = ?' => array($_GET['id'])); + $url_id = api_get_current_access_url_id(); + + if (api_is_global_platform_admin() && $url_id == 1) { + if (isset($_GET['id']) && !empty($_GET['id'])) { + $params = array('variable = ? ' => array($_GET['id'])); $data = api_get_settings_params($params); if (!empty($data)) { foreach ($data as $item) { diff --git a/main/inc/lib/main_api.lib.php b/main/inc/lib/main_api.lib.php index d2e5be3308..8fee8dd975 100644 --- a/main/inc/lib/main_api.lib.php +++ b/main/inc/lib/main_api.lib.php @@ -4028,11 +4028,14 @@ function api_set_setting_option($params) { } function api_set_setting_simple($params) { - $table = Database::get_main_table(TABLE_MAIN_SETTINGS_CURRENT); + $table = Database::get_main_table(TABLE_MAIN_SETTINGS_CURRENT); + $url_id = api_get_current_access_url_id(); + if (empty($params['id'])) { + $params['access_url'] = $url_id; Database::insert($table, $params); } else { - Database::update($table, $params, array('id = ? '=> $params['id'])); + Database::update($table, $params, array('id = ? '=> array($params['id']))); } }