PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.36.0
MailPoet – Newsletters, Email Marketing, and Automation v5.36.0
5.36.0 5.35.1 5.35.0 5.34.3 5.34.2 5.34.1 5.34.0 5.33.1 5.33.0 5.32.0 5.31.0 5.30.0 5.29.0 5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 4.44.0 4.44.1 4.45.0 4.46.0 4.47.0 4.48.0 4.48.1 4.48.2 4.49.0 4.49.1 4.5.0 4.5.1 4.5.2 4.50.0 4.50.1 4.51.0 4.51.1 4.51.2 4.52.0 4.53.0 4.54.0 4.55.0 4.56.0 4.57.0 4.58.0 4.58.1 4.58.2 4.6.0 4.6.1 4.6.2 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 5.0.0 5.0.1 5.0.2 5.1.0 5.1.1 5.10.0 5.10.1 5.11.0 5.12.0 5.12.1 5.12.10 5.12.11 5.12.12 5.12.13 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13.0 5.13.1 5.13.2 5.14.0 5.14.1 5.14.2 5.14.3 5.15.0 5.15.1 5.16.0 5.16.1 5.16.2 5.16.3 5.16.4 5.17.0 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.18.0 5.19.0 5.2.0 5.2.1 5.2.2 5.2.3 5.20.0 5.21.0 5.21.1 5.21.2 5.21.3 5.22.0 5.22.1 5.22.2 5.22.3 5.22.4 5.23.0 5.23.1 5.23.2 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.7.0 5.7.1 5.8.0 5.8.1 5.9.0 3.0.0-beta.15 3.7.1 3.0.0-beta.16 3.7.2 3.0.0-beta.17 3.7.3 3.0.0-beta.18 3.7.4 3.0.0-beta.19 3.7.5 3.0.0-beta.2 3.7.6 3.0.0-beta.20 3.7.8 3.0.0-beta.21 3.70.0 3.0.0-beta.22 3.71.0 3.0.0-beta.23 3.71.1 3.0.0-beta.23.1 3.71.2 3.0.0-beta.23.2 3.71.3 3.0.0-beta.24 3.72.0 3.0.0-beta.25 3.73.0 3.0.0-beta.26 3.73.1 3.0.0-beta.27 3.73.2 3.0.0-beta.28 3.74.0 3.0.0-beta.29 3.74.1 3.0.0-beta.3 3.74.2 3.0.0-beta.30 3.74.3 3.0.0-beta.31 3.75.0 3.0.0-beta.32 3.75.1 3.0.0-beta.33 3.76.0 3.0.0-beta.33.1 3.77.0 3.0.0-beta.34.0.0 3.77.1 3.0.0-beta.36.0.0 3.78.0 3.0.0-beta.36.0.1 3.79.0 3.0.0-beta.36.2.0 3.8 3.0.0-beta.36.3.0 3.8.1 3.0.0-beta.36.3.1 3.8.2 3.0.0-beta.37.0.0 3.8.3 3.0.0-beta.4 3.8.4 3.0.0-beta.5 3.8.5 3.0.0-beta.6 3.8.6 3.0.0-beta.7 3.80.0 3.0.0-beta.7.1 3.81.0 3.0.0-beta.8 3.82.0 3.0.0-beta.9 3.83.0 3.0.0-rc.1.0.0 3.84.0 3.0.0-rc.1.0.1 3.84.1 3.0.0-rc.1.0.2 3.85.0 3.0.0-rc.1.0.3 3.85.1 3.0.0-rc.1.0.4 3.86.0 3.0.0-rc.2.0.0 3.87.0 3.0.0-rc.2.0.1 3.87.1 3.0.0-rc.2.0.2 3.87.2 3.0.0-rc.2.0.3 3.88.0 3.0.1 3.88.1 3.0.2 3.88.2 3.0.3 3.89.0 3.0.4 3.89.1 3.0.5 3.89.2 3.0.6 3.89.3 3.0.7 3.89.4 3.0.8 3.9.0 3.0.9 3.9.1 3.1.0 3.90.0 3.10 3.90.1 3.10.1 3.90.2 3.100.0 3.91.0 3.100.1 3.91.1 3.100.2 3.92.0 3.101.0 3.92.1 3.101.1 3.93.0 3.102.0 3.93.1 3.102.1 3.94.0 3.103.0 3.95.0 3.103.1 3.95.1 3.11.0 3.96.0 3.11.1 3.96.1 3.11.2 3.97.0 3.11.3 3.98.0 3.11.4 3.98.1 3.11.5 3.99.0 3.12.0 3.99.1 3.12.1 4.0.0 3.13.0 4.0.1 3.14.0 4.1.0 3.14.1 4.1.1 3.15.0 4.10.0 3.16.0 4.11.0 3.16.1 4.11.1 3.16.2 4.12.0 3.16.3 4.12.1 3.17.0 4.12.2 3.17.1 4.13.0 3.17.2 4.14.0 3.18.0 4.15.0 3.18.1 4.16.0 3.18.2 4.17.0 3.19.0 4.17.1 3.19.1 4.18.0 3.19.2 4.18.1 3.19.3 4.19.0 3.2.0 4.2.0 3.2.1 4.20.0 3.2.2 4.20.1 3.2.3 4.20.2 3.2.4 4.21.0 3.2.5 4.22.0 3.20.0 4.22.1 3.21.0 4.22.2 3.21.1 4.23.0 3.22.0 4.24.0 3.23.0 4.25.0 3.23.1 4.26.0 3.23.2 4.26.1 3.24.0 4.27.0 3.25.0 4.28.0 3.25.1 4.29.0 3.26.0 4.3.0 3.26.1 4.3.1 3.27.0 4.30.0 3.28.0 4.31.0 3.29.0 4.31.1 3.3.0 4.32.0 3.3.1 4.33.0 3.3.2 4.34.0 3.3.3 4.35.0 3.3.4 4.35.1 3.3.5 4.36.0 3.3.6 4.37.0 3.30.0 4.38.0 3.31.0 4.39.0 3.31.1 4.4.0 3.32.0 4.40.0 3.32.1 4.41.0 3.32.2 4.41.1 3.33.0 4.41.2 3.34.0 4.41.3 3.34.1 4.42.0 3.34.2 4.42.1 3.34.3 3.34.4 3.35.0 3.35.1 3.35.3 3.35.4 3.36.0 3.37.0 3.37.1 3.37.2 3.37.3 3.38.0 3.38.1 3.39.0 3.39.1 3.39.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.40.0 3.40.1 3.41.0 3.41.1 3.41.2 3.42.0 3.42.1 3.42.2 3.42.3 3.43.0 3.43.1 3.44.0 3.45.0 3.45.1 3.46.0 3.46.1 3.46.10 3.46.11 3.46.12 3.46.13 3.46.14 3.46.2 3.46.3 3.46.4 3.46.5 3.46.6 3.46.7 3.46.8 3.46.9 3.47.0 3.47.1 3.47.10 3.47.11 3.47.2 3.47.3 3.47.5 3.47.6 3.47.7 3.47.9 3.48.0 3.48.1 3.49.0 3.49.1 3.5.0 3.5.1 3.50.0 3.51.0 3.51.1 3.51.2 3.52.0 3.53.0 3.54.0 3.54.1 3.54.2 3.54.3 3.55.0 3.55.1 3.56.0 3.56.1 3.56.2 3.57.0 3.57.1 3.58.0 3.59.0 3.59.1 3.59.2 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.60.0 3.60.1 3.60.10 3.60.11 3.60.12 3.60.2 3.60.3 3.60.4 3.60.6 3.60.7 3.60.8 3.60.9 3.61.0 3.62.0 3.62.1 3.63.0 3.64.0 3.64.1 3.64.2 3.64.3 3.65.0 trunk 3.65.1 3.0.0 3.66.0 3.0.0-beta.1 3.67.0 3.0.0-beta.10 3.67.1 3.0.0-beta.11 3.68.0 3.0.0-beta.12 3.69.0 3.0.0-beta.13 3.69.1 3.0.0-beta.14 3.7.0
mailpoet / vendor / dragonmantank / cron-expression / src / Cron / DayOfWeekField.php
mailpoet / vendor / dragonmantank / cron-expression / src / Cron Last commit date
AbstractField.php 1 year ago CronExpression.php 8 months ago DayOfMonthField.php 1 year ago DayOfWeekField.php 1 year ago FieldFactory.php 1 year ago FieldFactoryInterface.php 1 year ago FieldInterface.php 1 year ago HoursField.php 1 year ago MinutesField.php 1 year ago MonthField.php 1 year ago index.php 1 year ago
DayOfWeekField.php
125 lines
1 <?php
2 declare(strict_types=1);
3 namespace Cron;
4 if (!defined('ABSPATH')) exit;
5 use DateTimeInterface;
6 use InvalidArgumentException;
7 class DayOfWeekField extends AbstractField
8 {
9 protected $rangeStart = 0;
10 protected $rangeEnd = 7;
11 protected $nthRange;
12 protected $literals = [1 => 'MON', 2 => 'TUE', 3 => 'WED', 4 => 'THU', 5 => 'FRI', 6 => 'SAT', 7 => 'SUN'];
13 public function __construct()
14 {
15 $this->nthRange = range(1, 5);
16 parent::__construct();
17 }
18 public function isSatisfiedBy(DateTimeInterface $date, $value, bool $invert): bool
19 {
20 if ('?' === $value) {
21 return true;
22 }
23 // Convert text day of the week values to integers
24 $value = $this->convertLiterals($value);
25 $currentYear = (int) $date->format('Y');
26 $currentMonth = (int) $date->format('m');
27 $lastDayOfMonth = (int) $date->format('t');
28 // Find out if this is the last specific weekday of the month
29 if ($lPosition = strpos($value, 'L')) {
30 $weekday = $this->convertLiterals(substr($value, 0, $lPosition));
31 $weekday %= 7;
32 $daysInMonth = (int) $date->format('t');
33 $remainingDaysInMonth = $daysInMonth - (int) $date->format('d');
34 return (($weekday === (int) $date->format('w')) && ($remainingDaysInMonth < 7));
35 }
36 // Handle # hash tokens
37 if (strpos($value, '#')) {
38 [$weekday, $nth] = explode('#', $value);
39 if (!is_numeric($nth)) {
40 throw new InvalidArgumentException("Hashed weekdays must be numeric, {$nth} given");
41 } else {
42 $nth = (int) $nth;
43 }
44 // 0 and 7 are both Sunday, however 7 matches date('N') format ISO-8601
45 if ('0' === $weekday) {
46 $weekday = 7;
47 }
48 $weekday = (int) $this->convertLiterals((string) $weekday);
49 // Validate the hash fields
50 if ($weekday < 0 || $weekday > 7) {
51 throw new InvalidArgumentException("Weekday must be a value between 0 and 7. {$weekday} given");
52 }
53 if (!\in_array($nth, $this->nthRange, true)) {
54 throw new InvalidArgumentException("There are never more than 5 or less than 1 of a given weekday in a month, {$nth} given");
55 }
56 // The current weekday must match the targeted weekday to proceed
57 if ((int) $date->format('N') !== $weekday) {
58 return false;
59 }
60 $tdate = clone $date;
61 $tdate = $tdate->setDate($currentYear, $currentMonth, 1);
62 $dayCount = 0;
63 $currentDay = 1;
64 while ($currentDay < $lastDayOfMonth + 1) {
65 if ((int) $tdate->format('N') === $weekday) {
66 if (++$dayCount >= $nth) {
67 break;
68 }
69 }
70 $tdate = $tdate->setDate($currentYear, $currentMonth, ++$currentDay);
71 }
72 return (int) $date->format('j') === $currentDay;
73 }
74 // Handle day of the week values
75 if (false !== strpos($value, '-')) {
76 $parts = explode('-', $value);
77 if ('7' === $parts[0]) {
78 $parts[0] = 0;
79 } elseif ('0' === $parts[1]) {
80 $parts[1] = 7;
81 }
82 $value = implode('-', $parts);
83 }
84 // Test to see which Sunday to use -- 0 == 7 == Sunday
85 $format = \in_array(7, array_map(function ($value) {
86 return (int) $value;
87 }, str_split($value)), true) ? 'N' : 'w';
88 $fieldValue = (int) $date->format($format);
89 return $this->isSatisfied($fieldValue, $value);
90 }
91 public function increment(DateTimeInterface &$date, $invert = false, $parts = null): FieldInterface
92 {
93 if (! $invert) {
94 $date = $date->add(new \DateInterval('P1D'));
95 $date = $date->setTime(0, 0);
96 } else {
97 $date = $date->sub(new \DateInterval('P1D'));
98 $date = $date->setTime(23, 59);
99 }
100 return $this;
101 }
102 public function validate(string $value): bool
103 {
104 $basicChecks = parent::validate($value);
105 if (!$basicChecks) {
106 if ('?' === $value) {
107 return true;
108 }
109 // Handle the # value
110 if (false !== strpos($value, '#')) {
111 $chunks = explode('#', $value);
112 $chunks[0] = $this->convertLiterals($chunks[0]);
113 if (parent::validate($chunks[0]) && is_numeric($chunks[1]) && \in_array((int) $chunks[1], $this->nthRange, true)) {
114 return true;
115 }
116 }
117 if (preg_match('/^(.*)L$/', $value, $matches)) {
118 return $this->validate($matches[1]);
119 }
120 return false;
121 }
122 return $basicChecks;
123 }
124 }
125