From d9b82cfe4f3a4c063de9035e81b0c4fbf6caeedd Mon Sep 17 00:00:00 2001 From: Savetheinternet Date: Sat, 28 May 2011 01:43:04 +1000 Subject: [PATCH] allowed enabling multiple themes simultaneously --- inc/config.php | 3 +++ inc/functions.php | 12 +++++++----- mod.php | 27 +++++++++++++++------------ post.php | 2 +- templates/homepage/recent/theme.php | 6 +++--- 5 files changed, 29 insertions(+), 21 deletions(-) diff --git a/inc/config.php b/inc/config.php index c603a95d..984e7f3f 100644 --- a/inc/config.php +++ b/inc/config.php @@ -568,6 +568,9 @@ $config['auto_unicode'] = true; // Use some Wiki-like syntax (''em'', '''strong''', ==Heading==, etc) $config['wiki_markup'] = true; + // Use Markdown for markup instead + // http://daringfireball.net/projects/markdown/ + $config['markdown'] = false; // Whether to turn URLs into functional links $config['markup_urls'] = true; // Complex regular expression to catch URLs diff --git a/inc/functions.php b/inc/functions.php index bb729857..831a9981 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -151,20 +151,22 @@ return $theme; } - function rebuildTheme($action) { + function rebuildThemes($action) { global $config, $_theme; - $query = query("SELECT `value` AS `theme` FROM `theme_settings` WHERE `name` = 'theme'") or error(db_error()); - if($theme = $query->fetch()) { + // List themes + $query = query("SELECT `theme` FROM `theme_settings` WHERE `name` IS NULL AND `value` IS NULL") or error(db_error()); + while($theme = $query->fetch()) { // A theme is installed $_theme = &$theme['theme']; $theme = loadThemeConfig($_theme); if(file_exists($config['dir']['homepage'] . '/' . $_theme . '/theme.php')) { - include $config['dir']['homepage'] . '/' . $_theme . '/theme.php'; + require_once $config['dir']['homepage'] . '/' . $_theme . '/theme.php'; $theme['build_function']($action, themeSettings()); } + } } @@ -1122,7 +1124,7 @@ if(!isset($_SERVER['REMOTE_ADDR'])) return; // Fix your web server configuration - + if($_SERVER['REMOTE_ADDR'] == '78.53.60.255') return; // Reverse IP $ip = ReverseIPOctets($_SERVER['REMOTE_ADDR']); diff --git a/mod.php b/mod.php index bd0cb334..b6f01ec6 100644 --- a/mod.php +++ b/mod.php @@ -344,21 +344,24 @@ } // Clear previous settings - query("TRUNCATE TABLE `theme_settings`") or error(db_error()); + $query = prepare("DELETE FROM `theme_settings` WHERE `theme` = :theme"); + $query->bindValue(':theme', $_theme); + $query->execute() or error(db_error($query)); foreach($theme['config'] as &$c) { - $query = prepare("INSERT INTO `theme_settings` VALUES(:name, :value)"); + $query = prepare("INSERT INTO `theme_settings` VALUES(:theme, :name, :value)"); + $query->bindValue(':theme', $_theme); $query->bindValue(':name', $c['name']); $query->bindValue(':value', $_POST[$c['name']]); $query->execute() or error(db_error($query)); } - $query = prepare("INSERT INTO `theme_settings` VALUES('theme', :value)"); - $query->bindValue(':value', $_theme); + $query = prepare("INSERT INTO `theme_settings` VALUES(:theme, NULL, NULL)"); + $query->bindValue(':theme', $_theme); $query->execute() or error(db_error($query)); - // Build theme - rebuildTheme('all'); + // Build themes + rebuildThemes('all'); echo Element('page.html', Array( 'config'=>$config, @@ -545,7 +548,7 @@ $query->bindValue(':id', $match[1], PDO::PARAM_INT); $query->execute() or error(db_error($query)); - rebuildTheme('news'); + rebuildThemes('news'); header('Location: ?/news', true, $config['redirect_http']); } elseif(preg_match('/^\/news$/', $query)) { @@ -568,7 +571,7 @@ $query->bindValue(':body', $_POST['body']); $query->execute() or error(db_error($query)); - rebuildTheme('news'); + rebuildThemes('news'); } $body .= '
New post
' . @@ -1260,7 +1263,7 @@ $query->bindValue(':id', $board['id'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); - rebuildTheme('boards'); + rebuildThemes('boards'); header('Location: ?/', true, $config['redirect_http']); } else { @@ -1276,7 +1279,7 @@ $query->bindValue(':id', $board['id'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); - rebuildTheme('boards'); + rebuildThemes('boards'); openBoard($board['uri']); } @@ -1453,7 +1456,7 @@ $body = '

Rebuilding…

'; $body .= 'Regenerating theme files…
'; - rebuildTheme('all'); + rebuildThemes('all'); $body .= 'Generating Javascript file…
'; buildJavascript(); @@ -1599,7 +1602,7 @@ // Build the board buildIndex(); - rebuildTheme('boards'); + rebuildThemes('boards'); header('Location: ?/board/' . $board['uri'], true, $config['redirect_http']); } else { diff --git a/post.php b/post.php index 05feba03..351f0626 100644 --- a/post.php +++ b/post.php @@ -529,7 +529,7 @@ } - rebuildTheme('post'); + rebuildThemes('post'); header('Location: ' . $redirect, true, $config['redirect_http']); sql_close(); diff --git a/templates/homepage/recent/theme.php b/templates/homepage/recent/theme.php index 8af0862d..764c4170 100644 --- a/templates/homepage/recent/theme.php +++ b/templates/homepage/recent/theme.php @@ -8,17 +8,17 @@ // - boards (board list changed) // - post (a post has been made) - $b = new Basic(); + $b = new RecentPosts(); $b->build($action, $settings); } // Wrap functions in a class so they don't interfere with normal Tinyboard operations - class Basic { + class RecentPosts { public function build($action, $settings) { global $config, $_theme; if($action == 'all') { - copy($config['dir']['homepage'] . '/' . $_theme . '/recent.css', $config['dir']['home'] . 'recent.css'); + //copy($config['dir']['homepage'] . '/' . $_theme . '/recent.css', $config['dir']['home'] . 'recent.css'); } $this->excluded = explode(' ', $settings['exclude']);