optimization: get rid of one more sql query related to installed themes

This commit is contained in:
czaks 2015-04-05 16:38:16 +02:00
parent 34eeaccea9
commit 71ef3430fc

View File

@ -352,9 +352,22 @@ function rebuildThemes($action, $boardname = false) {
$_board = $board; $_board = $board;
// List themes // List themes
$query = query("SELECT `theme` FROM ``theme_settings`` WHERE `name` IS NULL AND `value` IS NULL") or error(db_error()); if ($themes = Cache::get("themes")) {
// OK, we already have themes loaded
}
else {
$query = query("SELECT `theme` FROM ``theme_settings`` WHERE `name` IS NULL AND `value` IS NULL") or error(db_error());
while ($theme = $query->fetch(PDO::FETCH_ASSOC)) { $themes = array();
while ($theme = $query->fetch(PDO::FETCH_ASSOC)) {
$themes[] = $theme;
}
Cache::set("themes", $themes);
}
foreach ($themes as $theme) {
// Restore them // Restore them
$config = $_config; $config = $_config;
$board = $_board; $board = $_board;
@ -415,6 +428,10 @@ function rebuildTheme($theme, $action, $board = false) {
function themeSettings($theme) { function themeSettings($theme) {
if ($settings = Cache::get("theme_settings_".$theme)) {
return $settings;
}
$query = prepare("SELECT `name`, `value` FROM ``theme_settings`` WHERE `theme` = :theme AND `name` IS NOT NULL"); $query = prepare("SELECT `name`, `value` FROM ``theme_settings`` WHERE `theme` = :theme AND `name` IS NOT NULL");
$query->bindValue(':theme', $theme); $query->bindValue(':theme', $theme);
$query->execute() or error(db_error($query)); $query->execute() or error(db_error($query));
@ -424,6 +441,8 @@ function themeSettings($theme) {
$settings[$s['name']] = $s['value']; $settings[$s['name']] = $s['value'];
} }
Cache::set("theme_settings_".$theme, $settings);
return $settings; return $settings;
} }