diff options
Diffstat (limited to 'system/helpers/date_helper.php')
-rw-r--r-- | system/helpers/date_helper.php | 114 |
1 files changed, 53 insertions, 61 deletions
diff --git a/system/helpers/date_helper.php b/system/helpers/date_helper.php index 2a34cf93e..f1ba364f5 100644 --- a/system/helpers/date_helper.php +++ b/system/helpers/date_helper.php @@ -1,4 +1,4 @@ -<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); +<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /** * CodeIgniter * @@ -25,8 +25,6 @@ * @filesource */ -// ------------------------------------------------------------------------ - /** * CodeIgniter Date Helpers * @@ -44,8 +42,7 @@ * * Returns time() or its GMT equivalent based on the config file preference * - * @access public - * @return integer + * @return int */ if ( ! function_exists('now')) { @@ -85,10 +82,9 @@ if ( ! function_exists('now')) * have to worry about escaping your text letters that * match the date codes. * - * @access public * @param string - * @param integer - * @return integer + * @param int + * @return int */ if ( ! function_exists('mdate')) { @@ -118,9 +114,8 @@ if ( ! function_exists('mdate')) * * Returns a date formatted according to the submitted standard. * - * @access public * @param string the chosen format - * @param integer Unix timestamp + * @param int Unix timestamp * @return string */ if ( ! function_exists('standard_date')) @@ -128,15 +123,16 @@ if ( ! function_exists('standard_date')) function standard_date($fmt = 'DATE_RFC822', $time = '') { $formats = array( - 'DATE_ATOM' => '%Y-%m-%dT%H:%i:%s%Q', + 'DATE_ATOM' => '%Y-%m-%dT%H:%i:%s%O', 'DATE_COOKIE' => '%l, %d-%M-%y %H:%i:%s UTC', - 'DATE_ISO8601' => '%Y-%m-%dT%H:%i:%s%Q', + '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:%i:%s UTC', 'DATE_RFC1036' => '%D, %d %M %y %H:%i:%s %O', 'DATE_RFC1123' => '%D, %d %M %Y %H:%i:%s %O', + 'DATE_RFC2822' => '%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' + 'DATE_W3C' => '%Y-%m-%dT%H:%i:%s%O' ); if ( ! isset($formats[$fmt])) @@ -156,14 +152,14 @@ if ( ! function_exists('standard_date')) * Returns a span of seconds in this format: * 10 days 14 hours 36 minutes 47 seconds * - * @access public - * @param integer a number of seconds - * @param integer Unix timestamp - * @return integer + * @param int a number of seconds + * @param int Unix timestamp + * @param int a number of display units + * @return string */ if ( ! function_exists('timespan')) { - function timespan($seconds = 1, $time = '') + function timespan($seconds = 1, $time = '', $units = 7) { $CI =& get_instance(); $CI->lang->load('date'); @@ -178,24 +174,29 @@ if ( ! function_exists('timespan')) $time = time(); } + if ( ! is_numeric($units)) + { + $units = 7; + } + $seconds = ($time <= $seconds) ? 1 : $time - $seconds; - $str = ''; + $str = array(); $years = floor($seconds / 31557600); if ($years > 0) { - $str .= $years.' '.$CI->lang->line((($years > 1) ? 'date_years' : 'date_year')).', '; + $str[] = $years.' '.$CI->lang->line((($years > 1) ? 'date_years' : 'date_year')); } $seconds -= $years * 31557600; $months = floor($seconds / 2629743); - if ($years > 0 OR $months > 0) + if (count($str) < $units && ($years > 0 OR $months > 0)) { if ($months > 0) { - $str .= $months.' '.$CI->lang->line((($months > 1) ? 'date_months' : 'date_month')).', '; + $str[] = $months.' '.$CI->lang->line((($months > 1) ? 'date_months' : 'date_month')); } $seconds -= $months * 2629743; @@ -203,11 +204,11 @@ if ( ! function_exists('timespan')) $weeks = floor($seconds / 604800); - if ($years > 0 OR $months > 0 OR $weeks > 0) + if (count($str) < $units && ($years > 0 OR $months > 0 OR $weeks > 0)) { if ($weeks > 0) { - $str .= $weeks.' '.$CI->lang->line((($weeks > 1) ? 'date_weeks' : 'date_week')).', '; + $str[] = $weeks.' '.$CI->lang->line((($weeks > 1) ? 'date_weeks' : 'date_week')); } $seconds -= $weeks * 604800; @@ -215,11 +216,11 @@ if ( ! function_exists('timespan')) $days = floor($seconds / 86400); - if ($months > 0 OR $weeks > 0 OR $days > 0) + if (count($str) < $units && ($months > 0 OR $weeks > 0 OR $days > 0)) { if ($days > 0) { - $str .= $days.' '.$CI->lang->line((($days > 1) ? 'date_days' : 'date_day')).', '; + $str[] = $days.' '.$CI->lang->line((($days > 1) ? 'date_days' : 'date_day')); } $seconds -= $days * 86400; @@ -227,11 +228,11 @@ if ( ! function_exists('timespan')) $hours = floor($seconds / 3600); - if ($days > 0 OR $hours > 0) + if (count($str) < $units && ($days > 0 OR $hours > 0)) { if ($hours > 0) { - $str .= $hours.' '.$CI->lang->line((($hours > 1) ? 'date_hours' : 'date_hour')).', '; + $str[] = $hours.' '.$CI->lang->line((($hours > 1) ? 'date_hours' : 'date_hour')); } $seconds -= $hours * 3600; @@ -239,22 +240,22 @@ if ( ! function_exists('timespan')) $minutes = floor($seconds / 60); - if ($days > 0 OR $hours > 0 OR $minutes > 0) + if (count($str) < $units && ($days > 0 OR $hours > 0 OR $minutes > 0)) { if ($minutes > 0) { - $str .= $minutes.' '.$CI->lang->line((($minutes > 1) ? 'date_minutes' : 'date_minute')).', '; + $str[] = $minutes.' '.$CI->lang->line((($minutes > 1) ? 'date_minutes' : 'date_minute')); } $seconds -= $minutes * 60; } - if ($str == '') + if (count($str) === 0) { - $str .= $seconds.' '.$CI->lang->line((($seconds > 1) ? 'date_seconds' : 'date_second')).', '; + $str[] = $seconds.' '.$CI->lang->line((($seconds > 1) ? 'date_seconds' : 'date_second')); } - return substr(trim($str), 0, -1); + return implode(', ', $str); } } @@ -266,10 +267,9 @@ if ( ! function_exists('timespan')) * Takes a month/year as input and returns the number of days * for the given month/year. Takes leap years into consideration. * - * @access public - * @param integer a numeric month - * @param integer a numeric year - * @return integer + * @param int a numeric month + * @param int a numeric year + * @return int */ if ( ! function_exists('days_in_month')) { @@ -287,7 +287,7 @@ if ( ! function_exists('days_in_month')) if ($month == 2) { - if ($year % 400 == 0 OR ($year % 4 == 0 AND $year % 100 != 0)) + if ($year % 400 == 0 OR ($year % 4 == 0 && $year % 100 != 0)) { return 29; } @@ -303,9 +303,8 @@ if ( ! function_exists('days_in_month')) /** * Converts a local Unix timestamp to GMT * - * @access public - * @param integer Unix timestamp - * @return integer + * @param int Unix timestamp + * @return int */ if ( ! function_exists('local_to_gmt')) { @@ -336,11 +335,10 @@ if ( ! function_exists('local_to_gmt')) * at the local value based on the timezone and DST setting * submitted * - * @access public - * @param integer Unix timestamp + * @param int Unix timestamp * @param string timezone * @param bool whether DST is active - * @return integer + * @return int */ if ( ! function_exists('gmt_to_local')) { @@ -367,9 +365,8 @@ if ( ! function_exists('gmt_to_local')) /** * Converts a MySQL Timestamp to Unix * - * @access public - * @param integer Unix timestamp - * @return integer + * @param int Unix timestamp + * @return int */ if ( ! function_exists('mysql_to_unix')) { @@ -402,8 +399,7 @@ if ( ! function_exists('mysql_to_unix')) * * Formats Unix timestamp to the following prototype: 2006-08-21 11:35 PM * - * @access public - * @param integer Unix timestamp + * @param int Unix timestamp * @param bool whether to show seconds * @param string format: us or euro * @return string @@ -444,9 +440,8 @@ if ( ! function_exists('unix_to_human')) * * Reverses the above process * - * @access public * @param string format: us or euro - * @return integer + * @return int */ if ( ! function_exists('human_to_unix')) { @@ -492,12 +487,12 @@ if ( ! function_exists('human_to_unix')) { $ampm = strtolower($split['2']); - if (substr($ampm, 0, 1) == 'p' AND $hour < 12) + if (substr($ampm, 0, 1) === 'p' && $hour < 12) { $hour = $hour + 12; } - if (substr($ampm, 0, 1) == 'a' AND $hour == 12) + if (substr($ampm, 0, 1) === 'a' && $hour == 12) { $hour = '00'; } @@ -518,10 +513,9 @@ if ( ! function_exists('human_to_unix')) * Turns many "reasonably-date-like" strings into something * that is actually useful. This only works for dates after unix epoch. * - * @access public - * @param string The terribly formatted date-like string - * @param string Date format to return (same as php date function) - * @return string + * @param string The terribly formatted date-like string + * @param string Date format to return (same as php date function) + * @return string */ if ( ! function_exists('nice_date')) { @@ -586,7 +580,6 @@ if ( ! function_exists('nice_date')) * * Generates a drop-down menu of timezones. * - * @access public * @param string timezone * @param string classname * @param string menu name @@ -627,10 +620,9 @@ if ( ! function_exists('timezone_menu')) /** * Timezones * - * Returns an array of timezones. This is a helper function + * Returns an array of timezones. This is a helper function * for various other ones in this library * - * @access public * @param string timezone * @return string */ @@ -691,7 +683,7 @@ if ( ! function_exists('timezones')) $tz = ($tz == 'GMT') ? 'UTC' : $tz; - return ( ! isset($zones[$tz])) ? 0 : $zones[$tz]; + return isset($zones[$tz]) ? $zones[$tz] : 0; } } |