summaryrefslogtreecommitdiff
path: root/inc/mod/pages.php
diff options
context:
space:
mode:
authorsinuca <55vitaminado@gmail.com>2014-03-17 19:11:16 -0300
committerczaks <marcin@6irc.net>2014-03-25 11:35:04 +0100
commitfb2b66e2dd67ceefc94d8e64eedd9300f64d695f (patch)
treea24eb1cebdad9949780630c3444fe52d82f33706 /inc/mod/pages.php
parenteac7d10ee089a7d3b7fb2fe0eed97ce01c833982 (diff)
Recent posts functionality
Conflicts: inc/config.php inc/mod/pages.php mod.php
Diffstat (limited to 'inc/mod/pages.php')
-rw-r--r--inc/mod/pages.php66
1 files changed, 66 insertions, 0 deletions
diff --git a/inc/mod/pages.php b/inc/mod/pages.php
index a247e35c..b9f3b045 100644
--- a/inc/mod/pages.php
+++ b/inc/mod/pages.php
@@ -2213,6 +2213,72 @@ function mod_report_dismiss($id, $all = false) {
header('Location: ?/reports', true, $config['redirect_http']);
}
+function mod_recent_posts($lim) {
+ global $config, $mod, $pdo;
+
+ if (!hasPermission($config['mod']['recent']))
+ error($config['error']['noaccess']);
+
+ $limit = (is_numeric($lim))? $lim : 25;
+
+ $mod_boards = array();
+ $boards = listBoards();
+
+ //if not all boards
+ if ($mod['boards'][0]!='*') {
+ foreach ($boards as $board) {
+ if (in_array($board['uri'], $mod['boards']))
+ $mod_boards[] = $board;
+ }
+ } else {
+ $mod_boards = $boards;
+ }
+
+ // Manually build an SQL query
+ $query = 'SELECT * FROM (';
+ foreach ($mod_boards as $board) {
+ $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());
+ $posts = $query->fetchAll(PDO::FETCH_ASSOC);
+
+ $body = '<h4>Viewing last '.$limit.' 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>';
+ 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);
+ $replacement = str_replace('<p class="fileinfo">',
+ '<div class="post-wrapper" data-board="'.$post['board'].'"><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><p class="fileinfo">',
+ $string);
+ } else {
+ $po = new Post($post, '?/', $mod);
+ $string = $po->build(true);
+ $replacement = str_replace('<div class="post reply"',
+ '<div class="post-wrapper" data-board="'.$post['board'].'"><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><div class="post reply"',
+ $string);
+ }
+ $body .= $replacement . '</div>';
+ }
+
+ echo Element('modpage.html', array(
+ 'config' => $config,
+ 'mod' => $mod,
+ 'hide_dashboard_link' => true,
+ 'title' => _('Recent posts'),
+ 'subtitle' => '',
+ 'nojavascript' => false,
+ 'is_recent_posts' => true,
+ 'body' => $body
+ )
+ );
+
+}
function mod_config($board_config = false) {
global $config, $mod, $board;