summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorKarl 'vollmerk' Vollmer <vollmer@ampache.org>2008-07-29 05:06:22 +0000
committerKarl 'vollmerk' Vollmer <vollmer@ampache.org>2008-07-29 05:06:22 +0000
commit010c3df1fd858c5783ddb885755e2c3b63f76b3e (patch)
tree99cead9030b90f1966e46dd1f356d627220a3e56 /lib
parent64c3262a57129212622e2fda8d28c9e00fdaa578 (diff)
downloadampache-010c3df1fd858c5783ddb885755e2c3b63f76b3e.tar.gz
ampache-010c3df1fd858c5783ddb885755e2c3b63f76b3e.tar.bz2
ampache-010c3df1fd858c5783ddb885755e2c3b63f76b3e.zip
improved preferences load, down to a single query and a single loop
Diffstat (limited to 'lib')
-rw-r--r--lib/class/preference.class.php30
1 files changed, 9 insertions, 21 deletions
diff --git a/lib/class/preference.class.php b/lib/class/preference.class.php
index 265a2cf4..a72b99ba 100644
--- a/lib/class/preference.class.php
+++ b/lib/class/preference.class.php
@@ -329,32 +329,20 @@ class Preference {
*/
public static function init() {
+ $user_id = $GLOBALS['user']->id ? Dba::escape($GLBOALS['user']->id) : '-1';
+
/* Get Global Preferences */
- $sql = "SELECT `preference`.`name`,`user_preference`.`value` FROM `preference`,`user_preference` " .
- "WHERE `user_preference`.`user`='-1' " .
- "AND `user_preference`.`preference` = `preference`.`id` AND `preference`.`catagory` = 'system'";
+ $sql = "SELECT `preference`.`name`,`user_preference`.`value`,`syspref`.`value` AS `system_value` FROM `preference`" .
+ "LEFT JOIN `user_preference` `syspref` ON `syspref`.`preference`=`preference`.`id` AND `syspref`.`user`='-1' AND `preference`.`catagory`='system'" .
+ "LEFT JOIN `user_preference` ON `user_preference`.`preference`=`preference`.`id` AND `user_preference`.`user`='$user_id' AND `preference`.`catagory`!='system'";
$db_results = Dba::query($sql);
- while ($r = Dba::fetch_assoc($db_results)) {
- $name = $r['name'];
- $results[$name] = $r['value'];
+ while ($row = Dba::fetch_assoc($db_results)) {
+ $value = $row['system_value'] ? $row['system_value'] : $row['value'];
+ $name = $row['name'];
+ $results[$name] = $value;
} // end while sys prefs
- /* Now we need to allow the user to override some stuff that's been set by the above */
- $user_id = '-1';
- if ($GLOBALS['user']->username) {
- $user_id = Dba::escape($GLOBALS['user']->id);
- }
-
- $sql = "SELECT preference.name,user_preference.value FROM preference,user_preference WHERE user_preference.user='$user_id' " .
- "AND user_preference.preference = preference.id AND preference.catagory != 'system'";
- $db_results = Dba::query($sql);
-
- while ($r = Dba::fetch_assoc($db_results)) {
- $name = $r['name'];
- $results[$name] = $r['value'];
- } // end while
-
/* Set the Theme mojo */
if (strlen($results['theme_name']) > 0) {
$results['theme_path'] = '/themes/' . $results['theme_name'];