summaryrefslogtreecommitdiffstats
path: root/system/helpers
diff options
context:
space:
mode:
authorRoger Herbert <rogerlherbert@gmail.com>2012-03-11 16:11:44 +0100
committerRoger Herbert <rogerlherbert@gmail.com>2012-03-11 16:11:44 +0100
commit11f46f736b93529e8310135669196dec98e94d90 (patch)
tree75669e389b9714d3fd9e19e92053da4d0c52bcb6 /system/helpers
parent03dbcf0669abdddf6bb459a423b99e7aed73e453 (diff)
Revert "Make timespan() helper show fuzzier periods if required"
Diffstat (limited to 'system/helpers')
-rw-r--r--system/helpers/date_helper.php131
1 files changed, 45 insertions, 86 deletions
diff --git a/system/helpers/date_helper.php b/system/helpers/date_helper.php
index 9f8e05bb9..2a34cf93e 100644
--- a/system/helpers/date_helper.php
+++ b/system/helpers/date_helper.php
@@ -163,7 +163,7 @@ if ( ! function_exists('standard_date'))
*/
if ( ! function_exists('timespan'))
{
- function timespan($seconds = 1, $time = '', $units = '')
+ function timespan($seconds = 1, $time = '')
{
$CI =& get_instance();
$CI->lang->load('date');
@@ -178,124 +178,83 @@ if ( ! function_exists('timespan'))
$time = time();
}
- if ( ! is_numeric($units))
- {
- $units = 999;
- }
-
- if ($time <= $seconds)
- {
- $seconds = 1;
- }
- else
- {
- $seconds = $time - $seconds;
- }
+ $seconds = ($time <= $seconds) ? 1 : $time - $seconds;
- $str = array();
-
- // years
-
- $years = floor($seconds / 31536000);
+ $str = '';
+ $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 * 31536000;
+ $seconds -= $years * 31557600;
+ $months = floor($seconds / 2629743);
- // months
-
- if (count($str) < $units) {
- $months = floor($seconds / 2628000);
-
- if ($years > 0 OR $months > 0)
+ if ($years > 0 OR $months > 0)
+ {
+ if ($months > 0)
{
- if ($months > 0)
- {
- $str[] = $months.' '.$CI->lang->line((($months > 1) ? 'date_months' : 'date_month'));
- }
-
- $seconds -= $months * 2628000;
+ $str .= $months.' '.$CI->lang->line((($months > 1) ? 'date_months' : 'date_month')).', ';
}
+
+ $seconds -= $months * 2629743;
}
- // weeks
-
- if (count($str) < $units) {
- $weeks = floor($seconds / 604800);
+ $weeks = floor($seconds / 604800);
- if ($years > 0 OR $months > 0 OR $weeks > 0)
+ if ($years > 0 OR $months > 0 OR $weeks > 0)
+ {
+ if ($weeks > 0)
{
- if ($weeks > 0)
- {
- $str[] = $weeks.' '.$CI->lang->line((($weeks > 1) ? 'date_weeks' : 'date_week'));
- }
-
- $seconds -= $weeks * 604800;
+ $str .= $weeks.' '.$CI->lang->line((($weeks > 1) ? 'date_weeks' : 'date_week')).', ';
}
- }
- // days
+ $seconds -= $weeks * 604800;
+ }
- if (count($str) < $units) {
- $days = floor($seconds / 86400);
+ $days = floor($seconds / 86400);
- if ($months > 0 OR $weeks > 0 OR $days > 0)
+ if ($months > 0 OR $weeks > 0 OR $days > 0)
+ {
+ if ($days > 0)
{
- if ($days > 0)
- {
- $str[] = $days.' '.$CI->lang->line((($days > 1) ? 'date_days' : 'date_day'));
- }
-
- $seconds -= $days * 86400;
+ $str .= $days.' '.$CI->lang->line((($days > 1) ? 'date_days' : 'date_day')).', ';
}
- }
- // hours
-
- if (count($str) < $units) {
+ $seconds -= $days * 86400;
+ }
- $hours = floor($seconds / 3600);
+ $hours = floor($seconds / 3600);
- if ($days > 0 OR $hours > 0)
+ if ($days > 0 OR $hours > 0)
+ {
+ if ($hours > 0)
{
- if ($hours > 0)
- {
- $str[] = $hours.' '.$CI->lang->line((($hours > 1) ? 'date_hours' : 'date_hour'));
- }
-
- $seconds -= $hours * 3600;
+ $str .= $hours.' '.$CI->lang->line((($hours > 1) ? 'date_hours' : 'date_hour')).', ';
}
- }
-
- // minutes
- if (count($str) < $units) {
+ $seconds -= $hours * 3600;
+ }
- $minutes = floor($seconds / 60);
+ $minutes = floor($seconds / 60);
- if ($days > 0 OR $hours > 0 OR $minutes > 0)
+ if ($days > 0 OR $hours > 0 OR $minutes > 0)
+ {
+ if ($minutes > 0)
{
- if ($minutes > 0)
- {
- $str[] = $minutes.' '.$CI->lang->line((($minutes > 1) ? 'date_minutes' : 'date_minute'));
- }
-
- $seconds -= $minutes * 60;
+ $str .= $minutes.' '.$CI->lang->line((($minutes > 1) ? 'date_minutes' : 'date_minute')).', ';
}
- }
- // seconds
+ $seconds -= $minutes * 60;
+ }
- if (count($str) == 0) {
- {
- $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 strtolower(implode(', ', $str));
+ return substr(trim($str), 0, -1);
}
}