messages[] = $firstMessage; if ($this->report) { acym_display($firstMessage, 'info'); } if ($config->get('cron_next') > $time) { if ($config->get('cron_next') > ($time + $config->get('cron_frequency'))) { $newConfig = new stdClass(); $newConfig->cron_next = $time + $config->get('cron_frequency'); $config->save($newConfig); } $nottime = acym_translation_sprintf('ACYM_CRON_NEXT', acym_getDate($config->get('cron_next'))); $this->messages[] = $nottime; if ($this->report) { acym_display($nottime, 'info'); } return false; } $this->executed = true; $newConfig = new stdClass(); $newConfig->cron_last = $time; $newConfig->cron_fromip = acym_getIP(); $newConfig->cron_next = $config->get('cron_next') + $config->get('cron_frequency'); if ($newConfig->cron_next <= $time || $newConfig->cron_next > $time + $config->get('cron_frequency')) { $newConfig->cron_next = $time + $config->get('cron_frequency'); } $config->save($newConfig); if (!in_array('schedule', $this->skip)) { $queueClass = acym_get('class.queue'); $nbScheduled = $queueClass->scheduleReady(); if ($nbScheduled) { $this->messages[] = acym_translation_sprintf('ACYM_NB_SCHEDULED', $nbScheduled); $this->detailMessages = array_merge($this->detailMessages, $queueClass->messages); $this->processed = true; } } if ($config->get('require_confirmation', 1) == 1) { $deletedNb = acym_query( 'DELETE `queue`.* FROM `#__acym_queue` AS `queue` JOIN `#__acym_user` AS `user` ON `queue`.`user_id` = `user`.`id` WHERE `user`.`confirmed` = 0 OR `user`.`active` = 0' ); if (!empty($deletedNb)) { $this->messages[] = acym_translation_sprintf('ACYM_EMAILS_REMOVED_QUEUE_UNCONFIRMED', $deletedNb); $this->processed = true; } } if ($config->get('queue_type') != 'manual' && !in_array('send', $this->skip)) { $queueHelper = acym_get('helper.queue'); $queueHelper->send_limit = (int)$config->get('queue_nbmail_auto'); $queueHelper->report = false; $queueHelper->emailtypes = $this->emailtypes; $queueHelper->process(); if (!empty($queueHelper->messages)) { $this->detailMessages = array_merge($this->detailMessages, $queueHelper->messages); } if (!empty($queueHelper->nbprocess)) { $this->processed = true; } $this->mainmessage = acym_translation_sprintf('ACYM_CRON_PROCESS', $queueHelper->nbprocess, $queueHelper->successSend, $queueHelper->errorSend); $this->messages[] = $this->mainmessage; if (!empty($queueHelper->errorSend)) { $this->errorDetected = true; } if (!empty($queueHelper->stoptime) && time() > $queueHelper->stoptime) { return true; } } if (!in_array('bounce', $this->skip) && acym_level(2) && $config->get('auto_bounce', 0) && $time > (int)$config->get('auto_bounce_next', 0) && (empty($queueHelper->stoptime) || time() < $queueHelper->stoptime - 5)) { $newConfig = new stdClass(); $newConfig->auto_bounce_next = $time + (int)$config->get('auto_bounce_frequency', 0); $newConfig->auto_bounce_last = $time; $config->save($newConfig); $bounceClass = acym_get('helper.bounce'); $bounceClass->report = false; $bounceClass->stoptime = $queueHelper->stoptime; $newConfig = new stdClass(); if ($bounceClass->init() && $bounceClass->connect()) { $nbMessages = $bounceClass->getNBMessages(); $this->messages[] = acym_translation_sprintf('ACYM_NB_MAIL_MAILBOX', $nbMessages); $newConfig->auto_bounce_report = acym_translation_sprintf('ACYM_NB_MAIL_MAILBOX', $nbMessages); $this->detailMessages[] = acym_translation_sprintf('ACYM_NB_MAIL_MAILBOX', $nbMessages); if (!empty($nbMessages)) { $bounceClass->handleMessages(); $bounceClass->close(); $this->processed = true; } $this->detailMessages = array_merge($this->detailMessages, $bounceClass->messages); } else { $bounceErrors = $bounceClass->getErrors(); $newConfig->auto_bounce_report = implode('
', $bounceErrors); if (!empty($bounceErrors[0])) { $bounceErrors[0] = acym_translation('ACYM_BOUNCE_HANDLING').' : '.$bounceErrors[0]; } $this->messages = array_merge($this->messages, $bounceErrors); $this->processed = true; $this->errorDetected = true; } $config->save($newConfig); if (!empty($queueHelper->stoptime) && time() > $queueHelper->stoptime) { return true; } } if (!in_array('automation', $this->skip) && acym_level(2)) { $automationClass = acym_get('class.automation'); $automationClass->trigger('classic'); if (!empty($automationClass->report)) { if ($automationClass->didAnAction) $this->processed = true; $this->messages = array_merge($this->messages, $automationClass->report); } if (!empty($queueHelper->stoptime) && time() > $queueHelper->stoptime) { return true; } } return true; } function report() { $config = acym_config(); $sendreport = $config->get('cron_sendreport'); $mailer = acym_get('helper.mailer'); if (($sendreport == 2 && $this->processed) || $sendreport == 1 || ($sendreport == 3 && $this->errorDetected)) { $mailer->report = false; $mailer->autoAddUser = true; $mailer->checkConfirmField = false; $mailer->addParam('report', implode('
', $this->messages)); $mailer->addParam('mainreport', $this->mainmessage); $mailer->addParam('detailreport', implode('
', $this->detailMessages)); $receiverString = $config->get('cron_sendto'); $receivers = []; if (substr_count($receiverString, '@') > 1) { $receivers = explode(' ', trim(preg_replace('# +#', ' ', str_replace([';', ','], ' ', $receiverString)))); } else { $receivers[] = trim($receiverString); } if (!empty($receivers)) { foreach ($receivers as $oneReceiver) { $mailer->sendOne('acy_report', $oneReceiver); } } } if (!$this->executed) { return; } if ($this->processed) { $this->saveReport(); } $newConfig = new stdClass(); $newConfig->cron_report = implode("\n", $this->messages); if (strlen($newConfig->cron_report) > 800) { $newConfig->cron_report = substr($newConfig->cron_report, 0, 795).'...'; } $config->save($newConfig); } function saveReport() { $config = acym_config(); $saveReport = $config->get('cron_savereport'); if (empty($saveReport)) { return; } $reportPath = $config->get('cron_savepath'); if (empty($reportPath)) { return; } $reportPath = str_replace(['{year}', '{month}'], [date('Y'), date('m')], $reportPath); $reportPath = acym_cleanPath(ACYM_ROOT.trim(html_entity_decode($reportPath))); acym_createDir(dirname($reportPath), true, true); ob_start(); file_put_contents($reportPath, "\r\n"."\r\n".str_repeat('*', 20).str_repeat(' ', 5).acym_getDate(time()).str_repeat(' ', 5).str_repeat('*', 20)."\r\n".implode("\r\n", $this->messages), FILE_APPEND); if ($saveReport == 2 && !empty($this->detailMessages)) { @file_put_contents($reportPath, "\r\n"."---- Details ----"."\r\n".implode("\r\n", $this->detailMessages), FILE_APPEND); } $potentialWarnings = ob_get_clean(); if (!empty($potentialWarnings)) { $this->messages[] = $potentialWarnings; } } }