Server IP : / Your IP : 10.244.4.16 [ Web Server : nginx/1.25.3 System : Linux escuela-portal-app-54f56585bc-kst6g 5.15.0-1084-azure #93-Ubuntu SMP Sat Mar 15 14:12:29 UTC 2025 x86_64 User : root ( 0) PHP Version : 8.2.13 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, Domains : 0 Domains MySQL : OFF | cURL : ON | WGET : OFF | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /proc/789/cwd/app/vendor/dragonmantank/cron-expression/src/Cron/ |
Upload File : |
<?php declare(strict_types=1); namespace Cron; use DateTimeInterface; /** * Minutes field. Allows: * , / -. */ class MinutesField extends AbstractField { /** * {@inheritdoc} */ protected $rangeStart = 0; /** * {@inheritdoc} */ protected $rangeEnd = 59; /** * {@inheritdoc} */ public function isSatisfiedBy(DateTimeInterface $date, $value, bool $invert):bool { if ($value === '?') { return true; } return $this->isSatisfied((int)$date->format('i'), $value); } /** * {@inheritdoc} * {@inheritDoc} * * @param string|null $parts */ public function increment(DateTimeInterface &$date, $invert = false, $parts = null): FieldInterface { if (is_null($parts)) { $date = $this->timezoneSafeModify($date, ($invert ? "-" : "+") ."1 minute"); return $this; } $current_minute = (int) $date->format('i'); $parts = false !== strpos($parts, ',') ? explode(',', $parts) : [$parts]; sort($parts); $minutes = []; foreach ($parts as $part) { $minutes = array_merge($minutes, $this->getRangeForExpression($part, 59)); } $position = $invert ? \count($minutes) - 1 : 0; if (\count($minutes) > 1) { for ($i = 0; $i < \count($minutes) - 1; ++$i) { if ((!$invert && $current_minute >= $minutes[$i] && $current_minute < $minutes[$i + 1]) || ($invert && $current_minute > $minutes[$i] && $current_minute <= $minutes[$i + 1])) { $position = $invert ? $i : $i + 1; break; } } } $target = (int) $minutes[$position]; $originalMinute = (int) $date->format("i"); if (! $invert) { if ($originalMinute >= $target) { $distance = 60 - $originalMinute; $date = $this->timezoneSafeModify($date, "+{$distance} minutes"); $originalMinute = (int) $date->format("i"); } $distance = $target - $originalMinute; $date = $this->timezoneSafeModify($date, "+{$distance} minutes"); } else { if ($originalMinute <= $target) { $distance = ($originalMinute + 1); $date = $this->timezoneSafeModify($date, "-{$distance} minutes"); $originalMinute = (int) $date->format("i"); } $distance = $originalMinute - $target; $date = $this->timezoneSafeModify($date, "-{$distance} minutes"); } return $this; } }