diff options
| author | Benjamin Southall <applemansigloo@gmail.com> | 2016-09-23 22:38:24 +0900 |
|---|---|---|
| committer | Benjamin Southall <applemansigloo@gmail.com> | 2016-09-23 22:38:24 +0900 |
| commit | 31b69902bbfdccffd0ed7ba32f04aaf1479d41b7 (patch) | |
| tree | 98f594afd099e36e85de66bfef5b4a8cf8b64ed9 /templates/themes | |
| parent | 8b5688e12a3687f86c8c40d36a1327445cfb8143 (diff) | |
Add catalog support to all of rand, semi,rand and ukko themes
Diffstat (limited to 'templates/themes')
| -rw-r--r-- | templates/themes/catalog/info.php | 7 | ||||
| -rw-r--r-- | templates/themes/catalog/theme.php | 47 | ||||
| -rw-r--r-- | templates/themes/rand/theme.php | 1 | ||||
| -rw-r--r-- | templates/themes/semirand/theme.php | 1 | ||||
| -rw-r--r-- | templates/themes/ukko/theme.php | 1 |
5 files changed, 57 insertions, 0 deletions
diff --git a/templates/themes/catalog/info.php b/templates/themes/catalog/info.php index e2b13307..66c45082 100644 --- a/templates/themes/catalog/info.php +++ b/templates/themes/catalog/info.php @@ -47,6 +47,13 @@ ); $theme['config'][] = Array( + 'title' => 'Enable Rand catalog', + 'name' => 'enable_rand', + 'type' => 'checkbox', + 'default' => false, + 'comment' => 'Enable catalog for the Rand theme. This requires the Rand theme to be enabled.' + ); + $theme['config'][] = Array( 'title' => 'Use tooltipster', 'name' => 'use_tooltipster', 'type' => 'checkbox', diff --git a/templates/themes/catalog/theme.php b/templates/themes/catalog/theme.php index 9ecdb9d1..1199b54a 100644 --- a/templates/themes/catalog/theme.php +++ b/templates/themes/catalog/theme.php @@ -40,6 +40,14 @@ { $b->buildUkko(); } + + // FIXME: Check that Rand is actually enabled + if ($settings['enable_rand'] && ( + $action === 'all' || $action === 'post' || + $action === 'post-thread' || $action === 'post-delete')) + { + $b->buildRand(); + } } // Wrap functions in a class so they don't interfere with normal Tinyboard operations @@ -90,6 +98,45 @@ $this->saveForBoard($ukkoSettings['uri'], $recent_posts, $config['root'] . $ukkoSettings['uri']); } + + /** + * Build and save the HTML of the catalog for the Rand theme + */ + public function buildRand() { + global $config; + + $randSettings = themeSettings('rand'); + $queries = array(); + $threads = array(); + + $exclusions = explode(' ', $randSettings['exclude']); + $boards = array_diff(listBoards(true), $exclusions); + + foreach ($boards as $b) { + if (array_key_exists($b, $this->threadsCache)) { + $threads = array_merge($threads, $this->threadsCache[$b]); + } else { + $queries[] = $this->buildThreadsQuery($b); + } + } + + // Fetch threads from boards that haven't beenp processed yet + if (!empty($queries)) { + $sql = implode(' UNION ALL ', $queries); + $res = query($sql) or error(db_error()); + $threads = array_merge($threads, $res->fetchAll(PDO::FETCH_ASSOC)); + } + + // Sort in bump order + usort($threads, function($a, $b) { + return strcmp($b['bump'], $a['bump']); + }); + // Generate data for the template + $recent_posts = $this->generateRecentPosts($threads); + + $this->saveForBoard($randSettings['uri'], $recent_posts, + $config['root'] . $randSettings['uri']); + } /** * Build and save the HTML of the catalog for the given board diff --git a/templates/themes/rand/theme.php b/templates/themes/rand/theme.php index b4cfb4ff..e3814c4e 100644 --- a/templates/themes/rand/theme.php +++ b/templates/themes/rand/theme.php @@ -18,6 +18,7 @@ $body = ''; $overflow = array(); $board = array( + 'dir' => $this->settings['uri'] . "/", 'url' => $this->settings['uri'], 'name' => $this->settings['title'], 'title' => sprintf($this->settings['subtitle'], $this->settings['thread_limit']) diff --git a/templates/themes/semirand/theme.php b/templates/themes/semirand/theme.php index 1acecbfb..e8d3e56c 100644 --- a/templates/themes/semirand/theme.php +++ b/templates/themes/semirand/theme.php @@ -225,6 +225,7 @@ return Element('index.html', array( 'config' => $config, 'board' => array( + 'dir' => $this->settings['uri'] . "/", 'url' => $this->settings['uri'], 'title' => $this->settings['title'], 'subtitle' => str_replace('%s', $this->settings['thread_limit'], diff --git a/templates/themes/ukko/theme.php b/templates/themes/ukko/theme.php index 05525299..92dfb317 100644 --- a/templates/themes/ukko/theme.php +++ b/templates/themes/ukko/theme.php @@ -28,6 +28,7 @@ $body = ''; $overflow = array(); $board = array( + 'dir' => $this->settings['uri'] . "/", 'url' => $this->settings['uri'], 'uri' => $this->settings['uri'], 'name' => $this->settings['title'], |
