Пример #1
0
function topic_review($topic_id, $is_inline_review)
{
    // Begin PNphpBB2 Module
    //	global $db, $board_config, $template, $lang, $images, $theme, $phpEx, $phpbb_root_path;
    global $db, $board_config, $template, $lang, $images, $phpbb_theme, $phpEx, $phpbb_root_path;
    // End PNphpBB2 Module
    global $userdata, $user_ip;
    global $orig_word, $replacement_word;
    global $starttime;
    if (!$is_inline_review) {
        if (!isset($topic_id) || !$topic_id) {
            message_die(GENERAL_MESSAGE, 'Topic_post_not_exist');
        }
        //
        // Get topic info ...
        //
        $sql = "SELECT t.topic_title, f.forum_id, f.auth_view, f.auth_read, f.auth_post, f.auth_reply, f.auth_edit, f.auth_delete, f.auth_sticky, f.auth_announce, f.auth_pollcreate, f.auth_vote, f.auth_attachments \n\t\t\tFROM " . TOPICS_TABLE . " t, " . FORUMS_TABLE . " f \n\t\t\tWHERE t.topic_id = {$topic_id}\n\t\t\t\tAND f.forum_id = t.forum_id";
        /* -- mod : File Attachment Mod v2 Version 2.4.3 ---------------------------------------------------- */
        if (!intval($attach_config['disable_mod'])) {
            $tmp = '';
            attach_setup_viewtopic_auth($tmp, $sql);
        }
        /* -- fin : File Attachment Mod v2 Version 2.4.3 ---------------------------------------------------- */
        if (!($result = $db->sql_query($sql))) {
            message_die(GENERAL_ERROR, 'Could not obtain topic information', '', __LINE__, __FILE__, $sql);
        }
        if (!($forum_row = $db->sql_fetchrow($result))) {
            message_die(GENERAL_MESSAGE, 'Topic_post_not_exist');
        }
        $db->sql_freeresult($result);
        $forum_id = $forum_row['forum_id'];
        $topic_title = $forum_row['topic_title'];
        //
        // Start session management
        //
        $userdata = session_pagestart($user_ip, $forum_id);
        init_userprefs($userdata);
        //
        // End session management
        //
        $is_auth = array();
        $is_auth = auth(AUTH_ALL, $forum_id, $userdata, $forum_row);
        if (!$is_auth['auth_read']) {
            message_die(GENERAL_MESSAGE, sprintf($lang['Sorry_auth_read'], $is_auth['auth_read_type']));
        }
    }
    //
    // Define censored word matches
    //
    if (empty($orig_word) && empty($replacement_word)) {
        $orig_word = array();
        $replacement_word = array();
        obtain_word_list($orig_word, $replacement_word);
    }
    //
    // Dump out the page header and load viewtopic body template
    //
    if (!$is_inline_review) {
        global $gen_simple_header;
        $gen_simple_header = TRUE;
        $page_title = $lang['Topic_review'] . ' - ' . $topic_title;
        include $phpbb_root_path . 'includes/page_header.' . $phpEx;
        $template->set_filenames(array('reviewbody' => 'posting_topic_review.tpl'));
    }
    //
    // Go ahead and pull all data for this topic
    //
    $sql = "SELECT u.username, u.user_id, p.*,  pt.post_text, pt.post_subject, pt.bbcode_uid\n\t\tFROM " . POSTS_TABLE . " p, " . USERS_TABLE . " u, " . POSTS_TEXT_TABLE . " pt\n\t\tWHERE p.topic_id = {$topic_id}\n\t\t\tAND p.poster_id = u.user_id\n\t\t\tAND p.post_id = pt.post_id\n\t\tORDER BY p.post_time DESC\n\t\tLIMIT " . $board_config['posts_per_page'];
    if (!($result = $db->sql_query($sql))) {
        message_die(GENERAL_ERROR, 'Could not obtain post/user information', '', __LINE__, __FILE__, $sql);
    }
    /* -- mod : File Attachment Mod v2 Version 2.4.3 ---------------------------------------------------- */
    if (!intval($attach_config['disable_mod'])) {
        init_display_review_attachments($is_auth);
    }
    /* -- fin : File Attachment Mod v2 Version 2.4.3 ---------------------------------------------------- */
    //
    // Okay, let's do the loop, yeah come on baby let's do the loop
    // and it goes like this ...
    //
    if ($row = $db->sql_fetchrow($result)) {
        $mini_post_img = $images['icon_minipost'];
        $mini_post_alt = $lang['Post'];
        $i = 0;
        do {
            $poster_id = $row['user_id'];
            $poster = $row['username'];
            $post_date = create_date($board_config['default_dateformat'], $row['post_time'], $board_config['board_timezone']);
            //
            // Handle anon users posting with usernames
            //
            if ($poster_id == ANONYMOUS && $row['post_username'] != '') {
                $poster = $row['post_username'];
                $poster_rank = $lang['Guest'];
            } elseif ($poster_id == ANONYMOUS) {
                $poster = $lang['Guest'];
                $poster_rank = '';
            }
            $post_subject = $row['post_subject'] != '' ? $row['post_subject'] : '';
            $message = $row['post_text'];
            $bbcode_uid = $row['bbcode_uid'];
            //
            // If the board has HTML off but the post has HTML
            // on then we process it, else leave it alone
            //
            if (!$board_config['allow_html'] && $row['enable_html']) {
                $message = preg_replace('#(<)([\\/]?.*?)(>)#is', '&lt;\\2&gt;', $message);
            }
            if ($bbcode_uid != "") {
                $message = $board_config['allow_bbcode'] ? bbencode_second_pass($message, $bbcode_uid) : preg_replace('/\\:[0-9a-z\\:]+\\]/si', ']', $message);
            }
            $message = make_clickable($message);
            if (count($orig_word)) {
                $post_subject = preg_replace($orig_word, $replacement_word, $post_subject);
                $message = preg_replace($orig_word, $replacement_word, $message);
            }
            if ($board_config['allow_smilies'] && $row['enable_smilies']) {
                $message = smilies_pass($message);
            }
            $message = str_replace("\n", '<br />', $message);
            //
            // Again this will be handled by the templating
            // code at some point
            //
            // Begin PNphpBB2 Module
            //			$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
            //			$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];
            $row_color = !($i % 2) ? $phpbb_theme['td_color1'] : $phpbb_theme['td_color2'];
            $row_class = !($i % 2) ? $phpbb_theme['td_class1'] : $phpbb_theme['td_class2'];
            // End PNphpBB2 Module
            $template->assign_block_vars('postrow', array('ROW_COLOR' => '#' . $row_color, 'ROW_CLASS' => $row_class, 'MINI_POST_IMG' => $mini_post_img, 'POSTER_NAME' => DataUtil::formatForDisplay($poster), 'POST_DATE' => $post_date, 'POST_SUBJECT' => $post_subject ? $post_subject : $lang['Re'] . ' ' . $topic_title, 'MESSAGE' => $message, 'L_MINI_POST_ALT' => $mini_post_alt));
            /* -- mod : File Attachment Mod v2 Version 2.4.3 ---------------------------------------------------- */
            if (!intval($attach_config['disable_mod'])) {
                display_review_attachments($row['post_id'], $row['post_attachment'], $is_auth);
            }
            /* -- fin : File Attachment Mod v2 Version 2.4.3 ---------------------------------------------------- */
            $i++;
        } while ($row = $db->sql_fetchrow($result));
    } else {
        message_die(GENERAL_MESSAGE, 'Topic_post_not_exist', '', __LINE__, __FILE__, $sql);
    }
    $db->sql_freeresult($result);
    $template->assign_vars(array('L_AUTHOR' => $lang['Author'], 'L_MESSAGE' => $lang['Message'], 'L_POSTED' => $lang['Posted'], 'L_POST_SUBJECT' => $lang['Post_subject'], 'L_TOPIC_REVIEW' => $lang['Topic_review']));
    if (!$is_inline_review) {
        $template->pparse('reviewbody');
        include $phpbb_root_path . 'includes/page_tail.' . $phpEx;
    }
}
Пример #2
0
function topic_review($forum_id, $topic_id, $is_inline_review)
{
    global $db, $config, $auth, $user, $lang, $template, $images, $theme, $bbcode, $tree;
    global $user_ip, $starttime, $gen_simple_header;
    if (!$is_inline_review) {
        if (!isset($topic_id) || !$topic_id) {
            if (!defined('STATUS_404')) {
                define('STATUS_404', true);
            }
            message_die(GENERAL_MESSAGE, 'NO_TOPIC');
        }
        // Get topic info ...
        $sql = "SELECT t.topic_title, t.topic_calendar_time, t.topic_calendar_duration, t.topic_first_post_id, f.forum_id, f.auth_view, f.auth_read, f.auth_post, f.auth_reply, f.auth_edit, f.auth_delete, f.auth_sticky, f.auth_announce, f.auth_pollcreate, f.auth_vote, f.auth_attachments\n\t\t\tFROM " . TOPICS_TABLE . " t, " . FORUMS_TABLE . " f\n\t\t\tWHERE t.topic_id = {$topic_id}\n\t\t\t\tAND f.forum_id = t.forum_id";
        $tmp = '';
        attach_setup_viewtopic_auth($tmp, $sql);
        $result = $db->sql_query($sql);
        if (!($forum_row = $db->sql_fetchrow($result))) {
            if (!defined('STATUS_404')) {
                define('STATUS_404', true);
            }
            message_die(GENERAL_MESSAGE, 'NO_TOPIC');
        }
        $db->sql_freeresult($result);
        $forum_id = $forum_row['forum_id'];
        $topic_title = $forum_row['topic_title'];
        $topic_calendar_time = intval($forum_row['topic_calendar_time']);
        $topic_first_post_id = intval($forum_row['topic_first_post_id']);
        $topic_calendar_duration = intval($forum_row['topic_calendar_duration']);
        // Start session management
        $user->session_begin();
        $auth->acl($user->data);
        $user->setup();
        // End session management
        $is_auth = array();
        $is_auth = auth(AUTH_ALL, $forum_id, $user->data, $forum_row);
        if (!$is_auth['auth_read']) {
            message_die(GENERAL_MESSAGE, sprintf($lang['Sorry_auth_read'], $is_auth['auth_read_type']));
        }
        $gen_simple_header = true;
        $meta_content['page_title'] = $lang['Topic_review'] . ' - ' . $topic_title;
        $meta_content['description'] = '';
        $meta_content['keywords'] = '';
        page_header($meta_content['page_title'], true);
        $template->set_filenames(array('reviewbody' => 'posting_topic_review.tpl'));
    }
    // Go ahead and pull all data for this topic
    $sql = "SELECT u.username, u.user_id, p.*\n\t\tFROM " . POSTS_TABLE . " p, " . USERS_TABLE . " u\n\t\tWHERE p.topic_id = {$topic_id}\n\t\t\tAND p.poster_id = u.user_id\n\t\tORDER BY p.post_time DESC\n\t\tLIMIT " . $config['posts_per_page'];
    $result = $db->sql_query($sql);
    if (!empty($is_auth)) {
        init_display_review_attachments($is_auth);
    }
    // Okay, let's do the loop, yeah come on baby let's do the loop and it goes like this ...
    if ($row = $db->sql_fetchrow($result)) {
        //Begin Lo-Fi Mod
        global $lofi;
        //End Lo-Fi Mod
        $mini_post_img = $images['icon_minipost'];
        $mini_post_alt = $lang['Post'];
        $i = 0;
        do {
            $poster_id = $row['user_id'];
            $poster = $row['username'];
            $post_date = create_date($config['default_dateformat'], $row['post_time'], $config['board_timezone']);
            // Handle anon users posting with usernames
            if ($poster_id == ANONYMOUS && $row['post_username'] != '') {
                $poster = $row['post_username'];
                $poster_rank = $lang['Guest'];
            } elseif ($poster_id == ANONYMOUS) {
                $poster = $lang['Guest'];
                $poster_rank = '';
            }
            $post_subject = $row['post_subject'] != '' ? $row['post_subject'] : '';
            $message = $row['post_text'];
            // Quick Quote - BEGIN
            $look_up_array = array('\\"', '"', "<", ">", "\n", chr(13));
            $replacement_array = array('&q_mg;', '\\"', "&lt_mg;", "&gt_mg;", "\\n", "");
            $plain_message = $row['post_text'];
            $plain_message = strtr($plain_message, array_flip(get_html_translation_table(HTML_ENTITIES)));
            //Hide MOD
            if (preg_match('/\\[hide/i', $plain_message)) {
                $search = array("/\\[hide\\](.*?)\\[\\/hide\\]/");
                $replace = array('[hide]' . $lang['xs_bbc_hide_quote_message'] . '[/hide]');
                $plain_message = preg_replace($search, $replace, $plain_message);
            }
            //Hide MOD
            $plain_message = censor_text($plain_message);
            $plain_message = str_replace($look_up_array, $replacement_array, $plain_message);
            // Quick Quote - END
            $post_subject = censor_text($post_subject);
            $message = censor_text($message);
            $bbcode->allow_html = $config['allow_html'] && $row['enable_bbcode'] ? true : false;
            $bbcode->allow_bbcode = $config['allow_bbcode'] && $row['enable_bbcode'] ? true : false;
            $bbcode->allow_smilies = $config['allow_smilies'] && $row['enable_smilies'] ? true : false;
            $message = $bbcode->parse($message);
            if ($row['enable_autolinks_acronyms']) {
                $message = $bbcode->acronym_pass($message);
                $message = $bbcode->autolink_text($message, $forum_id);
            }
            //$message = kb_word_wrap_pass ($message);
            if (!empty($topic_calendar_time) && $topic_first_post_id == $row['post_id']) {
                $post_subject .= get_calendar_title($topic_calendar_time, $topic_calendar_duration);
            }
            // Again this will be handled by the templating code at some point
            $row_class = !($i % 2) ? $theme['td_class1'] : $theme['td_class2'];
            // Strip iframe from $message... we need this to avoid the topic review "iframe" being broken from BBCodes like YouTube
            $strip_array = array('@<iframe[^>]*?>.*?</iframe>@si');
            $message = preg_replace($strip_array, '', $message);
            $template->assign_block_vars('postrow', array('ROW_CLASS' => $row_class, 'MINI_POST_IMG' => $mini_post_img, 'POSTER_NAME' => $poster, 'POST_DATE' => $post_date, 'POST_SUBJECT' => $post_subject, 'MESSAGE' => $message, 'U_POST_ID' => $row['post_id'], 'PLAIN_MESSAGE' => $plain_message, 'L_MINI_POST_ALT' => $mini_post_alt));
            if (!empty($is_auth)) {
                display_review_attachments($row['post_id'], $row['post_attachment'], $is_auth);
            }
            $i++;
        } while ($row = $db->sql_fetchrow($result));
    } else {
        if (!defined('STATUS_404')) {
            define('STATUS_404', true);
        }
        message_die(GENERAL_MESSAGE, 'NO_TOPIC', '', __LINE__, __FILE__, $sql);
    }
    $db->sql_freeresult($result);
    $template->assign_vars(array('L_AUTHOR' => $lang['Author'], 'L_MESSAGE' => $lang['Message'], 'L_POSTED' => $lang['Posted'], 'L_POST_SUBJECT' => $lang['Post_subject'], 'IMG_QUICK_QUOTE' => $images['icon_quote'], 'IMG_OFFTOPIC' => $images['icon_offtopic'], 'L_QUICK_QUOTE' => $lang['QuickQuote'], 'L_OFFTOPIC' => $lang['OffTopic'], 'L_TOPIC_REVIEW' => $lang['Topic_review']));
    if (!$is_inline_review) {
        $template->pparse('reviewbody');
        page_footer(true, '', true);
    }
}