Beispiel #1
0
     $subject = COM_truncate($record['subject'], $CONF_FORUM['show_subject_length'], '...');
 } else {
     $subject = $record['subject'];
 }
 if ($record['uid'] > 1) {
     $firstposterName = COM_getDisplayName($record['uid']);
 } else {
     $firstposterName = $record['name'];
 }
 $topicinfo = "<b>{$LANG_GF01['STARTEDBY']} {$firstposterName}, {$firstdate}</b><br" . XHTML . ">";
 $lastpostinfo = stripBBCode($lastpostinfo);
 // Simple function to strip out bbcode so tooltips display better
 $lastpostinfo = strip_tags(COM_truncate($record['comment'], $CONF_FORUM['contentinfo_numchars'], '...'));
 $lastpostinfo = htmlspecialchars($lastpostinfo);
 // Escape things like " so it displays properly in tooltip
 $topicinfo .= str_replace(LB, "<br" . XHTML . ">", forum_mb_wordwrap($lastpostinfo, $CONF_FORUM['linkinfo_width'], LB));
 if (function_exists('COM_getTooltip')) {
     $topiclink = "viewtopic.php?showtopic={$record['id']}";
     $tooltip_subject = COM_getTooltip($subject, $topicinfo, $topiclink);
     //$subject = '';
     $topiclisting->set_var('tooltip_subject', $tooltip_subject);
 }
 $topiclisting->set_var('topicinfo', $topicinfo);
 $topiclisting->parse('folderimg', $folderimg);
 $topiclisting->set_var('topic_id', $record['id']);
 $topiclisting->set_var('subject', $subject);
 $topiclisting->set_var('fullsubject', $record['subject']);
 $topiclisting->set_var('gotomsg', $gotomsg);
 $topiclisting->set_var('displaypageslink', $displaypageslink);
 $topiclisting->set_var('showuserlink', $showuserlink);
 $topiclisting->set_var('lastposter', $lastposter);
/**
* Display latest forum posts in the center block.
*
* @param   where   int      where the block will be displayed (0..2)
* @param   page    int      page number
* @param   topic   string   topic ID
* @return          string   HTML for the center blcok (can be empty)
*/
function CUSTOM_centerblock_forum($limit = '')
{
    global $_CONF, $_USER, $_TABLES, $LANG_GF01, $CONF_FORUM;
    global $LANG_GF02, $mode, $order;
    //$TIMER = new timerobject();
    //$TIMER->startTimer();
    //$exectime = $TIMER->stopTimer();
    if ($CONF_FORUM['installed_version'] < 2.6) {
        return;
    }
    if ($CONF_FORUM['registration_required'] && $_USER['uid'] < 2) {
        return;
    }
    $retval = '';
    $cb_enable = $CONF_FORUM['show_centerblock'];
    $cb_where = $CONF_FORUM['centerblock_where'];
    // If enabled only for homepage and this is not page 1 or a topic page,
    // then set disable flag
    if ($CONF_FORUM['centerblock_homepage'] == 1 and ($page > 1 or !empty($topic))) {
        $cb_enable = 0;
    } elseif ($CONF_FORUM['centerblock_homepage'] == 0 and $page > 1) {
        $cb_where = 1;
        // Top of Page
    }
    // Check if there are no featured articles in this topic
    // and if so then place it at the top of the page
    if (!empty($topic)) {
        $fromsql = ", {$_TABLES['topic_assignments']} ta";
        $wheresql = "WHERE ta.id = sid AND ta.tid='{$topic}' AND featured > 0";
    } else {
        $fromsql = '';
        $wheresql = 'WHERE featured = 1';
    }
    $query = DB_query("SELECT COUNT(*) AS count FROM {$_TABLES['stories']} {$fromsql} {$wheresql}");
    $result = DB_fetchArray($query);
    if ($result['count'] == 0 and $cb_where == 2) {
        $cb_where = 1;
    }
    $block = new Template($_CONF['path'] . 'system/custom/forum');
    $block->set_file(array('block' => 'centerblock.thtml', 'record' => 'centerblock_displayline.thtml'));
    $block->set_var('xhtml', XHTML);
    $block->set_var('phpself', $_CONF['site_url'] . '/index.php');
    $block->set_var('startblock', COM_startBlock($LANG_GF02['msg170']));
    $block->set_var('endblock', COM_endBlock());
    $block->set_var('site_url', $_CONF['site_url']);
    $block->set_var('layout_url', $CONF_FORUM['layout_url']);
    $block->set_var('LANG_title', $LANG_GF02['msg170']);
    $block->set_var('LANG_FORUM', $LANG_GF01['FORUM']);
    $block->set_var('LANG_TOPIC', $LANG_GF01['TOPIC']);
    $block->set_var('LANG_LASTPOST', $LANG_GF01['LASTPOST']);
    $block->set_var('LANG_viewlastpost', $LANG_GF02['msg160']);
    $block->set_var('LANG_forumjump', $LANG_GF02['msg195']);
    $groups = array();
    $usergroups = SEC_getUserGroups();
    foreach ($usergroups as $group) {
        $groups[] = $group;
    }
    $grouplist = implode(',', $groups);
    if ($limit != '') {
        $CONF_FORUM['centerblock_numposts'] = $limit;
    }
    $sql = "SELECT a.id, a.forum, a.name, a.date, a.lastupdated, a.last_reply_rec, a.subject, ";
    $sql .= "a.comment, a.uid, a.name, a.pid, a.replies, a.views, b.forum_name  ";
    $sql .= "FROM {$_TABLES['forum_topic']} a ";
    $sql .= "LEFT JOIN {$_TABLES['forum_forums']} b ON a.forum=b.forum_id ";
    $sql .= "WHERE pid=0 AND b.grp_id IN ({$grouplist}) AND b.no_newposts = 0 ";
    $sql .= "ORDER BY lastupdated DESC LIMIT {$CONF_FORUM['centerblock_numposts']}";
    $result = DB_query($sql);
    if (DB_numRows($result) == 0) {
        return;
    }
    $f_tooltip = function_exists('COM_getTooltip');
    $cssid = 0;
    while ($A = DB_fetchArray($result)) {
        //        $fullsubject = "{$A['subject']}\n{$LANG_GF01['POSTEDBY']}:{$A['name']}{$LANG_GF01['VIEWS']}:{$A['views']}, {$LANG_GF01['REPLIES']}:{$A['replies']}";
        $fullsubject = "{$LANG_GF01['POSTEDBY']}:{$A['name']}{$LANG_GF01['VIEWS']}:{$A['views']}";
        if (strlen($A['subject']) > $CONF_FORUM['cb_subject_size']) {
            $A['subject'] = COM_truncate($A['subject'], $CONF_FORUM['cb_subject_size'], '...');
        }
        if ($CONF_FORUM['allow_user_dateformat']) {
            $firstdate = COM_getUserDateTimeFormat($A['date']);
            $firstdate = $firstdate[0];
            $lastdate = COM_getUserDateTimeFormat($A['lastupdated']);
            $lastdate = $lastdate[0];
        } else {
            $firstdate = strftime($CONF_FORUM['default_Datetime_format'], $A['date']);
            $lastdate = strftime($CONF_FORUM['default_Datetime_format'], $A['lastupdated']);
        }
        if ($A['uid'] > 1) {
            $topicinfo = COM_getDisplayName($A['uid']);
            //$topicinfo .= sprintf($LANG_GF01['LASTREPLYBY'],COM_getDisplayName($A['uid']));
        } else {
            $topicinfo = "{$A['name']}";
        }
        //        $topicinfo .= "{$firstdate} " . " {$LANG_GF01['VIEWS']}:{$A['views']}, {$LANG_GF01['REPLIES']}:{$A['replies']}</span>";
        //        $topicinfo .= "{$firstdate} " . " {$LANG_GF01['VIEWS']}:{$A['views']}"."</span>";
        if (empty($A['last_reply_rec']) or $A['last_reply_rec'] < 1) {
            $lastid = $A['id'];
            $lastcomment = $A['comment'];
        } else {
            $qlreply = DB_query("SELECT id,uid,name,comment FROM {$_TABLES['forum_topic']} WHERE id={$A['last_reply_rec']}");
            $B = DB_fetchArray($qlreply);
            $lastid = $B['id'];
            $lastcomment = $B['comment'];
            if ($B['uid'] > 1) {
                $lastpostuser = sprintf("%s", COM_getDisplayName($B['uid']));
            } else {
                $lastpostuser = sprintf("%s", $B['name']);
            }
        }
        $lastpostinfo = strip_tags(COM_truncate($lastcomment, $CONF_FORUM['contentinfo_numchars'], '...'));
        $lastpostinfo = str_replace(LB, "<br" . XHTML . ">", forum_mb_wordwrap($lastpostinfo, $CONF_FORUM['linkinfo_width'], LB));
        $cssid = $cssid == 1 ? 2 : 1;
        $f_tooltip = 0;
        if ($f_tooltip) {
            $lastpostlink = "{$_CONF['site_url']}/forum/viewtopic.php?showtopic={$A['id']}&amp;lastpost=true#{$lastid}";
            $block->set_var('tooltip_date', COM_getTooltip($lastdate, $lastpostinfo, $lastpostlink));
            $topiclink = "{$_CONF['site_url']}/forum/viewtopic.php?showtopic={$A['id']}";
            $block->set_var('tooltip_topic_subject', COM_getTooltip($A['subject'], $topicinfo, $topiclink));
        } else {
            $block->set_var('lastpostinfo', $lastpostinfo);
            $block->set_var('topicinfo', $topicinfo);
            $block->set_var('date', $firstdate);
            $block->set_var('lastdate', $lastdate);
            $block->set_var('topic_subject', $A['subject']);
        }
        $block->set_var('lastpostuser', $lastpostuser);
        $block->set_var('lastpostid', $lastid);
        $block->set_var('cssid', $cssid);
        $block->set_var('img_dir', $CONF_FORUM['imgset']);
        $block->set_var('forum_id', $A['forum']);
        $block->set_var('forum_name', $A['forum_name']);
        $block->set_var('topic_id', $A['id']);
        $block->set_var('fullsubject', $fullsubject);
        $block->set_var('views', $A['views']);
        $block->set_var('replies', $A['replies']);
        $block->set_var('posts', $A['replies'] + 1);
        $block->set_var('lastpostby', $A['name']);
        $block->parse('block_records', 'record', true);
    }
    $block->parse('output', 'block');
    $retval .= $block->finish($block->get_var('output'));
    //$exectime = $TIMER->stopTimer();
    //COM_errorLog("Centerblock Execution Time: $exectime seconds");
    return $retval;
}