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'] . '&forum=' . $topic['forum_id']; $title = $topic['topic_title']; $digest->addItem($title, $link, $author, $summary); } $digest->buildContent(); return true; }
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 .= ' <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'] . '&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'] . "&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'] . '&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'] = ' ' . newbb_displayImage($forumImage['clip'], _MD_TOPICSHASATT); } unset($arr2); } } } return array($topics, $sticky); }
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 .= ' '; $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'] . '&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'] . "&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("[", "[", $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'] . '&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'] = ' ' . 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); }
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 .= ' '; $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'] . '&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'] . "&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("[", "[", $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'] = ' ' . newbb_displayImage('attachment', _MD_TOPICSHASATT); } } } return array($topics, $sticky); }
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; }
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; }
} 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 . "";