[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
05122024
/
htdocs
/
jurnal-kesmas
/
lib
/
pkp
/
classes
/
task
/
[
Home
]
File: StatisticsReport.php
<?php /** * @file classes/task/StatisticsReport.php * * Copyright (c) 2013-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 StatisticsReport * * @ingroup tasks * * @brief Class responsible to send the monthly statistics report. */ namespace PKP\task; use APP\core\Application; use DateTimeImmutable; use Illuminate\Support\Facades\Bus; use PKP\db\DAORegistry; use PKP\jobs\notifications\StatisticsReportMail; use PKP\jobs\notifications\StatisticsReportNotify; use PKP\mail\Mailer; use PKP\notification\managerDelegate\EditorialReportNotificationManager; use PKP\notification\NotificationSubscriptionSettingsDAO; use PKP\notification\PKPNotification; use PKP\scheduledTask\ScheduledTask; use PKP\security\Role; class StatisticsReport extends ScheduledTask { /** @var array List of roles that might be notified */ private $_roleIds = [Role::ROLE_ID_MANAGER, Role::ROLE_ID_SUB_EDITOR]; /** * @copydoc ScheduledTask::getName() */ public function getName(): string { return __('admin.scheduledTask.statisticsReport'); } /** * @copydoc ScheduledTask::executeActions() */ public function executeActions(): bool { $contextDao = Application::get()->getContextDAO(); $dateStart = new DateTimeImmutable('first day of previous month midnight'); $dateEnd = new DateTimeImmutable('first day of this month midnight'); $jobs = []; for ($contexts = $contextDao->getAll(true); $context = $contexts->next();) { if (!$context->getData('editorialStatsEmail')) { continue; } /** @var NotificationSubscriptionSettingsDAO $notificationSubscriptionSettingsDao */ $notificationSubscriptionSettingsDao = DAORegistry::getDAO('NotificationSubscriptionSettingsDAO'); $editorialReportNotificationManager = new EditorialReportNotificationManager(PKPNotification::NOTIFICATION_TYPE_EDITORIAL_REPORT); $editorialReportNotificationManager->initialize( $context ); $userIdsToNotify = $notificationSubscriptionSettingsDao->getSubscribedUserIds( [NotificationSubscriptionSettingsDAO::BLOCKED_NOTIFICATION_KEY], [PKPNotification::NOTIFICATION_TYPE_EDITORIAL_REPORT], [$context->getId()], $this->_roleIds ); foreach ($userIdsToNotify->chunk(PKPNotification::NOTIFICATION_CHUNK_SIZE_LIMIT) as $notifyUserIds) { $notifyJob = new StatisticsReportNotify( $notifyUserIds, $editorialReportNotificationManager ); $jobs[] = $notifyJob; } $userIdsToMail = $notificationSubscriptionSettingsDao->getSubscribedUserIds( [NotificationSubscriptionSettingsDAO::BLOCKED_NOTIFICATION_KEY, NotificationSubscriptionSettingsDAO::BLOCKED_EMAIL_NOTIFICATION_KEY], [PKPNotification::NOTIFICATION_TYPE_EDITORIAL_REPORT], [$context->getId()], $this->_roleIds ); foreach ($userIdsToMail->chunk(Mailer::BULK_EMAIL_SIZE_LIMIT) as $mailUserIds) { $mailJob = new StatisticsReportMail( $mailUserIds, $context->getId(), $dateStart, $dateEnd ); $jobs[] = $mailJob; } } Bus::batch($jobs)->dispatch(); return true; } }