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; } }