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'])));
}
}