Open Journal Systems  3.3.0
parseCitations.php
1 <?php
2 
16 require(dirname(dirname(dirname(dirname(__FILE__)))) . '/tools/bootstrap.inc.php');
17 
19 
24  function __construct($argv = array()) {
25  parent::__construct($argv);
26 
27  if (!sizeof($this->argv)) {
28  $this->usage();
29  exit(1);
30  }
31 
32  $this->parameters = $this->argv;
33  }
34 
38  function usage() {
39  echo "Parse and save submission(s) citations.\n"
40  . "Usage:\n"
41  . "{$this->scriptName} all\n"
42  . "{$this->scriptName} context context_id [...]\n"
43  . "{$this->scriptName} submission submission_id [...]\n";
44  }
45 
49  function execute() {
50  $submissionDao = DAORegistry::getDAO('SubmissionDAO'); /* @var $submissionDao SubmissionDAO */
51  $citationDao = DAORegistry::getDAO('CitationDAO');
52  $contextDao = Application::getContextDAO();
53 
54  switch(array_shift($this->parameters)) {
55  case 'all':
56  $contexts = $contextDao->getAll();
57  while ($context = $contexts->next()) {
58  $submissions = $submissionDao->getByContextId($context->getId());
59  while ($submission = $submissions->next()) {
60  $this->_parseSubmission($submission);
61  }
62  }
63  break;
64  case 'context':
65  foreach($this->parameters as $contextId) {
66  $context = $contextDao->getById($contextId);
67  if(!isset($context)) {
68  printf("Error: Skipping $contextId. Unknown context.\n");
69  continue;
70  }
71  $submissions = $submissionDao->getByContextId($contextId);
72  while ($submission = $submissions->next()) {
73  $this->_parseSubmission($submission);
74  }
75  }
76  break;
77  case 'submission':
78  foreach($this->parameters as $submissionId) {
79  $submission = $submissionDao->getById($submissionId);
80  if(!isset($submission)) {
81  printf("Error: Skipping $submissionId. Unknown submission.\n");
82  continue;
83  }
84  $this->_parseSubmission($submission);
85  }
86  break;
87  default:
88  $this->usage();
89  break;
90  }
91  }
92 
97  private function _parseSubmission($submission) {
98  foreach ((array) $submission->getData('publications') as $publication) {
99  if (!empty($publication->getData('citationsRaw'))) {
100  DAORegistry::getDAO('CitationDAO')->importCitations($publication->getId(), $publication->getData('citationsRaw'));
101  }
102  }
103  }
104 }
105 
106 $tool = new CitationsParsingTool(isset($argv) ? $argv : array());
107 $tool->execute();
108 
CitationsParsingTool
CLI tool to parse existing citations.
Definition: parseCitations.php:18
Application\getContextDAO
static getContextDAO()
Definition: Application.inc.php:137
CitationsParsingTool\usage
usage()
Definition: parseCitations.php:38
CommandLineTool
Initialization code for command-line scripts.
Definition: CliTool.inc.php:44
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
$tool
$tool
Definition: mergeCoverageReportTool.php:120
CitationsParsingTool\__construct
__construct($argv=array())
Definition: parseCitations.php:24
CitationsParsingTool\execute
execute()
Definition: parseCitations.php:49
CommandLineTool\$argv
$argv
Definition: CliTool.inc.php:53