[FEATURE] Make t3lib_BEfunc::calcAge() support singular/plural
authorStefan Neufeind <typo3.neufeind@speedpartner.de>
Fri, 17 Jun 2011 18:34:25 +0000 (20:34 +0200)
committerChristian Kuhn <lolli@schwarzbu.ch>
Sun, 19 Jun 2011 14:32:36 +0000 (16:32 +0200)
This was already supported in tslib_content::calcAge() and is now in
sync with this patch.

Change-Id: Id07a1a4ca1e598c35aff2842a1ae3012adab7cba
Resolves: #21601
Reviewed-on: http://review.typo3.org/2787
Reviewed-by: Georg Ringer
Tested-by: Georg Ringer
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
t3lib/class.t3lib_befunc.php
typo3/sysext/cms/layout/class.tx_cms_layout.php
typo3/sysext/lang/locallang_core.xml

index 67db2fb..c8ab8bb 100644 (file)
@@ -96,7 +96,7 @@
  * 1449:        function date($tstamp)
  * 1460:        function datetime($value)
  * 1472:        function time($value)
- * 1488:        function calcAge($seconds,$labels = 'min|hrs|days|yrs')
+ * 1488:        function calcAge($seconds,$labels = ' min| hrs| days| yrs| min| hour| day| year')
  * 1514:        function dateTimeAge($tstamp,$prefix=1,$date='')
  * 1532:        function titleAttrib($content='',$hsc=0)
  * 1545:        function titleAltAttrib($content)
@@ -1639,26 +1639,27 @@ final class t3lib_BEfunc {
         * Usage: 15
         *
         * @param       integer         $seconds could be the difference of a certain timestamp and time()
-        * @param       string          $labels should be something like ' min| hrs| days| yrs'. This value is typically delivered by this function call: $GLOBALS["LANG"]->sL("LLL:EXT:lang/locallang_core.php:labels.minutesHoursDaysYears")
+        * @param       string          $labels should be something like ' min| hrs| days| yrs| min| hour| day| year'. This value is typically delivered by this function call: $GLOBALS["LANG"]->sL("LLL:EXT:lang/locallang_core.php:labels.minutesHoursDaysYears")
         * @return      string          Formatted time
         */
-       public static function calcAge($seconds, $labels = 'min|hrs|days|yrs') {
+       public static function calcAge($seconds, $labels = ' min| hrs| days| yrs| min| hour| day| year') {
                $labelArr = explode('|', $labels);
-               $prefix = '';
-               if ($seconds < 0) {
-                       $prefix = '-';
-                       $seconds = abs($seconds);
-               }
+               $absSeconds = abs($seconds);
+               $sign = ($seconds > 0 ? 1 : -1);
                if ($seconds < 3600) {
-                       $seconds = round($seconds / 60) . ' ' . trim($labelArr[0]);
+                       $val = round($absSeconds / 60);
+                       $seconds = ($sign * $val) . ($val == 1 ? $labelArr[4] : $labelArr[0]);
                } elseif ($seconds < 24 * 3600) {
-                       $seconds = round($seconds / 3600) . ' ' . trim($labelArr[1]);
+                       $val = round($absSeconds / 3600);
+                       $seconds = ($sign * $val) . ($val == 1 ? $labelArr[5] : $labelArr[1]);
                } elseif ($seconds < 365 * 24 * 3600) {
-                       $seconds = round($seconds / (24 * 3600)) . ' ' . trim($labelArr[2]);
+                       $val = round($absSeconds / (24 * 3600));
+                       $seconds = ($sign * $val) . ($val == 1 ? $labelArr[6] : $labelArr[2]);
                } else {
-                       $seconds = round($seconds / (365 * 24 * 3600)) . ' ' . trim($labelArr[3]);
+                       $val = round($absSeconds / (365 * 24 * 3600));
+                       $seconds = ($sign * $val) . ($val == 1 ? $labelArr[7] : $labelArr[3]);
                }
-               return $prefix . $seconds;
+               return $seconds;
        }
 
        /**
index 0c92c12..007ba5d 100755 (executable)
@@ -125,7 +125,7 @@ class tx_cms_layout extends recordList {
        var $option_newWizard = 1; // If TRUE, new-wizards are linked to rather than the regular new-element list.
        var $ext_function = 0; // If set to "1", will link a big button to content element wizard.
        var $doEdit = 1; // If TRUE, elements will have edit icons (probably this is whethere the user has permission to edit the page content). Set externally.
-       var $agePrefixes = ' min| hrs| days| yrs'; // Age prefixes for displaying times. May be set externally to localized values.
+       var $agePrefixes = ' min| hrs| days| yrs| min| hour| day| year'; // Age prefixes for displaying times. May be set externally to localized values.
        var $externalTables = array(); // Array of tables to be listed by the Web > Page module in addition to the default tables.
        var $descrTable; // "Pseudo" Description -table name
        var $defLangBinding = FALSE; // If set TRUE, the language mode of tt_content elements will be rendered with hard binding between default language content elements and their translations!
index c861279..d6848ae 100755 (executable)
@@ -51,7 +51,7 @@ Do you want to continue WITHOUT saving?</label>
                        <label index="labels.hidden">Hidden</label>
                        <label index="labels.starttime">Start</label>
                        <label index="labels.endtime">End</label>
-                       <label index="labels.minutesHoursDaysYears">min| hrs| days| yrs</label>
+                       <label index="labels.minutesHoursDaysYears"> min| hrs| days| yrs| min| hour| day| year</label>
                        <label index="labels.menu">Menu:</label>
                        <label index="labels.showPage">View webpage</label>
                        <label index="labels.showList">Show record list</label>