From 4bb8ef8a8246d96628eb2fec743dde539270b667 Mon Sep 17 00:00:00 2001 From: Jeroen De Dauw Date: Tue, 20 Mar 2012 22:47:50 +0000 Subject: [PATCH] handle cases where an empty array is provided by using this as default, also correctly handle cases where the smallest unit is not the second and the result is 0 smallestunit --- languages/Language.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/languages/Language.php b/languages/Language.php index facd39c9ae..1bad3fe7a8 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -1919,7 +1919,7 @@ class Language { * * @return string */ - public function formatDuration( $seconds, array $chosenIntervals = array( 'millennia', 'centuries', 'decades', 'years', 'days', 'hours', 'minutes', 'seconds' ) ) { + public function formatDuration( $seconds, array $chosenIntervals = array() ) { $intervals = array( 'millennia' => 1000 * 31557600, 'centuries' => 100 * 31557600, @@ -1932,16 +1932,20 @@ class Language { 'seconds' => 1, ); - if ( !empty( $chosenIntervals ) ) { - $intervals = array_intersect_key( $intervals, array_flip( $chosenIntervals ) ); + if ( empty( $chosenIntervals ) ) { + $chosenIntervals = array( 'millennia', 'centuries', 'decades', 'years', 'days', 'hours', 'minutes', 'seconds' ); } + $intervals = array_intersect_key( $intervals, array_flip( $chosenIntervals ) ); + $sortedNames = array_keys( $intervals ); + $smallestInterval = array_pop( $sortedNames ); + $segments = array(); foreach ( $intervals as $name => $length ) { $value = floor( $seconds / $length ); - if ( $value > 0 || ( $name == 'seconds' && empty( $segments ) ) ) { + if ( $value > 0 || ( $name == $smallestInterval && empty( $segments ) ) ) { $seconds -= $value * $length; $message = new Message( 'duration-' . $name, array( $value ) ); $segments[] = $message->inLanguage( $this )->escaped(); -- 2.20.1