Aucune description

Scheduler.php 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace MailPoet\Newsletter\Scheduler;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\Models\Newsletter;
  5. use MailPoet\WP\Functions as WPFunctions;
  6. use MailPoetVendor\Carbon\Carbon;
  7. class Scheduler {
  8. public static function getNextRunDate($schedule, $fromTimestamp = false) {
  9. $wp = new WPFunctions();
  10. $fromTimestamp = ($fromTimestamp) ? $fromTimestamp : $wp->currentTime('timestamp');
  11. try {
  12. $schedule = \Cron\CronExpression::factory($schedule);
  13. $nextRunDate = $schedule->getNextRunDate(Carbon::createFromTimestamp($fromTimestamp))
  14. ->format('Y-m-d H:i:s');
  15. } catch (\Exception $e) {
  16. $nextRunDate = false;
  17. }
  18. return $nextRunDate;
  19. }
  20. public static function getPreviousRunDate($schedule, $fromTimestamp = false) {
  21. $wp = WPFunctions::get();
  22. $fromTimestamp = ($fromTimestamp) ? $fromTimestamp : $wp->currentTime('timestamp');
  23. try {
  24. $schedule = \Cron\CronExpression::factory($schedule);
  25. $previousRunDate = $schedule->getPreviousRunDate(Carbon::createFromTimestamp($fromTimestamp))
  26. ->format('Y-m-d H:i:s');
  27. } catch (\Exception $e) {
  28. $previousRunDate = false;
  29. }
  30. return $previousRunDate;
  31. }
  32. public static function getScheduledTimeWithDelay($afterTimeType, $afterTimeNumber, $wp = null): Carbon {
  33. $wp = $wp ?? WPFunctions::get();
  34. $currentTime = Carbon::createFromTimestamp($wp->currentTime('timestamp'));
  35. switch ($afterTimeType) {
  36. case 'minutes':
  37. return $currentTime->addMinutes($afterTimeNumber);
  38. case 'hours':
  39. return $currentTime->addHours($afterTimeNumber);
  40. case 'days':
  41. return $currentTime->addDays($afterTimeNumber);
  42. case 'weeks':
  43. return $currentTime->addWeeks($afterTimeNumber);
  44. default:
  45. return $currentTime;
  46. }
  47. }
  48. public static function getNewsletters($type, $group = false) {
  49. return Newsletter::getPublished()
  50. ->filter('filterType', $type, $group)
  51. ->filter('filterStatus', Newsletter::STATUS_ACTIVE)
  52. ->filter('filterWithOptions', $type)
  53. ->findMany();
  54. }
  55. public static function formatDatetimeString($datetimeString) {
  56. return Carbon::parse($datetimeString)->format('Y-m-d H:i:s');
  57. }
  58. }