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 */
18function 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