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