HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux vmi1674223.contaboserver.net 5.4.0-182-generic #202-Ubuntu SMP Fri Apr 26 12:29:36 UTC 2024 x86_64
User: root (0)
PHP: 7.4.3-4ubuntu2.22
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/ojs/pages/stats/StatsHandler.inc.php
<?php

/**
 * @file pages/stats/StatsHandler.inc.php
 *
 * Copyright (c) 2013-2021 Simon Fraser University
 * Copyright (c) 2003-2021 John Willinsky
 * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
 *
 * @class StatsHandler
 * @ingroup pages_stats
 *
 * @brief Handle requests for statistics pages.
 */

import('lib.pkp.pages.stats.PKPStatsHandler');

class StatsHandler extends PKPStatsHandler {
	/**
	 * Constructor.
	 */
	public function __construct() {
		parent::__construct();
		HookRegistry::register ('TemplateManager::display', array($this, 'addSectionFilters'));
	}

	/**
	 * Add OJS-specific configuration options to the stats component data
	 *
	 * Fired when the `TemplateManager::display` hook is called.
	 *
	 * @param string $hookname
	 * @param array $args [$templateMgr, $template, $sendContentType, $charset, $output]
	 */
	public function addSectionFilters($hookName, $args) {
		$templateMgr = $args[0];
		$template = $args[1];

		if (!in_array($template, ['stats/publications.tpl', 'stats/editorial.tpl'])) {
			return;
		}

		$context = Application::get()->getRequest()->getContext();

		$filters = $templateMgr->getState('filters');
		if (is_null($filters)) {
			$filters = [];
		}
		$sections = \Services::get('section')->getSectionList($context->getId());
		$filters[] = [
			'heading' => __('section.sections'),
			'filters' => array_map(function($section) {
				return [
					'param' => 'sectionIds',
					'value' => (int) $section['id'],
					'title' => $section['title'],
				];
			}, $sections),
		];
		$templateMgr->setState([
			'filters' => $filters
		]);
	}

	/**
	 * @copydoc PKPStatsHandler::getReportRowValue()
	 */
	protected function getReportRowValue($key, $record) {
		$returnValue = parent::getReportRowValue($key, $record);

		if (!$returnValue && $key == STATISTICS_DIMENSION_ISSUE_ID) {
			$assocId = $record[STATISTICS_DIMENSION_ISSUE_ID];
			$assocType = ASSOC_TYPE_ISSUE;
			$returnValue = $this->getObjectTitle($assocId, $assocType);
		}

		return $returnValue;
	}

	/**
	 * @copydoc PKPStatsHandler::getObjectTitle()
	 */
	protected function getObjectTitle($assocId, $assocType) {
		$objectTitle = parent::getObjectTitle($assocId, $assocType);

		switch ($assocType) {
			case ASSOC_TYPE_ISSUE:
				$issueDao = DAORegistry::getDAO('IssueDAO'); /* @var $issueDao IssueDAO */
				$issue = $issueDao->getById($assocId);
				if ($issue) {
					$objectTitle = $issue->getIssueIdentification();
				}
				break;
		}

		return $objectTitle;
	}
}