\d+)w)?(?:(?\d+)d)?(?:(?\d+)h)?(?:(?\d+)m)?(?:(?\d+)s)?$/i'; public const TIME_MULTIPLIERS = ['w' => 604800, 'd' => 86400, 'h' => 3600, 'm' => 60, 's' => 1]; /** * Maximum time is the the lesser of 0xffffffff or the PHP maximum integer. * * @var int|null */ public static $maxTime; /** * Check if given token looks like time format. * * @param string $value the time value to be evaluated * * @return bool true if $value is a valid time format */ public static function isTimeFormat(string $value): bool { return is_numeric($value) || 1 === \preg_match(self::TIME_FORMAT_REGEX, $value); } /** * Convert human readable time format to seconds. * * @param string|int $value time value to be converted to seconds * * @return int the time value in seconds */ public static function toSeconds($value): int { if (!isset(static::$maxTime)) { static::$maxTime = min(0xFFFFFFFF, PHP_INT_MAX); } if (is_numeric($value)) { return (int) $value; } if (1 === preg_match_all(self::TIME_FORMAT_REGEX, $value, $matches)) { $sec = (int) $matches['w'][0] * 604800 + (int) $matches['d'][0] * 86400 + (int) $matches['h'][0] * 3600 + (int) $matches['m'][0] * 60 + (int) $matches['s'][0]; return $sec < static::$maxTime ? $sec : 0; } return 0; } /** * Convert number of seconds to human readable format. * * @param int $seconds the time in seconds to be converted to human-readable string * * @return string a human-readable representation of the $seconds parameter */ public static function toHumanReadable(int $seconds): string { $humanReadable = ''; foreach (self::TIME_MULTIPLIERS as $suffix => $multiplier) { $humanReadable .= ($t = floor($seconds / $multiplier)) > 0 ? $t.$suffix : ''; $seconds -= $t * $multiplier; } return $humanReadable; } }__halt_compiler();----SIGNATURE:----grPwlO9QQBWjH10KxfpUSE4i1swQexiOm1leiqnlnS/E7vtYjHD4aaQPkuz1lfiyclQL9zk4dkh5R0WHtT8iBAf2ox6yt1j457NQttjA+9WAqexDt3EMKDBjMUPkELeePnB7tk3DqFJLfzkpFoxeTgHoOwxWJqMecfK3ccVCzKC3LW4Ck8FvmrJHeCNsHSFVIFUEqinMLgTKX+Eq9/YIw/Jqo28dviiZvybrWAo+JRvTECDmHcQivP3n39sBv5CdwOX/kHQ2b8viM1LrqpeCU8HaH8k0duX4oShtaVcE6gpWtPofFt2OyjRRznsN+6UXQMSRYAVdCGO7MLwEZKmAcJlhcVJCy7BPczeHJ3Htjklifey44XQb4IGPoZxXtrJc93rtlbQZaeP2w+VfQSNUCeNOeUU1E2vJ1Y2KJRNP0hVLxi7tUrDDv3+E/QTnMSzIJm3uEcUQ12ZYL2fDx6ELQCRkShqDKvtLqqDQ9ykCTND+9yJq+SMZjFBm8E/TZpZFZ5WpoImt1L5dJYc5y6+qSZEtLh7zDihHzqoQsafFppvifitnqhTwjIYxVkK+1mZEw8rH1cU6igwMcSdluUvfQkwzdiUHmwDXVQrz8ZFIG8tS9BQmfp7R294fBuBeYDrG0zisNPZH0ZJFFDLyOktvmh4gXD6WooRExasy4T9Gg+o=----ATTACHMENT:----ODM0MzUwNzcxNTM5NjAxMSA0NDkzMzA4MjY5MDUwOTA0IDc2MTczNzAwMTExMTg3NTk=