Ok, I got the user avatars to show up on the CBB Recent Topics, and Recent Topic Replies blocks (CBB 3.07). I could probably add it to the recent posts one too, I just don't use that block on my site, so I didn't bother. But here's the hacks for those two if anyone's interested:
In newbb/blocks/newbb_block.php:
function b_newbb_show($options) (this is the function for the block that shows recently replied topics) Add the lines in red (there are 3):
function b_newbb_show($options)
{
global $xoopsConfig;
global $access_forums;
$db =& Database::getInstance();
$myts =& MyTextSanitizer::getInstance();
$block = array();
$i = 0;
$order = "";
$extra_criteria = "";
if(!empty($options[2])) {
$time_criteria = time() - newbb_getSinceTime($options[2]);
$extra_criteria = " AND p.post_time>".$time_criteria;
}
$time_criteria = null;
switch ($options[0]) {
case 'time':
default:
$order = 'p.post_time';
$extra_criteria .= " AND p.approved=1";
break;
}
$newbbConfig = getConfigForBlock();
if(!isset($access_forums)){
$forum_handler =& xoops_getmodulehandler('forum', 'newbb');
if(!$access_obj =& $forum_handler->getForums(0, 'access', array('forum_id', 'cat_id', 'forum_type')) ){
return null;
}
$access_forums = array_keys( $access_obj ); // get all accessible forums
unset($access_obj );
}
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;
}
$forum_criteria = ' AND t.forum_id IN (' . implode(',', $allowed_forums) . ')';
$approve_criteria = ' AND t.approved = 1';
$query = 'SELECT'.
' DISTINCT t.topic_id, t.topic_replies, t.forum_id, t.topic_title, t.topic_views, t.topic_subject,'.
' f.forum_name, f.allow_subject_prefix,'.
[color=FF0000]
' u.user_avatar,'.
[/color]
' p.post_id, p.post_time, p.icon, p.uid, p.poster_name'.
' FROM ' . $db->prefix('bb_posts') . ' AS p '.
' LEFT JOIN ' . $db->prefix('bb_topics') . ' AS t ON t.topic_last_post_id=p.post_id'.
' LEFT JOIN ' . $db->prefix('bb_forums') . ' AS f ON f.forum_id=t.forum_id'.
[color=FF0000]
' LEFT JOIN ' . $db->prefix('users') . ' AS u ON u.uid=p.uid'.
[/color]
' 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[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'], true);
foreach ($rows as $arr) {
$topic_page_jump = '';
if ($arr['allow_subject_prefix']) {
$subjectpres = explode(',', $newbbConfig['subject_prefix']);
if (count($subjectpres) > 1) {
foreach($subjectpres as $subjectpre) {
$subject_array[] = $subjectpre;
}
$subject_array[0] = null;
}
$topic['topic_subject'] = $subject_array[$arr['topic_subject']];
} else {
$topic['topic_subject'] = "";
}
$topic['post_id'] = $arr['post_id'];
$topic['forum_id'] = $arr['forum_id'];
$topic['forum_name'] = $myts->htmlSpecialChars($arr['forum_name']);
$topic['id'] = $arr['topic_id'];
[color=FF0000]
$topic['poster_avatar'] = $arr['user_avatar'];
[/color]
$title = $myts->htmlSpecialChars($arr['topic_title']);
if(!empty($options[5])){
$title = xoops_substr($title, 0, $options[5]);
}
$topic['title'] = $title;
$topic['replies'] = $arr['topic_replies'];
$topic['views'] = $arr['topic_views'];
$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;
$topic['topic_page_jump'] = $topic_page_jump;
$block['topics'][] = $topic;
unset($topic);
}
$block['indexNav'] = intval($options[4]);
return $block;
}
And for
function b_newbb_topic_show($options) (shows the most recently created topics) within the same file (also 3 lines, very similar to the first 3):
function b_newbb_topic_show($options)
{
global $xoopsConfig;
global $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 t.topic_time>".$time_criteria;
}
switch ($options[0]) {
case 'views':
$order = 't.topic_views';
break;
case 'replies':
$order = 't.topic_replies';
break;
case 'digest':
$order = 't.digest_time';
$extra_criteria = " AND t.topic_digest=1";
if($time_criteria)
$extra_criteria .= " AND t.digest_time>".$time_criteria;
break;
case 'sticky':
$order = 't.topic_time';
$extra_criteria .= " AND t.topic_sticky=1";
break;
case 'time':
default:
$order = 't.topic_time';
break;
}
$newbbConfig = getConfigForBlock();
if(!isset($access_forums)){
$forum_handler =& xoops_getmodulehandler('forum', 'newbb');
if(!$access_obj =& $forum_handler->getForums(0, 'access', array('forum_id', 'cat_id', 'forum_type')) ){
return null;
}
$access_forums = array_keys( $access_obj ); // get all accessible forums
unset($access_obj );
}
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;
}
$forum_criteria = ' AND t.forum_id IN (' . implode(',', $allowed_forums) . ')';
$approve_criteria = ' AND t.approved = 1';
$query = 'SELECT'.
' t.topic_id, t.topic_replies, t.forum_id, t.topic_title, t.topic_views, t.topic_subject, t.topic_time, t.topic_poster, t.poster_name,'.
[color=FF0000]
' u.user_avatar,'.
[/color]
' f.forum_name, f.allow_subject_prefix'.
' FROM ' . $db->prefix('bb_topics') . ' AS t '.
' LEFT JOIN ' . $db->prefix('bb_forums') . ' AS f ON f.forum_id=t.forum_id'.
[color=FF0000]
' LEFT JOIN ' . $db->prefix('users') . ' AS u ON u.uid=t.topic_poster'.
[/color]
' 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[3]; // 0 - full view; 1 - compact view; 2 - lite view;
$rows = array();
$author = array();
while ($row = $db->fetchArray($result)) {
$rows[] = $row;
$author[$row["topic_poster"]] = 1;
}
if (count($rows) < 1) return false;
$author_name = newbb_getUnameFromIds(array_keys($author), $newbbConfig['show_realname'], true);
foreach ($rows as $arr) {
$topic_page_jump = '';
if ($arr['allow_subject_prefix']) {
$subjectpres = explode(',', $newbbConfig['subject_prefix']);
if (count($subjectpres) > 1) {
foreach($subjectpres as $subjectpre) {
$subject_array[] = $subjectpre;
}
$subject_array[0] = null;
}
$topic['topic_subject'] = $subject_array[$arr['topic_subject']];
} else {
$topic['topic_subject'] = "";
}
$topic['forum_id'] = $arr['forum_id'];
$topic['forum_name'] = $myts->htmlSpecialChars($arr['forum_name']);
$topic['id'] = $arr['topic_id'];
[color=FF0000]
$topic['poster_avatar'] = $arr['user_avatar'];
[/color]
$title = $myts->htmlSpecialChars($arr['topic_title']);
if(!empty($options[5])){
$title = xoops_substr($title, 0, $options[5]);
}
$topic['title'] = $title;
$topic['replies'] = $arr['topic_replies'];
$topic['views'] = $arr['topic_views'];
$topic['time'] = newbb_formatTimestamp($arr['topic_time']);
if (!empty($author_name[$arr['topic_poster']])) {
$topic_poster = $author_name[$arr['topic_poster']];
} else {
$topic_poster = $myts->htmlSpecialChars( ($arr['poster_name'])?$arr['poster_name']:$GLOBALS["xoopsConfig"]["anonymous"] );
}
$topic['topic_poster'] = $topic_poster;
$topic['topic_page_jump'] = $topic_page_jump;
$block['topics'][] = $topic;
unset($topic);
}
$block['indexNav'] = intval($options[4]);
return $block;
}
Then, you will be able to add this code to newbb/templates/blocks/newbb_block.html and newbb/templates/blocks/newbb_block_topic.html wherever you want the posters' avatars to appear in the template:
<img src="<{xoops_url}>/uploads/<{topic.poster_avatar}>" width="50px" alt="" />
And you're done!