Open Journal Systems  3.3.0
generateTestMetrics.php
1 <?php
2 
16 require(dirname(dirname(dirname(dirname(__FILE__)))) . '/tools/bootstrap.inc.php');
17 
19 
22  var $dateEnd;
23 
27  function __construct($argv = array()) {
28  parent::__construct($argv);
29 
30  if (sizeof($this->argv) < 3) {
31  $this->usage();
32  exit(1);
33  }
34 
35  $this->contextId = (int) $argv[1];
36  $this->dateStart = $argv[2];
37  $this->dateEnd = $argv[3];
38  }
39 
43  function usage() {
44  echo "Generate fake usage data in the metrics table.\n"
45  . "Usage: {$this->scriptName} [contextId] [dateStart] [dateEnd]\n"
46  . "contextId The context to add metrics for.\n"
47  . "dateStart Add metrics after this date. YYYY-MM-DD\n"
48  . "dateEnd Add metrics after this date. YYYY-MM-DD\n";
49  }
50 
54  function execute() {
55  $submissionIds = $this->getPublishedSubmissionIds();
56 
57  $currentDate = new DateTime($this->dateStart);
58  $endDate = new DateTime($this->dateEnd);
59  $endDateTimeStamp = $endDate->getTimestamp();
60 
61  $metricsDao = DAORegistry::getDao('MetricsDAO');
62 
63  $count = 0;
64  while ($currentDate->getTimestamp() < $endDateTimeStamp) {
65  foreach ($submissionIds as $submissionId) {
66  $metricsDao->insertRecord([
67  'load_id' => 'test_events_' . $currentDate->format('Ymd'),
68  'assoc_type' => ASSOC_TYPE_SUBMISSION,
69  'assoc_id' => $submissionId,
70  'submission_id' => $submissionId,
71  'metric_type' => METRIC_TYPE_COUNTER,
72  'metric' => rand(1, 10),
73  'day' => $currentDate->format('Ymd'),
74  ]);
75  $count++;
76  }
77  $currentDate->add(new DateInterval('P1D'));
78  }
79 
80  echo $count . " records added for " . count($submissionIds) . " submissions.\n";
81  }
82 
86  public function getPublishedSubmissionIds() {
87  import('classes.submission.Submission');
88  $submissionsIterator = Services::get('submission')->getMany(['contextId' => $this->contextId, 'status' => STATUS_PUBLISHED]);
89  $submissionIds = [];
90  foreach ($submissionsIterator as $submission) {
91  $submissionIds[] = $submission->getId();
92  }
93  return $submissionIds;
94  }
95 }
96 
97 $tool = new generateTestMetrics(isset($argv) ? $argv : array());
98 $tool->execute();
99 
100 
generateTestMetrics
Generate example metric data.
Definition: generateTestMetrics.php:18
generateTestMetrics\usage
usage()
Definition: generateTestMetrics.php:43
CommandLineTool
Initialization code for command-line scripts.
Definition: CliTool.inc.php:44
generateTestMetrics\getPublishedSubmissionIds
getPublishedSubmissionIds()
Definition: generateTestMetrics.php:86
$tool
$tool
Definition: mergeCoverageReportTool.php:120
generateTestMetrics\$dateEnd
$dateEnd
Definition: generateTestMetrics.php:22
generateTestMetrics\$contextId
$contextId
Definition: generateTestMetrics.php:20
generateTestMetrics\$dateStart
$dateStart
Definition: generateTestMetrics.php:21
generateTestMetrics\__construct
__construct($argv=array())
Definition: generateTestMetrics.php:27
CommandLineTool\$argv
$argv
Definition: CliTool.inc.php:53
PKPServices\get
static get($service)
Definition: PKPServices.inc.php:49
generateTestMetrics\execute
execute()
Definition: generateTestMetrics.php:54