diff --git a/main/admin/settings.php b/main/admin/settings.php index 7c3a136b91..e62bbf96b0 100644 --- a/main/admin/settings.php +++ b/main/admin/settings.php @@ -1,4 +1,4 @@ - "Plugins" and $_GET['cate //$resultsettings = api_sql_query($sqlsettings, __FILE__, __LINE__); //while ($row = mysql_fetch_array($resultsettings)) $default_values = array(); - foreach($settings as $row) - { - - ($countsetting['0']%10) < 5 ?$b=$countsetting['0']-10:$b=$countsetting['0']; - + foreach($settings as $row) { + ($countsetting['0']%10) < 5 ?$b=$countsetting['0']-10:$b=$countsetting['0']; if ($i % 10 == 0 and $i<$b){ if ($_GET['category'] <> "Languages"){ $form->addElement('html','
'); $form->addElement('submit', null,get_lang('SaveSettings')); $form->addElement('html','
'); } - }$i++; + } + $i++; $form->addElement('header', null, get_lang($row['title'])); $hideme=array(); @@ -199,7 +197,18 @@ if (!empty($_GET['category']) and $_GET['category'] <> "Plugins" and $_GET['cate $default_values[$row['variable']] = $row['selected_value']; break; case 'checkbox'; - $sql = "SELECT * FROM settings_current WHERE variable='".$row['variable']."'"; + //be default we chose the access_url 1 otherwise we will get parameters from all urls + if ($row['access_url_changeable']==1) { + //current access_url + $access_url = $_configuration['access_url']; + if (empty($access_url)) + $access_url = 1; + + $sql = "SELECT * FROM settings_current WHERE variable='".$row['variable']."' AND access_url = $access_url"; + } else { + $sql = "SELECT * FROM settings_current WHERE variable='".$row['variable']."' AND access_url = 1"; + } + $result = api_sql_query($sql, __FILE__, __LINE__); $group = array (); while ($rowkeys = Database::fetch_array($result)) { diff --git a/main/inc/lib/main_api.lib.php b/main/inc/lib/main_api.lib.php index bf61379f8e..ef10869be1 100644 --- a/main/inc/lib/main_api.lib.php +++ b/main/inc/lib/main_api.lib.php @@ -2285,23 +2285,27 @@ function api_set_setting($var,$value,$subvar=null,$cat=null,$access_url=1) { } else { $select .= " AND access_url = 1 "; } + $res = api_sql_query($select,__FILE__,__LINE__); - if(Database::num_rows($res)>0) { //found item for this access_url + if(Database::num_rows($res)>0) { + //found item for this access_url $row = Database::fetch_array($res); $update = "UPDATE $t_settings SET selected_value = '$value' WHERE id = ".$row['id'] ; - $res = api_sql_query($update,__FILE__,__LINE__); - } else { //item not found for this access_url, we have to check if the whole thing is missing - //(in which case we ignore the insert) or if there *is* a record but just for access_url=1 - $select = "SELECT * FROM $t_settings WHERE variable = '$var' AND access_url = '1' "; + $res = api_sql_query($update,__FILE__,__LINE__); + } else { + //Item not found for this access_url, we have to check if it exist with access_url = 1 + $select = "SELECT * FROM $t_settings WHERE variable = '$var' AND access_url = 1 "; + // just in case if ($access_url==1) { if (!empty($subvar)) { $select .= " AND subkey = '$subvar'"; } if (!empty($cat)) { $select .= " AND category = '$cat'"; - } + } $res = api_sql_query($select,__FILE__,__LINE__); - if (Database::num_rows($select)>0) { //we have a setting for access_url 1, but none for the current one, so create one + + if (Database::num_rows($res)>0) { //we have a setting for access_url 1, but none for the current one, so create one $row = Database::fetch_array($res); $insert = "INSERT INTO $t_settings " . "(variable,subkey," . @@ -2313,8 +2317,8 @@ function api_set_setting($var,$value,$subvar=null,$cat=null,$access_url=1) { "('".$row['variable']."',".(!empty($row['subkey'])?"'".$row['subkey']."'":"NULL")."," . "'".$row['type']."','".$row['category']."'," . "'$value','".$row['title']."'," . - "".(!empty($row['comment'])?"'".$row['comment']."'":"NULL").",'".(!empty($row['scope'])?"'".$row['scope']."'":"NULL")."'," . - "'".(!empty($row['subkeytext'])?"'".$row['subkeytext']."'":"NULL")."',$access_url)"; + "".(!empty($row['comment'])?"'".$row['comment']."'":"NULL").",".(!empty($row['scope'])?"'".$row['scope']."'":"NULL")."," . + "".(!empty($row['subkeytext'])?"'".$row['subkeytext']."'":"NULL").",$access_url)"; $res = api_sql_query($insert,__FILE__,__LINE__); } else { // this setting does not exist error_log(__FILE__.':'.__LINE__.': Attempting to update setting '.$var.' ('.$subvar.') which does not exist at all',0); @@ -2333,7 +2337,7 @@ function api_set_setting($var,$value,$subvar=null,$cat=null,$access_url=1) { $row = Database::fetch_array($res); if ($row['access_url_changeable']==1) { $insert = "INSERT INTO $t_settings " . - "(variable,subkey," . + "(variable,subkey," . "type,category," . "selected_value,title," . "comment,scope," . @@ -2345,7 +2349,7 @@ function api_set_setting($var,$value,$subvar=null,$cat=null,$access_url=1) { "'$value','".$row['title']."'," . "".(!empty($row['comment'])?"'".$row['comment']."'":"NULL").",". (!empty($row['scope'])?"'".$row['scope']."'":"NULL")."," . - "'".(!empty($row['subkeytext'])?"'".$row['subkeytext']."'":"NULL")."',$access_url,".$row['access_url_changeable'].")"; + "".(!empty($row['subkeytext'])?"'".$row['subkeytext']."'":"NULL").",$access_url,".$row['access_url_changeable'].")"; $res = api_sql_query($insert,__FILE__,__LINE__); } } else { // this setting does not exist