<?php
|
|
|
|
// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
|
|
//
|
|
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
|
|
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
|
|
// $Id$
|
|
|
|
//this script may only be included - so its better to die if called directly.
|
|
if (strpos($_SERVER['SCRIPT_NAME'], basename(__FILE__)) !== false) {
|
|
header('location: index.php');
|
|
exit;
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
function module_wiki_last_comments_info()
|
|
{
|
|
return [
|
|
'name' => tra('Newest Comments'),
|
|
'description' => tra('Lists the specified number of comments starting from the most recently posted.'),
|
|
'prefs' => [],
|
|
'params' => [
|
|
'moretooltips' => [
|
|
'name' => tra('More in tooltips'),
|
|
'description' => tra('If set to "y", the name of the object on which a comment is made is not displayed in the module box, but instead moved in the item\'s tooltip.'),
|
|
'default' => 'n',
|
|
],
|
|
'type' => [
|
|
'name' => tra('Object type'),
|
|
'description' => tra('Type of the objects from which comments will be listed. Possible values:') . ' wiki page, article. ',
|
|
'filter' => 'word',
|
|
'default' => 'wiki page',
|
|
],
|
|
'commentlength' => [
|
|
'name' => tra('Maximum comment length'),
|
|
'description' => tra("If comments don't use titles this sets the maximum length for the comment snippet."),
|
|
'filter' => 'digits',
|
|
'default' => 40,
|
|
],
|
|
'avatars' => [
|
|
'name' => tra('Show user profile pictures'),
|
|
'description' => tra('Display user profile pictures instead of numbers.'),
|
|
'filter' => 'alpha',
|
|
'default' => 'n',
|
|
],
|
|
'language' => [
|
|
'name' => tra('Language'),
|
|
'description' => tra('Comments about objects in this language only.'),
|
|
'filter' => 'word',
|
|
'default' => '',
|
|
],
|
|
],
|
|
'common_params' => ['rows', 'nonums']
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @param $mod_reference
|
|
* @param $module_params
|
|
*/
|
|
function module_wiki_last_comments($mod_reference, $module_params)
|
|
{
|
|
if (! function_exists('module_last_comments')) {
|
|
/**
|
|
* @param $limit
|
|
* @param string $type
|
|
* @return array|null
|
|
*/
|
|
function module_last_comments($limit, array $params)
|
|
{
|
|
global $tikilib, $user;
|
|
$bindvars = [$params['type']];
|
|
$where = '';
|
|
switch ($params['type']) {
|
|
case 'article':
|
|
$join = 'left join `tiki_articles` ta on (tc.`object` = ta.`articleId`)';
|
|
$get = ', ta.`title` as name';
|
|
if (! empty($params['language'])) {
|
|
$where .= ' and ta.`lang`=?';
|
|
$bindvars[] = $params['language'];
|
|
}
|
|
global $tiki_p_admin_cms;
|
|
if ($tiki_p_admin_cms != 'y') {
|
|
$where .= ' and tc.`approved`!=?';
|
|
$bindvars[] = 'n';
|
|
}
|
|
break;
|
|
|
|
case 'wiki page':
|
|
if (empty($params['language'])) {
|
|
$join = '';
|
|
} else {
|
|
$join = 'left join `tiki_pages` tp on (tc.`object` = tp.`pageName`)';
|
|
$where .= ' and tp.`lang`=?';
|
|
$bindvars[] = $params['language'];
|
|
}
|
|
$get = ', tc.`object` as name';
|
|
global $tiki_p_admin_wiki;
|
|
if ($tiki_p_admin_wiki != 'y') {
|
|
$where .= ' and tc.`approved`!=?';
|
|
$bindvars[] = 'n';
|
|
}
|
|
break;
|
|
}
|
|
|
|
$query = "select tc.* $get from `tiki_comments` as tc $join where `objectType`=? $where order by `commentDate` desc";
|
|
$result = $tikilib->query($query, $bindvars, $limit, 0);
|
|
$ret = [];
|
|
|
|
while ($res = $result->fetchRow()) {
|
|
switch ($params['type']) {
|
|
case 'wiki page':
|
|
$perm = 'tiki_p_view';
|
|
break;
|
|
|
|
case 'article':
|
|
$perm = 'tiki_p_read_article';
|
|
break;
|
|
|
|
default:
|
|
return null;
|
|
}
|
|
if ($tikilib->user_has_perm_on_object($user, $res['object'], $res['type'], $perm)) {
|
|
$res['title'] = TikiLib::lib('comments')->process_comment_title($res, $params['commentlength']);
|
|
$ret[] = $res;
|
|
}
|
|
}
|
|
return $ret;
|
|
}
|
|
}
|
|
global $prefs;
|
|
if (! isset($module_params['type'])) {
|
|
$module_params['type'] = "wiki page";
|
|
}
|
|
if (! isset($module_params['commentlength'])) {
|
|
$module_params['commentlength'] = 40;
|
|
}
|
|
if (! isset($module_params['avatars'])) {
|
|
$module_params['avatars'] = 'n';
|
|
}
|
|
$smarty = TikiLib::lib('smarty');
|
|
switch ($module_params['type']) {
|
|
case 'cms':
|
|
case 'article':
|
|
case 'articles':
|
|
if (! $prefs['feature_articles']) {
|
|
return;
|
|
}
|
|
$module_params['type'] = 'article';
|
|
$smarty->assign('tpl_module_title', tra('Last article comments'));
|
|
break;
|
|
|
|
default:
|
|
if (! $prefs['feature_wiki']) {
|
|
return;
|
|
}
|
|
$module_params['type'] = 'wiki page';
|
|
$smarty->assign('tpl_module_title', tra('Last wiki comments'));
|
|
break;
|
|
}
|
|
|
|
$comments = module_last_comments($mod_reference['rows'], $module_params);
|
|
$smarty->assign_by_ref('comments', $comments);
|
|
$smarty->assign('moretooltips', isset($module_params['moretooltips']) ? $module_params['moretooltips'] : 'n');
|
|
$smarty->assign('type', $module_params['type']);
|
|
}
|