One Hat Cyber Team
Your IP :
216.73.216.14
Server IP :
194.44.31.54
Server :
Linux zen.imath.kiev.ua 4.18.0-553.77.1.el8_10.x86_64 #1 SMP Fri Oct 3 14:30:23 UTC 2025 x86_64
Server Software :
Apache/2.4.37 (Rocky Linux) OpenSSL/1.1.1k
PHP Version :
5.6.40
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
var
/
www
/
ojs-nosc
/
lib
/
pkp
/
tools
/
View File Name :
parseCitations.php
<?php /** * @file tools/parseCitations.php * * Copyright (c) 2014-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 CitationsParsingTool * * @ingroup tools * * @brief CLI tool to parse existing citations */ use APP\core\Application; use APP\facades\Repo; use PKP\db\DAORegistry; require(dirname(__FILE__, 4) . '/tools/bootstrap.php'); class CitationsParsingTool extends \PKP\cliTool\CommandLineTool { public $parameters; /** * Constructor. * * @param array $argv command-line arguments */ public function __construct($argv = []) { parent::__construct($argv); if (!sizeof($this->argv)) { $this->usage(); exit(1); } $this->parameters = $this->argv; } /** * Print command usage information. */ public function usage() { echo "Parse and save submission(s) citations.\n" . "Usage:\n" . "{$this->scriptName} all\n" . "{$this->scriptName} context context_id [...]\n" . "{$this->scriptName} submission submission_id [...]\n"; } /** * Parse citations */ public function execute() { $contextDao = Application::getContextDAO(); switch (array_shift($this->parameters)) { case 'all': $contexts = $contextDao->getAll(); while ($context = $contexts->next()) { $submissions = Repo::submission()->getCollector()->filterByContextIds([$context->getId()])->getMany(); foreach ($submissions as $submission) { $this->_parseSubmission($submission); } } break; case 'context': foreach ($this->parameters as $contextId) { $context = $contextDao->getById($contextId); if (!isset($context)) { printf("Error: Skipping {$contextId}. Unknown context.\n"); continue; } $submissions = Repo::submission()->getCollector()->filterByContextIds([$context->getId()])->getMany(); foreach ($submissions as $submission) { $this->_parseSubmission($submission); } } break; case 'submission': foreach ($this->parameters as $submissionId) { $submission = Repo::submission()->get($submissionId); if (!isset($submission)) { printf("Error: Skipping {$submissionId}. Unknown submission.\n"); continue; } $this->_parseSubmission($submission); } break; default: $this->usage(); break; } } /** * Parse the citations of one submission * * @param Submission $submission */ private function _parseSubmission($submission) { /** @var CitationDAO */ $citationDao = DAORegistry::getDAO('CitationDAO'); foreach ($submission->getData('publications') as $publication) { if (!empty($publication->getData('citationsRaw'))) { $citationDao->importCitations($publication->getId(), $publication->getData('citationsRaw')); } } } } $tool = new CitationsParsingTool($argv ?? []); $tool->execute();