| Server IP : 195.130.67.5 / Your IP : 216.73.217.154 Web Server : Microsoft-IIS/10.0 System : Windows NT WEBSERVER1 10.0 build 17763 (Windows Server 2016) i586 User : IUSR ( 0) PHP Version : 7.4.19 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /inetpub/wwwroot/Topogeo/ojs/plugins/blocks/keywordCloud/ |
Upload File : |
<?php
/**
* @file KeywordCloudBlockPlugin.inc.php
*
* Copyright (c) 2003-2012 John Willinsky
* Distributed under the GNU GPL v2. For full terms see the file docs/COPYING.
*
* @class KeywordCloudBlockPlugin
* @ingroup plugins_blocks_keyword_cloud
*
* @brief Class for keyword cloud block plugin
*/
// $Id$
import('lib.pkp.classes.plugins.BlockPlugin');
define('KEYWORD_BLOCK_MAX_ITEMS', 20);
define('KEYWORD_BLOCK_CACHE_DAYS', 2);
class KeywordCloudBlockPlugin extends BlockPlugin {
/**
* Get the display name of this plugin.
* @return String
*/
function getDisplayName() {
return __('plugins.block.keywordCloud.displayName');
}
/**
* Get a description of the plugin.
*/
function getDescription() {
return __('plugins.block.keywordCloud.description');
}
function _cacheMiss(&$cache, $id) {
$keywordMap = array();
$publishedArticleDao =& DAORegistry::getDAO('PublishedArticleDAO');
$publishedArticles =& $publishedArticleDao->getPublishedArticlesByJournalId($cache->getCacheId());
while ($publishedArticle =& $publishedArticles->next()) {
$keywords = array_map('trim', explode(';', $publishedArticle->getLocalizedSubject()));
foreach ($keywords as $keyword) if (!empty($keyword)) $keywordMap[$keyword]++;
unset($publishedArticle);
}
arsort($keywordMap, SORT_NUMERIC);
$i=0;
$newKeywordMap = array();
foreach ($keywordMap as $k => $v) {
$newKeywordMap[$k] = $v;
if ($i++ >= KEYWORD_BLOCK_MAX_ITEMS) break;
}
$cache->setEntireCache($newKeywordMap);
return $newKeywordMap[$id];
}
/**
* Get the HTML contents for this block.
* @param $templateMgr object
* @return $string
*/
function getContents(&$templateMgr) {
$journal =& Request::getJournal();
$cacheManager =& CacheManager::getManager();
$cache =& $cacheManager->getFileCache('keywords_' . AppLocale::getLocale(), $journal->getId(), array(&$this, '_cacheMiss'));
// If the cache is older than a couple of days, regenerate it
if (time() - $cache->getCacheTime() > 60 * 60 * 24 * KEYWORD_BLOCK_CACHE_DAYS) $cache->flush();
$keywords =& $cache->getContents();
if (empty($keywords)) return '';
// Get the max occurrences for all keywords
$maxOccurs = array_shift(array_values($keywords));
// Now sort the array alphabetically
ksort($keywords);
$templateMgr->assign_by_ref('cloudKeywords', $keywords);
$templateMgr->assign_by_ref('maxOccurs', $maxOccurs);
return parent::getContents($templateMgr);
}
}
?>