From 269b942a2bf7b022795e591d9b0ad04526ee7e09 Mon Sep 17 00:00:00 2001 From: Derek Jones Date: Mon, 28 Jan 2008 21:00:20 +0000 Subject: added ability to "extend" helpers * modified Loader to check for prefixed helpers in application/helpers folder * surrounded provided helper functions with if (! function_exists('foo')) conditionals so the user's helper functions take precedent. --- system/helpers/date_helper.php | 598 ++++++++++++++++++++++------------------- 1 file changed, 316 insertions(+), 282 deletions(-) (limited to 'system/helpers/date_helper.php') diff --git a/system/helpers/date_helper.php b/system/helpers/date_helper.php index 9f4c66b4e..24e0b1794 100644 --- a/system/helpers/date_helper.php +++ b/system/helpers/date_helper.php @@ -35,26 +35,29 @@ * @access public * @return integer */ -function now() +if (! function_exists('now')) { - $CI =& get_instance(); - - if (strtolower($CI->config->item('time_reference')) == 'gmt') + function now() { - $now = time(); - $system_time = mktime(gmdate("H", $now), gmdate("i", $now), gmdate("s", $now), gmdate("m", $now), gmdate("d", $now), gmdate("Y", $now)); + $CI =& get_instance(); - if (strlen($system_time) < 10) + if (strtolower($CI->config->item('time_reference')) == 'gmt') { - $system_time = time(); - log_message('error', 'The Date class could not set a proper GMT timestamp so the local time() value was used.'); - } + $now = time(); + $system_time = mktime(gmdate("H", $now), gmdate("i", $now), gmdate("s", $now), gmdate("m", $now), gmdate("d", $now), gmdate("Y", $now)); - return $system_time; - } - else - { - return time(); + if (strlen($system_time) < 10) + { + $system_time = time(); + log_message('error', 'The Date class could not set a proper GMT timestamp so the local time() value was used.'); + } + + return $system_time; + } + else + { + return time(); + } } } @@ -77,16 +80,19 @@ function now() * @param integer * @return integer */ -function mdate($datestr = '', $time = '') +if (! function_exists('mdate')) { - if ($datestr == '') - return ''; + function mdate($datestr = '', $time = '') + { + if ($datestr == '') + return ''; - if ($time == '') - $time = now(); + if ($time == '') + $time = now(); - $datestr = str_replace('%\\', '', preg_replace("/([a-z]+?){1}/i", "\\\\\\1", $datestr)); - return date($datestr, $time); + $datestr = str_replace('%\\', '', preg_replace("/([a-z]+?){1}/i", "\\\\\\1", $datestr)); + return date($datestr, $time); + } } // ------------------------------------------------------------------------ @@ -101,28 +107,30 @@ function mdate($datestr = '', $time = '') * @param integer Unix timestamp * @return string */ -function standard_date($fmt = 'DATE_RFC822', $time = '') +if (! function_exists('standard_date')) { - $formats = array( - 'DATE_ATOM' => '%Y-%m-%dT%H:%i:%s%Q', - 'DATE_COOKIE' => '%l, %d-%M-%y %H:%i:%s UTC', - 'DATE_ISO8601' => '%Y-%m-%dT%H:%i:%s%O', - 'DATE_RFC822' => '%D, %d %M %y %H:%i:%s %O', - 'DATE_RFC850' => '%l, %d-%M-%y %H:%m:%i UTC', - 'DATE_RFC1036' => '%D, %d %M %y %H:%i:%s %O', - 'DATE_RFC1123' => '%D, %d %M %Y %H:%i:%s %O', - 'DATE_RSS' => '%D, %d %M %Y %H:%i:%s %O', - 'DATE_W3C' => '%Y-%m-%dT%H:%i:%s%Q' - ); - - if ( ! isset($formats[$fmt])) + function standard_date($fmt = 'DATE_RFC822', $time = '') { - return FALSE; - } + $formats = array( + 'DATE_ATOM' => '%Y-%m-%dT%H:%i:%s%Q', + 'DATE_COOKIE' => '%l, %d-%M-%y %H:%i:%s UTC', + 'DATE_ISO8601' => '%Y-%m-%dT%H:%i:%s%O', + 'DATE_RFC822' => '%D, %d %M %y %H:%i:%s %O', + 'DATE_RFC850' => '%l, %d-%M-%y %H:%m:%i UTC', + 'DATE_RFC1036' => '%D, %d %M %y %H:%i:%s %O', + 'DATE_RFC1123' => '%D, %d %M %Y %H:%i:%s %O', + 'DATE_RSS' => '%D, %d %M %Y %H:%i:%s %O', + 'DATE_W3C' => '%Y-%m-%dT%H:%i:%s%Q' + ); + + if ( ! isset($formats[$fmt])) + { + return FALSE; + } - return mdate($formats[$fmt], $time); + return mdate($formats[$fmt], $time); + } } - // ------------------------------------------------------------------------ @@ -137,105 +145,108 @@ function standard_date($fmt = 'DATE_RFC822', $time = '') * @param integer Unix timestamp * @return integer */ -function timespan($seconds = 1, $time = '') +if (! function_exists('timespan')) { - $CI =& get_instance(); - $CI->lang->load('date'); - - if ( ! is_numeric($seconds)) + function timespan($seconds = 1, $time = '') { - $seconds = 1; - } + $CI =& get_instance(); + $CI->lang->load('date'); + + if ( ! is_numeric($seconds)) + { + $seconds = 1; + } - if ( ! is_numeric($time)) - { - $time = time(); - } + if ( ! is_numeric($time)) + { + $time = time(); + } - if ($time <= $seconds) - { - $seconds = 1; - } - else - { - $seconds = $time - $seconds; - } + if ($time <= $seconds) + { + $seconds = 1; + } + else + { + $seconds = $time - $seconds; + } - $str = ''; - $years = floor($seconds / 31536000); - - if ($years > 0) - { - $str .= $years.' '.$CI->lang->line((($years > 1) ? 'date_years' : 'date_year')).', '; - } + $str = ''; + $years = floor($seconds / 31536000); - $seconds -= $years * 31536000; - $months = floor($seconds / 2628000); - - if ($years > 0 OR $months > 0) - { - if ($months > 0) + if ($years > 0) { - $str .= $months.' '.$CI->lang->line((($months > 1) ? 'date_months' : 'date_month')).', '; + $str .= $years.' '.$CI->lang->line((($years > 1) ? 'date_years' : 'date_year')).', '; } - $seconds -= $months * 2628000; - } - - $weeks = floor($seconds / 604800); + $seconds -= $years * 31536000; + $months = floor($seconds / 2628000); - if ($years > 0 OR $months > 0 OR $weeks > 0) - { - if ($weeks > 0) - { - $str .= $weeks.' '.$CI->lang->line((($weeks > 1) ? 'date_weeks' : 'date_week')).', '; + if ($years > 0 OR $months > 0) + { + if ($months > 0) + { + $str .= $months.' '.$CI->lang->line((($months > 1) ? 'date_months' : 'date_month')).', '; + } + + $seconds -= $months * 2628000; } + + $weeks = floor($seconds / 604800); + + if ($years > 0 OR $months > 0 OR $weeks > 0) + { + if ($weeks > 0) + { + $str .= $weeks.' '.$CI->lang->line((($weeks > 1) ? 'date_weeks' : 'date_week')).', '; + } - $seconds -= $weeks * 604800; - } + $seconds -= $weeks * 604800; + } - $days = floor($seconds / 86400); + $days = floor($seconds / 86400); - if ($months > 0 OR $weeks > 0 OR $days > 0) - { - if ($days > 0) - { - $str .= $days.' '.$CI->lang->line((($days > 1) ? 'date_days' : 'date_day')).', '; - } + if ($months > 0 OR $weeks > 0 OR $days > 0) + { + if ($days > 0) + { + $str .= $days.' '.$CI->lang->line((($days > 1) ? 'date_days' : 'date_day')).', '; + } - $seconds -= $days * 86400; - } + $seconds -= $days * 86400; + } - $hours = floor($seconds / 3600); + $hours = floor($seconds / 3600); - if ($days > 0 OR $hours > 0) - { - if ($hours > 0) + if ($days > 0 OR $hours > 0) { - $str .= $hours.' '.$CI->lang->line((($hours > 1) ? 'date_hours' : 'date_hour')).', '; - } + if ($hours > 0) + { + $str .= $hours.' '.$CI->lang->line((($hours > 1) ? 'date_hours' : 'date_hour')).', '; + } - $seconds -= $hours * 3600; - } + $seconds -= $hours * 3600; + } - $minutes = floor($seconds / 60); + $minutes = floor($seconds / 60); - if ($days > 0 OR $hours > 0 OR $minutes > 0) - { - if ($minutes > 0) - { - $str .= $minutes.' '.$CI->lang->line((($minutes > 1) ? 'date_minutes' : 'date_minute')).', '; - } + if ($days > 0 OR $hours > 0 OR $minutes > 0) + { + if ($minutes > 0) + { + $str .= $minutes.' '.$CI->lang->line((($minutes > 1) ? 'date_minutes' : 'date_minute')).', '; + } - $seconds -= $minutes * 60; - } + $seconds -= $minutes * 60; + } - if ($str == '') - { - $str .= $seconds.' '.$CI->lang->line((($seconds > 1) ? 'date_seconds' : 'date_second')).', '; - } + if ($str == '') + { + $str .= $seconds.' '.$CI->lang->line((($seconds > 1) ? 'date_seconds' : 'date_second')).', '; + } - return substr(trim($str), 0, -1); + return substr(trim($str), 0, -1); + } } // ------------------------------------------------------------------------ @@ -251,28 +262,31 @@ function timespan($seconds = 1, $time = '') * @param integer a numeric year * @return integer */ -function days_in_month($month = 0, $year = '') +if (! function_exists('days_in_month')) { - if ($month < 1 OR $month > 12) + function days_in_month($month = 0, $year = '') { - return 0; - } + if ($month < 1 OR $month > 12) + { + return 0; + } - if ( ! is_numeric($year) OR strlen($year) != 4) - { - $year = date('Y'); - } + if ( ! is_numeric($year) OR strlen($year) != 4) + { + $year = date('Y'); + } - if ($month == 2) - { - if ($year % 400 == 0 OR ($year % 4 == 0 AND $year % 100 != 0)) + if ($month == 2) { - return 29; + if ($year % 400 == 0 OR ($year % 4 == 0 AND $year % 100 != 0)) + { + return 29; + } } - } - $days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); - return $days_in_month[$month - 1]; + $days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); + return $days_in_month[$month - 1]; + } } // ------------------------------------------------------------------------ @@ -284,12 +298,15 @@ function days_in_month($month = 0, $year = '') * @param integer Unix timestamp * @return integer */ -function local_to_gmt($time = '') +if (! function_exists('local_to_gmt')) { - if ($time == '') - $time = time(); + function local_to_gmt($time = '') + { + if ($time == '') + $time = time(); - return mktime( gmdate("H", $time), gmdate("i", $time), gmdate("s", $time), gmdate("m", $time), gmdate("d", $time), gmdate("Y", $time)); + return mktime( gmdate("H", $time), gmdate("i", $time), gmdate("s", $time), gmdate("m", $time), gmdate("d", $time), gmdate("Y", $time)); + } } // ------------------------------------------------------------------------ @@ -307,21 +324,24 @@ function local_to_gmt($time = '') * @param bool whether DST is active * @return integer */ -function gmt_to_local($time = '', $timezone = 'UTC', $dst = FALSE) -{ - if ($time == '') - { - return now(); - } +if (! function_exists('gmt_to_local')) +{ + function gmt_to_local($time = '', $timezone = 'UTC', $dst = FALSE) + { + if ($time == '') + { + return now(); + } - $time += timezones($timezone) * 3600; + $time += timezones($timezone) * 3600; - if ($dst == TRUE) - { - $time += 3600; - } + if ($dst == TRUE) + { + $time += 3600; + } - return $time; + return $time; + } } // ------------------------------------------------------------------------ @@ -333,25 +353,28 @@ function gmt_to_local($time = '', $timezone = 'UTC', $dst = FALSE) * @param integer Unix timestamp * @return integer */ -function mysql_to_unix($time = '') +if (! function_exists('mysql_to_unix')) { - // We'll remove certain characters for backward compatibility - // since the formatting changed with MySQL 4.1 - // YYYY-MM-DD HH:MM:SS - - $time = str_replace('-', '', $time); - $time = str_replace(':', '', $time); - $time = str_replace(' ', '', $time); - - // YYYYMMDDHHMMSS - return mktime( - substr($time, 8, 2), - substr($time, 10, 2), - substr($time, 12, 2), - substr($time, 4, 2), - substr($time, 6, 2), - substr($time, 0, 4) - ); + function mysql_to_unix($time = '') + { + // We'll remove certain characters for backward compatibility + // since the formatting changed with MySQL 4.1 + // YYYY-MM-DD HH:MM:SS + + $time = str_replace('-', '', $time); + $time = str_replace(':', '', $time); + $time = str_replace(' ', '', $time); + + // YYYYMMDDHHMMSS + return mktime( + substr($time, 8, 2), + substr($time, 10, 2), + substr($time, 12, 2), + substr($time, 4, 2), + substr($time, 6, 2), + substr($time, 0, 4) + ); + } } // ------------------------------------------------------------------------ @@ -367,30 +390,33 @@ function mysql_to_unix($time = '') * @param string format: us or euro * @return string */ -function unix_to_human($time = '', $seconds = FALSE, $fmt = 'us') +if (! function_exists('unix_to_human')) { - $r = date('Y', $time).'-'.date('m', $time).'-'.date('d', $time).' '; - - if ($fmt == 'us') + function unix_to_human($time = '', $seconds = FALSE, $fmt = 'us') { - $r .= date('h', $time).':'.date('i', $time); - } - else - { - $r .= date('H', $time).':'.date('i', $time); - } + $r = date('Y', $time).'-'.date('m', $time).'-'.date('d', $time).' '; + + if ($fmt == 'us') + { + $r .= date('h', $time).':'.date('i', $time); + } + else + { + $r .= date('H', $time).':'.date('i', $time); + } - if ($seconds) - { - $r .= ':'.date('s', $time); - } + if ($seconds) + { + $r .= ':'.date('s', $time); + } - if ($fmt == 'us') - { - $r .= ' '.date('A', $time); - } + if ($fmt == 'us') + { + $r .= ' '.date('A', $time); + } - return $r; + return $r; + } } // ------------------------------------------------------------------------ @@ -404,59 +430,62 @@ function unix_to_human($time = '', $seconds = FALSE, $fmt = 'us') * @param string format: us or euro * @return integer */ -function human_to_unix($datestr = '') +if (! function_exists('human_to_unix')) { - if ($datestr == '') + function human_to_unix($datestr = '') { - return FALSE; - } + if ($datestr == '') + { + return FALSE; + } - $datestr = trim($datestr); - $datestr = preg_replace("/\040+/", "\040", $datestr); + $datestr = trim($datestr); + $datestr = preg_replace("/\040+/", "\040", $datestr); - if ( ! ereg("^[0-9]{2,4}\-[0-9]{1,2}\-[0-9]{1,2}\040[0-9]{1,2}:[0-9]{1,2}.*$", $datestr)) - { - return FALSE; - } + if ( ! ereg("^[0-9]{2,4}\-[0-9]{1,2}\-[0-9]{1,2}\040[0-9]{1,2}:[0-9]{1,2}.*$", $datestr)) + { + return FALSE; + } - $split = preg_split("/\040/", $datestr); + $split = preg_split("/\040/", $datestr); - $ex = explode("-", $split['0']); + $ex = explode("-", $split['0']); - $year = (strlen($ex['0']) == 2) ? '20'.$ex['0'] : $ex['0']; - $month = (strlen($ex['1']) == 1) ? '0'.$ex['1'] : $ex['1']; - $day = (strlen($ex['2']) == 1) ? '0'.$ex['2'] : $ex['2']; + $year = (strlen($ex['0']) == 2) ? '20'.$ex['0'] : $ex['0']; + $month = (strlen($ex['1']) == 1) ? '0'.$ex['1'] : $ex['1']; + $day = (strlen($ex['2']) == 1) ? '0'.$ex['2'] : $ex['2']; - $ex = explode(":", $split['1']); + $ex = explode(":", $split['1']); - $hour = (strlen($ex['0']) == 1) ? '0'.$ex['0'] : $ex['0']; - $min = (strlen($ex['1']) == 1) ? '0'.$ex['1'] : $ex['1']; + $hour = (strlen($ex['0']) == 1) ? '0'.$ex['0'] : $ex['0']; + $min = (strlen($ex['1']) == 1) ? '0'.$ex['1'] : $ex['1']; - if (isset($ex['2']) AND ereg("[0-9]{1,2}", $ex['2'])) - { - $sec = (strlen($ex['2']) == 1) ? '0'.$ex['2'] : $ex['2']; - } - else - { - // Unless specified, seconds get set to zero. - $sec = '00'; - } + if (isset($ex['2']) AND ereg("[0-9]{1,2}", $ex['2'])) + { + $sec = (strlen($ex['2']) == 1) ? '0'.$ex['2'] : $ex['2']; + } + else + { + // Unless specified, seconds get set to zero. + $sec = '00'; + } - if (isset($split['2'])) - { - $ampm = strtolower($split['2']); + if (isset($split['2'])) + { + $ampm = strtolower($split['2']); - if (substr($ampm, 0, 1) == 'p' AND $hour < 12) - $hour = $hour + 12; + if (substr($ampm, 0, 1) == 'p' AND $hour < 12) + $hour = $hour + 12; - if (substr($ampm, 0, 1) == 'a' AND $hour == 12) - $hour = '00'; + if (substr($ampm, 0, 1) == 'a' AND $hour == 12) + $hour = '00'; - if (strlen($hour) == 1) - $hour = '0'.$hour; - } + if (strlen($hour) == 1) + $hour = '0'.$hour; + } - return mktime($hour, $min, $sec, $month, $day, $year); + return mktime($hour, $min, $sec, $month, $day, $year); + } } // ------------------------------------------------------------------------ @@ -472,32 +501,35 @@ function human_to_unix($datestr = '') * @param string menu name * @return string */ -function timezone_menu($default = 'UTC', $class = "", $name = 'timezones') +if (! function_exists('timezone_menu')) { - $CI =& get_instance(); - $CI->lang->load('date'); + function timezone_menu($default = 'UTC', $class = "", $name = 'timezones') + { + $CI =& get_instance(); + $CI->lang->load('date'); - if ($default == 'GMT') - $default = 'UTC'; + if ($default == 'GMT') + $default = 'UTC'; - $menu = '"; + $menu .= ""; - return $menu; + return $menu; + } } // ------------------------------------------------------------------------ @@ -512,54 +544,56 @@ function timezone_menu($default = 'UTC', $class = "", $name = 'timezones') * @param string timezone * @return string */ -function timezones($tz = '') +if (! function_exists('timezones')) { - // Note: Don't change the order of these even though - // some items appear to be in the wrong order + function timezones($tz = '') + { + // Note: Don't change the order of these even though + // some items appear to be in the wrong order - $zones = array( - 'UM12' => -12, - 'UM11' => -11, - 'UM10' => -10, - 'UM9' => -9, - 'UM8' => -8, - 'UM7' => -7, - 'UM6' => -6, - 'UM5' => -5, - 'UM4' => -4, - 'UM25' => -2.5, - 'UM3' => -3, - 'UM2' => -2, - 'UM1' => -1, - 'UTC' => 0, - 'UP1' => +1, - 'UP2' => +2, - 'UP3' => +3, - 'UP25' => +2.5, - 'UP4' => +4, - 'UP35' => +3.5, - 'UP5' => +5, - 'UP45' => +4.5, - 'UP6' => +6, - 'UP7' => +7, - 'UP8' => +8, - 'UP9' => +9, - 'UP85' => +8.5, - 'UP10' => +10, - 'UP11' => +11, - 'UP12' => +12 - ); + $zones = array( + 'UM12' => -12, + 'UM11' => -11, + 'UM10' => -10, + 'UM9' => -9, + 'UM8' => -8, + 'UM7' => -7, + 'UM6' => -6, + 'UM5' => -5, + 'UM4' => -4, + 'UM25' => -2.5, + 'UM3' => -3, + 'UM2' => -2, + 'UM1' => -1, + 'UTC' => 0, + 'UP1' => +1, + 'UP2' => +2, + 'UP3' => +3, + 'UP25' => +2.5, + 'UP4' => +4, + 'UP35' => +3.5, + 'UP5' => +5, + 'UP45' => +4.5, + 'UP6' => +6, + 'UP7' => +7, + 'UP8' => +8, + 'UP9' => +9, + 'UP85' => +8.5, + 'UP10' => +10, + 'UP11' => +11, + 'UP12' => +12 + ); - if ($tz == '') - { - return $zones; - } + if ($tz == '') + { + return $zones; + } - if ($tz == 'GMT') - $tz = 'UTC'; + if ($tz == 'GMT') + $tz = 'UTC'; - return ( ! isset($zones[$tz])) ? 0 : $zones[$tz]; + return ( ! isset($zones[$tz])) ? 0 : $zones[$tz]; + } } - ?> \ No newline at end of file -- cgit v1.2.3-24-g4f1b