From 80d3db1dcf8fe9ca66d4e3f2e2116d3bc39ae2b4 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 12 Jul 2022 22:26:21 +0300 Subject: upgrade idiorm to php8.1-patched version (aaronpk/idiorm) --- .../thecodingmachine/safe/generated/datetime.php | 625 +++++++++++++++++++-- 1 file changed, 579 insertions(+), 46 deletions(-) (limited to 'vendor/thecodingmachine/safe/generated/datetime.php') diff --git a/vendor/thecodingmachine/safe/generated/datetime.php b/vendor/thecodingmachine/safe/generated/datetime.php index 01bfa9364..9840ef5c6 100644 --- a/vendor/thecodingmachine/safe/generated/datetime.php +++ b/vendor/thecodingmachine/safe/generated/datetime.php @@ -9,11 +9,11 @@ use Safe\Exceptions\DatetimeException; * * @param string $format Format accepted by DateTime::createFromFormat. * @param string $datetime String representing the date/time. - * @return array Returns associative array with detailed info about given date/time. + * @return array{year: int|false, month: int|false, day: int|false, hour: int|false, minute: int|false, second: int|false, fraction: float|false, warning_count: int, warnings: string[], error_count: int, errors: string[], is_localtime: bool, zone_type: int|bool, zone: int|bool, is_dst: bool, tz_abbr: string, tz_id: string, relative: array{year: int, month: int, day: int, hour: int, minute: int, second: int, weekday: int, weekdays: int, first_day_of_month: bool, last_day_of_month: bool}}|null Returns associative array with detailed info about given date/time. * @throws DatetimeException * */ -function date_parse_from_format(string $format, string $datetime): array +function date_parse_from_format(string $format, string $datetime): ?array { error_clear_last(); $result = \date_parse_from_format($format, $datetime); @@ -25,16 +25,30 @@ function date_parse_from_format(string $format, string $datetime): array /** - * + * date_parse parses the given + * datetime string according to the same rules as + * strtotime and + * DateTimeImmutable::__construct. Instead of returning a + * Unix timestamp (with strtotime) or a + * DateTimeImmutable object (with + * DateTimeImmutable::__construct, it returns an + * associative array with the information that it could detect in the given + * datetime string. + * + * If no information about a certain group of elements can be found, these + * array elements will be set to FALSE or are missing. If needed for + * constructing a timestamp or DateTimeImmutable object from + * the same datetime string, more fields can be set to + * a non-FALSE value. See the examples for cases where that happens. * * @param string $datetime Date/time in format accepted by * DateTimeImmutable::__construct. - * @return array Returns array with information about the parsed date/time + * @return array{year: int|false, month: int|false, day: int|false, hour: int|false, minute: int|false, second: int|false, fraction: float|false, warning_count: int, warnings: string[], error_count: int, errors: string[], is_localtime: bool, zone_type: int|bool, zone: int|bool, is_dst: bool, tz_abbr: string, tz_id: string, relative: array{year: int, month: int, day: int, hour: int, minute: int, second: int, weekday: int, weekdays: int, first_day_of_month: bool, last_day_of_month: bool}}|null Returns array with information about the parsed date/time * on success. * @throws DatetimeException * */ -function date_parse(string $datetime): array +function date_parse(string $datetime): ?array { error_clear_last(); $result = \date_parse($datetime); @@ -180,7 +194,7 @@ function date_sun_info(int $timestamp, float $latitude, float $longitude): array * * * SUNFUNCS_RET_TIMESTAMP - * returns the result as integer (timestamp) + * returns the result as int (timestamp) * 1095034606 * * @@ -233,10 +247,10 @@ function date_sun_info(int $timestamp, float $latitude, float $longitude): array * @throws DatetimeException * */ -function date_sunrise(int $timestamp, int $returnFormat = SUNFUNCS_RET_STRING, float $latitude = null, float $longitude = null, float $zenith = null, float $utcOffset = 0) +function date_sunrise(int $timestamp, int $returnFormat = SUNFUNCS_RET_STRING, float $latitude = null, float $longitude = null, float $zenith = null, float $utcOffset = null) { error_clear_last(); - if ($utcOffset !== 0) { + if ($utcOffset !== null) { $result = \date_sunrise($timestamp, $returnFormat, $latitude, $longitude, $zenith, $utcOffset); } elseif ($zenith !== null) { $result = \date_sunrise($timestamp, $returnFormat, $latitude, $longitude, $zenith); @@ -283,7 +297,7 @@ function date_sunrise(int $timestamp, int $returnFormat = SUNFUNCS_RET_STRING, f * * * SUNFUNCS_RET_TIMESTAMP - * returns the result as integer (timestamp) + * returns the result as int (timestamp) * 1095034606 * * @@ -336,10 +350,10 @@ function date_sunrise(int $timestamp, int $returnFormat = SUNFUNCS_RET_STRING, f * @throws DatetimeException * */ -function date_sunset(int $timestamp, int $returnFormat = SUNFUNCS_RET_STRING, float $latitude = null, float $longitude = null, float $zenith = null, float $utcOffset = 0) +function date_sunset(int $timestamp, int $returnFormat = SUNFUNCS_RET_STRING, float $latitude = null, float $longitude = null, float $zenith = null, float $utcOffset = null) { error_clear_last(); - if ($utcOffset !== 0) { + if ($utcOffset !== null) { $result = \date_sunset($timestamp, $returnFormat, $latitude, $longitude, $zenith, $utcOffset); } elseif ($zenith !== null) { $result = \date_sunset($timestamp, $returnFormat, $latitude, $longitude, $zenith); @@ -359,14 +373,19 @@ function date_sunset(int $timestamp, int $returnFormat = SUNFUNCS_RET_STRING, fl /** * Returns a string formatted according to the given format string using the - * given integer timestamp or the current time - * if no timestamp is given. In other words, timestamp + * given integer timestamp (Unix timestamp) or the current time + * if no timestamp is given. In other words, timestamp * is optional and defaults to the value of time. * + * Unix timestamps do not handle timezones. Use the + * DateTimeImmutable class, and its + * DateTimeInterface::format formatting method to + * format date/time information with a timezone attached. + * * @param string $format Format accepted by DateTimeInterface::format. * @param int $timestamp The optional timestamp parameter is an - * integer Unix timestamp that defaults to the current - * local time if a timestamp is not given. In other + * int Unix timestamp that defaults to the current + * local time if timestamp is omitted or NULL. In other * words, it defaults to the value of time. * @return string Returns a formatted date string. If a non-numeric value is used for * timestamp, FALSE is returned and an @@ -390,28 +409,219 @@ function date(string $format, int $timestamp = null): string /** - * Identical to the date function except that - * the time returned is Greenwich Mean Time (GMT). + * Identical to mktime except the passed parameters represents a + * GMT date. gmmktime internally uses mktime + * so only times valid in derived local time can be used. + * + * Like mktime, arguments may be left out in order + * from right to left, with any omitted arguments being set to the + * current corresponding GMT value. + * + * @param int $hour The number of the hour relative to the start of the day determined by + * month, day and year. + * Negative values reference the hour before midnight of the day in question. + * Values greater than 23 reference the appropriate hour in the following day(s). + * @param int $minute The number of the minute relative to the start of the hour. + * Negative values reference the minute in the previous hour. + * Values greater than 59 reference the appropriate minute in the following hour(s). + * @param int $second The number of seconds relative to the start of the minute. + * Negative values reference the second in the previous minute. + * Values greater than 59 reference the appropriate second in the following minute(s). + * @param int $month The number of the month relative to the end of the previous year. + * Values 1 to 12 reference the normal calendar months of the year in question. + * Values less than 1 (including negative values) reference the months in the previous year in reverse order, so 0 is December, -1 is November, etc. + * Values greater than 12 reference the appropriate month in the following year(s). + * @param int $day The number of the day relative to the end of the previous month. + * Values 1 to 28, 29, 30 or 31 (depending upon the month) reference the normal days in the relevant month. + * Values less than 1 (including negative values) reference the days in the previous month, so 0 is the last day of the previous month, -1 is the day before that, etc. + * Values greater than the number of days in the relevant month reference the appropriate day in the following month(s). + * @param int $year The year + * @return int Returns a int Unix timestamp on success. + * @throws DatetimeException + * + */ +function gmmktime(int $hour, int $minute = null, int $second = null, int $month = null, int $day = null, int $year = null): int +{ + error_clear_last(); + if ($year !== null) { + $result = \gmmktime($hour, $minute, $second, $month, $day, $year); + } elseif ($day !== null) { + $result = \gmmktime($hour, $minute, $second, $month, $day); + } elseif ($month !== null) { + $result = \gmmktime($hour, $minute, $second, $month); + } elseif ($second !== null) { + $result = \gmmktime($hour, $minute, $second); + } elseif ($minute !== null) { + $result = \gmmktime($hour, $minute); + } else { + $result = \gmmktime($hour); + } + if ($result === false) { + throw DatetimeException::createFromPhpError(); + } + return $result; +} + + +/** + * Behaves the same as strftime except that the + * time returned is Greenwich Mean Time (GMT). For example, when run + * in Eastern Standard Time (GMT -0500), the first line below prints + * "Dec 31 1998 20:00:00", while the second prints "Jan 01 1999 + * 01:00:00". * - * @param string $format The format of the outputted date string. See the formatting - * options for the date function. + * @param string $format See description in strftime. * @param int $timestamp The optional timestamp parameter is an - * integer Unix timestamp that defaults to the current - * local time if a timestamp is not given. In other + * int Unix timestamp that defaults to the current + * local time if timestamp is omitted or NULL. In other * words, it defaults to the value of time. - * @return string Returns a formatted date string. If a non-numeric value is used for - * timestamp, FALSE is returned and an - * E_WARNING level error is emitted. + * @return string Returns a string formatted according to the given format string + * using the given timestamp or the current + * local time if no timestamp is given. Month and weekday names and + * other language dependent strings respect the current locale set + * with setlocale. + * On failure, FALSE is returned. * @throws DatetimeException * */ -function gmdate(string $format, int $timestamp = null): string +function gmstrftime(string $format, int $timestamp = null): string { error_clear_last(); if ($timestamp !== null) { - $result = \gmdate($format, $timestamp); + $result = \gmstrftime($format, $timestamp); } else { - $result = \gmdate($format); + $result = \gmstrftime($format); + } + if ($result === false) { + throw DatetimeException::createFromPhpError(); + } + return $result; +} + + +/** + * Returns a number formatted according to the given format string using the + * given integer timestamp or the current local time + * if no timestamp is given. In other words, timestamp + * is optional and defaults to the value of time. + * + * Unlike the function date, idate + * accepts just one char in the format parameter. + * + * @param string $format + * The following characters are recognized in the + * format parameter string + * + * + * + * format character + * Description + * + * + * + * + * B + * Swatch Beat/Internet Time + * + * + * d + * Day of the month + * + * + * h + * Hour (12 hour format) + * + * + * H + * Hour (24 hour format) + * + * + * i + * Minutes + * + * + * I (uppercase i) + * returns 1 if DST is activated, + * 0 otherwise + * + * + * L (uppercase l) + * returns 1 for leap year, + * 0 otherwise + * + * + * m + * Month number + * + * + * N + * ISO-8601 day of the week (1 for Monday + * through 7 for Sunday) + * + * + * o + * ISO-8601 year (4 digits) + * + * + * s + * Seconds + * + * + * t + * Days in current month + * + * + * U + * Seconds since the Unix Epoch - January 1 1970 00:00:00 UTC - + * this is the same as time + * + * + * w + * Day of the week (0 on Sunday) + * + * + * W + * ISO-8601 week number of year, weeks starting on + * Monday + * + * + * y + * Year (1 or 2 digits - check note below) + * + * + * Y + * Year (4 digits) + * + * + * z + * Day of the year + * + * + * Z + * Timezone offset in seconds + * + * + * + * + * @param int $timestamp The optional timestamp parameter is an + * int Unix timestamp that defaults to the current + * local time if timestamp is omitted or NULL. In other + * words, it defaults to the value of time. + * @return int Returns an int on success. + * + * As idate always returns an int and + * as they can't start with a "0", idate may return + * fewer digits than you would expect. See the example below. + * @throws DatetimeException + * + */ +function idate(string $format, int $timestamp = null): int +{ + error_clear_last(); + if ($timestamp !== null) { + $result = \idate($format, $timestamp); + } else { + $result = \idate($format); } if ($result === false) { throw DatetimeException::createFromPhpError(); @@ -452,16 +662,14 @@ function gmdate(string $format, int $timestamp = null): string * with values between 0-69 mapping to 2000-2069 and 70-100 to * 1970-2000. On systems where time_t is a 32bit signed integer, as * most common today, the valid range for year - * is somewhere between 1901 and 2038. However, before PHP 5.1.0 this - * range was limited from 1970 to 2038 on some systems (e.g. Windows). + * is somewhere between 1901 and 2038. * @return int mktime returns the Unix timestamp of the arguments * given. - * If the arguments are invalid, the function returns FALSE (before PHP 5.1 - * it returned -1). + * If the arguments are invalid, the function returns FALSE. * @throws DatetimeException * */ -function mktime(int $hour = null, int $minute = null, int $second = null, int $month = null, int $day = null, int $year = null): int +function mktime(int $hour, int $minute = null, int $second = null, int $month = null, int $day = null, int $year = null): int { error_clear_last(); if ($year !== null) { @@ -474,10 +682,336 @@ function mktime(int $hour = null, int $minute = null, int $second = null, int $m $result = \mktime($hour, $minute, $second); } elseif ($minute !== null) { $result = \mktime($hour, $minute); - } elseif ($hour !== null) { + } else { $result = \mktime($hour); + } + if ($result === false) { + throw DatetimeException::createFromPhpError(); + } + return $result; +} + + +/** + * Format the time and/or date according to locale settings. Month and weekday + * names and other language-dependent strings respect the current locale set + * with setlocale. + * + * Not all conversion specifiers may be supported by your C library, in which + * case they will not be supported by PHP's strftime. + * Additionally, not all platforms support negative timestamps, so your + * date range may be limited to no earlier than the Unix epoch. This means that + * %e, %T, %R and, %D (and possibly others) - as well as dates prior to + * Jan 1, 1970 - will not work on Windows, some Linux + * distributions, and a few other operating systems. For Windows systems, a + * complete overview of supported conversion specifiers can be found at + * MSDN. + * + * @param string $format + * The following characters are recognized in the + * format parameter string + * + * + * + * format + * Description + * Example returned values + * + * + * + * + * Day + * --- + * --- + * + * + * %a + * An abbreviated textual representation of the day + * Sun through Sat + * + * + * %A + * A full textual representation of the day + * Sunday through Saturday + * + * + * %d + * Two-digit day of the month (with leading zeros) + * 01 to 31 + * + * + * %e + * + * Day of the month, with a space preceding single digits. Not + * implemented as described on Windows. See below for more information. + * + * 1 to 31 + * + * + * %j + * Day of the year, 3 digits with leading zeros + * 001 to 366 + * + * + * %u + * ISO-8601 numeric representation of the day of the week + * 1 (for Monday) through 7 (for Sunday) + * + * + * %w + * Numeric representation of the day of the week + * 0 (for Sunday) through 6 (for Saturday) + * + * + * Week + * --- + * --- + * + * + * %U + * Week number of the given year, starting with the first + * Sunday as the first week + * 13 (for the 13th full week of the year) + * + * + * %V + * ISO-8601:1988 week number of the given year, starting with + * the first week of the year with at least 4 weekdays, with Monday + * being the start of the week + * 01 through 53 (where 53 + * accounts for an overlapping week) + * + * + * %W + * A numeric representation of the week of the year, starting + * with the first Monday as the first week + * 46 (for the 46th week of the year beginning + * with a Monday) + * + * + * Month + * --- + * --- + * + * + * %b + * Abbreviated month name, based on the locale + * Jan through Dec + * + * + * %B + * Full month name, based on the locale + * January through December + * + * + * %h + * Abbreviated month name, based on the locale (an alias of %b) + * Jan through Dec + * + * + * %m + * Two digit representation of the month + * 01 (for January) through 12 (for December) + * + * + * Year + * --- + * --- + * + * + * %C + * Two digit representation of the century (year divided by 100, truncated to an integer) + * 19 for the 20th Century + * + * + * %g + * Two digit representation of the year going by ISO-8601:1988 standards (see %V) + * Example: 09 for the week of January 6, 2009 + * + * + * %G + * The full four-digit version of %g + * Example: 2008 for the week of January 3, 2009 + * + * + * %y + * Two digit representation of the year + * Example: 09 for 2009, 79 for 1979 + * + * + * %Y + * Four digit representation for the year + * Example: 2038 + * + * + * Time + * --- + * --- + * + * + * %H + * Two digit representation of the hour in 24-hour format + * 00 through 23 + * + * + * %k + * Hour in 24-hour format, with a space preceding single digits + * 0 through 23 + * + * + * %I + * Two digit representation of the hour in 12-hour format + * 01 through 12 + * + * + * %l (lower-case 'L') + * Hour in 12-hour format, with a space preceding single digits + * 1 through 12 + * + * + * %M + * Two digit representation of the minute + * 00 through 59 + * + * + * %p + * UPPER-CASE 'AM' or 'PM' based on the given time + * Example: AM for 00:31, + * PM for 22:23. The exact result depends on the + * Operating System, and they can also return lower-case variants, or + * variants with dots (such as a.m.). + * + * + * %P + * lower-case 'am' or 'pm' based on the given time + * Example: am for 00:31, + * pm for 22:23. Not supported by all Operating + * Systems. + * + * + * %r + * Same as "%I:%M:%S %p" + * Example: 09:34:17 PM for 21:34:17 + * + * + * %R + * Same as "%H:%M" + * Example: 00:35 for 12:35 AM, 16:44 for 4:44 PM + * + * + * %S + * Two digit representation of the second + * 00 through 59 + * + * + * %T + * Same as "%H:%M:%S" + * Example: 21:34:17 for 09:34:17 PM + * + * + * %X + * Preferred time representation based on locale, without the date + * Example: 03:59:16 or 15:59:16 + * + * + * %z + * The time zone offset. Not implemented as described on + * Windows. See below for more information. + * Example: -0500 for US Eastern Time + * + * + * %Z + * The time zone abbreviation. Not implemented as described on + * Windows. See below for more information. + * Example: EST for Eastern Time + * + * + * Time and Date Stamps + * --- + * --- + * + * + * %c + * Preferred date and time stamp based on locale + * Example: Tue Feb 5 00:45:10 2009 for + * February 5, 2009 at 12:45:10 AM + * + * + * %D + * Same as "%m/%d/%y" + * Example: 02/05/09 for February 5, 2009 + * + * + * %F + * Same as "%Y-%m-%d" (commonly used in database datestamps) + * Example: 2009-02-05 for February 5, 2009 + * + * + * %s + * Unix Epoch Time timestamp (same as the time + * function) + * Example: 305815200 for September 10, 1979 08:40:00 AM + * + * + * %x + * Preferred date representation based on locale, without the time + * Example: 02/05/09 for February 5, 2009 + * + * + * Miscellaneous + * --- + * --- + * + * + * %n + * A newline character ("\n") + * --- + * + * + * %t + * A Tab character ("\t") + * --- + * + * + * %% + * A literal percentage character ("%") + * --- + * + * + * + * + * + * Windows only: + * + * The %e modifier is not supported in the Windows + * implementation of this function. To achieve this value, the + * %#d modifier can be used instead. The example below + * illustrates how to write a cross platform compatible function. + * + * The %z and %Z modifiers both + * return the time zone name instead of the offset or abbreviation. + * @param int $timestamp The optional timestamp parameter is an + * int Unix timestamp that defaults to the current + * local time if timestamp is omitted or NULL. In other + * words, it defaults to the value of time. + * @return string Returns a string formatted according format + * using the given timestamp or the current + * local time if no timestamp is given. Month and weekday names and + * other language-dependent strings respect the current locale set + * with setlocale. + * The function returns FALSE if format is empty, contains unsupported + * conversion specifiers, or if the length of the returned string would be greater than + * 4095. + * @throws DatetimeException + * + */ +function strftime(string $format, int $timestamp = null): string +{ + error_clear_last(); + if ($timestamp !== null) { + $result = \strftime($format, $timestamp); } else { - $result = \mktime(); + $result = \strftime($format); } if ($result === false) { throw DatetimeException::createFromPhpError(); @@ -488,13 +1022,13 @@ function mktime(int $hour = null, int $minute = null, int $second = null, int $m /** * strptime returns an array with the - * date parsed. + * timestamp parsed. * * Month and weekday names and other language dependent strings respect the * current locale set with setlocale (LC_TIME). * - * @param string $date The string to parse (e.g. returned from strftime). - * @param string $format The format used in date (e.g. the same as + * @param string $timestamp The string to parse (e.g. returned from strftime). + * @param string $format The format used in timestamp (e.g. the same as * used in strftime). Note that some of the format * options available to strftime may not have any * effect within strptime; the exact subset that are @@ -549,7 +1083,7 @@ function mktime(int $hour = null, int $minute = null, int $second = null, int $m * * * "unparsed" - * the date part which was not + * the timestamp part which was not * recognized using the specified format * * @@ -558,10 +1092,10 @@ function mktime(int $hour = null, int $minute = null, int $second = null, int $m * @throws DatetimeException * */ -function strptime(string $date, string $format): array +function strptime(string $timestamp, string $format): array { error_clear_last(); - $result = \strptime($date, $format); + $result = \strptime($timestamp, $format); if ($result === false) { throw DatetimeException::createFromPhpError(); } @@ -577,18 +1111,17 @@ function strptime(string $date, string $format): array * ways to define the default time zone. * * @param string $datetime A date/time string. Valid formats are explained in Date and Time Formats. - * @param int $now The timestamp which is used as a base for the calculation of relative + * @param int $baseTimestamp The timestamp which is used as a base for the calculation of relative * dates. - * @return int Returns a timestamp on success, FALSE otherwise. Previous to PHP 5.1.0, - * this function would return -1 on failure. + * @return int Returns a timestamp on success, FALSE otherwise. * @throws DatetimeException * */ -function strtotime(string $datetime, int $now = null): int +function strtotime(string $datetime, int $baseTimestamp = null): int { error_clear_last(); - if ($now !== null) { - $result = \strtotime($datetime, $now); + if ($baseTimestamp !== null) { + $result = \strtotime($datetime, $baseTimestamp); } else { $result = \strtotime($datetime); } -- cgit v1.2.3