git subrepo commit (merge) mailcow/src/mailcow-dockerized
subrepo: subdir: "mailcow/src/mailcow-dockerized"
merged: "02ae5285"
upstream: origin: "https://github.com/mailcow/mailcow-dockerized.git"
branch: "master"
commit: "649a5c01"
git-subrepo: version: "0.4.3"
origin: "???"
commit: "???"
Change-Id: I870ad468fba026cc5abf3c5699ed1e12ff28b32b
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/nesbot/carbon/src/Carbon/Traits/Converter.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/nesbot/carbon/src/Carbon/Traits/Converter.php
new file mode 100644
index 0000000..7ba6225
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/nesbot/carbon/src/Carbon/Traits/Converter.php
@@ -0,0 +1,652 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace Carbon\Traits;
+
+use Carbon\Carbon;
+use Carbon\CarbonImmutable;
+use Carbon\CarbonInterface;
+use Carbon\CarbonInterval;
+use Carbon\CarbonPeriod;
+use Carbon\Exceptions\UnitException;
+use Closure;
+use DateTime;
+use DateTimeImmutable;
+use ReturnTypeWillChange;
+
+/**
+ * Trait Converter.
+ *
+ * Change date into different string formats and types and
+ * handle the string cast.
+ *
+ * Depends on the following methods:
+ *
+ * @method static copy()
+ */
+trait Converter
+{
+ /**
+ * Format to use for __toString method when type juggling occurs.
+ *
+ * @var string|Closure|null
+ */
+ protected static $toStringFormat;
+
+ /**
+ * Reset the format used to the default when type juggling a Carbon instance to a string
+ *
+ * @return void
+ */
+ public static function resetToStringFormat()
+ {
+ static::setToStringFormat(null);
+ }
+
+ /**
+ * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ * You should rather let Carbon object being casted to string with DEFAULT_TO_STRING_FORMAT, and
+ * use other method or custom format passed to format() method if you need to dump an other string
+ * format.
+ *
+ * Set the default format used when type juggling a Carbon instance to a string
+ *
+ * @param string|Closure|null $format
+ *
+ * @return void
+ */
+ public static function setToStringFormat($format)
+ {
+ static::$toStringFormat = $format;
+ }
+
+ /**
+ * Returns the formatted date string on success or FALSE on failure.
+ *
+ * @see https://php.net/manual/en/datetime.format.php
+ *
+ * @param string $format
+ *
+ * @return string
+ */
+ #[ReturnTypeWillChange]
+ public function format($format)
+ {
+ $function = $this->localFormatFunction ?: static::$formatFunction;
+
+ if (!$function) {
+ return $this->rawFormat($format);
+ }
+
+ if (\is_string($function) && method_exists($this, $function)) {
+ $function = [$this, $function];
+ }
+
+ return $function(...\func_get_args());
+ }
+
+ /**
+ * @see https://php.net/manual/en/datetime.format.php
+ *
+ * @param string $format
+ *
+ * @return string
+ */
+ public function rawFormat($format)
+ {
+ return parent::format($format);
+ }
+
+ /**
+ * Format the instance as a string using the set format
+ *
+ * @example
+ * ```
+ * echo Carbon::now(); // Carbon instances can be casted to string
+ * ```
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ $format = $this->localToStringFormat ?? static::$toStringFormat;
+
+ return $format instanceof Closure
+ ? $format($this)
+ : $this->rawFormat($format ?: (
+ \defined('static::DEFAULT_TO_STRING_FORMAT')
+ ? static::DEFAULT_TO_STRING_FORMAT
+ : CarbonInterface::DEFAULT_TO_STRING_FORMAT
+ ));
+ }
+
+ /**
+ * Format the instance as date
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toDateString();
+ * ```
+ *
+ * @return string
+ */
+ public function toDateString()
+ {
+ return $this->rawFormat('Y-m-d');
+ }
+
+ /**
+ * Format the instance as a readable date
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toFormattedDateString();
+ * ```
+ *
+ * @return string
+ */
+ public function toFormattedDateString()
+ {
+ return $this->rawFormat('M j, Y');
+ }
+
+ /**
+ * Format the instance as time
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toTimeString();
+ * ```
+ *
+ * @param string $unitPrecision
+ *
+ * @return string
+ */
+ public function toTimeString($unitPrecision = 'second')
+ {
+ return $this->rawFormat(static::getTimeFormatByPrecision($unitPrecision));
+ }
+
+ /**
+ * Format the instance as date and time
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toDateTimeString();
+ * ```
+ *
+ * @param string $unitPrecision
+ *
+ * @return string
+ */
+ public function toDateTimeString($unitPrecision = 'second')
+ {
+ return $this->rawFormat('Y-m-d '.static::getTimeFormatByPrecision($unitPrecision));
+ }
+
+ /**
+ * Return a format from H:i to H:i:s.u according to given unit precision.
+ *
+ * @param string $unitPrecision "minute", "second", "millisecond" or "microsecond"
+ *
+ * @return string
+ */
+ public static function getTimeFormatByPrecision($unitPrecision)
+ {
+ switch (static::singularUnit($unitPrecision)) {
+ case 'minute':
+ return 'H:i';
+ case 'second':
+ return 'H:i:s';
+ case 'm':
+ case 'millisecond':
+ return 'H:i:s.v';
+ case 'µ':
+ case 'microsecond':
+ return 'H:i:s.u';
+ }
+
+ throw new UnitException('Precision unit expected among: minute, second, millisecond and microsecond.');
+ }
+
+ /**
+ * Format the instance as date and time T-separated with no timezone
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toDateTimeLocalString();
+ * echo "\n";
+ * echo Carbon::now()->toDateTimeLocalString('minute'); // You can specify precision among: minute, second, millisecond and microsecond
+ * ```
+ *
+ * @param string $unitPrecision
+ *
+ * @return string
+ */
+ public function toDateTimeLocalString($unitPrecision = 'second')
+ {
+ return $this->rawFormat('Y-m-d\T'.static::getTimeFormatByPrecision($unitPrecision));
+ }
+
+ /**
+ * Format the instance with day, date and time
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toDayDateTimeString();
+ * ```
+ *
+ * @return string
+ */
+ public function toDayDateTimeString()
+ {
+ return $this->rawFormat('D, M j, Y g:i A');
+ }
+
+ /**
+ * Format the instance as ATOM
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toAtomString();
+ * ```
+ *
+ * @return string
+ */
+ public function toAtomString()
+ {
+ return $this->rawFormat(DateTime::ATOM);
+ }
+
+ /**
+ * Format the instance as COOKIE
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toCookieString();
+ * ```
+ *
+ * @return string
+ */
+ public function toCookieString()
+ {
+ return $this->rawFormat(DateTime::COOKIE);
+ }
+
+ /**
+ * Format the instance as ISO8601
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toIso8601String();
+ * ```
+ *
+ * @return string
+ */
+ public function toIso8601String()
+ {
+ return $this->toAtomString();
+ }
+
+ /**
+ * Format the instance as RFC822
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toRfc822String();
+ * ```
+ *
+ * @return string
+ */
+ public function toRfc822String()
+ {
+ return $this->rawFormat(DateTime::RFC822);
+ }
+
+ /**
+ * Convert the instance to UTC and return as Zulu ISO8601
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toIso8601ZuluString();
+ * ```
+ *
+ * @param string $unitPrecision
+ *
+ * @return string
+ */
+ public function toIso8601ZuluString($unitPrecision = 'second')
+ {
+ return $this->avoidMutation()
+ ->utc()
+ ->rawFormat('Y-m-d\T'.static::getTimeFormatByPrecision($unitPrecision).'\Z');
+ }
+
+ /**
+ * Format the instance as RFC850
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toRfc850String();
+ * ```
+ *
+ * @return string
+ */
+ public function toRfc850String()
+ {
+ return $this->rawFormat(DateTime::RFC850);
+ }
+
+ /**
+ * Format the instance as RFC1036
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toRfc1036String();
+ * ```
+ *
+ * @return string
+ */
+ public function toRfc1036String()
+ {
+ return $this->rawFormat(DateTime::RFC1036);
+ }
+
+ /**
+ * Format the instance as RFC1123
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toRfc1123String();
+ * ```
+ *
+ * @return string
+ */
+ public function toRfc1123String()
+ {
+ return $this->rawFormat(DateTime::RFC1123);
+ }
+
+ /**
+ * Format the instance as RFC2822
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toRfc2822String();
+ * ```
+ *
+ * @return string
+ */
+ public function toRfc2822String()
+ {
+ return $this->rawFormat(DateTime::RFC2822);
+ }
+
+ /**
+ * Format the instance as RFC3339
+ *
+ * @param bool $extended
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toRfc3339String() . "\n";
+ * echo Carbon::now()->toRfc3339String(true) . "\n";
+ * ```
+ *
+ * @return string
+ */
+ public function toRfc3339String($extended = false)
+ {
+ $format = DateTime::RFC3339;
+ if ($extended) {
+ $format = DateTime::RFC3339_EXTENDED;
+ }
+
+ return $this->rawFormat($format);
+ }
+
+ /**
+ * Format the instance as RSS
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toRssString();
+ * ```
+ *
+ * @return string
+ */
+ public function toRssString()
+ {
+ return $this->rawFormat(DateTime::RSS);
+ }
+
+ /**
+ * Format the instance as W3C
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toW3cString();
+ * ```
+ *
+ * @return string
+ */
+ public function toW3cString()
+ {
+ return $this->rawFormat(DateTime::W3C);
+ }
+
+ /**
+ * Format the instance as RFC7231
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toRfc7231String();
+ * ```
+ *
+ * @return string
+ */
+ public function toRfc7231String()
+ {
+ return $this->avoidMutation()
+ ->setTimezone('GMT')
+ ->rawFormat(\defined('static::RFC7231_FORMAT') ? static::RFC7231_FORMAT : CarbonInterface::RFC7231_FORMAT);
+ }
+
+ /**
+ * Get default array representation.
+ *
+ * @example
+ * ```
+ * var_dump(Carbon::now()->toArray());
+ * ```
+ *
+ * @return array
+ */
+ public function toArray()
+ {
+ return [
+ 'year' => $this->year,
+ 'month' => $this->month,
+ 'day' => $this->day,
+ 'dayOfWeek' => $this->dayOfWeek,
+ 'dayOfYear' => $this->dayOfYear,
+ 'hour' => $this->hour,
+ 'minute' => $this->minute,
+ 'second' => $this->second,
+ 'micro' => $this->micro,
+ 'timestamp' => $this->timestamp,
+ 'formatted' => $this->rawFormat(\defined('static::DEFAULT_TO_STRING_FORMAT') ? static::DEFAULT_TO_STRING_FORMAT : CarbonInterface::DEFAULT_TO_STRING_FORMAT),
+ 'timezone' => $this->timezone,
+ ];
+ }
+
+ /**
+ * Get default object representation.
+ *
+ * @example
+ * ```
+ * var_dump(Carbon::now()->toObject());
+ * ```
+ *
+ * @return object
+ */
+ public function toObject()
+ {
+ return (object) $this->toArray();
+ }
+
+ /**
+ * Returns english human readable complete date string.
+ *
+ * @example
+ * ```
+ * echo Carbon::now()->toString();
+ * ```
+ *
+ * @return string
+ */
+ public function toString()
+ {
+ return $this->avoidMutation()->locale('en')->isoFormat('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
+ }
+
+ /**
+ * Return the ISO-8601 string (ex: 1977-04-22T06:00:00Z, if $keepOffset truthy, offset will be kept:
+ * 1977-04-22T01:00:00-05:00).
+ *
+ * @example
+ * ```
+ * echo Carbon::now('America/Toronto')->toISOString() . "\n";
+ * echo Carbon::now('America/Toronto')->toISOString(true) . "\n";
+ * ```
+ *
+ * @param bool $keepOffset Pass true to keep the date offset. Else forced to UTC.
+ *
+ * @return null|string
+ */
+ public function toISOString($keepOffset = false)
+ {
+ if (!$this->isValid()) {
+ return null;
+ }
+
+ $yearFormat = $this->year < 0 || $this->year > 9999 ? 'YYYYYY' : 'YYYY';
+ $tzFormat = $keepOffset ? 'Z' : '[Z]';
+ $date = $keepOffset ? $this : $this->avoidMutation()->utc();
+
+ return $date->isoFormat("$yearFormat-MM-DD[T]HH:mm:ss.SSSSSS$tzFormat");
+ }
+
+ /**
+ * Return the ISO-8601 string (ex: 1977-04-22T06:00:00Z) with UTC timezone.
+ *
+ * @example
+ * ```
+ * echo Carbon::now('America/Toronto')->toJSON();
+ * ```
+ *
+ * @return null|string
+ */
+ public function toJSON()
+ {
+ return $this->toISOString();
+ }
+
+ /**
+ * Return native DateTime PHP object matching the current instance.
+ *
+ * @example
+ * ```
+ * var_dump(Carbon::now()->toDateTime());
+ * ```
+ *
+ * @return DateTime
+ */
+ public function toDateTime()
+ {
+ return new DateTime($this->rawFormat('Y-m-d H:i:s.u'), $this->getTimezone());
+ }
+
+ /**
+ * Return native toDateTimeImmutable PHP object matching the current instance.
+ *
+ * @example
+ * ```
+ * var_dump(Carbon::now()->toDateTimeImmutable());
+ * ```
+ *
+ * @return DateTimeImmutable
+ */
+ public function toDateTimeImmutable()
+ {
+ return new DateTimeImmutable($this->rawFormat('Y-m-d H:i:s.u'), $this->getTimezone());
+ }
+
+ /**
+ * @alias toDateTime
+ *
+ * Return native DateTime PHP object matching the current instance.
+ *
+ * @example
+ * ```
+ * var_dump(Carbon::now()->toDate());
+ * ```
+ *
+ * @return DateTime
+ */
+ public function toDate()
+ {
+ return $this->toDateTime();
+ }
+
+ /**
+ * Create a iterable CarbonPeriod object from current date to a given end date (and optional interval).
+ *
+ * @param \DateTimeInterface|Carbon|CarbonImmutable|int|null $end period end date or recurrences count if int
+ * @param int|\DateInterval|string|null $interval period default interval or number of the given $unit
+ * @param string|null $unit if specified, $interval must be an integer
+ *
+ * @return CarbonPeriod
+ */
+ public function toPeriod($end = null, $interval = null, $unit = null)
+ {
+ if ($unit) {
+ $interval = CarbonInterval::make("$interval ".static::pluralUnit($unit));
+ }
+
+ $period = (new CarbonPeriod())->setDateClass(static::class)->setStartDate($this);
+
+ if ($interval) {
+ $period->setDateInterval($interval);
+ }
+
+ if (\is_int($end) || \is_string($end) && ctype_digit($end)) {
+ $period->setRecurrences($end);
+ } elseif ($end) {
+ $period->setEndDate($end);
+ }
+
+ return $period;
+ }
+
+ /**
+ * Create a iterable CarbonPeriod object from current date to a given end date (and optional interval).
+ *
+ * @param \DateTimeInterface|Carbon|CarbonImmutable|null $end period end date
+ * @param int|\DateInterval|string|null $interval period default interval or number of the given $unit
+ * @param string|null $unit if specified, $interval must be an integer
+ *
+ * @return CarbonPeriod
+ */
+ public function range($end = null, $interval = null, $unit = null)
+ {
+ return $this->toPeriod($end, $interval, $unit);
+ }
+}