summaryrefslogtreecommitdiff
path: root/library/WT/Site.php
diff options
context:
space:
mode:
Diffstat (limited to 'library/WT/Site.php')
-rw-r--r--library/WT/Site.php58
1 files changed, 39 insertions, 19 deletions
diff --git a/library/WT/Site.php b/library/WT/Site.php
index a1731da09a..59dafa3c53 100644
--- a/library/WT/Site.php
+++ b/library/WT/Site.php
@@ -21,35 +21,55 @@
use WT\Log;
class WT_Site {
- static $setting=null;
+ /**
+ * Everything from the wt_site_setting table.
+ *
+ * @var array
+ */
+ static $setting = null;
- // Get and Set the site’s configuration settings
- public static function preference($setting_name, $setting_value=null) {
+ /**
+ * Get the site’s configuration settings
+ *
+ * @param string $setting_name
+ *
+ * @return string
+ */
+ public static function getPreference($setting_name) {
// There are lots of settings, and we need to fetch lots of them on every page
// so it is quicker to fetch them all in one go.
- if (self::$setting===null) {
- self::$setting=WT_DB::prepare(
+ if (self::$setting === null) {
+ self::$setting = WT_DB::prepare(
"SELECT SQL_CACHE setting_name, setting_value FROM `##site_setting`"
)->fetchAssoc();
}
- // If $setting_value is null, then GET the setting
- if ($setting_value===null) {
- // If parameter two is not specified, GET the setting
- if (!array_key_exists($setting_name, self::$setting)) {
- self::$setting[$setting_name]=null;
- }
- return self::$setting[$setting_name];
- } else {
- // If parameter two is specified, then SET the setting
- if (self::preference($setting_name)!=$setting_value) {
- // Audit log of changes
- Log::addConfigurationLog('Site setting "' . $setting_name . '" set to "' . $setting_value . '"');
- }
+ // A setting that hasn't yet been set?
+ if (!array_key_exists($setting_name, self::$setting)) {
+ self::$setting[$setting_name] = null;
+ }
+
+ return self::$setting[$setting_name];
+ }
+
+ /**
+ * Set the site’s configuration settings.
+ *
+ * @param string $setting_name
+ * @param string $setting_value
+ *
+ * @return void
+ */
+ public static function setPreference($setting_name, $setting_value) {
+ // Only need to update the database if the setting has actually changed.
+ if (self::getPreference($setting_name) != $setting_value) {
WT_DB::prepare(
"REPLACE INTO `##site_setting` (setting_name, setting_value) VALUES (?, LEFT(?, 255))"
)->execute(array($setting_name, $setting_value));
- self::$setting[$setting_name]=$setting_value;
+
+ self::$setting[$setting_name] = $setting_value;
+
+ Log::addConfigurationLog('Site setting "' . $setting_name . '" set to "' . $setting_value . '"');
}
}
}