コード例 #1
0
ファイル: digest.php プロジェクト: trabisdementia/xuups
 function buildDigest(&$digest)
 {
     global $xoopsUser, $xoopsConfig, $xoopsModule, $xoopsModuleConfig;
     if (!defined('SUMMARY_LENGTH')) {
         define('SUMMARY_LENGTH', 100);
     }
     $forum_handler =& xoops_getmodulehandler('forum', 'newbb');
     $thisUser = $xoopsUser;
     $xoopsUser = null;
     // To get posts accessible by anonymous
     $xoopsUser = $thisUser;
     $access_forums = $forum_handler->getIdsByPermission();
     // get all accessible forums
     $forum_criteria = ' AND t.forum_id IN (' . implode(',', $access_forums) . ')';
     $approve_criteria = ' AND t.approved = 1 AND p.approved = 1';
     $time_criteria = ' AND t.digest_time > ' . $this->last_digest;
     $karma_criteria = $xoopsModuleConfig['enable_karma'] ? " AND p.post_karma=0" : "";
     $reply_criteria = $xoopsModuleConfig['allow_require_reply'] ? " AND p.require_reply=0" : "";
     $query = 'SELECT t.topic_id, t.forum_id, t.topic_title, t.topic_time, t.digest_time, p.uid, p.poster_name, pt.post_text FROM ' . $this->db->prefix('bb_topics') . ' t, ' . $this->db->prefix('bb_posts_text') . ' pt, ' . $this->db->prefix('bb_posts') . ' p WHERE t.topic_digest = 1 AND p.topic_id=t.topic_id AND p.pid=0 ' . $forum_criteria . $approve_criteria . $time_criteria . $karma_criteria . $reply_criteria . ' AND pt.post_id=p.post_id ORDER BY t.digest_time DESC';
     if (!($result = $this->db->query($query))) {
         //echo "<br />No result:<br />$query";
         return false;
     }
     $rows = array();
     $users = array();
     while ($row = $this->db->fetchArray($result)) {
         $users[$row['uid']] = 1;
         $rows[] = $row;
     }
     if (count($rows) < 1) {
         return false;
     }
     $uids = array_keys($users);
     if (count($uids) > 0) {
         $member_handler =& xoops_gethandler('member');
         $user_criteria = new Criteria('uid', "(" . implode(',', $uids) . ")", 'IN');
         $users = $member_handler->getUsers(new Criteria('uid', "(" . implode(',', $uids) . ")", 'IN'), true);
     } else {
         $users = array();
     }
     foreach ($rows as $topic) {
         if ($topic['uid'] > 0) {
             if (isset($users[$topic['uid']]) && is_object($users[$topic['uid']]) && $users[$topic['uid']]->isActive()) {
                 $topic['uname'] = $users[$topic['uid']]->getVar('uname');
             } else {
                 $topic['uname'] = $xoopsConfig['anonymous'];
             }
         } else {
             $topic['uname'] = $topic['poster_name'] ? $topic['poster_name'] : $xoopsConfig['anonymous'];
         }
         $summary = xoops_substr(newbb_html2text($topic['post_text']), 0, SUMMARY_LENGTH);
         $author = $topic['uname'] . " (" . formatTimestamp($topic['topic_time']) . ")";
         $link = XOOPS_URL . "/modules/" . $xoopsModule->dirname() . '/viewtopic.php?topic_id=' . $topic['topic_id'] . '&amp;forum=' . $topic['forum_id'];
         $title = $topic['topic_title'];
         $digest->addItem($title, $link, $author, $summary);
     }
     $digest->buildContent();
     return true;
 }
コード例 #2
0
ファイル: forum.php プロジェクト: BackupTheBerlios/soopa
 function getAllTopics($forum, $startdate, $start, $sortname, $sortorder, $type = '', $excerpt = 0)
 {
     global $xoopsModule, $xoopsConfig, $xoopsModuleConfig, $forumImage, $forumUrl, $myts, $xoopsUser, $viewall_forums;
     $UserUid = is_object($xoopsUser) ? $xoopsUser->getVar('uid') : null;
     $topic_lastread = newbb_getcookie('LT', true);
     if (is_object($forum)) {
         $forum_criteria = ' AND t.forum_id = ' . $forum->getVar('forum_id');
         $hot_threshold = $forum->getVar('hot_threshold');
         $allow_subject_prefix = $forum->getVar('allow_subject_prefix');
     } else {
         $hot_threshold = 10;
         $allow_subject_prefix = 0;
         if (is_array($viewall_forums) && count($viewall_forums) > 0) {
             $forum_criteria = ' AND t.forum_id IN (' . implode(',', array_keys($viewall_forums)) . ')';
         } else {
             $forum_criteria = '';
         }
     }
     $sort_sticky = '';
     switch ($type) {
         case 'digest':
             $post_time = ' p.post_time > ' . $startdate;
             $extra_criteria = ' AND topic_digest = 1';
             break;
         case 'unreplied':
             $post_time = ' p.post_time > ' . $startdate;
             $extra_criteria = ' AND topic_replies < 1';
             break;
         case 'unread':
             $post_time = ' p.post_time > ' . max($GLOBALS['last_visit'], $startdate);
             $extra_criteria = '';
             break;
         case 'all':
             // For viewall.php; do not display sticky topics at first
             $post_time = ' p.post_time > ' . $startdate;
             $extra_criteria = '';
             break;
         default:
             $post_time = ' (p.post_time > ' . $startdate . ' OR t.topic_sticky=1)';
             $sort_sticky = ' t.topic_sticky DESC';
             $extra_criteria = '';
             break;
     }
     $sort = $sort_sticky;
     $sort_in = trim($sortname . ' ' . $sortorder);
     if ($sort) {
         if ($sort_in) {
             $sort .= ', ' . $sort_in;
         }
     } elseif ($sort_in) {
         $sort = $sort_in;
     }
     if (!empty($sort)) {
         $sort = ' ORDER BY ' . $sort;
     }
     $approve_criteria = ' AND t.approved = 1 AND p.approved = 1';
     if ($excerpt == 0) {
         $sql = 'SELECT t.*, u.name, u.uname, u2.uid, u2.name as last_post_name, u2.uname as last_poster, p.post_time as last_post_time, p.poster_name as last_poster_name, p.icon, p.post_id FROM ' . $this->db->prefix("bb_topics") . ' t LEFT JOIN ' . $this->db->prefix("users") . ' u ON u.uid = t.topic_poster LEFT JOIN ' . $this->db->prefix('bb_posts') . ' p ON p.post_id = t.topic_last_post_id LEFT JOIN ' . $this->db->prefix("users") . ' u2 ON  u2.uid = p.uid WHERE ';
     } else {
         $sql = 'SELECT t.*, u.name, u.uname, u2.uid, u2.name as last_post_name, u2.uname as last_poster, p.post_time as last_post_time, p.poster_name as last_poster_name, p.icon, p.post_id, p.post_karma, p.require_reply, pt.post_text FROM ' . $this->db->prefix("bb_topics") . ' t LEFT JOIN ' . $this->db->prefix("users") . ' u ON u.uid = t.topic_poster LEFT JOIN ' . $this->db->prefix('bb_posts') . ' p ON p.post_id = t.topic_last_post_id LEFT JOIN ' . $this->db->prefix('bb_posts_text') . ' pt ON pt.post_id = t.topic_last_post_id LEFT JOIN ' . $this->db->prefix("users") . ' u2 ON  u2.uid = p.uid WHERE ';
     }
     $sql .= $post_time . $forum_criteria . $extra_criteria . $approve_criteria . $sort;
     if (!($result = $this->db->query($sql, $xoopsModuleConfig['topics_per_page'], $start))) {
         redirect_header('index.php', 2, _MD_ERROROCCURED . '<br />' . $sql);
         exit;
     }
     $sticky = 0;
     $topics = array();
     while ($myrow = $this->db->fetchArray($result)) {
         // ------------------------------------------------------
         /* Necessary and sufficient conditions for an unread topic:
            	1. the last_post_time must be later than the last_vist;
            	2. the last_post_time must be later than the topic_lastread;
            */
         $is_unread = false;
         $lastread = empty($topic_lastread[$myrow['topic_id']]) ? 0 : $topic_lastread[$myrow['topic_id']];
         if (max($GLOBALS['last_visit'], $lastread) < $myrow['last_post_time']) {
             $is_unread = true;
         }
         // ------------------------------------------------------
         // ------------------------------------------------------
         // topic_icon: priority: sticky -> digest -> regular
         // ------------------------------------------------------
         // type: if 'unread' topics
         if ('unread' == $type) {
             if (!$is_unread) {
                 continue;
             }
         }
         // ------------------------------------------------------
         // topic_icon: priority: sticky -> digest -> regular
         if ($myrow['icon'] && is_file(XOOPS_ROOT_PATH . '/images/subject/' . $myrow['icon'])) {
             $topic_icon = '<img src="' . XOOPS_URL . '/images/subject/' . $myrow['icon'] . '" alt="" />';
             $stick = 1;
         } else {
             $topic_icon = '<img src="' . XOOPS_URL . '/images/icons/no_posticon.gif" alt="" />';
             $stick = 1;
         }
         if ($myrow['topic_sticky']) {
             $topic_icon = newbb_displayImage($forumImage['folder_sticky'], _MD_TOPICSTICKY);
             $stick = 0;
             $sticky++;
         }
         if ($myrow['topic_haspoll']) {
             $topic_icon = newbb_displayImage($forumImage['poll'], _MD_TOPICHASPOLL);
         }
         if ($myrow['topic_haspoll'] && $myrow['topic_sticky']) {
             $topic_icon = newbb_displayImage($forumImage['folder_sticky'], _MD_TOPICSTICKY) . '<br />' . newbb_displayImage($forumImage['poll'], _MD_TOPICHASPOLL);
             $stick = 0;
             //$sticky++;
         }
         // ------------------------------------------------------
         // topic_folder: priority: newhot -> hot/new -> regular
         if ($myrow['topic_status'] == 1) {
             $topic_folder = $forumImage['locked_topic'];
         } else {
             if ($myrow['topic_digest']) {
                 $topic_folder = $forumImage['folder_digest'];
             } elseif ($myrow['topic_replies'] >= $hot_threshold) {
                 if ($is_unread) {
                     $topic_folder = $forumImage['hot_newposts_topic'];
                 } else {
                     $topic_folder = $forumImage['hot_folder_topic'];
                 }
             } else {
                 if ($is_unread) {
                     $topic_folder = $forumImage['newposts_topic'];
                 } else {
                     $topic_folder = $forumImage['folder_topic'];
                 }
             }
         }
         // ------------------------------------------------------
         // rating_img
         $rating = number_format($myrow['rating'] / 2, 0);
         if ($rating < 1) {
             $rating_img = newbb_displayImage($forumImage['blank']);
         } else {
             $rating_img = newbb_displayImage($forumImage['rate' . $rating]);
         }
         // ------------------------------------------------------
         // topic_page_jump
         if ($myrow['icon']) {
             $last_post_icon = '<img src="' . XOOPS_URL . '/images/subject/' . $myrow['icon'] . '" alt="" />';
         } else {
             $last_post_icon = '<img src="' . XOOPS_URL . '/images/subject/icon1.gif" alt="" />';
         }
         $topic_page_jump = '';
         $topic_page_jump_icon = '';
         $totalpages = ceil(($myrow['topic_replies'] + 1) / $xoopsModuleConfig['posts_per_page']);
         if ($totalpages > 1) {
             $topic_page_jump .= '&nbsp;&nbsp;&nbsp;<img src="' . XOOPS_URL . '/images/icons/posticon.gif" alt="" /> ';
             $append = false;
             for ($i = 1; $i <= $totalpages; $i++) {
                 if ($i > 3 && $i < $totalpages) {
                     if (!$append) {
                         $topic_page_jump .= "...";
                         $append = true;
                     }
                 } else {
                     $topic_page_jump .= '[<a href="viewtopic.php?topic_id=' . $myrow['topic_id'] . '&amp;start=' . ($i - 1) * $xoopsModuleConfig['posts_per_page'] . '">' . $i . '</a>]';
                     $topic_page_jump_icon = "<a href='" . XOOPS_URL . "/modules/newbb/viewtopic.php?topic_id=" . $myrow['topic_id'] . "&amp;start=" . ($i - 1) * $xoopsModuleConfig['posts_per_page'] . "#forumpost" . $myrow['post_id'] . "'>" . newbb_displayImage($forumImage['docicon']) . "</a>";
                 }
             }
         } else {
             $topic_page_jump_icon = "<a href='" . XOOPS_URL . "/modules/newbb/viewtopic.php?topic_id=" . $myrow['topic_id'] . "#forumpost" . $myrow['post_id'] . "'>" . newbb_displayImage($forumImage['docicon']) . "</a>";
         }
         // ------------------------------------------------------
         // topic_poster
         if ($myrow['topic_poster'] != 0 && $myrow['uname']) {
             if ($xoopsModuleConfig['show_realname'] && $myrow['name']) {
                 $topic_poster = '<a href="' . XOOPS_URL . '/userinfo.php?uid=' . $myrow['topic_poster'] . '">' . $myts->htmlSpecialChars($myrow['name']) . '</a>';
             } else {
                 $topic_poster = '<a href="' . XOOPS_URL . '/userinfo.php?uid=' . $myrow['topic_poster'] . '">' . $myts->htmlSpecialChars($myrow['uname']) . '</a>';
             }
         } else {
             $topic_poster = $myrow['poster_name'] ? $myts->htmlSpecialChars($myrow['poster_name']) : $xoopsConfig['anonymous'];
         }
         // ------------------------------------------------------
         // topic_last_poster
         if ($xoopsModuleConfig['show_realname'] && $myrow['last_post_name']) {
             $topic_last_poster = $myts->htmlSpecialChars($myrow['last_post_name']);
         } elseif ($myrow['last_poster']) {
             $topic_last_poster = $myts->htmlSpecialChars($myrow['last_poster']);
         } elseif ($myrow['last_poster_name']) {
             $topic_last_poster = $myts->htmlSpecialChars($myrow['last_poster_name']);
         } else {
             $topic_last_poster = $xoopsConfig['anonymous'];
         }
         if ($myrow['uid'] > 0) {
             $topic_last_poster = '<a href="' . XOOPS_URL . '/userinfo.php?uid=' . $myrow['uid'] . '">' . $topic_last_poster . '</a>';
         }
         // ------------------------------------------------------
         // => topic array
         if (is_object($viewall_forums[$myrow['forum_id']])) {
             $forum_link = '<a href="' . XOOPS_URL . '/modules/newbb/viewforum.php?forum=' . $myrow['forum_id'] . '">' . $myts->htmlSpecialChars($viewall_forums[$myrow['forum_id']]->getVar('forum_name')) . '</a>';
         } else {
             $forum_link = '';
         }
         $topic_title = $myts->htmlSpecialChars($myrow['topic_title']);
         if ($myrow['topic_digest']) {
             $topic_title = "<span class='digest'>" . $topic_title . "</span>";
         }
         $subjectpres = explode(',', $xoopsModuleConfig['subject_prefix']);
         if (count($subjectpres) > 1) {
             foreach ($subjectpres as $subjectpre) {
                 $subject_array[] = $subjectpre;
             }
         }
         $subject_array[0] = null;
         if ($excerpt == 0) {
             $topic_excerpt = "";
         } elseif (($myrow['post_karma'] > 0 || $myrow['require_reply'] > 0) && !newbb_isAdmin($forum)) {
             $topic_excerpt = "";
         } else {
             $topic_excerpt = xoops_substr(newbb_html2text($myrow['post_text']), 0, $excerpt);
             $topic_excerpt = $myts->htmlSpecialChars($topic_excerpt);
         }
         $topic_subject = $allow_subject_prefix ? $subject_array[$myrow['topic_subject']] : "";
         $topics[$myrow['topic_id']] = array('topic_icon' => $topic_icon, 'topic_folder' => newbb_displayImage($topic_folder), 'topic_title' => $topic_subject . $topic_title, 'topic_link' => 'viewtopic.php?topic_id=' . $myrow['topic_id'] . '&amp;forum=' . $myrow['forum_id'], 'rating_img' => $rating_img, 'topic_page_jump' => $topic_page_jump, 'topic_page_jump_icon' => $topic_page_jump_icon, 'topic_replies' => $myrow['topic_replies'], 'topic_poster' => $topic_poster, 'topic_views' => $myrow['topic_views'], 'topic_time' => newbb_formatTimestamp($myrow['topic_time']), 'topic_last_posttime' => newbb_formatTimestamp($myrow['last_post_time']), 'topic_last_poster' => $topic_last_poster, 'topic_forum_link' => $forum_link, 'topic_excerpt' => $topic_excerpt, 'stick' => $stick);
     }
     if (is_array($topics) && count($topics) > 0) {
         $result2 = $this->db->query("SELECT attachment,topic_id FROM " . $this->db->prefix("bb_posts") . " WHERE topic_id IN (" . implode(',', array_keys($topics)) . ")");
         if ($result2) {
             while ($arr2 = $this->db->fetchArray($result2)) {
                 if ($arr2['attachment']) {
                     $topics[$arr2['topic_id']]['attachment'] = '&nbsp;' . newbb_displayImage($forumImage['clip'], _MD_TOPICSHASATT);
                 }
                 unset($arr2);
             }
         }
     }
     return array($topics, $sticky);
 }
コード例 #3
0
 function renderTopics($xoopsTpl = null)
 {
     global $myts;
     $ret = array();
     //$this->parseVars();
     if ($this->noperm) {
         if (is_object($xoopsTpl)) {
             $xoopsTpl->assign_by_ref("topics", $ret);
             return;
         }
         return $ret;
     }
     $selects = array();
     $froms = array();
     $joins = array();
     $wheres = array();
     // topic fields
     $selects[] = 't.*';
     // post fields
     $selects[] = 'p.post_time as last_post_time, p.poster_name as last_poster_name, p.icon, p.post_id, p.uid';
     $froms[] = $this->handler->db->prefix("bb_topics") . ' AS t ';
     $joins[] = 'LEFT JOIN ' . $this->handler->db->prefix('bb_posts') . ' AS p ON p.post_id = t.topic_last_post_id';
     $wheres[] = "1 = 1";
     if (!empty($this->config['post_excerpt'])) {
         $selects[] = 'p.post_karma, p.require_reply, pt.post_text';
         $this->query["join"][] = 'LEFT JOIN ' . $this->handler->db->prefix('bb_posts_text') . ' AS pt ON pt.post_id = t.topic_last_post_id';
     }
     if (empty($this->query["sort"])) {
         $this->query["sort"][] = 't.topic_last_post_id DESC';
     }
     $GLOBALS['xoopsLogger']->startTime('XOOPS output module - render - topics - query');
     $sql = '    SELECT ' . implode(", ", $selects) . '     FROM ' . implode(", ", $froms) . '        ' . implode(" ", $joins) . '        ' . implode(" ", $this->query["join"]) . '     WHERE ' . implode(" AND ", $wheres) . '        AND ' . @implode(" AND ", @$this->query["where"]) . '     ORDER BY ' . implode(", ", $this->query["sort"]);
     if (!($result = $this->handler->db->query($sql, $this->config['topics_per_page'], @$this->vars["start"]))) {
         if (is_object($xoopsTpl)) {
             $xoopsTpl->assign_by_ref("topics", $ret);
             return;
         }
         return $ret;
     }
     $GLOBALS['xoopsLogger']->stopTime('XOOPS output module - render - topics - query');
     require_once XOOPS_ROOT_PATH . "/modules/newbb/include/functions.render.php";
     require_once XOOPS_ROOT_PATH . "/modules/newbb/include/functions.session.php";
     require_once XOOPS_ROOT_PATH . "/modules/newbb/include/functions.time.php";
     require_once XOOPS_ROOT_PATH . "/modules/newbb/include/functions.read.php";
     require_once XOOPS_ROOT_PATH . "/modules/newbb/include/functions.topic.php";
     $sticky = 0;
     $topics = array();
     $posters = array();
     $reads = array();
     $types = array();
     $forums = array();
     $anonymous = $myts->htmlSpecialChars($GLOBALS["xoopsConfig"]['anonymous']);
     $GLOBALS['xoopsLogger']->startTime('XOOPS output module - render - topics - fetch');
     while ($myrow = $this->handler->db->fetchArray($result)) {
         if ($myrow['topic_sticky']) {
             $sticky++;
         }
         // ------------------------------------------------------
         // topic_icon: priority: sticky -> digest -> regular
         if ($myrow['topic_haspoll']) {
             if ($myrow['topic_sticky']) {
                 $topic_icon = newbb_displayImage("topic_sticky", _MD_TOPICSTICKY) . '<br />' . newbb_displayImage("poll", _MD_TOPICHASPOLL);
             } else {
                 $topic_icon = newbb_displayImage('poll', _MD_TOPICHASPOLL);
             }
         } elseif ($myrow['topic_sticky']) {
             $topic_icon = newbb_displayImage('topic_sticky', _MD_TOPICSTICKY);
         } elseif (!empty($myrow['icon'])) {
             $topic_icon = '<img src="' . XOOPS_URL . '/images/subject/' . htmlspecialchars($myrow['icon']) . '" alt="" />';
         } else {
             $topic_icon = '<img src="' . XOOPS_URL . '/images/icons/no_posticon.gif" alt="" />';
         }
         // ------------------------------------------------------
         // rating_img
         $rating = number_format($myrow['rating'] / 2, 0);
         $rating_img = newbb_displayImage($rating < 1 ? 'blank' : 'rate' . $rating);
         // ------------------------------------------------------
         // topic_page_jump
         $topic_page_jump = '';
         $topic_page_jump_icon = '';
         $totalpages = ceil(($myrow['topic_replies'] + 1) / $this->config['posts_per_page']);
         if ($totalpages > 1) {
             $topic_page_jump .= '&nbsp;&nbsp;';
             $append = false;
             for ($i = 1; $i <= $totalpages; $i++) {
                 if ($i > 3 && $i < $totalpages) {
                     if (!$append) {
                         $topic_page_jump .= "...";
                         $append = true;
                     }
                 } else {
                     $topic_page_jump .= '[<a href="viewtopic.php?topic_id=' . $myrow['topic_id'] . '&amp;start=' . ($i - 1) * $this->config['posts_per_page'] . '">' . $i . '</a>]';
                     $topic_page_jump_icon = "<a href='" . XOOPS_URL . "/modules/newbb/viewtopic.php?topic_id=" . $myrow['topic_id'] . "&amp;start=" . ($i - 1) * $this->config['posts_per_page'] . "#forumpost" . $myrow['post_id'] . "'>" . newbb_displayImage('document') . "</a>";
                 }
             }
         } else {
             $topic_page_jump_icon = "<a href='" . XOOPS_URL . "/modules/newbb/viewtopic.php?topic_id=" . $myrow['topic_id'] . "#forumpost" . $myrow['post_id'] . "'>" . newbb_displayImage('document') . "</a>";
         }
         // ------------------------------------------------------
         // => topic array
         $topic_title = $myts->htmlSpecialChars($myrow['topic_title']);
         if ($myrow['topic_digest']) {
             $topic_title = "<span class='digest'>" . $topic_title . "</span>";
         }
         if (empty($this->config["post_excerpt"])) {
             $topic_excerpt = "";
         } elseif (($myrow['post_karma'] > 0 || $myrow['require_reply'] > 0) && !newbb_isAdmin($myrow['forum_id'])) {
             $topic_excerpt = "";
         } else {
             $GLOBALS['xoopsLogger']->startTime('XOOPS output module - render - topics - fetch - substr ' . $myrow['topic_id']);
             $topic_excerpt = xoops_substr(newbb_html2text($myts->displayTarea($myrow['post_text'])), 0, $this->config["post_excerpt"]);
             $GLOBALS['xoopsLogger']->stopTime('XOOPS output module - render - topics - fetch - substr ' . $myrow['topic_id']);
             $topic_excerpt = str_replace("[", "&#91;", $myts->htmlSpecialChars($topic_excerpt));
         }
         $topics[$myrow['topic_id']] = array('topic_id' => $myrow['topic_id'], 'topic_icon' => $topic_icon, 'type_id' => $myrow['type_id'], 'topic_title' => $topic_title, 'topic_link' => 'viewtopic.php?topic_id=' . $myrow['topic_id'] . '&amp;forum=' . $myrow['forum_id'], 'rating_img' => $rating_img, 'topic_page_jump' => $topic_page_jump, 'topic_page_jump_icon' => $topic_page_jump_icon, 'topic_replies' => $myrow['topic_replies'], 'topic_poster_uid' => $myrow['topic_poster'], 'topic_poster_name' => !empty($myrow['poster_name']) ? $myts->htmlSpecialChars($myrow['poster_name']) : $anonymous, 'topic_views' => $myrow['topic_views'], 'topic_time' => newbb_formatTimestamp($myrow['topic_time']), 'topic_last_posttime' => newbb_formatTimestamp($myrow['last_post_time']), 'topic_last_poster_uid' => $myrow['uid'], 'topic_last_poster_name' => !empty($myrow['last_poster_name']) ? $myts->htmlSpecialChars($myrow['last_poster_name']) : $anonymous, 'topic_forum' => $myrow['forum_id'], 'topic_excerpt' => $topic_excerpt, 'stick' => empty($myrow['topic_sticky']), "stats" => array($myrow['topic_status'], $myrow['topic_digest'], $myrow['topic_replies']));
         /* users */
         $posters[$myrow['topic_poster']] = 1;
         $posters[$myrow['uid']] = 1;
         // reads
         if (!empty($this->config["read_mode"])) {
             $reads[$myrow['topic_id']] = $this->config["read_mode"] == 1 ? $myrow['last_post_time'] : $myrow["topic_last_post_id"];
         }
         // types
         if (!empty($myrow['type_id'])) {
             //$types[$myrow['type_id']] = 1;
         }
         // forums
         $forums[$myrow['forum_id']] = 1;
     }
     $GLOBALS['xoopsLogger']->stopTime('XOOPS output module - render - topics - fetch');
     $posters_name = newbb_getUnameFromIds(array_keys($posters), $this->config['show_realname'], true);
     $topic_isRead = newbb_isRead("topic", $reads);
     /*
     $type_list = array();
     if (count($types) > 0) {
     $type_handler =& xoops_getmodulehandler('type', 'newbb');
     $type_list = $type_handler->getAll(new Criteria("type_id", "(".implode(", ", array_keys($types)).")", "IN"), null, false);
     }
     */
     $type_list = $this->getTypes();
     $forum_handler =& xoops_getmodulehandler('forum', 'newbb');
     $forum_list = $forum_handler->getAll(new Criteria("forum_id", "(" . implode(", ", array_keys($forums)) . ")", "IN"), array("forum_name", "hot_threshold"), false);
     foreach (array_keys($topics) as $id) {
         $topics[$id]["topic_forum_link"] = '<a href="' . XOOPS_URL . '/modules/newbb/viewforum.php?forum=' . $topics[$id]["topic_forum"] . '">' . $forum_list[$topics[$id]["topic_forum"]]["forum_name"] . '</a>';
         if (!empty($topics[$id]["type_id"]) && isset($type_list[$topics[$id]["type_id"]])) {
             $topics[$id]["topic_title"] = newbb_getTopicTitle($topics[$id]["topic_title"], $type_list[$topics[$id]["type_id"]]["type_name"], $type_list[$topics[$id]["type_id"]]["type_color"]);
         }
         $topics[$id]["topic_poster"] = !empty($posters_name[$topics[$id]["topic_poster_uid"]]) ? $posters_name[$topics[$id]["topic_poster_uid"]] : $topics[$id]["topic_poster_name"];
         $topics[$id]["topic_last_poster"] = !empty($posters_name[$topics[$id]["topic_last_poster_uid"]]) ? $posters_name[$topics[$id]["topic_last_poster_uid"]] : $topics[$id]["topic_last_poster_name"];
         // ------------------------------------------------------
         // topic_folder: priority: newhot -> hot/new -> regular
         list($topic_status, $topic_digest, $topic_replies) = $topics[$id]["stats"];
         if ($topic_status == 1) {
             $topic_folder = 'topic_locked';
         } else {
             if ($topic_digest) {
                 $topic_folder = 'topic_digest';
             } elseif ($topic_replies >= $forum_list[$topics[$id]["topic_forum"]]["hot_threshold"]) {
                 $topic_folder = empty($topic_isRead[$id]) ? 'topic_hot_new' : 'topic_hot';
             } else {
                 $topic_folder = empty($topic_isRead[$id]) ? 'topic_new' : 'topic';
             }
         }
         $topics[$id]['topic_folder'] = newbb_displayImage($topic_folder);
         unset($topics[$id]["topic_poster_name"], $topics[$id]["topic_last_poster_name"], $topics[$id]["stats"]);
     }
     if (count($topics) > 0) {
         $sql = " SELECT DISTINCT topic_id FROM " . $this->handler->db->prefix("bb_posts") . " WHERE attachment != ''" . " AND topic_id IN (" . implode(',', array_keys($topics)) . ")";
         if ($result = $this->handler->db->query($sql)) {
             while (list($topic_id) = $this->handler->db->fetchRow($result)) {
                 $topics[$topic_id]['attachment'] = '&nbsp;' . newbb_displayImage('attachment', _MD_TOPICSHASATT);
             }
         }
     }
     if (is_object($xoopsTpl)) {
         $xoopsTpl->assign_by_ref("sticky", $sticky);
         $xoopsTpl->assign_by_ref("topics", $topics);
         return;
     }
     return array($topics, $sticky);
 }
コード例 #4
0
ファイル: forum.php プロジェクト: BackupTheBerlios/haxoo-svn
 function getAllTopics(&$forum, $criteria = null)
 {
     global $xoopsModule, $xoopsConfig, $xoopsModuleConfig, $myts, $xoopsUser, $viewall_forums;
     require_once XOOPS_ROOT_PATH . "/modules/newbb/include/functions.render.php";
     require_once XOOPS_ROOT_PATH . "/modules/newbb/include/functions.session.php";
     require_once XOOPS_ROOT_PATH . "/modules/newbb/include/functions.time.php";
     require_once XOOPS_ROOT_PATH . "/modules/newbb/include/functions.read.php";
     require_once XOOPS_ROOT_PATH . "/modules/newbb/include/functions.topic.php";
     $criteria_vars = array("startdate", "start", "sort", "order", "type", "status", "excerpt");
     foreach ($criteria_vars as $var) {
         ${$var} = $criteria[$var];
     }
     $topic_lastread = newbb_getcookie('LT', true);
     if (is_object($forum)) {
         $criteria_forum = ' AND t.forum_id = ' . $forum->getVar('forum_id');
         $hot_threshold = $forum->getVar('hot_threshold');
     } else {
         $hot_threshold = 10;
         if (is_array($forum) && count($forum) > 0) {
             $criteria_forum = ' AND t.forum_id IN (' . implode(',', array_keys($forum)) . ')';
         } elseif (!empty($forum)) {
             $criteria_forum = ' AND t.forum_id =' . intval($forum);
         } else {
             $criteria_forum = '';
         }
     }
     $criteria_post = $startdate ? ' p.post_time > ' . $startdate : " 1 = 1 ";
     $criteria_topic = empty($type) ? '' : " AND t.type_id={$type}";
     $criteria_extra = '';
     $criteria_approve = ' AND t.approved = 1';
     $post_on = ' p.post_id = t.topic_last_post_id';
     $leftjoin = ' LEFT JOIN ' . $this->db->prefix('bb_posts') . ' p ON p.post_id = t.topic_last_post_id';
     $sort_array = array();
     switch ($status) {
         case 'digest':
             $criteria_extra = ' AND t.topic_digest = 1';
             break;
         case 'unreplied':
             $criteria_extra = ' AND t.topic_replies < 1';
             break;
         case 'unread':
             if (empty($xoopsModuleConfig["read_mode"])) {
             } elseif ($xoopsModuleConfig["read_mode"] == 2) {
                 $leftjoin .= ' LEFT JOIN ' . $this->db->prefix('bb_reads_topic') . ' r ON r.read_item = t.topic_id';
                 $criteria_post .= ' AND (r.read_id IS NULL OR r.post_id < t.topic_last_post_id)';
             } elseif ($xoopsModuleConfig["read_mode"] == 1) {
                 $topics = array();
                 $topic_lastread = newbb_getcookie('LT', true);
                 if (count($topic_lastread) > 0) {
                     foreach ($topic_lastread as $id => $time) {
                         if ($time > $time_criterion) {
                             $topics[] = $id;
                         }
                     }
                 }
                 if (count($topics) > 0) {
                     $criteria_extra = ' AND t.topic_id NOT IN (' . implode(",", $topics) . ')';
                 }
                 if ($lastvisit = max($GLOBALS['last_visit'], $startdate)) {
                     $criteria_post = ' p.post_time > ' . max($GLOBALS['last_visit'], $startdate);
                 }
             }
             break;
         case 'pending':
             $post_on = ' p.topic_id = t.topic_id';
             $criteria_post .= ' AND p.pid = 0';
             $criteria_approve = ' AND t.approved = 0';
             break;
         case 'deleted':
             $criteria_approve = ' AND t.approved = -1';
             break;
         case 'all':
             // For viewall.php; do not display sticky topics at first
         // For viewall.php; do not display sticky topics at first
         case 'active':
             // same as "all"
             break;
         default:
             if ($startdate > 0) {
                 $criteria_post = ' (p.post_time > ' . $startdate . ' OR t.topic_sticky=1)';
             }
             $sort_array[] = 't.topic_sticky DESC';
             break;
     }
     $select = 't.*, ' . ' p.post_time as last_post_time, p.poster_name as last_poster_name, p.icon, p.post_id, p.uid';
     $from = $this->db->prefix("bb_topics") . ' t ' . $leftjoin;
     $where = $criteria_post . $criteria_topic . $criteria_forum . $criteria_extra . $criteria_approve;
     if ($excerpt) {
         $select .= ', p.post_karma, p.require_reply, pt.post_text';
         $from .= ' LEFT JOIN ' . $this->db->prefix('bb_posts_text') . ' pt ON pt.post_id = t.topic_last_post_id';
     }
     if ($sort == "u.uname") {
         $sort = "t.topic_poster";
     }
     $sort_array[] = trim($sort . ' ' . $order);
     $sortby = implode(", ", array_filter($sort_array));
     if (empty($sortby)) {
         $sortby = 't.topic_last_post_id DESC';
     }
     $sql = 'SELECT ' . $select . ' FROM ' . $from . ' WHERE ' . $where . ' ORDER BY ' . $sortby;
     if (!($result = $this->db->query($sql, $xoopsModuleConfig['topics_per_page'], $start))) {
         redirect_header('index.php', 2, _MD_ERROROCCURED);
         exit;
     }
     $sticky = 0;
     $topics = array();
     $posters = array();
     $reads = array();
     $types = array();
     $type_handler =& xoops_getmodulehandler('type', 'newbb');
     $typen = $type_handler->getByForum($forum->getVar('forum_id'));
     while ($myrow = $this->db->fetchArray($result)) {
         if ($myrow['topic_sticky']) {
             $sticky++;
         }
         // ------------------------------------------------------
         // topic_icon: priority: sticky -> digest -> regular
         if ($myrow['topic_haspoll']) {
             if ($myrow['topic_sticky']) {
                 $topic_icon = newbb_displayImage('topic_sticky', _MD_TOPICSTICKY) . '<br />' . newbb_displayImage('poll', _MD_TOPICHASPOLL);
             } else {
                 $topic_icon = newbb_displayImage('poll', _MD_TOPICHASPOLL);
             }
         } elseif ($myrow['topic_sticky']) {
             $topic_icon = newbb_displayImage('topic_sticky', _MD_TOPICSTICKY);
         } elseif (!empty($myrow['icon'])) {
             $topic_icon = '<img src="' . XOOPS_URL . '/images/subject/' . htmlspecialchars($myrow['icon']) . '" alt="" />';
         } else {
             $topic_icon = '<img src="' . XOOPS_URL . '/images/icons/no_posticon.gif" alt="" />';
         }
         // ------------------------------------------------------
         // rating_img
         $rating = number_format($myrow['rating'] / 2, 0);
         $rating_img = newbb_displayImage($rating < 1 ? 'blank' : 'rate' . $rating);
         // ------------------------------------------------------
         // topic_page_jump
         $topic_page_jump = '';
         $topic_page_jump_icon = '';
         $totalpages = ceil(($myrow['topic_replies'] + 1) / $xoopsModuleConfig['posts_per_page']);
         if ($totalpages > 1) {
             $topic_page_jump .= '&nbsp;&nbsp;';
             $append = false;
             for ($i = 1; $i <= $totalpages; $i++) {
                 if ($i > 3 && $i < $totalpages) {
                     if (!$append) {
                         $topic_page_jump .= "...";
                         $append = true;
                     }
                 } else {
                     $topic_page_jump .= '[<a href="viewtopic.php?topic_id=' . $myrow['topic_id'] . '&amp;start=' . ($i - 1) * $xoopsModuleConfig['posts_per_page'] . '">' . $i . '</a>]';
                     $topic_page_jump_icon = "<a href='" . XOOPS_URL . "/modules/newbb/viewtopic.php?post_id=" . $myrow['post_id'] . "&amp;start=" . ($i - 1) * $xoopsModuleConfig['posts_per_page'] . "'>" . newbb_displayImage('document', _MD_NEWBB_GOTOLASTPOST) . "</a>";
                 }
             }
         } else {
             $topic_page_jump_icon = "<a href='" . XOOPS_URL . "/modules/newbb/viewtopic.php?post_id=" . $myrow['post_id'] . "'>" . newbb_displayImage('document', _MD_NEWBB_GOTOLASTPOST) . "</a>";
         }
         // ------------------------------------------------------
         // => topic array
         if (!empty($viewall_forums[$myrow['forum_id']])) {
             $forum_link = '<a href="' . XOOPS_URL . '/modules/newbb/viewforum.php?forum=' . $myrow['forum_id'] . '">' . $viewall_forums[$myrow['forum_id']]['forum_name'] . '</a>';
         } else {
             $forum_link = '';
         }
         $topic_title = $myts->htmlSpecialChars($myrow['topic_title']);
         if ($myrow['topic_digest']) {
             $topic_title = "<span class='digest'>" . $topic_title . "</span>";
         }
         if ($excerpt == 0) {
             $topic_excerpt = "";
         } elseif (($myrow['post_karma'] > 0 || $myrow['require_reply'] > 0) && !newbb_isAdmin($forum)) {
             $topic_excerpt = "";
         } else {
             $topic_excerpt = xoops_substr(newbb_html2text($myts->displayTarea($myrow['post_text'])), 0, $excerpt);
             $topic_excerpt = str_replace("[", "&#91;", $myts->htmlSpecialChars($topic_excerpt));
         }
         /* users */
         $posters[$myrow['topic_poster']] = 1;
         $posters[$myrow['uid']] = 1;
         // reads
         if (!empty($xoopsModuleConfig["read_mode"])) {
             $reads[$myrow['topic_id']] = $xoopsModuleConfig["read_mode"] == 1 ? $myrow['last_post_time'] : $myrow["topic_last_post_id"];
         }
         $topic_poster = newbb_getUnameFromId($myrow['topic_poster'], $xoopsModuleConfig['show_realname'], true);
         $topic_last_poster = newbb_getUnameFromId($myrow['uid'], $xoopsModuleConfig['show_realname'], true);
         $topic_isRead = newbb_isRead("topic", $reads);
         $topic_prefix = !empty($typen[$myrow['type_id']]) ? getTopicTitle("", $typen[$myrow['type_id']]["type_name"], $typen[$myrow['type_id']]["type_color"]) : "";
         // ------------------------------------------------------
         // topic_folder: priority: newhot -> hot/new -> regular
         if ($myrow['topic_status'] == 1) {
             $topic_folder = 'topic_locked';
             $topic_folder_text = _MD_TOPICLOCKED;
         } else {
             if ($myrow['topic_digest']) {
                 $topic_folder = 'topic_digest';
                 $topic_folder_text = _MD_TOPICDIGEST;
             } elseif ($myrow['topic_replies'] >= $hot_threshold) {
                 $topic_folder = empty($topic_isRead[$myrow['topic_id']]) ? 'topic_hot_new' : 'topic_hot';
                 $topic_folder_text = empty($topic_isRead[$myrow['topic_id']]) ? _MD_MORETHAN : _MD_MORETHAN2;
             } else {
                 $topic_folder = empty($topic_isRead[$myrow['topic_id']]) ? 'topic_new' : 'topic';
                 $topic_folder_text = empty($topic_isRead[$myrow['topic_id']]) ? _MD_NEWPOSTS : _MD_NONEWPOSTS;
             }
         }
         $topics[$myrow['topic_id']] = array('topic_id' => $myrow['topic_id'], 'topic_icon' => $topic_icon, 'type_id' => $myrow['type_id'], 'type_text' => $topic_prefix, 'topic_title' => $topic_title, 'topic_link' => 'viewtopic.php?topic_id=' . $myrow['topic_id'], 'rating_img' => $rating_img, 'topic_page_jump' => $topic_page_jump, 'topic_page_jump_icon' => $topic_page_jump_icon, 'topic_replies' => $myrow['topic_replies'], 'topic_poster_uid' => $myrow['topic_poster'], 'topic_poster_name' => $myts->htmlSpecialChars($myrow['poster_name'] ? $myrow['poster_name'] : $xoopsConfig['anonymous']), 'topic_views' => $myrow['topic_views'], 'topic_time' => newbb_formatTimestamp($myrow['topic_time']), 'topic_last_posttime' => newbb_formatTimestamp($myrow['last_post_time']), 'topic_last_poster_uid' => $myrow['uid'], 'topic_last_poster_name' => $myts->htmlSpecialChars($myrow['last_poster_name'] ? $myrow['last_poster_name'] : $xoopsConfig['anonymous']), 'topic_forum_link' => $forum_link, 'topic_excerpt' => $topic_excerpt, 'stick' => empty($myrow['topic_sticky']), "topic_poster" => $topic_poster, "topic_last_poster" => $topic_last_poster, "topic_folder" => newbb_displayImage($topic_folder, $topic_folder_text));
     }
     if (count($topics) > 0) {
         $sql = " SELECT DISTINCT topic_id FROM " . $this->db->prefix("bb_posts") . " WHERE attachment != ''" . " AND topic_id IN (" . implode(',', array_keys($topics)) . ")";
         if ($result = $this->db->query($sql)) {
             while (list($topic_id) = $this->db->fetchRow($result)) {
                 $topics[$topic_id]['attachment'] = '&nbsp;' . newbb_displayImage('attachment', _MD_TOPICSHASATT);
             }
         }
     }
     return array($topics, $sticky);
 }
コード例 #5
0
function b_newbb_post_show($options)
{
    global $xoopsConfig;
    global $newbbConfig, $access_forums;
    $db =& Database::getInstance();
    $myts =& MyTextSanitizer::getInstance();
    $block = array();
    $i = 0;
    $order = "";
    $extra_criteria = "";
    $time_criteria = null;
    if (!empty($options[2])) {
        $time_criteria = time() - newbb_getSinceTime($options[2]);
        $extra_criteria = " AND p.post_time>" . $time_criteria;
    }
    switch ($options[0]) {
        case "text":
            if (!empty($newbbConfig['enable_karma'])) {
                $extra_criteria .= " AND p.post_karma = 0";
            }
            if (!empty($newbbConfig['allow_require_reply'])) {
                $extra_criteria .= " AND p.require_reply = 0";
            }
        default:
            $order = 'p.post_time';
            break;
    }
    $forum_handler =& xoops_getmodulehandler('forum', 'newbb');
    $module_handler =& xoops_gethandler('module');
    $newbb = $module_handler->getByDirname('newbb');
    if (!isset($newbbConfig)) {
        $config_handler =& xoops_gethandler('config');
        $newbbConfig =& $config_handler->getConfigsByCat(0, $newbb->getVar('mid'));
    }
    if (!isset($access_forums)) {
        $access_forums = $forum_handler->getForums(0, 'access');
        // get all accessible forums
    }
    if (!empty($options[6])) {
        $allowedforums = array_slice($options, 6);
        // get allowed forums
        $allowed_forums = array_intersect($allowedforums, array_keys($access_forums));
    } else {
        $allowed_forums = array_keys($access_forums);
    }
    $forum_criteria = ' AND p.forum_id IN (' . implode(',', $allowed_forums) . ')';
    $approve_criteria = ' AND p.approved = 1';
    $query = 'SELECT';
    $query .= '	p.post_id, p.subject, p.post_time, p.icon, p.uid, p.poster_name,';
    if ($options[0] == "text") {
        $query .= '	p.dohtml, p.dosmiley, p.doxcode, p.dobr, pt.post_text,';
    }
    $query .= '	f.forum_id, f.forum_name, f.allow_subject_prefix' . '	FROM ' . $db->prefix('bb_posts') . ' AS p ' . '	LEFT JOIN ' . $db->prefix('bb_forums') . ' AS f ON f.forum_id=p.forum_id';
    if ($options[0] == "text") {
        $query .= '	LEFT JOIN ' . $db->prefix('bb_posts_text') . ' AS pt ON pt.post_id=p.post_id';
    }
    $query .= '	WHERE 1=1 ' . $forum_criteria . $approve_criteria . $extra_criteria . ' ORDER BY ' . $order . ' DESC';
    $result = $db->query($query, $options[1], 0);
    if (!$result) {
        newbb_message("newbb block query error: " . $query);
        return false;
    }
    $block['disp_mode'] = $options[0] == "text" ? 3 : $options[3];
    // 0 - full view; 1 - compact view; 2 - lite view;
    $rows = array();
    $author = array();
    while ($row = $db->fetchArray($result)) {
        $rows[] = $row;
        $author[$row["uid"]] = 1;
    }
    if (count($rows) < 1) {
        return false;
    }
    $author_name =& newbb_getUnameFromIds(array_keys($author), $newbbConfig['show_realname']);
    foreach ($rows as $arr) {
        if ($arr['icon']) {
            $last_post_icon = '<img src="' . XOOPS_URL . '/images/subject/' . $arr['icon'] . '" alt="" />';
        } else {
            $last_post_icon = '<img src="' . XOOPS_URL . '/images/subject/icon1.gif" alt="" />';
        }
        $topic['jump_post'] = "<a href='" . XOOPS_URL . "/modules/newbb/viewtopic.php?post_id=" . $arr['post_id'] . "#forumpost" . $arr['post_id'] . "'>" . $last_post_icon . "</a>";
        $topic['forum_id'] = $arr['forum_id'];
        $topic['forum_name'] = $myts->htmlSpecialChars($arr['forum_name']);
        //$topic['id'] = $arr['topic_id'];
        $title = $myts->htmlSpecialChars($arr['subject']);
        if ($options[0] != "text" && !empty($options[5])) {
            $title = xoops_substr($title, 0, $options[5]);
        }
        $topic['title'] = $title;
        $topic['post_id'] = $arr['post_id'];
        $topic['time'] = newbb_formatTimestamp($arr['post_time']);
        if ($arr['uid'] > 0) {
            $topic_poster = "<a href='" . XOOPS_URL . "/userinfo.php?uid=" . $arr['uid'] . "'>" . $myts->htmlSpecialChars($author_name[$arr['uid']]) . "</a>";
        } else {
            $topic_poster = $arr['poster_name'] ? $myts->htmlSpecialChars($arr['poster_name']) : $myts->htmlSpecialChars($author_name[$arr['uid']]);
        }
        $topic['topic_poster'] = $topic_poster;
        if ($options[0] == "text") {
            $post_text = $myts->displayTarea($arr['post_text'], $arr['dohtml'], $arr['dosmiley'], $arr['doxcode'], 1, $arr['dobr']);
            if (!empty($options[5])) {
                $post_text = xoops_substr(newbb_html2text($post_text), 0, $options[5]);
            }
            $topic['post_text'] = $post_text;
            newbb_message($post_text);
        }
        $block['topics'][] =& $topic;
        unset($topic);
    }
    $block['indexNav'] = intval($options[4]);
    return $block;
}
コード例 #6
0
ファイル: newbb_block.php プロジェクト: trabisdementia/xuups
function b_newbb_post_show($options)
{
    global $xoopsConfig;
    global $access_forums;
    require_once XOOPS_ROOT_PATH . "/modules/newbb/include/functions.time.php";
    $myts =& MyTextSanitizer::getInstance();
    $block = array();
    $i = 0;
    $order = "";
    $extra_criteria = "";
    $time_criteria = null;
    if (!empty($options[2])) {
        $time_criteria = time() - newbb_getSinceTime($options[2]);
        $extra_criteria = " AND p.post_time>" . $time_criteria;
    }
    switch ($options[0]) {
        case "text":
            if (!empty($newbbConfig['enable_karma'])) {
                $extra_criteria .= " AND p.post_karma = 0";
            }
            if (!empty($newbbConfig['allow_require_reply'])) {
                $extra_criteria .= " AND p.require_reply = 0";
            }
        default:
            $order = 'p.post_id';
            break;
    }
    $newbbConfig = newbb_loadConfig();
    if (!isset($access_forums)) {
        $perm_handler =& xoops_getmodulehandler('permission', 'newbb');
        if (!($access_forums = $perm_handler->getForums())) {
            return $block;
        }
    }
    if (!empty($options[6])) {
        $allowedforums = array_filter(array_slice($options, 6), "b_newbb_array_filter");
        // get allowed forums
        $allowed_forums = array_intersect($allowedforums, $access_forums);
    } else {
        $allowed_forums = $access_forums;
    }
    if (empty($allowed_forums)) {
        return $block;
    }
    $forum_criteria = ' AND p.forum_id IN (' . implode(',', $allowed_forums) . ')';
    $approve_criteria = ' AND p.approved = 1';
    $query = 'SELECT';
    $query .= '    p.post_id, p.subject, p.post_time, p.icon, p.uid, p.poster_name,';
    if ($options[0] == "text") {
        $query .= '    pt.dohtml, pt.dosmiley, pt.doxcode, pt.dobr, pt.post_text,';
    }
    $query .= '    f.forum_id, f.forum_name' . '    FROM ' . $GLOBALS["xoopsDB"]->prefix('bb_posts') . ' AS p ' . '    LEFT JOIN ' . $GLOBALS["xoopsDB"]->prefix('bb_forums') . ' AS f ON f.forum_id=p.forum_id';
    if ($options[0] == "text") {
        $query .= '    LEFT JOIN ' . $GLOBALS["xoopsDB"]->prefix('bb_posts_text') . ' AS pt ON pt.post_id=p.post_id';
    }
    $query .= '    WHERE 1=1 ' . $forum_criteria . $approve_criteria . $extra_criteria . ' ORDER BY ' . $order . ' DESC';
    $result = $GLOBALS["xoopsDB"]->query($query, $options[1], 0);
    if (!$result) {
        //xoops_error($GLOBALS["xoopsDB"]->error());
        return $block;
    }
    $block['disp_mode'] = $options[0] == "text" ? 3 : $options[3];
    // 0 - full view; 1 - compact view; 2 - lite view;
    $rows = array();
    $author = array();
    while ($row = $GLOBALS["xoopsDB"]->fetchArray($result)) {
        $rows[] = $row;
        $author[$row["uid"]] = 1;
    }
    if (count($rows) < 1) {
        return $block;
    }
    require_once XOOPS_ROOT_PATH . "/modules/newbb/include/functions.user.php";
    $author_name = newbb_getUnameFromIds(array_keys($author), $newbbConfig['show_realname'], true);
    foreach ($rows as $arr) {
        //if ($arr['icon'] && is_file(XOOPS_ROOT_PATH . "/images/subject/" . $arr['icon'])) {
        if (!empty($arr['icon'])) {
            $last_post_icon = '<img src="' . XOOPS_URL . '/images/subject/' . htmlspecialchars($arr['icon']) . '" alt="" />';
        } else {
            $last_post_icon = '<img src="' . XOOPS_URL . '/images/subject/icon1.gif" alt="" />';
        }
        //$topic['jump_post'] = "<a href='" . XOOPS_URL . "/modules/newbb/viewtopic.php?post_id=" . $arr['post_id'] ."#forumpost" . $arr['post_id'] . "'>" . $last_post_icon . "</a>";
        $topic['forum_id'] = $arr['forum_id'];
        $topic['forum_name'] = $myts->htmlSpecialChars($arr['forum_name']);
        //$topic['id'] = $arr['topic_id'];
        $title = $myts->htmlSpecialChars($arr['subject']);
        if ($options[0] != "text" && !empty($options[5])) {
            $title = xoops_substr($title, 0, $options[5]);
        }
        $topic['title'] = $title;
        $topic['post_id'] = $arr['post_id'];
        $topic['time'] = newbb_formatTimestamp($arr['post_time']);
        if (!empty($author_name[$arr['uid']])) {
            $topic_poster = $author_name[$arr['uid']];
        } else {
            $topic_poster = $myts->htmlSpecialChars($arr['poster_name'] ? $arr['poster_name'] : $GLOBALS["xoopsConfig"]["anonymous"]);
        }
        $topic['topic_poster'] = $topic_poster;
        if ($options[0] == "text") {
            $post_text = $myts->displayTarea($arr['post_text'], $arr['dohtml'], $arr['dosmiley'], $arr['doxcode'], 1, $arr['dobr']);
            if (!empty($options[5])) {
                $post_text = xoops_substr(newbb_html2text($post_text), 0, $options[5]);
            }
            $topic['post_text'] = $post_text;
        }
        $block['topics'][] = $topic;
        unset($topic);
    }
    $block['indexNav'] = intval($options[4]);
    return $block;
}
コード例 #7
0
ファイル: posttopm.php プロジェクト: BackupTheBerlios/soopa
    } else {
        $forum_id = $forumtopic->getVar('forum_id');
        $viewtopic_forum =& $forum_handler->get($forum_id);
        if (!$forum_handler->getPermission($viewtopic_forum)) {
            $message = _MD_NORIGHTTOACCESS;
        } elseif (!$topic_handler->getPermission($viewtopic_forum, $forumtopic->getVar('topic_status'), "view")) {
            $message = _MD_NORIGHTTOVIEW;
        } else {
            $post =& $post_handler->get($post_id);
            if (!$post->getVar('approved')) {
                $message = _MD_NORIGHTTOVIEW;
            } else {
                $post_data = $post_handler->getPostForPrint($post);
                $postdata = str_replace("<br />", "\n\r", $post_data["text"]);
                $postdata = str_replace("<br>", "\n\r", $postdata);
                $postdata = "[quote]\n" . newbb_html2text($postdata) . "\n[/quote]";
            }
        }
    }
}
$msg = empty($message) ? $myts->displayTarea($postdata) : $message;
include_once XOOPS_ROOT_PATH . "/class/xoopsformloader.php";
$pmform = new XoopsThemeForm(_MD_PM, 'pmform', XOOPS_URL . "/modules/pm/pmlite.php", 'post');
$pmform->addElement(new XoopsFormLabel(_MD_MESSAGEC, $msg));
$button_tray = new XoopsFormElementTray('');
if (isset($postdata)) {
    $button_tray->addElement(new XoopsFormButton('', 'sendmod', _SUBMIT, 'submit'));
    $pmform->addElement(new XoopsFormHidden('to_userid', $post->getVar('uid')));
    $pmform->addElement(new XoopsFormHidden('post_id', $post_id));
    $pmform->addElement(new XoopsFormHidden('subject', $post->getVar('subject')));
    $data = " \n \n--------------\n [url=" . XOOPS_URL . "/modules/" . $xoopsModule->getVar("dirname") . "/viewtopic.php?post_id=" . $post_id . "] " . $post->getVar('subject') . " [/url] \n" . $postdata . "";