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 :
generateTestMetrics.php
<?php /** * @file tools/generateTestMetrics.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 generateTestMetrics * * @ingroup tools * * @brief Generate example metric data. */ require(dirname(__FILE__, 4) . '/tools/bootstrap.php'); use APP\core\Application; use APP\facades\Repo; use APP\statistics\StatisticsHelper; use APP\submission\Submission; use Illuminate\Support\Facades\DB; class generateTestMetrics extends \PKP\cliTool\CommandLineTool { public $contextId; public $dateStart; public $dateEnd; /** * Constructor */ public function __construct($argv = []) { parent::__construct($argv); if (sizeof($this->argv) < 3) { $this->usage(); exit(1); } $this->contextId = (int) $argv[1]; $this->dateStart = $argv[2]; $this->dateEnd = $argv[3]; } /** * Print command usage information. */ public function usage() { echo "Generate fake usage data in the metrics table.\n" . "Usage: {$this->scriptName} [contextId] [dateStart] [dateEnd]\n" . "contextId The context to add metrics for.\n" . "dateStart Add metrics after this date. YYYY-MM-DD\n" . "dateEnd Add metrics after this date. YYYY-MM-DD\n"; } /** * Generate test metrics */ public function execute() { $submissionIds = $this->getPublishedSubmissionIds(); $currentDate = new DateTime($this->dateStart); $endDate = new DateTime($this->dateEnd); $endDateTimeStamp = $endDate->getTimestamp(); $submissionsCount = $submissionFilesCount = 0; while ($currentDate->getTimestamp() < $endDateTimeStamp) { foreach ($submissionIds as $submissionId) { DB::table('metrics_submission')->insert([ 'load_id' => 'test_events_' . $currentDate->format('Ymd'), 'context_id' => $this->contextId, 'submission_id' => $submissionId, 'assoc_type' => Application::ASSOC_TYPE_SUBMISSION, 'date' => $currentDate->format('Y-m-d'), 'metric' => random_int(1, 10), ]); $submissionsCount++; // OMP needs different handling for publication formats and files if (Application::get()->getName() === 'omp') { continue; } $submission = Repo::submission()->get($submissionId); $galleys = $submission->getCurrentPublication()->getData('galleys'); foreach ($galleys as $galley) { $submissionFileId = $galley->getData('submissionFileId'); if ($submissionFileId && $submissionFile = Repo::submissionFile()->get($submissionFileId)) { if ($submissionFile->getData('mimetype') == 'application/pdf') { $fileType = StatisticsHelper::STATISTICS_FILE_TYPE_PDF; } elseif ($submissionFile->getData('mimetype') == 'text/html') { $fileType = StatisticsHelper::STATISTICS_FILE_TYPE_HTML; } else { $fileType = StatisticsHelper::STATISTICS_FILE_TYPE_OTHER; } if ($fileType) { DB::table('metrics_submission')->insert([ 'load_id' => 'test_events_' . $currentDate->format('Ymd'), 'context_id' => $this->contextId, 'submission_id' => $submissionId, 'assoc_type' => Application::ASSOC_TYPE_SUBMISSION_FILE, 'representation_id' => $galley->getId(), 'file_type' => $fileType, 'date' => $currentDate->format('Y-m-d'), 'metric' => random_int(1, 10), ]); $submissionFilesCount++; } } } } $currentDate->add(new DateInterval('P1D')); } echo $submissionsCount . ' view and ' . $submissionFilesCount . ' download records added for ' . count($submissionIds) . " submissions.\n"; } /** * Get an array of all published submission IDs in the database */ public function getPublishedSubmissionIds() { return Repo::submission() ->getCollector() ->filterByContextIds([$this->contextId]) ->filterByStatus([Submission::STATUS_PUBLISHED]) ->getIds(); } } $tool = new generateTestMetrics($argv ?? []); $tool->execute();