File Manager
Upload
Current Directory: /home/lartcid/public_html/journal.lartc.id
[Back]
..
[Open]
Hapus
Rename
.htaccess
[Edit]
Hapus
Rename
.well-known
[Open]
Hapus
Rename
README.md
[Edit]
Hapus
Rename
api
[Open]
Hapus
Rename
cache
[Open]
Hapus
Rename
cgi-bin
[Open]
Hapus
Rename
classes
[Open]
Hapus
Rename
config.TEMPLATE.inc.php
[Edit]
Hapus
Rename
config.inc.php
[Edit]
Hapus
Rename
controllers
[Open]
Hapus
Rename
cypress.json
[Edit]
Hapus
Rename
dbscripts
[Open]
Hapus
Rename
docs
[Open]
Hapus
Rename
error_log
[Edit]
Hapus
Rename
favicon.ico
[Edit]
Hapus
Rename
index.php
[Edit]
Hapus
Rename
js
[Open]
Hapus
Rename
lib
[Open]
Hapus
Rename
locale
[Open]
Hapus
Rename
mini.php
[Edit]
Hapus
Rename
pages
[Open]
Hapus
Rename
php.ini
[Edit]
Hapus
Rename
plugins
[Open]
Hapus
Rename
public
[Open]
Hapus
Rename
registry
[Open]
Hapus
Rename
scheduledTaskLogs
[Open]
Hapus
Rename
schemas
[Open]
Hapus
Rename
styles
[Open]
Hapus
Rename
templates
[Open]
Hapus
Rename
tools
[Open]
Hapus
Rename
Edit File
<?php /** * @file jobs/statistics/CompileUsageStatsFromTemporaryRecords.php * * Copyright (c) 2022 Simon Fraser University * Copyright (c) 2022 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class CompileUsageStatsFromTemporaryRecords * * @ingroup jobs * * @brief Compile the temporary usage stats and store them in the metrics table. */ namespace APP\jobs\statistics; use APP\statistics\StatisticsHelper; use APP\statistics\TemporaryItemInvestigationsDAO; use APP\statistics\TemporaryItemRequestsDAO; use APP\statistics\TemporaryTotalsDAO; use PKP\db\DAORegistry; use PKP\job\exceptions\JobException; use PKP\jobs\BaseJob; use PKP\statistics\TemporaryInstitutionsDAO; use PKP\task\FileLoader; class CompileUsageStatsFromTemporaryRecords extends BaseJob { /** * The number of times the job may be attempted. */ public $tries = 1; /** * The load ID = usage stats log file name */ protected string $loadId; /** * Create a new job instance. */ public function __construct(string $loadId) { parent::__construct(); $this->loadId = $loadId; } /** * Execute the job. */ public function handle(): void { $compileSuccessful = $this->compileMetrics(); if (!$compileSuccessful) { // Move the archived file back to staging $filename = $this->loadId; $archivedFilePath = StatisticsHelper::getUsageStatsDirPath() . '/' . FileLoader::FILE_LOADER_PATH_ARCHIVE . '/' . $filename; if (!file_exists($archivedFilePath)) { $filename .= '.gz'; $archivedFilePath = StatisticsHelper::getUsageStatsDirPath() . '/' . FileLoader::FILE_LOADER_PATH_ARCHIVE . '/' . $filename; } $stagingPath = StatisticsHelper::getUsageStatsDirPath() . '/' . FileLoader::FILE_LOADER_PATH_STAGING . '/' . $filename; if (!rename($archivedFilePath, $stagingPath)) { $message = __('admin.job.compileMetrics.returnToStaging.error', ['file' => $filename, 'archivedFilePath' => $archivedFilePath, 'stagingPath' => $stagingPath]); } else { $message = __('admin.job.compileMetrics.error', ['file' => $filename]); } throw new JobException($message); } $temporaryTotalsDao = DAORegistry::getDAO('TemporaryTotalsDAO'); /** @var TemporaryTotalsDAO $temporaryTotalsDao */ $temporaryItemInvestigationsDao = DAORegistry::getDAO('TemporaryItemInvestigationsDAO'); /** @var TemporaryItemInvestigationsDAO $temporaryItemInvestigationsDao */ $temporaryItemRequestsDao = DAORegistry::getDAO('TemporaryItemRequestsDAO'); /** @var TemporaryItemRequestsDAO $temporaryItemRequestsDao */ $temporaryInstitutionDao = DAORegistry::getDAO('TemporaryInstitutionsDAO'); /** @var TemporaryInstitutionsDAO $temporaryInstitutionDao */ $temporaryTotalsDao->deleteByLoadId($this->loadId); $temporaryItemInvestigationsDao->deleteByLoadId($this->loadId); $temporaryItemRequestsDao->deleteByLoadId($this->loadId); $temporaryInstitutionDao->deleteByLoadId($this->loadId); } /** * Load the entries inside the temporary database associated with * the passed load id to the metrics tables. */ protected function compileMetrics(): bool { $temporaryTotalsDao = DAORegistry::getDAO('TemporaryTotalsDAO'); /** @var TemporaryTotalsDAO $temporaryTotalsDao */ $temporaryItemInvestigationsDao = DAORegistry::getDAO('TemporaryItemInvestigationsDAO'); /** @var TemporaryItemInvestigationsDAO $temporaryItemInvestigationsDao */ $temporaryItemRequestsDao = DAORegistry::getDAO('TemporaryItemRequestsDAO'); /** @var TemporaryItemRequestsDAO $temporaryItemRequestsDao */ $temporaryTotalsDao->removeDoubleClicks(StatisticsHelper::COUNTER_DOUBLE_CLICK_TIME_FILTER_SECONDS); $temporaryItemInvestigationsDao->compileUniqueClicks(); $temporaryItemRequestsDao->compileUniqueClicks(); $temporaryTotalsDao->compileContextMetrics($this->loadId); $temporaryTotalsDao->compileIssueMetrics($this->loadId); $temporaryTotalsDao->compileSubmissionMetrics($this->loadId); // Geo database only contains total and unique investigations (no extra requests differentiation) $temporaryTotalsDao->deleteSubmissionGeoDailyByLoadId($this->loadId); // always call first, before loading the data $temporaryTotalsDao->compileSubmissionGeoDailyMetrics($this->loadId); $temporaryItemInvestigationsDao->compileSubmissionGeoDailyMetrics($this->loadId); $temporaryTotalsDao->deleteCounterSubmissionDailyByLoadId($this->loadId); // always call first, before loading the data $temporaryTotalsDao->compileCounterSubmissionDailyMetrics($this->loadId); $temporaryItemInvestigationsDao->compileCounterSubmissionDailyMetrics($this->loadId); $temporaryItemRequestsDao->compileCounterSubmissionDailyMetrics($this->loadId); $temporaryTotalsDao->deleteCounterSubmissionInstitutionDailyByLoadId($this->loadId); // always call first, before loading the data $temporaryTotalsDao->compileCounterSubmissionInstitutionDailyMetrics($this->loadId); $temporaryItemInvestigationsDao->compileCounterSubmissionInstitutionDailyMetrics($this->loadId); $temporaryItemRequestsDao->compileCounterSubmissionInstitutionDailyMetrics($this->loadId); return true; } }
Simpan