PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.35.1
MailPoet – Newsletters, Email Marketing, and Automation v5.35.1
5.36.1 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-prefixed / nesbot / carbon / src / Carbon / Traits / Comparison.php
mailpoet / vendor-prefixed / nesbot / carbon / src / Carbon / Traits Last commit date
Boundaries.php 4 years ago Cast.php 4 years ago Comparison.php 2 years ago Converter.php 2 years ago Creator.php 2 years ago Date.php 9 months ago DeprecatedProperties.php 4 years ago Difference.php 2 years ago IntervalRounding.php 2 years ago IntervalStep.php 4 years ago Localization.php 9 months ago Macro.php 4 years ago MagicParameter.php 2 years ago Mixin.php 2 years ago Modifiers.php 4 years ago Mutability.php 4 years ago ObjectInitialisation.php 4 years ago Options.php 2 years ago Rounding.php 2 years ago Serialization.php 2 years ago Test.php 9 months ago Timestamp.php 1 year ago ToStringFormat.php 3 years ago Units.php 2 years ago Week.php 4 years ago index.php 3 years ago
Comparison.php
323 lines
1 <?php
2 namespace MailPoetVendor\Carbon\Traits;
3 if (!defined('ABSPATH')) exit;
4 use BadMethodCallException;
5 use MailPoetVendor\Carbon\CarbonInterface;
6 use MailPoetVendor\Carbon\Exceptions\BadComparisonUnitException;
7 use InvalidArgumentException;
8 trait Comparison
9 {
10 protected $endOfTime = \false;
11 protected $startOfTime = \false;
12 public function eq($date) : bool
13 {
14 return $this->equalTo($date);
15 }
16 public function equalTo($date) : bool
17 {
18 $this->discourageNull($date);
19 $this->discourageBoolean($date);
20 return $this == $this->resolveCarbon($date);
21 }
22 public function ne($date) : bool
23 {
24 return $this->notEqualTo($date);
25 }
26 public function notEqualTo($date) : bool
27 {
28 return !$this->equalTo($date);
29 }
30 public function gt($date) : bool
31 {
32 return $this->greaterThan($date);
33 }
34 public function greaterThan($date) : bool
35 {
36 $this->discourageNull($date);
37 $this->discourageBoolean($date);
38 return $this > $this->resolveCarbon($date);
39 }
40 public function isAfter($date) : bool
41 {
42 return $this->greaterThan($date);
43 }
44 public function gte($date) : bool
45 {
46 return $this->greaterThanOrEqualTo($date);
47 }
48 public function greaterThanOrEqualTo($date) : bool
49 {
50 $this->discourageNull($date);
51 $this->discourageBoolean($date);
52 return $this >= $this->resolveCarbon($date);
53 }
54 public function lt($date) : bool
55 {
56 return $this->lessThan($date);
57 }
58 public function lessThan($date) : bool
59 {
60 $this->discourageNull($date);
61 $this->discourageBoolean($date);
62 return $this < $this->resolveCarbon($date);
63 }
64 public function isBefore($date) : bool
65 {
66 return $this->lessThan($date);
67 }
68 public function lte($date) : bool
69 {
70 return $this->lessThanOrEqualTo($date);
71 }
72 public function lessThanOrEqualTo($date) : bool
73 {
74 $this->discourageNull($date);
75 $this->discourageBoolean($date);
76 return $this <= $this->resolveCarbon($date);
77 }
78 public function between($date1, $date2, $equal = \true) : bool
79 {
80 $date1 = $this->resolveCarbon($date1);
81 $date2 = $this->resolveCarbon($date2);
82 if ($date1->greaterThan($date2)) {
83 [$date1, $date2] = [$date2, $date1];
84 }
85 if ($equal) {
86 return $this >= $date1 && $this <= $date2;
87 }
88 return $this > $date1 && $this < $date2;
89 }
90 public function betweenIncluded($date1, $date2) : bool
91 {
92 return $this->between($date1, $date2, \true);
93 }
94 public function betweenExcluded($date1, $date2) : bool
95 {
96 return $this->between($date1, $date2, \false);
97 }
98 public function isBetween($date1, $date2, $equal = \true) : bool
99 {
100 return $this->between($date1, $date2, $equal);
101 }
102 public function isWeekday()
103 {
104 return !$this->isWeekend();
105 }
106 public function isWeekend()
107 {
108 return \in_array($this->dayOfWeek, static::$weekendDays, \true);
109 }
110 public function isYesterday()
111 {
112 return $this->toDateString() === static::yesterday($this->getTimezone())->toDateString();
113 }
114 public function isToday()
115 {
116 return $this->toDateString() === $this->nowWithSameTz()->toDateString();
117 }
118 public function isTomorrow()
119 {
120 return $this->toDateString() === static::tomorrow($this->getTimezone())->toDateString();
121 }
122 public function isFuture()
123 {
124 return $this->greaterThan($this->nowWithSameTz());
125 }
126 public function isPast()
127 {
128 return $this->lessThan($this->nowWithSameTz());
129 }
130 public function isLeapYear()
131 {
132 return $this->rawFormat('L') === '1';
133 }
134 public function isLongYear()
135 {
136 return static::create($this->year, 12, 28, 0, 0, 0, $this->tz)->weekOfYear === 53;
137 }
138 public function isLongIsoYear()
139 {
140 return static::create($this->isoWeekYear, 12, 28, 0, 0, 0, $this->tz)->weekOfYear === 53;
141 }
142 public function isSameAs($format, $date = null)
143 {
144 return $this->rawFormat($format) === $this->resolveCarbon($date)->rawFormat($format);
145 }
146 public function isSameUnit($unit, $date = null)
147 {
148 $units = [
149 // @call isSameUnit
150 'year' => 'Y',
151 // @call isSameUnit
152 'week' => 'o-W',
153 // @call isSameUnit
154 'day' => 'Y-m-d',
155 // @call isSameUnit
156 'hour' => 'Y-m-d H',
157 // @call isSameUnit
158 'minute' => 'Y-m-d H:i',
159 // @call isSameUnit
160 'second' => 'Y-m-d H:i:s',
161 // @call isSameUnit
162 'micro' => 'Y-m-d H:i:s.u',
163 // @call isSameUnit
164 'microsecond' => 'Y-m-d H:i:s.u',
165 ];
166 if (isset($units[$unit])) {
167 return $this->isSameAs($units[$unit], $date);
168 }
169 if (isset($this->{$unit})) {
170 return $this->resolveCarbon($date)->{$unit} === $this->{$unit};
171 }
172 if ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) {
173 throw new BadComparisonUnitException($unit);
174 }
175 return \false;
176 }
177 public function isCurrentUnit($unit)
178 {
179 return $this->{'isSame' . \ucfirst($unit)}();
180 }
181 public function isSameQuarter($date = null, $ofSameYear = \true)
182 {
183 $date = $this->resolveCarbon($date);
184 return $this->quarter === $date->quarter && (!$ofSameYear || $this->isSameYear($date));
185 }
186 public function isSameMonth($date = null, $ofSameYear = \true)
187 {
188 return $this->isSameAs($ofSameYear ? 'Y-m' : 'm', $date);
189 }
190 public function isDayOfWeek($dayOfWeek)
191 {
192 if (\is_string($dayOfWeek) && \defined($constant = static::class . '::' . \strtoupper($dayOfWeek))) {
193 $dayOfWeek = \constant($constant);
194 }
195 return $this->dayOfWeek === $dayOfWeek;
196 }
197 public function isBirthday($date = null)
198 {
199 return $this->isSameAs('md', $date);
200 }
201 public function isLastOfMonth()
202 {
203 return $this->day === $this->daysInMonth;
204 }
205 public function isStartOfDay($checkMicroseconds = \false)
206 {
207 return $checkMicroseconds ? $this->rawFormat('H:i:s.u') === '00:00:00.000000' : $this->rawFormat('H:i:s') === '00:00:00';
208 }
209 public function isEndOfDay($checkMicroseconds = \false)
210 {
211 return $checkMicroseconds ? $this->rawFormat('H:i:s.u') === '23:59:59.999999' : $this->rawFormat('H:i:s') === '23:59:59';
212 }
213 public function isMidnight()
214 {
215 return $this->isStartOfDay();
216 }
217 public function isMidday()
218 {
219 return $this->rawFormat('G:i:s') === static::$midDayAt . ':00:00';
220 }
221 public static function hasFormat($date, $format)
222 {
223 // createFromFormat() is known to handle edge cases silently.
224 // E.g. "1975-5-1" (Y-n-j) will still be parsed correctly when "Y-m-d" is supplied as the format.
225 // To ensure we're really testing against our desired format, perform an additional regex validation.
226 return self::matchFormatPattern((string) $date, \preg_quote((string) $format, '/'), static::$regexFormats);
227 }
228 public static function hasFormatWithModifiers($date, $format) : bool
229 {
230 return self::matchFormatPattern((string) $date, (string) $format, \array_merge(static::$regexFormats, static::$regexFormatModifiers));
231 }
232 public static function canBeCreatedFromFormat($date, $format)
233 {
234 try {
235 // Try to create a DateTime object. Throws an InvalidArgumentException if the provided time string
236 // doesn't match the format in any way.
237 if (!static::rawCreateFromFormat($format, $date)) {
238 return \false;
239 }
240 } catch (InvalidArgumentException $e) {
241 return \false;
242 }
243 return static::hasFormatWithModifiers($date, $format);
244 }
245 public function is(string $tester)
246 {
247 $tester = \trim($tester);
248 if (\preg_match('/^\\d+$/', $tester)) {
249 return $this->year === (int) $tester;
250 }
251 if (\preg_match('/^(?:Jan|January|Feb|February|Mar|March|Apr|April|May|Jun|June|Jul|July|Aug|August|Sep|September|Oct|October|Nov|November|Dec|December)$/i', $tester)) {
252 return $this->isSameMonth(static::parse($tester), \false);
253 }
254 if (\preg_match('/^\\d{3,}-\\d{1,2}$/', $tester)) {
255 return $this->isSameMonth(static::parse($tester));
256 }
257 if (\preg_match('/^\\d{1,2}-\\d{1,2}$/', $tester)) {
258 return $this->isSameDay(static::parse($this->year . '-' . $tester));
259 }
260 $modifier = \preg_replace('/(\\d)h$/i', '$1:00', $tester);
261 $median = static::parse('5555-06-15 12:30:30.555555')->modify($modifier);
262 $current = $this->avoidMutation();
263 $other = $this->avoidMutation()->modify($modifier);
264 if ($current->eq($other)) {
265 return \true;
266 }
267 if (\preg_match('/\\d:\\d{1,2}:\\d{1,2}$/', $tester)) {
268 return $current->startOfSecond()->eq($other);
269 }
270 if (\preg_match('/\\d:\\d{1,2}$/', $tester)) {
271 return $current->startOfMinute()->eq($other);
272 }
273 if (\preg_match('/\\d(?:h|am|pm)$/', $tester)) {
274 return $current->startOfHour()->eq($other);
275 }
276 if (\preg_match('/^(?:january|february|march|april|may|june|july|august|september|october|november|december)(?:\\s+\\d+)?$/i', $tester)) {
277 return $current->startOfMonth()->eq($other->startOfMonth());
278 }
279 $units = ['month' => [1, 'year'], 'day' => [1, 'month'], 'hour' => [0, 'day'], 'minute' => [0, 'hour'], 'second' => [0, 'minute'], 'microsecond' => [0, 'second']];
280 foreach ($units as $unit => [$minimum, $startUnit]) {
281 if ($minimum === $median->{$unit}) {
282 $current = $current->startOf($startUnit);
283 break;
284 }
285 }
286 return $current->eq($other);
287 }
288 private static function matchFormatPattern(string $date, string $format, array $replacements) : bool
289 {
290 // Preg quote, but remove escaped backslashes since we'll deal with escaped characters in the format string.
291 $regex = \str_replace('\\\\', '\\', $format);
292 // Replace not-escaped letters
293 $regex = \preg_replace_callback('/(?<!\\\\)((?:\\\\{2})*)([' . \implode('', \array_keys($replacements)) . '])/', function ($match) use($replacements) {
294 return $match[1] . \strtr($match[2], $replacements);
295 }, $regex);
296 // Replace escaped letters by the letter itself
297 $regex = \preg_replace('/(?<!\\\\)((?:\\\\{2})*)\\\\(\\w)/', '$1$2', $regex);
298 // Escape not escaped slashes
299 $regex = \preg_replace('#(?<!\\\\)((?:\\\\{2})*)/#', '$1\\/', $regex);
300 return (bool) @\preg_match('/^' . $regex . '$/', $date);
301 }
302 public function isStartOfTime() : bool
303 {
304 return $this->startOfTime ?? \false;
305 }
306 public function isEndOfTime() : bool
307 {
308 return $this->endOfTime ?? \false;
309 }
310 private function discourageNull($value) : void
311 {
312 if ($value === null) {
313 @\trigger_error("Since 2.61.0, it's deprecated to compare a date to null, meaning of such comparison is ambiguous and will no longer be possible in 3.0.0, you should explicitly pass 'now' or make an other check to eliminate null values.", \E_USER_DEPRECATED);
314 }
315 }
316 private function discourageBoolean($value) : void
317 {
318 if (\is_bool($value)) {
319 @\trigger_error("Since 2.61.0, it's deprecated to compare a date to true or false, meaning of such comparison is ambiguous and will no longer be possible in 3.0.0, you should explicitly pass 'now' or make an other check to eliminate boolean values.", \E_USER_DEPRECATED);
320 }
321 }
322 }
323