67 lines
1.8 KiB
PHP
67 lines
1.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file jobs/statistics/CompileMonthlyMetrics.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 CompileMonthlyMetrics
|
|
*
|
|
* @ingroup jobs
|
|
*
|
|
* @brief Compile and store monthly usage stats from the daily records.
|
|
*/
|
|
|
|
namespace PKP\jobs\statistics;
|
|
|
|
use APP\core\Services;
|
|
use PKP\jobs\BaseJob;
|
|
use PKP\site\Site;
|
|
|
|
class CompileMonthlyMetrics extends BaseJob
|
|
{
|
|
/**
|
|
* The month the usage metrics should be aggregated by, in format YYYYMM.
|
|
*/
|
|
protected string $month;
|
|
|
|
protected Site $site;
|
|
|
|
/**
|
|
* Create a new job instance.
|
|
*
|
|
* @param string $month In format YYYYMM
|
|
*/
|
|
public function __construct(string $month, Site $site)
|
|
{
|
|
parent::__construct();
|
|
$this->month = $month;
|
|
$this->site = $site;
|
|
}
|
|
|
|
/**
|
|
* Execute the job.
|
|
*/
|
|
public function handle(): void
|
|
{
|
|
$currentMonth = date('Ym');
|
|
$lastMonth = date('Ym', strtotime('last month'));
|
|
|
|
$geoService = Services::get('geoStats');
|
|
$geoService->deleteMonthlyMetrics($this->month);
|
|
$geoService->addMonthlyMetrics($this->month);
|
|
if (!$this->site->getData('keepDailyUsageStats') && $this->month != $currentMonth && $this->month != $lastMonth) {
|
|
$geoService->deleteDailyMetrics($this->month);
|
|
}
|
|
|
|
$counterService = Services::get('sushiStats');
|
|
$counterService->deleteMonthlyMetrics($this->month);
|
|
$counterService->addMonthlyMetrics($this->month);
|
|
if (!$this->site->getData('keepDailyUsageStats') && $this->month != $currentMonth && $this->month != $lastMonth) {
|
|
$counterService->deleteDailyMetrics($this->month);
|
|
}
|
|
}
|
|
}
|