1: <?php
2: /**
3: * Smarty shared plugin
4: *
5: * @package Smarty
6: * @subpackage PluginsShared
7: */
8: /**
9: * Function: smarty_make_timestamp
10: * Purpose: used by other smarty functions to make a timestamp from a string.
11: *
12: * @author Monte Ohrt <monte at ohrt dot com>
13: *
14: * @param DateTime|int|string $string date object, timestamp or string that can be converted using strtotime()
15: *
16: * @return int
17: */
18: function smarty_make_timestamp($string)
19: {
20: if (empty($string)) {
21: // use "now":
22: return time();
23: } elseif ($string instanceof DateTime
24: || (interface_exists('DateTimeInterface', false) && $string instanceof DateTimeInterface)
25: ) {
26: return (int)$string->format('U'); // PHP 5.2 BC
27: } elseif (strlen($string) === 14 && ctype_digit($string)) {
28: // it is mysql timestamp format of YYYYMMDDHHMMSS?
29: return mktime(
30: substr($string, 8, 2),
31: substr($string, 10, 2),
32: substr($string, 12, 2),
33: substr($string, 4, 2),
34: substr($string, 6, 2),
35: substr($string, 0, 4)
36: );
37: } elseif (is_numeric($string)) {
38: // it is a numeric string, we handle it as timestamp
39: return (int)$string;
40: } else {
41: // strtotime should handle it
42: $time = strtotime($string);
43: if ($time === -1 || $time === false) {
44: // strtotime() was not able to parse $string, use "now":
45: return time();
46: }
47: return $time;
48: }
49: }
50: