processor = $processor; $this->notifier = $notifier; } public function schedule() { $alerts = new CustomAlerts(); $siteIds = $alerts->getSiteIdsHavingAlerts(); foreach ($siteIds as $idSite) { $timezoneForSite = Site::getTimezoneFor($idSite); $scheduledTime = $this->daily('runAlertsDaily', $idSite); $scheduledTime->setTimezone($timezoneForSite); $scheduledTime = $this->weekly('runAlertsWeekly', $idSite); $scheduledTime->setTimezone($timezoneForSite); $scheduledTime = $this->monthly('runAlertsMonthly', $idSite); $scheduledTime->setTimezone($timezoneForSite); } } public function runAlertsDaily($idSite) { $this->runAlerts('day', $idSite); } public function runAlertsWeekly($idSite) { $this->runAlerts('week', $idSite); } public function runAlertsMonthly($idSite) { $this->runAlerts('month', $idSite); } private function runAlerts($period, $idSite) { $this->processor->processAlerts($period, (int) $idSite); $this->notifier->sendNewAlerts($period, (int) $idSite); } }