From 42abac99cf2b3a15871063243785a70de54adc5d Mon Sep 17 00:00:00 2001 From: Michael Save Date: Tue, 14 Feb 2012 20:46:06 +1100 Subject: recent theme: transition to Twig template files --- templates/themes/recent/theme.php | 179 +++++++++++++++++--------------------- 1 file changed, 79 insertions(+), 100 deletions(-) (limited to 'templates/themes/recent/theme.php') diff --git a/templates/themes/recent/theme.php b/templates/themes/recent/theme.php index 812760ff..13a5546f 100644 --- a/templates/themes/recent/theme.php +++ b/templates/themes/recent/theme.php @@ -18,129 +18,108 @@ global $config, $_theme; if($action == 'all') { - copy($config['dir']['themes'] . '/' . $_theme . '/recent.css', $config['dir']['home'] . 'recent.css'); + copy('templates/themes/recent/recent.css', $config['dir']['home'] . $settings['css']); } $this->excluded = explode(' ', $settings['exclude']); if($action == 'all' || $action == 'post') - // file_put_contents($config['dir']['home'] . $config['file_index'], $this->homepage($settings)); - file_write($config['dir']['home'] . 'recent.html', $this->homepage($settings)); + file_write($config['dir']['home'] . $settings['html'], $this->homepage($settings)); } // Build news page public function homepage($settings) { global $config, $board; - // HTML5 - $body = '' - . '' - . '' - . '' - . '' . $settings['title'] . '' - . ''; - - $boardlist = createBoardlist(); - $body .= '
' . $boardlist['top'] . '
'; - - $body .= '

' . $settings['title'] . '

'; - + $recent_images = Array(); + $recent_posts = Array(); + $stats = Array(); $boards = listBoards(); - // Wrap - $body .= '
'; - - // Recent images - $body .= '

Recent Images

    '; - $query = ''; - foreach($boards as &$_board) { - if(in_array($_board['uri'], $this->excluded)) - continue; - $query .= sprintf("SELECT *, '%s' AS `board` FROM `posts_%s` WHERE `file` IS NOT NULL UNION ALL ", $_board['uri'], $_board['uri']); - } - $query = preg_replace('/UNION ALL $/', 'ORDER BY `time` DESC LIMIT 3', $query); - $query = query($query) or error(db_error()); - - while($post = $query->fetch()) { - openBoard($post['board']); - - $body .= '
  • '; - } - $body .= '
'; + $query = ''; + foreach($boards as &$_board) { + if(in_array($_board['uri'], $this->excluded)) + continue; + $query .= sprintf("SELECT *, '%s' AS `board` FROM `posts_%s` WHERE `file` IS NOT NULL AND `file` != 'deleted' AND `thumb` != 'spoiler' UNION ALL ", $_board['uri'], $_board['uri']); + } + $query = preg_replace('/UNION ALL $/', 'ORDER BY `time` DESC LIMIT ' . (int)$settings['limit_images'], $query); + $query = query($query) or error(db_error()); - // Latest posts - $body .= '

Latest Posts

    '; - $query = ''; - foreach($boards as &$_board) { - if(in_array($_board['uri'], $this->excluded)) - continue; - $query .= sprintf("SELECT *, '%s' AS `board` FROM `posts_%s` UNION ALL ", $_board['uri'], $_board['uri']); - } - $query = preg_replace('/UNION ALL $/', 'ORDER BY `time` DESC LIMIT 30', $query); - $query = query($query) or error(db_error()); + while($post = $query->fetch()) { + openBoard($post['board']); - while($post = $query->fetch()) { - openBoard($post['board']); - - $body .= '
  • ' . $board['name'] . ': ' . pm_snippet($post['body'], 30) . '
  • '; - } + // board settings won't be available in the template file, so generate links now + $post['link'] = $config['root'] . $board['dir'] . $config['dir']['res'] . sprintf($config['file_page'], ($post['thread'] ? $post['thread'] : $post['id'])) . '#' . $post['id']; + $post['src'] = $config['uri_thumb'] . $post['thumb']; - $body .= '
'; + $recent_images[] = $post; + } - // Stats - $body .= '

Stats

    '; + $query = ''; + foreach($boards as &$_board) { + if(in_array($_board['uri'], $this->excluded)) + continue; + $query .= sprintf("SELECT *, '%s' AS `board` FROM `posts_%s` UNION ALL ", $_board['uri'], $_board['uri']); + } + $query = preg_replace('/UNION ALL $/', 'ORDER BY `time` DESC LIMIT ' . (int)$settings['limit_posts'], $query); + $query = query($query) or error(db_error()); - // Total posts - $query = 'SELECT SUM(`top`) AS `count` FROM ('; - foreach($boards as &$_board) { - if(in_array($_board['uri'], $this->excluded)) - continue; - $query .= sprintf("SELECT MAX(`id`) AS `top` FROM `posts_%s` UNION ALL ", $_board['uri']); - } - $query = preg_replace('/UNION ALL $/', ') AS `posts_all`', $query); - $query = query($query) or error(db_error()); - $res = $query->fetch(); - $body .= '
  • Total posts: ' . number_format($res['count']) . '
  • '; + while($post = $query->fetch()) { + openBoard($post['board']); - // Unique IPs - $query = 'SELECT COUNT(DISTINCT(`ip`)) AS `count` FROM ('; - foreach($boards as &$_board) { - if(in_array($_board['uri'], $this->excluded)) - continue; - $query .= sprintf("SELECT `ip` FROM `posts_%s` UNION ALL ", $_board['uri']); - } - $query = preg_replace('/UNION ALL $/', ') AS `posts_all`', $query); - $query = query($query) or error(db_error()); - $res = $query->fetch(); - $body .= '
  • Unique posters: ' . number_format($res['count']) . '
  • '; + $post['link'] = $config['root'] . $board['dir'] . $config['dir']['res'] . sprintf($config['file_page'], ($post['thread'] ? $post['thread'] : $post['id'])) . '#' . $post['id']; + $post['snippet'] = pm_snippet($post['body'], 30); + $post['board_name'] = $board['name']; - // Active content - $query = 'SELECT SUM(`filesize`) AS `count` FROM ('; - foreach($boards as &$_board) { - if(in_array($_board['uri'], $this->excluded)) - continue; - $query .= sprintf("SELECT `filesize` FROM `posts_%s` UNION ALL ", $_board['uri']); - } - $query = preg_replace('/UNION ALL $/', ') AS `posts_all`', $query); - $query = query($query) or error(db_error()); - $res = $query->fetch(); - $body .= '
  • Active content: ' . format_bytes($res['count']) . '
  • '; - - $body .= '
'; - - // End wrap - $body .= '
'; - - // Finish page - $body .= '

Powered by Tinyboard'; + $recent_posts[] = $post; + } - return $body; + // Total posts + $query = 'SELECT SUM(`top`) AS `count` FROM ('; + foreach($boards as &$_board) { + if(in_array($_board['uri'], $this->excluded)) + continue; + $query .= sprintf("SELECT MAX(`id`) AS `top` FROM `posts_%s` UNION ALL ", $_board['uri']); + } + $query = preg_replace('/UNION ALL $/', ') AS `posts_all`', $query); + $query = query($query) or error(db_error()); + $res = $query->fetch(); + $stats['total_posts'] = number_format($res['count']); + + // Unique IPs + $query = 'SELECT COUNT(DISTINCT(`ip`)) AS `count` FROM ('; + foreach($boards as &$_board) { + if(in_array($_board['uri'], $this->excluded)) + continue; + $query .= sprintf("SELECT `ip` FROM `posts_%s` UNION ALL ", $_board['uri']); + } + $query = preg_replace('/UNION ALL $/', ') AS `posts_all`', $query); + $query = query($query) or error(db_error()); + $res = $query->fetch(); + $stats['unique_posters'] = number_format($res['count']); + + // Active content + $query = 'SELECT SUM(`filesize`) AS `count` FROM ('; + foreach($boards as &$_board) { + if(in_array($_board['uri'], $this->excluded)) + continue; + $query .= sprintf("SELECT `filesize` FROM `posts_%s` UNION ALL ", $_board['uri']); + } + $query = preg_replace('/UNION ALL $/', ') AS `posts_all`', $query); + $query = query($query) or error(db_error()); + $res = $query->fetch(); + $stats['active_content'] = $res['count']; + + return Element('themes/recent/recent.html', Array( + 'settings' => $settings, + 'config' => $config, + 'boardlist' => createBoardlist(), + 'recent_images' => $recent_images, + 'recent_posts' => $recent_posts, + 'stats' => $stats + )); } }; -- cgit v1.3