first commit
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file classes/observers/events/UsageEvent.php
|
||||
*
|
||||
* Copyright (c) 2022 Simon Fraser University
|
||||
* Copyright (c) 2022 John Willinsky
|
||||
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
||||
*
|
||||
* @class Usage
|
||||
*
|
||||
* @ingroup observers_events
|
||||
*
|
||||
* @brief Adds issue tracking to the usage event data.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace APP\observers\events;
|
||||
|
||||
use APP\core\Application;
|
||||
use APP\issue\Issue;
|
||||
use APP\issue\IssueGalley;
|
||||
use APP\submission\Submission;
|
||||
use Exception;
|
||||
use PKP\context\Context;
|
||||
use PKP\submission\Representation;
|
||||
use PKP\submissionFile\SubmissionFile;
|
||||
|
||||
class UsageEvent extends \PKP\observers\events\UsageEvent
|
||||
{
|
||||
public ?Issue $issue;
|
||||
public ?IssueGalley $issueGalley;
|
||||
|
||||
public function __construct(
|
||||
int $assocType,
|
||||
Context $context,
|
||||
Submission $submission = null,
|
||||
Representation $galley = null,
|
||||
SubmissionFile $submissionFile = null,
|
||||
Issue $issue = null,
|
||||
IssueGalley $issueGalley = null
|
||||
) {
|
||||
$this->issue = $issue;
|
||||
$this->issueGalley = $issueGalley;
|
||||
parent::__construct($assocType, $context, $submission, $galley, $submissionFile);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the canonical URL for the usage object
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
protected function getCanonicalUrl(): string
|
||||
{
|
||||
if (in_array($this->assocType, [Application::ASSOC_TYPE_ISSUE, Application::ASSOC_TYPE_ISSUE_GALLEY])) {
|
||||
$canonicalUrlPage = $canonicalUrlOp = null;
|
||||
$canonicalUrlParams = [];
|
||||
switch ($this->assocType) {
|
||||
case Application::ASSOC_TYPE_ISSUE_GALLEY:
|
||||
$canonicalUrlOp = 'download';
|
||||
$canonicalUrlParams = [$this->issue->getId(), $this->issueGalley->getId()];
|
||||
break;
|
||||
case Application::ASSOC_TYPE_ISSUE:
|
||||
$canonicalUrlOp = 'view';
|
||||
$canonicalUrlParams = [$this->issue->getId()];
|
||||
break;
|
||||
}
|
||||
$canonicalUrl = $this->getRouterCanonicalUrl($this->request, $canonicalUrlPage, $canonicalUrlOp, $canonicalUrlParams);
|
||||
return $canonicalUrl;
|
||||
} else {
|
||||
return parent::getCanonicalUrl();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user