コード例 #1
0
 function getValidItems($mid, $id = 0)
 {
     static $suspension = array();
     $full_items = array();
     if (empty($mid)) {
         return $full_items;
     }
     require_once XOOPS_ROOT_PATH . "/modules/newbb/include/functions.user.php";
     $uid = is_object($GLOBALS["xoopsUser"]) ? $GLOBALS["xoopsUser"]->getVar("uid") : 0;
     $ip = newbb_getIP(true);
     if (!empty($GLOBALS["xoopsModuleConfig"]['enable_usermoderate']) && !isset($suspension[$uid][$id]) && !newbb_isAdmin($id)) {
         $moderate_handler =& xoops_getmodulehandler('moderate', 'newbb');
         if ($moderate_handler->verifyUser($uid, "", $id)) {
             $suspension[$uid][$ip][$id] = 1;
         } else {
             $suspension[$uid][$ip][$id] = 0;
         }
     }
     $items = $this->getValidPerms();
     foreach ($items as $item) {
         /* skip access for suspended users */
         //if ( !empty($suspension[$uid][$ip][$id]) && in_array($item, array("post", "reply", "edit", "delete", "addpoll", "vote", "attach", "noapprove", "type")) ) continue;
         if (!empty($suspension[$uid][$ip][$id])) {
             continue;
         }
         $full_items[] = "'forum_{$item}'";
     }
     return $full_items;
 }
コード例 #2
0
 * @version		$Id $
 * @package		module::newbb
 */
include 'header.php';
$forum_id = isset($_POST['forum_id']) ? intval($_POST['forum_id']) : 0;
$topic_id = !empty($_POST['topic_id']) ? $_POST['topic_id'] : null;
$op = !empty($_POST['op']) ? $_POST['op'] : "";
$op = in_array($op, array("approve", "delete", "restore", "move")) ? $op : "";
if (empty($topic_id) || empty($op)) {
    redirect_header("javascript:history.go(-1);", 2, _MD_NORIGHTTOACCESS);
    exit;
}
$topic_id = array_values($topic_id);
$topic_handler =& xoops_getmodulehandler('topic', 'newbb');
$forum_handler =& xoops_getmodulehandler('forum', 'newbb');
$isadmin = newbb_isAdmin($forum_id);
if (!$isadmin) {
    redirect_header("index.php", 2, _MD_NORIGHTTOACCESS);
    exit;
}
switch ($op) {
    case "restore":
        $forums = array();
        $topics_obj =& $topic_handler->getAll(new Criteria("topic_id", "(" . implode(",", $topic_id) . ")", "IN"));
        foreach (array_keys($topics_obj) as $id) {
            $topic_obj =& $topics_obj[$id];
            $topic_handler->approve($topic_obj);
            $topic_handler->synchronization($topic_obj);
            $forums[$topic_obj->getVar("forum_id")] = 1;
        }
        $criteria_forum = new Criteria("forum_id", "(" . implode(",", array_keys($forums)) . ")", "IN");
コード例 #3
0
ファイル: viewpost.php プロジェクト: BackupTheBerlios/soopa
//  You should have received a copy of the GNU General Public License        //
//  along with this program; if not, write to the Free Software              //
//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //
//  ------------------------------------------------------------------------ //
// Author: Kazumi Ono (AKA onokazu)                                          //
// URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ //
// Project: The XOOPS Project                                                //
// ------------------------------------------------------------------------- //
include 'header.php';
$start = !empty($_GET['start']) ? intval($_GET['start']) : 0;
$forum_id = !empty($_GET['forum']) ? intval($_GET['forum']) : 0;
$isnew = !empty($_GET['new']) ? intval($_GET['new']) : 0;
$order = isset($_GET['order']) ? $_GET['order'] : "DESC";
$forum_handler =& xoops_getmodulehandler('forum', 'newbb');
$post_handler =& xoops_getmodulehandler('post', 'newbb');
$isadmin = newbb_isAdmin();
$perm = $isnew ? "access" : "view";
if (empty($forum_id)) {
    $forums = $forum_handler->getForums(0, $perm);
    $access_forums = array_keys($forums);
} else {
    $forum =& $forum_handler->get($forum_id);
    $forums[$forum_id] =& $forum;
    $access_forums = array($forum_id);
}
$post_perpage = $isnew ? $xoopsModuleConfig['topics_per_page'] : $xoopsModuleConfig['posts_per_page'];
$criteria_count = new CriteriaCompo(new Criteria("forum_id", "(" . implode(",", $access_forums) . ")", "IN"));
$criteria_count->add(new Criteria("approved", 1));
$criteria_post = new CriteriaCompo(new Criteria("p.forum_id", "(" . implode(",", $access_forums) . ")", "IN"));
$criteria_post->add(new Criteria("p.approved", 1));
$criteria_post->setSort("p.post_time");
コード例 #4
0
ファイル: reply.php プロジェクト: BackupTheBerlios/soopa
 include 'include/forumform.inc.php';
 $karma_handler =& xoops_getmodulehandler('karma', 'newbb');
 $user_karma = $karma_handler->getUserKarma();
 foreach ($forumpostshow as $eachpost) {
     // Sorry, in order to save queries, we have to hide the non-open post_text even if you have replied or have adequate karma, even an admin.
     if ($xoopsModuleConfig['enable_karma'] && $eachpost->getVar('post_karma') > 0) {
         $p_message = sprintf(_MD_KARMA_REQUIREMENT, "***", $eachpost->getVar('post_karma')) . "</div>";
     } elseif ($xoopsModuleConfig['allow_require_reply'] && $eachpost->getVar('require_reply')) {
         $p_message = _MD_REPLY_REQUIREMENT;
     } else {
         $p_message = $eachpost->getVar('post_text');
     }
     $isadmin = 0;
     if ($eachpost->getVar('uid')) {
         $p_name = newbb_getUnameFromId($eachpost->getVar('uid'), $xoopsModuleConfig['show_realname']);
         if (newbb_isAdmin($forum, $eachpost->getVar('uid'))) {
             $isadmin = 1;
         }
     } else {
         $poster_name = $eachpost->getVar('poster_name');
         $p_name = empty($poster_name) ? $xoopsConfig['anonymous'] : $myts->htmlSpecialChars($poster_name);
     }
     $p_date = formatTimestamp($eachpost->getVar('post_time'));
     /*
     	    if( $isadmin && $xoopsModuleConfig['allow_moderator_html']){
     	    	$p_subject = $myts->undoHtmlSpecialChars($eachpost->getVar('subject'));
     }else{
     	    	$p_subject = $eachpost->getVar('subject');
     }
     */
     $p_subject = $eachpost->getVar('subject');
コード例 #5
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);
 }
コード例 #6
0
ファイル: polls.php プロジェクト: BackupTheBerlios/soopa
}
include XOOPS_ROOT_PATH . "/header.php";
$topic_handler =& xoops_getmodulehandler('topic', 'newbb');
$forumtopic =& $topic_handler->get($topic_id);
$forum = $forumtopic->getVar('forum_id');
$forum_handler =& xoops_getmodulehandler('forum', 'newbb');
$viewtopic_forum =& $forum_handler->get($forum);
if (!$forum_handler->getPermission($viewtopic_forum)) {
    redirect_header("index.php", 2, _MD_NORIGHTTOACCESS);
    exit;
}
if (!$topic_handler->getPermission($viewtopic_forum, $forumtopic->getVar('topic_status'), "view")) {
    redirect_header("viewforum.php?forum=" . $viewtopic_forum->getVar('forum_id'), 2, _MD_NORIGHTTOVIEW);
    exit;
}
$isadmin = newbb_isAdmin($viewtopic_forum);
$perm = false;
if ($isadmin) {
    $perm = true;
} elseif ($topic_handler->getPermission($viewtopic_forum, $forumtopic->getVar('topic_status'), "addpoll") && $viewtopic_forum->getVar('allow_polls') == 1) {
    if (($op == "add" || $op == "save") && !$forumtopic->getVar("topic_haspoll") && is_object($xoopsUser) && $xoopsUser->getVar("uid") == $forumtopic->getVar("topic_poster")) {
        $perm = true;
    } elseif (!empty($poll_id)) {
        $poll = new XoopsPoll($poll_id);
        if (is_object($xoopsUser) && $xoopsUser->getVar("uid") == $poll->getVar("user_id")) {
            $perm = true;
        }
    }
}
if (!$perm) {
    redirect_header("viewtopic.php?topic_id=" . $topic_id, 2, _MD_NORIGHTTOACCESS);
コード例 #7
0
ファイル: form.post.php プロジェクト: trabisdementia/xuups
} else {
    $form_title = _EDIT . ": <a href=\"viewtopic.php?post_id={$post_id}\" rel=\"external\">" . $post_obj->getVar("subject") . "</a>";
}
$xoopsTpl->assign("form_title", $form_title);
foreach (array('start', 'topic_id', 'post_id', 'pid', 'isreply', 'isedit', 'contents_preview') as $getint) {
    ${$getint} = isset($_GET[$getint]) ? intval($_GET[$getint]) : (!empty(${$getint}) ? ${$getint} : 0);
}
foreach (array('order', 'viewmode', 'hidden', 'newbb_form', 'icon', 'op') as $getstr) {
    ${$getstr} = isset($_GET[$getstr]) ? $_GET[$getstr] : (!empty(${$getstr}) ? ${$getstr} : '');
}
$topic_handler =& xoops_getmodulehandler('topic', 'newbb');
$topic_status = $topic_handler->get(@$topic_id, 'topic_status');
$forum_form = new XoopsThemeForm(htmlspecialchars(@$form_title), 'form_post', "post.php", 'post', true);
$forum_form->setExtra('enctype="multipart/form-data"');
$uid = is_object($xoopsUser) ? $xoopsUser->getVar('uid') : 0;
if (newbb_isAdmin($forum_obj) || $topic_handler->getPermission($forum_obj, $topic_status, 'type') && ($topic_id == 0 || $uid == $topic_handler->get(@$topic_id, 'topic_poster'))) {
    $type_id = $topic_handler->get(@$topic_id, 'type_id');
    $type_handler =& xoops_getmodulehandler('type', 'newbb');
    $types = $type_handler->getByForum($forum_obj->getVar("forum_id"));
    if (!empty($types)) {
        $type_element = new XoopsFormRadio(_MD_NEWBB_TYPE, 'type_id', $type_id);
        $type_element->addOption(0, _NONE);
        foreach ($types as $key => $type) {
            $value = empty($type["type_color"]) ? $type["type_name"] : "<em style=\"font-style: normal; color: " . $type["type_color"] . ";\">" . $type["type_name"] . "</em>";
            $type_element->addOption($key, $value);
        }
        $forum_form->addElement($type_element);
    } else {
        $forum_form->addElement(new XoopsFormHidden('type_id', 0));
    }
}
コード例 #8
0
ファイル: topic.php プロジェクト: BackupTheBerlios/haxoo-svn
 function getPermission($forum, $topic_locked = 0, $type = "view")
 {
     global $xoopsUser, $xoopsModule;
     static $_cachedTopicPerms;
     mod_loadFunctions("user", "newbb");
     if (newbb_isAdmin($forum)) {
         return 1;
     }
     $forum_id = is_object($forum) ? $forum->getVar('forum_id') : intval($forum);
     if ($forum_id < 1) {
         return false;
     }
     if ($topic_locked && 'view' != $type) {
         $permission = 0;
     } else {
         $perm_handler =& xoops_getmodulehandler('permission', 'newbb');
         $permission = $perm_handler->getPermission("forum", $type, $forum_id);
     }
     return $permission;
 }
コード例 #9
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);
 }
コード例 #10
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);
 }
コード例 #11
0
ファイル: functions.php プロジェクト: BackupTheBerlios/soopa
function newbb_checkSubjectPrefixPermission($forum = 0, $user = -1)
{
    global $xoopsUser, $xoopsModuleConfig;
    if ($xoopsModuleConfig['subject_prefix_level'] < 1) {
        return false;
    }
    if ($xoopsModuleConfig['subject_prefix_level'] == 1) {
        return true;
    }
    if ($user == -1) {
        $user =& $xoopsUser;
    }
    if (!is_object($user) && intval($user) < 1) {
        return false;
    }
    $uid = is_object($user) ? $user->getVar('uid') : intval($user);
    if ($xoopsModuleConfig['subject_prefix_level'] == 2) {
        return true;
    }
    if ($xoopsModuleConfig['subject_prefix_level'] == 3) {
        if (newbb_isAdmin($forum, $user)) {
            return true;
        } else {
            return false;
        }
    }
    if ($xoopsModuleConfig['subject_prefix_level'] == 4) {
        if (newbb_isAdministrator($user)) {
            return true;
        }
    }
    return false;
}
コード例 #12
0
ファイル: topic.php プロジェクト: trabisdementia/xuups
 function getPermission($forum, $topic_locked = 0, $type = "view")
 {
     global $xoopsUser, $xoopsModule;
     static $_cachedTopicPerms;
     require_once XOOPS_ROOT_PATH . "/modules/newbb/include/functions.user.php";
     if (newbb_isAdmin($forum)) {
         return 1;
     }
     $forum_id = is_object($forum) ? $forum->getVar('forum_id') : intval($forum);
     if ($forum_id < 1) {
         return false;
     }
     if ($topic_locked && 'view' != $type) {
         $permission = 0;
     } else {
         $perm_handler =& xoops_getmodulehandler('permission', 'newbb');
         $permission = $perm_handler->getPermission("forum", $type, $forum_id);
     }
     return $permission;
 }
コード例 #13
0
ファイル: delete.php プロジェクト: BackupTheBerlios/soopa
foreach (array('forum', 'topic_id', 'post_id', 'order', 'pid', 'act') as $getint) {
    ${$getint} = ${$getint} ? ${$getint} : (isset($_GET[$getint]) ? intval($_GET[$getint]) : 0);
}
$viewmode = isset($_GET['viewmode']) && $_GET['viewmode'] != 'flat' ? 'thread' : 'flat';
$viewmode = $viewmode ? $viewmode : (isset($_POST['viewmode']) ? $_POST['viewmode'] : 'flat');
if (empty($forum)) {
    redirect_header("index.php", 2, _MD_ERRORFORUM);
    exit;
}
$forum_handler =& xoops_getmodulehandler('forum', 'newbb');
$_forum =& $forum_handler->get($forum);
if (!$forum_handler->getPermission($_forum)) {
    redirect_header("index.php", 2, _MD_NORIGHTTOACCESS);
    exit;
}
$isadmin = newbb_isAdmin($_forum);
$uid = is_object($xoopsUser) ? $xoopsUser->getVar('uid') : 0;
$post_handler =& xoops_getmodulehandler('post', 'newbb');
$forumpost =& $post_handler->get($post_id);
$topic_handler =& xoops_getmodulehandler('topic', 'newbb');
$topic = $topic_handler->get($topic_id);
$topic_status = $topic->getVar('topic_status');
if ($topic_handler->getPermission($forum, $topic_status, 'delete') && ($isadmin || $forumpost->checkIdentity())) {
} else {
    redirect_header("viewtopic.php?topic_id={$topic_id}&amp;order={$order}&amp;viewmode={$viewmode}&amp;pid={$pid}&amp;forum={$forum}", 2, _MD_DELNOTALLOWED);
    exit;
}
$post_handler =& xoops_getmodulehandler('post', 'newbb');
$forumpost =& $post_handler->get($post_id);
if (!$isadmin && !$forumpost->checkTimelimit('delete_timelimit')) {
    redirect_header("viewtopic.php?forum={$forum}&amp;topic_id={$topic_id}&amp;post_id={$post_id}&amp;order={$order}&amp;viewmode={$viewmode}&amp;pid={$pid}", 2, _MD_TIMEISUPDEL);
コード例 #14
0
ファイル: post.php プロジェクト: BackupTheBerlios/soopa
 function &getPostBody($imageAsSource = false)
 {
     global $xoopsConfig, $xoopsModuleConfig, $xoopsUser, $myts;
     $uid = is_object($xoopsUser) ? $xoopsUser->getVar('uid') : 0;
     $karma_handler =& xoops_getmodulehandler('karma', 'newbb');
     $user_karma = $karma_handler->getUserKarma();
     $post = array();
     $post['attachment'] = false;
     $post_text = newbb_displayTarea($this->vars['post_text']['value'], $this->getVar('dohtml'), $this->getVar('dosmiley'), $this->getVar('doxcode'), $this->getVar('doimage'), $this->getVar('dobr'));
     if (newbb_isAdmin($this->getVar('forum_id')) or $this->checkIdentity()) {
         $post['text'] = $post_text . '<br />' . $this->displayAttachment($imageAsSource);
     } elseif ($xoopsModuleConfig['enable_karma'] && $this->getVar('post_karma') > $user_karma) {
         $post['text'] = sprintf(_MD_KARMA_REQUIREMENT, $user_karma, $this->getVar('post_karma'));
     } elseif ($xoopsModuleConfig['allow_require_reply'] && $this->getVar('require_reply') && (!$uid || !isset($viewtopic_users[$uid]))) {
         $post['text'] = _MD_REPLY_REQUIREMENT;
     } else {
         $post['text'] = $post_text . '<br />' . $this->displayAttachment($imageAsSource);
     }
     $member_handler =& xoops_gethandler('member');
     $eachposter =& $member_handler->getUser($this->getVar('uid'));
     if (is_object($eachposter) && $eachposter->isActive()) {
         if ($xoopsModuleConfig['show_realname'] && $eachposter->getVar('name')) {
             $post['author'] = $eachposter->getVar('name');
         } else {
             $post['author'] = $eachposter->getVar('uname');
         }
         unset($eachposter);
     } else {
         $post['author'] = $this->getVar('poster_name') ? $this->getVar('poster_name') : $xoopsConfig['anonymous'];
     }
     $post['subject'] = newbb_htmlSpecialChars($this->vars['subject']['value']);
     $post['date'] = $this->getVar('post_time');
     return $post;
 }
コード例 #15
0
ファイル: topic.php プロジェクト: BackupTheBerlios/soopa
 function getPermission($forum, $topic_locked = 0, $type = "view")
 {
     global $xoopsUser, $xoopsModule;
     static $_cachedTopicPerms;
     if (newbb_isAdmin($forum)) {
         return 1;
     }
     $forum = is_object($forum) ? $forum->getVar('forum_id') : intval($forum);
     if ($forum < 1) {
         return false;
     }
     if (!isset($_cachedTopicPerms)) {
         $getpermission =& xoops_getmodulehandler('permission', 'newbb');
         $_cachedTopicPerms = $getpermission->getPermissions("topic");
     }
     $type = strtolower($type);
     $perm_item = 'forum_' . $type;
     $permission = isset($_cachedTopicPerms[$forum][$perm_item]) ? 1 : 0;
     if ($topic_locked && 'view' != $type) {
         $permission = 0;
     }
     return $permission;
 }
コード例 #16
0
$order = isset($_GET['order']) ? $_GET['order'] : "DESC";
$uid = !empty($_GET['uid']) ? intval($_GET['uid']) : 0;
$status = !empty($_GET['status']) && in_array($_GET['status'], array("active", "pending", "deleted", "new")) ? $_GET['status'] : "";
$mode = !empty($_GET['mode']) ? intval($_GET['mode']) : 0;
$mode = !empty($status) && in_array($status, array("active", "pending", "deleted")) ? 2 : $mode;
$forum_handler =& xoops_getmodulehandler('forum', 'newbb');
$post_handler =& xoops_getmodulehandler('post', 'newbb');
if (empty($forum_id)) {
    $forums = $forum_handler->getByPermission(0, "view");
    $access_forums = array_keys($forums);
    $isadmin = $GLOBALS["xoopsUserIsAdmin"];
} else {
    $forum_obj =& $forum_handler->get($forum_id);
    $forums[$forum_id] =& $forum_obj;
    $access_forums = array($forum_id);
    $isadmin = newbb_isAdmin($forum_obj);
}
/* Only admin has access to admin mode */
if (!$isadmin) {
    $status = in_array($status, array("active", "pending", "deleted")) ? "" : $status;
    $mode = 0;
}
if ($mode) {
    $_GET['viewmode'] = "flat";
}
$post_perpage = $xoopsModuleConfig['posts_per_page'];
$criteria_count = new CriteriaCompo(new Criteria("forum_id", "(" . implode(",", $access_forums) . ")", "IN"));
$criteria_post = new CriteriaCompo(new Criteria("p.forum_id", "(" . implode(",", $access_forums) . ")", "IN"));
$criteria_post->setSort("p.post_id");
$criteria_post->setOrder($order);
if (!empty($uid)) {
コード例 #17
0
ファイル: edit.php プロジェクト: BackupTheBerlios/soopa
 $subject_pre = "";
 $subject = $forumpost->getVar('subject', "E");
 $message = $forumpost->getVar('post_text', "E");
 $poster_name = $forumpost->getVar('poster_name', "E");
 $attachments = $forumpost->getAttachment();
 $post_karma = $forumpost->getVar('post_karma');
 $require_reply = $forumpost->getVar('require_reply');
 $hidden = "";
 include 'include/forumform.inc.php';
 if (!$istopic) {
     $forumpost2 =& $post_handler->get($post_id2);
     $r_message = $forumpost2->getVar('post_text');
     $isadmin = 0;
     if ($forumpost2->getVar('uid')) {
         $r_name = newbb_getUnameFromId($forumpost2->getVar('uid'), $xoopsModuleConfig['show_realname']);
         if (newbb_isAdmin($forum, $forumpost2->getVar('uid'))) {
             $isadmin = 1;
         }
     } else {
         $poster_name = $forumpost2->getVar('poster_name');
         $r_name = empty($poster_name) ? $xoopsConfig['anonymous'] : $poster_name;
     }
     $r_date = formatTimestamp($forumpost2->getVar('post_time'));
     $r_subject = $forumpost2->getVar('subject');
     $r_content = _MD_BY . " " . $r_name . " " . _MD_ON . " " . $r_date . "<br /><br />";
     $r_content .= $r_message;
     $r_subject = $forumpost2->getVar('subject');
     echo "<table cellpadding='4' cellspacing='1' width='98%' class='outer'><tr><td class='head'>" . $r_subject . "</td></tr>";
     echo "<tr><td><br />" . $r_content . "<br /></td></tr></table>";
 }
 include XOOPS_ROOT_PATH . '/footer.php';