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() { $citationDao = DAORegistry::getDAO('CitationDAO'); $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();