4
Edit system/xoops_version.php and add extra block:
$modversion['blocks'][14]['file'] = "system_blocks.php";
$modversion['blocks'][14]['name'] = _MI_SYSTEM_BNAME11;
$modversion['blocks'][14]['description'] = "Shows most recent comments random";
$modversion['blocks'][14]['show_func'] = "b_system_comments_show_random";
$modversion['blocks'][14]['options'] = "10";
$modversion['blocks'][14]['edit_func'] = "b_system_comments_edit";
$modversion['blocks'][14]['template'] = 'system_block_comments.html';
then open system/blocks/system_blocks.php and add new function
function b_system_comments_show_random($options)
{
$block = array();
include_once XOOPS_ROOT_PATH.'/include/comment_constants.php';
$comment_handler =& xoops_gethandler('comment');
$criteria = new CriteriaCompo(new Criteria('com_status', XOOPS_COMMENT_ACTIVE));
$criteria->setLimit(intval($options[0]));
$criteria->setSort('rand()');
$criteria->setOrder('DESC');
// Check modules permissions
global $xoopsUser;
$moduleperm_handler =& xoops_gethandler('groupperm');
$gperm_groupid = is_object($xoopsUser) ? $xoopsUser->getGroups() : array(XOOPS_GROUP_ANONYMOUS);
$criteria1 = new CriteriaCompo(new Criteria('gperm_name','module_read','='));
$criteria1->add(new Criteria('gperm_groupid', '('.implode(',', $gperm_groupid).')', 'IN'));
$perms = $moduleperm_handler->getObjects($criteria1, true);
$modIds = array();
foreach($perms as $item) {
$modIds[] = $item->getVar('gperm_itemid');
}
if(count($modIds) > 0 ) {
$modIds = array_unique($modIds);
$criteria->add(new Criteria('com_modid', '('.implode(',', $modIds).')', 'IN'));
}
// Check modules permissions
$comments = $comment_handler->getObjects($criteria, true);
$member_handler =& xoops_gethandler('member');
$module_handler =& xoops_gethandler('module');
$modules = $module_handler->getObjects(new Criteria('hascomments', 1), true);
$comment_config = array();
foreach (array_keys($comments) as $i) {
$mid = $comments[$i]->getVar('com_modid');
$com['module'] = '<a href="'.XOOPS_URL.'/modules/'.$modules[$mid]->getVar('dirname').'/">'.$modules[$mid]->getVar('name').'</a>';
if (!isset($comment_config[$mid])) {
$comment_config[$mid] = $modules[$mid]->getInfo('comments');
}
$com['id'] = $i;
$com['title'] = '<a href="'.XOOPS_URL.'/modules/'.$modules[$mid]->getVar('dirname').'/'.$comment_config[$mid]['pageName'].'?'.$comment_config[$mid]['itemName'].'='.$comments[$i]->getVar('com_itemid').'&com_id='.$i.'&com_rootid='.$comments[$i]->getVar('com_rootid').'&'.htmlspecialchars($comments[$i]->getVar('com_exparams')).'#comment'.$i.'">'.$comments[$i]->getVar('com_title').'</a>';
$com['icon'] = htmlspecialchars( $comments[$i]->getVar('com_icon'), ENT_QUOTES );
$com['icon'] = ($com['icon'] != '') ? $com['icon'] : 'icon1.gif';
$com['time'] = formatTimestamp($comments[$i]->getVar('com_created'),'m');
if ($comments[$i]->getVar('com_uid') > 0) {
$poster =& $member_handler->getUser($comments[$i]->getVar('com_uid'));
if (is_object($poster)) {
$com['poster'] = '<a href="'.XOOPS_URL.'/userinfo.php?uid='.$comments[$i]->getVar('com_uid').'">'.$poster->getVar('uname').'</a>';
} else {
$com['poster'] = $GLOBALS['xoopsConfig']['anonymous'];
}
} else {
$com['poster'] = $GLOBALS['xoopsConfig']['anonymous'];
}
$block['comments'][] =& $com;
unset($com);
}
return $block;
}
Update system module and you will have new block.
This could be done adding extra option in block but it is easier for me this way!