From ef7556194cfeac6fd52a115a9162e611f322aaa4 Mon Sep 17 00:00:00 2001 From: 8chan Date: Sat, 19 Jul 2014 18:41:48 +0000 Subject: [PATCH] Fix 55ch cancer; can now see next page of posts, ?/recent uses templating system --- inc/mod/pages.php | 33 +++++++++++++-------------------- templates/mod/recent_posts.html | 12 ++++++++++-- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/inc/mod/pages.php b/inc/mod/pages.php index 801ad9eb..292d36a2 100644 --- a/inc/mod/pages.php +++ b/inc/mod/pages.php @@ -2236,6 +2236,7 @@ function mod_recent_posts($lim) { error($config['error']['noaccess']); $limit = (is_numeric($lim))? $lim : 25; + $last_time = (isset($_GET['last']) && is_numeric($_GET['last'])) ? $_GET['last'] : 0; $mod_boards = array(); $boards = listBoards(); @@ -2256,37 +2257,29 @@ function mod_recent_posts($lim) { $query .= sprintf('SELECT *, %s AS `board` FROM ``posts_%s`` UNION ALL ', $pdo->quote($board['uri']), $board['uri']); } // Remove the last "UNION ALL" seperator and complete the query - $query = preg_replace('/UNION ALL $/', ') AS `all_posts` ORDER BY `time` DESC LIMIT ' . $limit, $query); - $query = query($query) or error(db_error()); + $query = preg_replace('/UNION ALL $/', ') AS `all_posts` WHERE (`time` < :last_time OR NOT :last_time) ORDER BY `time` DESC LIMIT ' . $limit, $query); + $query = prepare($query); + $query->bindValue(':last_time', $last_time); + $query->execute() or error(db_error($query)); $posts = $query->fetchAll(PDO::FETCH_ASSOC); - $body = '

Viewing last '.$limit.' posts

-

View 25 | 50 | 100

- Erase local data'; - foreach ($posts as $post) { + foreach ($posts as &$post) { openBoard($post['board']); if (!$post['thread']) { // Still need to fix this: $po = new Thread($post, '?/', $mod, false); - $string = $po->build(true); - $string = '

/'.$post['board'].'/'.$post['id'].'
' . $string; + $post['built'] = $po->build(true); } else { $po = new Post($post, '?/', $mod); - $string = $po->build(true); - $string = '

/'.$post['board'].'/'.$post['id'].'
' . $string; + $post['built'] = $po->build(true); } - $body .= $string . '
'; + $last_time = $post['time']; } - echo Element('page.html', array( - 'config' => $config, - 'mod' => $mod, - 'hide_dashboard_link' => true, - 'title' => _('Recent posts'), - 'subtitle' => '', - 'nojavascript' => false, - 'is_recent_posts' => true, - 'body' => $body + echo mod_page(_('Recent posts'), 'mod/recent_posts.html', array( + 'posts' => $posts, + 'limit' => $limit, + 'last_time' => $last_time ) ); diff --git a/templates/mod/recent_posts.html b/templates/mod/recent_posts.html index 4a2f9baa..7e38881b 100644 --- a/templates/mod/recent_posts.html +++ b/templates/mod/recent_posts.html @@ -1,6 +1,14 @@ -{% if posts|count %} +{% if not posts|count %}

({% trans 'There are no active posts.' %})

{% else %} - +

Viewing last {{ limit|e }} posts

+

View 25 | 50 | 100

+ Erase local data
+ {% for post in posts %} +

/{{ post.board }}/{{ post.id }}
+ {{ post.built }} +
+ {% endfor %} {% endif %} +Next {{ limit }} posts