Fix 55ch cancer; can now see next page of posts, ?/recent uses templating system

This commit is contained in:
8chan 2014-07-19 18:41:48 +00:00 committed by Fredrick Brennan
parent 8d0f1bf4ad
commit ef7556194c
2 changed files with 23 additions and 22 deletions

View File

@ -2236,6 +2236,7 @@ function mod_recent_posts($lim) {
error($config['error']['noaccess']); error($config['error']['noaccess']);
$limit = (is_numeric($lim))? $lim : 25; $limit = (is_numeric($lim))? $lim : 25;
$last_time = (isset($_GET['last']) && is_numeric($_GET['last'])) ? $_GET['last'] : 0;
$mod_boards = array(); $mod_boards = array();
$boards = listBoards(); $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']); $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 // 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 = preg_replace('/UNION ALL $/', ') AS `all_posts` WHERE (`time` < :last_time OR NOT :last_time) ORDER BY `time` DESC LIMIT ' . $limit, $query);
$query = query($query) or error(db_error()); $query = prepare($query);
$query->bindValue(':last_time', $last_time);
$query->execute() or error(db_error($query));
$posts = $query->fetchAll(PDO::FETCH_ASSOC); $posts = $query->fetchAll(PDO::FETCH_ASSOC);
$body = '<h4>Viewing last '.$limit.' posts</h4> foreach ($posts as &$post) {
<p>View <a href="?/recent/25"> 25 </a>|<a href="?/recent/50"> 50 </a>|<a href="?/recent/100"> 100 </a></p>
<a href="javascript:void(0)" id="erase-local-data" style="float:right; clear:both">Erase local data</a></div>';
foreach ($posts as $post) {
openBoard($post['board']); openBoard($post['board']);
if (!$post['thread']) { if (!$post['thread']) {
// Still need to fix this: // Still need to fix this:
$po = new Thread($post, '?/', $mod, false); $po = new Thread($post, '?/', $mod, false);
$string = $po->build(true); $post['built'] = $po->build(true);
$string = '<div class="post-wrapper" data-board="'.$post['board'].'"><hr/><a class="eita-link" id="eita-'.$post['board'].'-'.$post['id'].'" href="?/'.$post['board'].'/res/'.$post['id'].'.html#'.$post['id'].'">/'.$post['board'].'/'.$post['id'].'</a><br>' . $string;
} else { } else {
$po = new Post($post, '?/', $mod); $po = new Post($post, '?/', $mod);
$string = $po->build(true); $post['built'] = $po->build(true);
$string = '<div class="post-wrapper" data-board="'.$post['board'].'"><hr/><a class="eita-link" id="eita-'.$post['board'].'-'.$post['id'].'" href="?/'.$post['board'].'/res/'.$post['thread'].'.html#'.$post['id'].'">/'.$post['board'].'/'.$post['id'].'</a><br>' . $string;
} }
$body .= $string . '</div>'; $last_time = $post['time'];
} }
echo Element('page.html', array( echo mod_page(_('Recent posts'), 'mod/recent_posts.html', array(
'config' => $config, 'posts' => $posts,
'mod' => $mod, 'limit' => $limit,
'hide_dashboard_link' => true, 'last_time' => $last_time
'title' => _('Recent posts'),
'subtitle' => '',
'nojavascript' => false,
'is_recent_posts' => true,
'body' => $body
) )
); );

View File

@ -1,6 +1,14 @@
<script src="{{ config.additional_javascript_url }}js/mod/recent_posts.js"></script> <script src="{{ config.additional_javascript_url }}js/mod/recent_posts.js"></script>
{% if posts|count %} {% if not posts|count %}
<p style="text-align:center" class="unimportant">({% trans 'There are no active posts.' %})</p> <p style="text-align:center" class="unimportant">({% trans 'There are no active posts.' %})</p>
{% else %} {% else %}
<h4>Viewing last {{ limit|e }} posts</h4>
<p>View <a href="?/recent/25"> 25 </a>|<a href="?/recent/50"> 50 </a>|<a href="?/recent/100"> 100 </a></p>
<a href="javascript:void(0)" id="erase-local-data" style="float:right; clear:both">Erase local data</a></div>
{% for post in posts %}
<div class="post-wrapper" data-board="{{ post.board }}"><hr/><a class="eita-link" id="eita-{{ post.board }}-{{ post.id or post.thread }}" href="?/{{ post.board }}/res/{{ post.id or post.thread }}.html#{{ post.id or post.thread }}">/{{ post.board }}/{{ post.id }}</a><br>
{{ post.built }}
</div>
{% endfor %}
{% endif %} {% endif %}
<a href="/mod.php?/recent/{{ limit }}&amp;last={{ last_time }}">Next {{ limit }} posts</a>