diff options
Diffstat (limited to 'library/WT/Site.php')
| -rw-r--r-- | library/WT/Site.php | 58 |
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 . '"'); } } } |
