Brak opisu

CronTrigger.php 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace MailPoet\Cron;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\Cron\Triggers\MailPoet;
  5. use MailPoet\Cron\Triggers\WordPress;
  6. use MailPoet\Settings\SettingsController;
  7. class CronTrigger {
  8. const METHOD_LINUX_CRON = 'Linux Cron';
  9. const METHOD_MAILPOET = 'MailPoet';
  10. const METHOD_WORDPRESS = 'WordPress';
  11. const METHODS = [
  12. 'mailpoet' => self::METHOD_MAILPOET,
  13. 'wordpress' => self::METHOD_WORDPRESS,
  14. 'linux_cron' => self::METHOD_LINUX_CRON,
  15. 'none' => 'Disabled',
  16. ];
  17. const DEFAULT_METHOD = 'WordPress';
  18. const SETTING_NAME = 'cron_trigger';
  19. /** @var MailPoet */
  20. private $mailpoetTrigger;
  21. /** @var WordPress */
  22. private $wordpressTrigger;
  23. /** @var SettingsController */
  24. private $settings;
  25. public function __construct(
  26. MailPoet $mailpoetTrigger,
  27. WordPress $wordpressTrigger,
  28. SettingsController $settings
  29. ) {
  30. $this->mailpoetTrigger = $mailpoetTrigger;
  31. $this->wordpressTrigger = $wordpressTrigger;
  32. $this->settings = $settings;
  33. }
  34. public function init() {
  35. $currentMethod = $this->settings->get(self::SETTING_NAME . '.method');
  36. try {
  37. if ($currentMethod === self::METHOD_MAILPOET) {
  38. return $this->mailpoetTrigger->run();
  39. } elseif ($currentMethod === self::METHOD_WORDPRESS) {
  40. return $this->wordpressTrigger->run();
  41. }
  42. return false;
  43. } catch (\Exception $e) {
  44. // cron exceptions should not prevent the rest of the site from loading
  45. }
  46. }
  47. }