mirror of
https://github.com/chenasraf/nextcloud-forum.git
synced 2026-05-18 01:28:58 +00:00
55 lines
1.5 KiB
PHP
55 lines
1.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
// SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
|
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
namespace OCA\Forum\Cron;
|
|
|
|
use OCA\Forum\Service\StatsService;
|
|
use OCP\AppFramework\Utility\ITimeFactory;
|
|
use OCP\BackgroundJob\TimedJob;
|
|
use Psr\Log\LoggerInterface;
|
|
|
|
class RebuildStatsTask extends TimedJob {
|
|
public function __construct(
|
|
ITimeFactory $time,
|
|
private StatsService $statsService,
|
|
private LoggerInterface $logger,
|
|
) {
|
|
parent::__construct($time);
|
|
|
|
// Run once a week (604800 seconds = 7 days)
|
|
$this->setInterval(604800);
|
|
}
|
|
|
|
protected function run($arguments): void {
|
|
$this->logger->info('Starting weekly stats rebuild');
|
|
|
|
// Rebuild forum users
|
|
$userResult = $this->statsService->rebuildAllUserStats();
|
|
$this->logger->info('Forum users rebuild completed', [
|
|
'users' => $userResult['users'],
|
|
'created' => $userResult['created'],
|
|
'updated' => $userResult['updated'],
|
|
]);
|
|
|
|
// Rebuild category stats
|
|
$categoryResult = $this->statsService->rebuildAllCategoryStats();
|
|
$this->logger->info('Category stats rebuild completed', [
|
|
'categories' => $categoryResult['categories'],
|
|
'updated' => $categoryResult['updated'],
|
|
]);
|
|
|
|
// Rebuild thread stats
|
|
$threadResult = $this->statsService->rebuildAllThreadStats();
|
|
$this->logger->info('Thread stats rebuild completed', [
|
|
'threads' => $threadResult['threads'],
|
|
'updated' => $threadResult['updated'],
|
|
]);
|
|
|
|
$this->logger->info('Weekly stats rebuild completed');
|
|
}
|
|
}
|