Server IP : 104.21.14.103 / Your IP : 3.141.7.144 Web Server : LiteSpeed System : Linux business53.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : giankuin ( 1871) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/self/root/proc/thread-self/root/proc/self/root/proc/self/root/proc/thread-self/root/home/giankuin/thietke365.net/wp-content/plugins/mailpoet/lib/Newsletter/Scheduler/ |
Upload File : |
<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing namespace MailPoet\Newsletter\Scheduler; if (!defined('ABSPATH')) exit; use MailPoet\Entities\NewsletterEntity; use MailPoet\Newsletter\NewslettersRepository; use MailPoet\WP\Functions as WPFunctions; use MailPoetVendor\Carbon\Carbon; class Scheduler { const MYSQL_TIMESTAMP_MAX = '2038-01-19 03:14:07'; /** @var WPFunctions */ private $wp; /** @var NewslettersRepository */ private $newslettersRepository; public function __construct( WPFunctions $wp, NewslettersRepository $newslettersRepository ) { $this->wp = $wp; $this->newslettersRepository = $newslettersRepository; } /** * @return string|false */ public function getNextRunDate($schedule, $fromTimestamp = false) { $nextRunDateTime = $this->getNextRunDateTime($schedule, $fromTimestamp); return $nextRunDateTime ? $nextRunDateTime->format('Y-m-d H:i:s') : $nextRunDateTime; } public function getPreviousRunDate($schedule, $fromTimestamp = false) { $fromTimestamp = ($fromTimestamp) ? $fromTimestamp : $this->wp->currentTime('timestamp'); try { $schedule = \Cron\CronExpression::factory($schedule); $previousRunDate = $schedule->getPreviousRunDate(Carbon::createFromTimestamp($fromTimestamp)) ->format('Y-m-d H:i:s'); } catch (\Exception $e) { $previousRunDate = false; } return $previousRunDate; } public function getScheduledTimeWithDelay($afterTimeType, $afterTimeNumber): Carbon { $currentTime = Carbon::createFromTimestamp($this->wp->currentTime('timestamp')); switch ($afterTimeType) { case 'minutes': $currentTime->addMinutes($afterTimeNumber); break; case 'hours': $currentTime->addHours($afterTimeNumber); break; case 'days': $currentTime->addDays($afterTimeNumber); break; case 'weeks': $currentTime->addWeeks($afterTimeNumber); break; } $maxScheduledTime = Carbon::createFromFormat('Y-m-d H:i:s', self::MYSQL_TIMESTAMP_MAX); if ($maxScheduledTime && $currentTime > $maxScheduledTime) { return $maxScheduledTime; } return $currentTime; } /** * @return NewsletterEntity[] */ public function getNewsletters(string $type, ?string $group = null): array { return $this->newslettersRepository->findActiveByTypeAndGroup($type, $group); } public function formatDatetimeString($datetimeString) { return Carbon::parse($datetimeString)->format('Y-m-d H:i:s'); } /** * @return \DateTime|false */ public function getNextRunDateTime($schedule, $fromTimestamp = false) { $fromTimestamp = $fromTimestamp ?: $this->wp->currentTime('timestamp'); try { $schedule = \Cron\CronExpression::factory($schedule); $nextRunDate = $schedule->getNextRunDate(Carbon::createFromTimestamp($fromTimestamp)); } catch (\Exception $e) { $nextRunDate = false; } return $nextRunDate; } }