Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Copyright (C) 2011 CRLin
- * License: http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
- */
- define('PUN_ROOT', dirname(__FILE__).'/');
- require PUN_ROOT.'include/common.php';
- if ($pun_user['g_read_board'] == '0')
- message($lang_common['No view']);
- $bid = 1; // Put forum ID here
- // Load the viewtopic.php language file
- require PUN_ROOT.'lang/'.$pun_user['language'].'/forum.php';
- require PUN_ROOT.'lang/'.$pun_user['language'].'/topic.php';
- // Load the viewforum.php language file
- if (file_exists(PUN_ROOT.'lang/'.$pun_user['language'].'/blog.php'))
- require PUN_ROOT.'lang/'.$pun_user['language'].'/blog.php';
- else
- require PUN_ROOT.'lang/English/blog.php';
- $message_len = 200; // Short message for Not Admin
- $pun_user['disp_topics'] = 10; // Number of topics to display per page
- // Display topics number
- $last_topics = 10;
- $most_replies = 10;
- $most_views = 10;
- $cut_str = 17; // Topics subject
- // Fetch some info about the forum
- if (!$pun_user['is_guest'])
- $result = $db->query('SELECT f.forum_name, f.redirect_url, f.moderators, f.num_topics, f.sort_by, fp.post_topics, s.user_id AS is_subscribed FROM '.$db->prefix.'forums AS f LEFT JOIN '.$db->prefix.'forum_subscriptions AS s ON (f.id=s.forum_id AND s.user_id='.$pun_user['id'].') LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$pun_user['g_id'].') WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND f.id='.$bid) or error('Unable to fetch forum info', __FILE__, __LINE__, $db->error());
- else
- $result = $db->query('SELECT f.forum_name, f.redirect_url, f.moderators, f.num_topics, f.sort_by, fp.post_topics, 0 AS is_subscribed FROM '.$db->prefix.'forums AS f LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$pun_user['g_id'].') WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND f.id='.$bid) or error('Unable to fetch forum info', __FILE__, __LINE__, $db->error());
- $cur_forum = $db->fetch_assoc($result);
- if ($cur_forum['redirect_url'] != '')
- {
- header('Location: '.$cur_forum['redirect_url']);
- exit;
- }
- // Can we or can we not post new topics?
- $post_link = '';
- if ($bid > 0)
- {
- // Sort out who the moderators are and if we are currently a moderator (or an admin)
- $mods_array = ($cur_forum['moderators'] != '') ? unserialize($cur_forum['moderators']) : array();
- $is_admmod = ($pun_user['g_id'] == PUN_ADMIN || ($pun_user['g_moderator'] == '1' && array_key_exists($pun_user['username'], $mods_array))) ? true : false;
- if (($cur_forum['post_topics'] == '' && $pun_user['g_post_topics'] == '1') || $cur_forum['post_topics'] == '1' || $is_admmod)
- $post_link = "\t\t\t".'<p class="postlink conr"><a href="post.php?fid='.$bid.'">'.$lang_forum['Post topic'].'</a></p>'."\n";
- else
- $post_link = '';
- }
- // Count topics
- if ($pun_user['g_id'] == PUN_ADMIN)
- {
- $result = $db->query('SELECT COUNT(t.id), t.forum_id, t.moved_to FROM '.$db->prefix.'topics as t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE t.moved_to IS NULL'.$sql_fid) or error('Unable to get the admin\'s topic list', __FILE__, __LINE__, $db->error());
- }
- elseif ($pun_user['is_guest'])
- {
- $result = $db->query('SELECT COUNT(t.id), t.forum_id, t.moved_to FROM '.$db->prefix.'topics as t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL'.$sql_fid) or error('Unable to get the guest\'s topic list', __FILE__, __LINE__, $db->error());
- }
- else
- {
- $result = $db->query('SELECT COUNT(t.id), t.forum_id, t.moved_to FROM '.$db->prefix.'topics as t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$pun_user['g_id'].') WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL'.$sql_fid) or error('Unable to get the member\'s topic list', __FILE__, __LINE__, $db->error());
- }
- $num_topics = $db->result($result);
- $num_pages = ceil($num_topics / $pun_user['disp_topics']);//$pun_user['disp_posts'];
- $p = (!isset($_GET['p']) || $_GET['p'] <= 1 || $_GET['p'] > $num_pages) ? 1 : intval($_GET['p']);
- $start_from = $pun_user['disp_topics'] * ($p - 1);
- // Generate paging links
- $paging_links = '<span class="pages-label">'.$lang_common['Pages'].' </span>'.paginate($num_pages, $p, 'viewblog.php?bid='.$bid);
- $page_title = array(pun_htmlspecialchars($pun_config['o_board_title']), $lang_common['Blog']);
- define('PUN_ALLOW_INDEX', 1);
- define('PUN_ACTIVE_PAGE', 'index');
- require PUN_ROOT.'header.php';
- ?>
- <div class="linkst">
- <div class="inbox crumbsplus">
- <ul class="crumbs">
- <li><a href="viewblog.php"><?php echo $lang_common['Blog'] ?></a></li>
- <?php
- if ($bid >= 1)
- {
- ?>
- <li><span>» </span><a href="viewblog.php?bid=<?php echo $bid ?>"><strong><?php echo pun_htmlspecialchars($cur_forum['forum_name']) ?></strong></a></li>
- <?php
- }
- ?>
- </ul>
- <div class="pagepost">
- <p class="pagelink conl"><?php echo $paging_links ?></p>
- <?php echo $post_link ?>
- </div>
- <div class="clearer"></div>
- </div>
- </div>
- <div class="blogright">
- <?php
- generate_forumlinks($pun_user['g_id']);
- most_topics('last', $last_topics);
- most_topics('most_replies', $most_replies);
- most_topics('most_views', $most_views);
- ?>
- </div>
- <div class="blogleft">
- <?php
- require PUN_ROOT.'include/parser.php';
- $post_count = 0; // Keep track of post numbers
- if ($pun_user['g_id'] == PUN_ADMIN)
- {
- $result = $db->query('SELECT t.id, t.poster, t.subject, t.posted, t.first_post_id, t.last_post, t.last_post_id, t.last_poster, t.closed, t.num_replies, t.num_views, t.moved_to, t.forum_id, p.poster_id, p.topic_id, p.message, p.hide_smilies FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'posts AS p ON t.id=p.topic_id INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE t.first_post_id=p.id AND t.moved_to IS NULL'.$sql_fid.' ORDER BY t.posted DESC LIMIT '.$start_from.', '.$pun_user['disp_topics']) or error('Unable to get the admin\'s topic list', __FILE__, __LINE__, $db->error());
- }
- elseif ($pun_user['is_guest'])
- {
- $result = $db->query('SELECT t.id, t.poster, t.subject, t.posted, t.first_post_id, t.last_post, t.last_post_id, t.last_poster, t.closed, t.num_replies, t.num_views, t.moved_to, t.forum_id, p.poster_id, p.topic_id, p.message, p.hide_smilies FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'posts AS p ON t.id=p.topic_id INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE t.first_post_id=p.id AND (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL'.$sql_fid.' ORDER BY t.posted DESC LIMIT '.$start_from.', '.$pun_user['disp_topics']) or error('Unable to get the guest\'s topic list', __FILE__, __LINE__, $db->error());
- }
- else
- {
- $result = $db->query('SELECT t.id, t.poster, t.subject, t.posted, t.first_post_id, t.last_post, t.last_post_id, t.last_poster, t.closed, t.num_replies, t.num_views, t.moved_to, t.forum_id, p.poster_id, p.topic_id, p.message, p.hide_smilies FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'posts AS p ON t.id=p.topic_id INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$pun_user['g_id'].') WHERE t.first_post_id=p.id AND (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL'.$sql_fid.' ORDER BY t.posted DESC LIMIT '.$start_from.', '.$pun_user['disp_topics']) or error('Unable to get the member\'s topic list', __FILE__, __LINE__, $db->error());
- }
- if ($db->num_rows($result)) // If there are topics
- {
- while ($cur_topic = $db->fetch_assoc($result)) {
- $post_count++;
- $post_actions = array();
- if ($pun_config['o_censoring'] == '1')
- $cur_topic['subject'] = censor_words($cur_topic['subject']);
- // Generation post action array (quote, edit, delete etc.)
- if ($pun_user['g_id'] == PUN_ADMIN)
- {
- $post_actions[] = '<li class="postreport"><span><a href="misc.php?report='.$cur_topic['id'].'">'.$lang_topic['Report'].'</a></span></li>';
- $post_actions[] = '<li class="postdelete"><span><a href="delete.php?id='.$cur_topic['first_post_id'].'">'.$lang_topic['Delete'].'</a></span></li>';
- $post_actions[] = '<li class="postedit"><span><a href="edit.php?id='.$cur_topic['first_post_id'].'">'.$lang_topic['Edit'].'</a></span></li>';
- $post_actions[] = '<li class="postquote"><span><a href="post.php?tid='.$cur_topic['id'].'&qid='.$cur_topic['first_post_id'].'">'.$lang_topic['Quote'].'</a></span></li>';
- if ($cur_topic['closed'] == '0')
- $post_actions[] = '<li class="postreply"><span><a href="post.php?tid='.$cur_topic['id'].'">'.$lang_topic['Post reply'].'</a></span></li>';
- }
- else
- {
- if (!$pun_user['is_guest'])
- $post_actions[] = '<li class="postreport"><span><a href="misc.php?report='.$cur_topic['first_post_id'].'">'.$lang_topic['Report'].'</a></span></li>';
- if ($cur_topic['closed'] == '0')
- {
- if ($cur_topic['poster_id'] == $pun_user['id'])
- {
- if (($pun_user['g_delete_topics'] == '1') || $pun_user['g_delete_posts'] == '1')
- $post_actions[] = '<li class="postdelete"><span><a href="delete.php?id='.$cur_topic['first_post_id'].'">'.$lang_topic['Delete'].'</a></span></li>';
- if ($pun_user['g_edit_posts'] == '1')
- $post_actions[] = '<li class="postedit"><span><a href="edit.php?id='.$cur_topic['first_post_id'].'">'.$lang_topic['Edit'].'</a></span></li>';
- }
- if (($cur_topic['post_replies'] == '' && $pun_user['g_post_replies'] == '1') || $cur_topic['post_replies'] == '1')
- $post_actions[] = '<li class="postquote"><span><a href="post.php?tid='.$cur_topic['id'].'&qid='.$cur_topic['first_post_id'].'">'.$lang_topic['Quote'].'</a></span></li>';
- if (($cur_topic['post_replies'] == '' && $pun_user['g_post_replies'] == '1') || $cur_topic['post_replies'] == '1')
- $post_actions[] = '<li class="postreply"><span><a href="post.php?tid='.$cur_topic['id'].'">'.$lang_topic['Post reply'].'</a></span></li>';
- }
- }
- // Short message for Not Admin
- $short = false;
- if ((mb_strlen($cur_topic['message'], 'UTF-8') > $message_len) && ($pun_user['g_id'] != PUN_ADMIN))
- {
- $message_len++;
- $tmp = mb_substr($cur_topic['message'], 0, $message_len, 'UTF-8');
- while(!parse_message($tmp, $cur_topic['hide_smilies']))
- {
- $message_len++;
- $tmp = mb_substr($cur_topic['message'], 0, $message_len, 'UTF-8');
- }
- if ($cur_topic['message'] != $tmp) $short = true;
- // Perform the main parsing of the message (BBCode, smilies, censor words etc)
- $cur_topic['message'] = parse_message($tmp, $cur_topic['hide_smilies']);
- }
- else
- {
- // Perform the main parsing of the message (BBCode, smilies, censor words etc)
- $cur_topic['message'] = parse_message($cur_topic['message'], $cur_topic['hide_smilies']);
- }
- ?>
- <div id="p<?php echo $cur_topic['first_post_id'] ?>" class="blockpost<?php echo ($post_count % 2 == 0) ? ' roweven' : ' rowodd' ?>">
- <h2><span><span class="conr">(<a href="viewtopic.php?pid=<?php echo $cur_topic['first_post_id'].'#p'.$cur_topic['first_post_id'] ?>"><?php echo format_time($cur_topic['posted']) ?></a>) #<?php echo ($start_from + $post_count) ?></span> <a href="viewtopic.php?pid=<?php echo $cur_topic['first_post_id'].'#p'.$cur_topic['first_post_id'] ?>"><?php echo pun_htmlspecialchars($cur_topic['subject']) ?></a></span></h2>
- <div class="box">
- <div class="inbox">
- <div class="blogpostmsg">
- <?php echo $cur_topic['message']."\n" ?>
- <?php
- if($short) echo "(<a href='viewtopic.php?pid=".$cur_topic['first_post_id']."#p".$cur_topic['first_post_id']."'>".$lang_blog['Read full']."</a>)\n"
- ?>
- <div class="postfoot">
- <?php if (count($post_actions)) echo "\t\t\t\t".'<div class="postfootright">'."\n\t\t\t\t\t".'<ul>'."\n\t\t\t\t\t\t".implode("\n\t\t\t\t\t\t", $post_actions)."\n\t\t\t\t\t".'</ul>'."\n\t\t\t\t".'</div>'."\n" ?>
- </div>
- </div>
- </div>
- </div>
- </div>
- <?php
- }
- }
- else
- {
- ?>
- <div id="p0" class="blockpost rowodd">
- <h2><span><?php echo $lang_common['Topic']; ?></span></h2>
- <div class="box">
- <div class="inbox">
- <div class="blogpostmsg">
- <?php echo $lang_common['Never'] ?>
- </div>
- </div>
- </div>
- </div>
- <?php
- }
- ?>
- <div class="postlinksb">
- <div class="inbox crumbsplus">
- <div class="pagepost">
- <p class="pagelink conl"><?php echo $paging_links ?></p>
- <?php echo $post_link ?>
- </div>
- <ul class="crumbs">
- <li><a href="viewblog.php"><?php echo $lang_common['Blog'] ?></a></li>
- <?php
- if ($bid >= 1)
- {
- ?>
- <li><span>» </span><a href="viewblog.php?bid=<?php echo $bid ?>"><strong><?php echo pun_htmlspecialchars($cur_forum['forum_name']) ?></strong></a></li>
- <?php
- }
- ?>
- </ul>
- <div class="clearer"></div>
- </div>
- </div>
- </div>
- <div class="viewblogfoot"></div>
- <?php
- //$footer_style = 'viewblog';
- $pun_config['o_quickjump'] = '0';
- require PUN_ROOT.'footer.php';
- //
- // Generate forum links PHP scripts
- //
- function generate_forumlinks($group_id = false)
- {
- global $db, $lang_blog, $pun_user;
- $groups = array();
- // If a group_id was supplied, we generate the forum links cache for that group only
- if ($group_id !== false)
- {
- // Is this group even allowed to read forums?
- $result = $db->query('SELECT g_read_board FROM '.$db->prefix.'groups WHERE g_id='.$group_id) or error('Unable to fetch user group read permission', __FILE__, __LINE__, $db->error());
- $read_board = $db->result($result);
- $groups[$group_id] = $read_board;
- }
- else
- {
- // A group_id was not supplied, so we generate the forum links cache for all groups
- $result = $db->query('SELECT g_id, g_read_board FROM '.$db->prefix.'groups') or error('Unable to fetch user group list', __FILE__, __LINE__, $db->error());
- $num_groups = $db->num_rows($result);
- while ($row = $db->fetch_row($result))
- $groups[$row[0]] = $row[1];
- }
- // Loop through the groups in $groups and output the cache for each of them
- foreach ($groups as $group_id => $read_board)
- {
- if ($read_board == '1')
- {
- $result = $db->query('SELECT c.id AS cid, c.cat_name, f.id AS fid, f.forum_name, f.redirect_url FROM '.$db->prefix.'categories AS c INNER JOIN '.$db->prefix.'forums AS f ON c.id=f.cat_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$group_id.') WHERE fp.read_forum IS NULL OR fp.read_forum=1 ORDER BY c.disp_position, c.id, f.disp_position') or error('Unable to fetch category/forum list', __FILE__, __LINE__, $db->error());
- if ($db->num_rows($result))
- {
- ?>
- <div id="vf" class="blocktable">
- <!--h2><span><?php echo $lang_blog['All forums'] ?></span></h2-->
- <div class="box">
- <div class="inbox">
- <table cellspacing="0">
- <thead>
- <tr><th class="tcl" scope="col">
- <?php echo $lang_blog['All forums'] ?>
- </th></tr>
- </thead>
- <tbody>
- <?php
- while ($cur_forum = $db->fetch_assoc($result))
- {
- if ($cur_forum['redirect_url'] == '')
- {
- $output = "\t\t\t\t\t".'<tr><td class="tcl"><div class="tclcon">'."\n";
- $output .= "\t\t\t\t\t\t".'<a href="viewblog.php?bid='.$cur_forum['fid'].'">'.pun_htmlspecialchars($cur_forum['forum_name']).'</a>'."\n";
- $output .= "\t\t\t\t\t".'</div></td></tr>'."\n";
- echo $output;
- }
- }
- ?>
- </tbody>
- </table>
- </div>
- </div>
- </div>
- <?php
- }
- }
- }
- }
- function most_topics($query, $topics_num)
- {
- global $db, $lang_blog, $pun_user, $cut_str;
- switch ($query)
- {
- case 'last':
- $sort_by = 't.last_post DESC';
- $title = $lang_blog['Last topics'];
- break;
- case 'most_replies':
- $sort_by = 't.num_replies DESC';
- $where_sql = ' AND t.num_replies > 0';
- $title = $lang_blog['Most replies'];
- break;
- case 'most_views':
- $sort_by = 't.num_views DESC';
- $where_sql = ' AND t.num_views > 0';
- $title = $lang_blog['Most views'];
- break;
- default:
- $sort_by = 't.last_post DESC';
- $title = $lang_blog['Last topics'];
- break;
- }
- if ($pun_user['g_id'] == PUN_ADMIN)
- {
- $result = $db->query('SELECT t.id, t.poster, t.subject, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.num_views, t.moved_to, t.forum_id FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE t.moved_to IS NULL'.$where_sql.' ORDER BY '.$sort_by.' LIMIT '.$topics_num) or error('Unable to get the admin\'s topic list', __FILE__, __LINE__, $db->error());
- }
- elseif ($pun_user['is_guest'])
- {
- $result = $db->query('SELECT t.id, t.poster, t.subject, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.num_views, t.moved_to, t.forum_id FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL'.$where_sql.' ORDER BY '.$sort_by.' LIMIT '.$topics_num) or error('Unable to get the guest\'s topic list', __FILE__, __LINE__, $db->error());
- }
- else
- {
- $result = $db->query('SELECT t.id, t.poster, t.subject, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.num_views, t.moved_to, t.forum_id FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$pun_user['g_id'].') WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL'.$where_sql.' ORDER BY '.$sort_by.' LIMIT '.$topics_num) or error('Unable to get the member\'s topic list', __FILE__, __LINE__, $db->error());
- }
- ?>
- <div id="most<?php echo $query; ?>" class="blockpost">
- <h2><span><?php echo $title ?></span></h2>
- <div class="box">
- <div class="inbox">
- <table cellspacing="0">
- <tbody>
- <tr><td>
- <?php
- if ($db->num_rows($result))
- {
- while ($cur_topic = $db->fetch_assoc($result)) {
- if ($pun_config['o_censoring'] == '1')
- $cur_topic['subject'] = censor_words($cur_topic['subject']);
- if (mb_strlen($cur_topic['subject'])>$cut_str && strlen($cur_topic['subject'])>$cut_str)
- {
- $cur_topic['subject'] = mb_substr($cur_topic['subject'], 0,$cut_str).'...';
- }
- $subject = '<a href="viewtopic.php?pid='.$cur_topic['last_post_id'].'#p'.$cur_topic['last_post_id'].'" title="'.$lang_common['by'].' '.pun_htmlspecialchars($cur_topic['last_poster']).' '.format_time($cur_topic['last_post']).'">'.pun_htmlspecialchars($cur_topic['subject']).'</a>';
- ?>
- <!--tr><td-->
- <div class="tclcon1">
- <?php echo $subject ?>
- </div>
- <!--/td></tr-->
- <?php
- }
- }
- else
- {
- ?>
- <!--tr><td-->
- <div class="tclcon1">
- <?php echo $lang_common['Never'] ?>
- </div>
- <!--/td></tr-->
- <?php
- }
- ?>
- </td></tr>
- </tbody></table></div></div></div>
- <?php
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement