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".''."\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 = ''.$lang_common['Pages'].' '.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'; ?>
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[] = '
  • '.$lang_topic['Report'].'
  • '; $post_actions[] = '
  • '.$lang_topic['Delete'].'
  • '; $post_actions[] = '
  • '.$lang_topic['Edit'].'
  • '; $post_actions[] = '
  • '.$lang_topic['Quote'].'
  • '; if ($cur_topic['closed'] == '0') $post_actions[] = '
  • '.$lang_topic['Post reply'].'
  • '; } else { if (!$pun_user['is_guest']) $post_actions[] = '
  • '.$lang_topic['Report'].'
  • '; 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[] = '
  • '.$lang_topic['Delete'].'
  • '; if ($pun_user['g_edit_posts'] == '1') $post_actions[] = '
  • '.$lang_topic['Edit'].'
  • '; } if (($cur_topic['post_replies'] == '' && $pun_user['g_post_replies'] == '1') || $cur_topic['post_replies'] == '1') $post_actions[] = '
  • '.$lang_topic['Quote'].'
  • '; if (($cur_topic['post_replies'] == '' && $pun_user['g_post_replies'] == '1') || $cur_topic['post_replies'] == '1') $post_actions[] = '
  • '.$lang_topic['Post reply'].'
  • '; } } // 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']); } ?>

    ()  #

    ".$lang_blog['Read full'].")\n" ?>
    '."\n\t\t\t\t\t".'
      '."\n\t\t\t\t\t\t".implode("\n\t\t\t\t\t\t", $post_actions)."\n\t\t\t\t\t".'
    '."\n\t\t\t\t".'
    '."\n" ?>

    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)) { ?>
    fetch_assoc($result)) { if ($cur_forum['redirect_url'] == '') { $output = "\t\t\t\t\t".''."\n"; echo $output; } } ?>
    '."\n"; $output .= "\t\t\t\t\t\t".''.pun_htmlspecialchars($cur_forum['forum_name']).''."\n"; $output .= "\t\t\t\t\t".'
    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()); } ?>

    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 = ''.pun_htmlspecialchars($cur_topic['subject']).''; ?>