You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

92 lines
3.1 KiB

<?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$
/**
* @return array
*/
function module_action_similarcontent_info()
{
return [
'name' => tra('Similar Content'),
'description' => tra('Find similar content based on tags.'),
'prefs' => ["feature_freetags"],
'params' => [
'contentType' => [
'name' => tra('Similar Content Filter'),
'description' => tra('Display only similar content of type specified') . " " . tra('Default: "All Content Type".') . " " . tra('Options: "article, wiki page, blog post".')
],
'broaden' => [
'name' => tra('Broaden FreeTag Search'),
'description' => tra('Find similar content that contains one of the Tags or All of the Tags') .
" " . tra('Default: "n - needs to contain all of the Tags".') .
" " . tra('Options: "n - Needs to contain All Tags / y - Needs to contain one of the Tags".')
],
],
'common_params' => ['nonums', 'rows']
];
}
/**
* @param $mod_reference
* @param $module_params
*/
function module_action_similarcontent($mod_reference, $module_params)
{
$smarty = TikiLib::lib('smarty');
$freetaglib = TikiLib::lib('freetag');
$filterType = '';
if (isset($module_params['contentType'])) {
$filterType = $module_params['contentType'];
}
$broaden = 'n';
if (isset($module_params['broaden'])) {
$broaden = $module_params['broaden'];
}
$currentContentType = "article";
if (isset($_REQUEST['articleId'])) {
$currentContentType = "article";
$contentId = $_REQUEST['articleId'];
} else {
if (isset($_REQUEST['postId'])) {
$currentContentType = "blog post";
$contentId = $_REQUEST['postId'];
} else {
if (isset($_REQUEST['page'])) {
$currentContentType = "wiki page";
$contentId = $_REQUEST['page'];
}
}
}
if (isset($contentId)) {
$tags = $freetaglib->get_tags_on_object($contentId, $currentContentType);
$allTags = [];
foreach ($tags['data'] as $tag) {
$allTags[] = $tag['tag'];
}
$similarContent = $freetaglib->get_objects_with_tag_combo($allTags, $filterType, '', 0, $mod_reference['rows'], 'name_asc', '', $broaden);
$relatedExclusiveContent = [];
foreach ($similarContent['data'] as $item) {
if ($item['type'] != $currentContentType) {
$relatedExclusiveContent[] = $item;
} else {
if ($item['itemId'] != $contentId) {
$relatedExclusiveContent[] = $item;
}
}
}
$smarty->assign('similarContent', $relatedExclusiveContent);
}
//$smarty->assign('modLastBlogPosts', $ranking["data"]);
}