Translations of this page: en bg cs de fi fr hu it ja pl ru tr zh

This is an old revision of the document!


PunBB 1.3 integration

General

Common tasks

Recent 10 posts

<?php
 
define('RECENT_POSTS_SHOW_POST', true); // Set to false to show topic subject only
define('RECENT_POSTS_MAX_POST_LENGTH', 20); // Limit length of the post text displayed
 
if (!defined('FORUM_ROOT'))
	define('FORUM_ROOT', './');
 
require FORUM_ROOT.'include/common.php';
 
// Get 10 lastest posts
$query = array(
	'SELECT'	=> 'p.id, p.message, t.subject',
	'FROM'		=> 'posts AS p',
	'JOINS'		=> array(
		array(
			'LEFT JOIN'		=> 'topics AS t',
			'ON'			=> 'p.topic_id = t.id'
		)
	),
	'ORDER BY'	=> 'p.posted DESC',
	'LIMIT'		=> '0,10'
);
 
$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
 
$recent_posts = array();
while ($cur_post = $forum_db->fetch_assoc($result))
	$recent_posts[] = $cur_post;
 
// Print out posts
if (!empty($recent_posts))
{
	?>
	<ul>
	<?php
	foreach($recent_posts as $cur_post)
	{
 
		echo '<li><a href="', forum_link($forum_url['post'], $cur_post['id']), '">', $cur_post['subject'], '</a>';
 
		if (RECENT_POSTS_SHOW_POST)
		{
			if (utf8_strlen($cur_post['message']) > RECENT_POSTS_MAX_POST_LENGTH)
				$cur_post['message'] = utf8_substr($cur_post['message'], 0, RECENT_POSTS_MAX_POST_LENGTH).'…';
 
			echo '<br />', "\n", $cur_post['message'];
		}
 
		echo '</li>';
	}
	?>
	</ul>
	<?php
}
 
?>

Showing all topics

<?php
 
if (!defined('FORUM_ROOT'))
	define('FORUM_ROOT', './');
 
require FORUM_ROOT.'include/common.php';
 
// Get all topics
$query = array(
	'SELECT'	=> 't.id, subject, t.last_post, forum_id',
	'FROM'		=> 'topics AS t',
	'JOINS'		=>	array(
		array(
			'INNER JOIN'	=>	'forums AS f',
			'ON'		=>	'f.id = t.forum_id'
		)
	),
	'ORDER BY'	=> 'last_post DESC',
);
 
$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
 
if (!$forum_user['is_guest'])
	$tracked_topics = get_tracked_topics();
 
?>
<ul>
<?php
 
while ($cur_topic = $forum_db->fetch_assoc($result))
{
	echo '<li>';
 
	if (!$forum_user['is_guest'] && $cur_topic['last_post'] > $forum_user['last_visit']
		&& (!isset($tracked_topics['topics'][$cur_topic['id']]) || $tracked_topics['topics'][$cur_topic['id']] < $cur_topic['last_post'])
		&& (!isset($tracked_topics['forums'][ $cur_topic['forum_id'] ]) || $tracked_topics['forums'][ $cur_topic['forum_id'] ] < $cur_topic['last_post']))
		echo '[unread]&nbsp;';
	else
		echo '[read]&nbsp;';
	echo '<a href="', forum_link($forum_url['topic'], $cur_topic['id']), '">', $cur_topic['subject'], '</a>';
 
	echo '</li>';
}
 
?>
</ul>

Showing active topics

$topics_count = 5; $query_active_topics= array(

  'SELECT'    => 't.id AS tid, t.poster, t.subject, t.posted AS has_posted, t.last_post, t.last_post_id, t.num_replies, t.num_views, t.closed, t.sticky, t.forum_id, t.last_poster',
  'FROM'        => 'topics AS t',
  'JOINS'        => array(
      array(
          'INNER JOIN'    => 'forums AS f',
          'ON'            => 'f.id=t.forum_id'
      ),
      array(
          'LEFT JOIN'     => 'forum_perms AS fp',
          'ON'            => '(fp.forum_id=f.id AND fp.group_id='.$forum_user['g_id'].')'
      )
  ),
  'ORDER BY'    => 't.last_post DESC',
  'LIMIT' => $topics_count

); $result_active = $forum_db→query_build($query_active_topics) or error(FILE, LINE);

if ($forum_db→num_rows($result_active) == 0) {

?>

  <div class="main-content main-message">
      <p>There is no message.</p>
  </div>

<?php} else {

  require_once FORUM_ROOT.'lang/'.$forum_user['language'].'/forum.php';

?>

  <div class="main-subhead">
          <p class="item-summary">
              <span>
                  <strong class="subject-title"><?php echo $lang_index['Topics']; ?></strong>
                  <strong class="info-replies"><?php echo $lang_forum['Replies']; ?></strong>
                  <strong class="info-views"><?php echo $lang_forum['Views']; ?></strong>
                  <strong class="info-lastpost"><?php echo $lang_index['last post']; ?></strong>
              </span>
          </p>                                                
      </div>
  <div class="main-content main-forum">                    
  <?php
      $item_num = 1;
      while ($cur_set = $forum_db->fetch_assoc($result_active))
      {
         // Start from scratch
          $item_subject = $item_body = $item_status = $item_nav = $item_title = array();
          $item_indicator = ''; 
          
          if (!$forum_user['is_guest'] && $forum_config['o_show_dot'] == '1' && $cur_set['has_posted'] > 0)
          {
              $item_title['posted'] = '<span class="posted-mark">'.$lang_forum['You posted indicator'].'</span>';
              $item_status['posted'] = 'posted';
          }
          $item_title['link'] = '<a href="'.forum_link($forum_url['post'], $cur_set['last_post_id']).'">'.forum_htmlencode($cur_set['subject']).'</a>';
          if (!empty($item_nav))
              $item_title['nav'] = '<span class="item-nav">'.sprintf($lang_forum['Topic navigation'], implode('&#160;&#160;', $item_nav)).'</span>';
          $item_body['subject']['title'] = '<h3 class="hn"><span class="item-num">'.forum_number_format(++$item_num).'</span> '.implode(' ', $item_title).'</h3> <em> by '.forum_htmlencode($cur_set['poster']).'</em>';
          if ($cur_set['sticky'] == '1')
          {
              $item_subject_status['sticky'] = $lang_forum['Sticky'];
              $item_status['sticky'] = 'sticky';
          }
          if ($cur_set['closed'] != '0')
          {
              $item_subject_status['closed'] = $lang_forum['Closed'];
              $item_status['closed'] = 'closed';
          }
          // Does this topic contain posts we haven't read? If so, tag it accordingly.
          if (!$forum_user['is_guest'] && $cur_set['last_post'] > $forum_user['last_visit'] && (!isset($tracked_topics['topics'][$cur_set['tid']]) || $tracked_topics['topics'][$cur_set['tid']] < $cur_set['last_post']) && (!isset($tracked_topics['forums'][$cur_set['forum_id']]) || $tracked_topics['forums'][$cur_set['forum_id']] < $cur_set['last_post']))
          {
              $item_status['new'] = 'new';
          }
          
          if (!empty($item_subject_status))
              $item_subject['status'] = '<span class="item-status">'.sprintf($lang_forum['Item status'], implode(' ', $item_subject_status)).'</span>';

// $item_subject['starter'] = '<span class=“item-starter”>'.sprintf($lang_forum['Topic starter'], '<cite>'.forum_htmlencode($cur_set['poster']).'</cite>').'</span>';

          $item_body['subject']['desc'] = implode(' ', $item_subject);
          if (empty($item_status))
              $item_status['normal'] = 'normal';
          $item_style = (($item_num % 2 != 0) ? ' odd' : ' even').(($item_num == 1) ? ' main-first-item' : '').((!empty($item_status)) ? ' '.implode(' ', $item_status) : '');
          
          $item_body['info']['replies'] = '<li class="info-replies"><strong>'.forum_number_format($cur_set['num_replies']).'</strong> <span class="label">'.(($cur_set['num_replies'] == 1) ? $lang_forum['Reply'] : $lang_forum['Replies']).'</span></li>';
          $item_body['info']['views'] = '<li class="info-replies"><strong>'.forum_number_format($cur_set['num_views']).'</strong> <span class="label">'.(($cur_set['num_views'] == 1) ? $lang_forum['View'] : $lang_forum['Views']).'</span></li>';
          $item_body['info']['last_post'] = '<li class="info-lastpost"><span class="label">'.$lang_index['Last post'].'</span> <strong><a href="'.forum_link($forum_url['post'], $cur_set['last_post_id']).'">'.format_time($cur_set['last_post']).'</a></strong> <cite>'.sprintf($lang_index['Last poster'], forum_htmlencode($cur_set['last_poster'])).'</cite></li>';
          ?>
              <div class="main-item<?php echo $item_style ?>">
                  <span class="icon <?php echo implode(' ', $item_status) ?>"><!-- --></span>
                  <div class="item-subject">
                      <?php echo implode("\n\t\t\t\t", $item_body['subject'])."\n" ?>
                  </div>
                  <ul class="item-info">
                      <?php echo implode("\n\t\t\t\t", $item_body['info'])."\n" ?>
                  </ul>
            </div>
  <?php
     }

}


Personal Tools