(bug 366) Time-Variables like CURRENTTIME and CURRENTDAY should use time zones
authorRotem Liss <rotem@users.mediawiki.org>
Wed, 23 Aug 2006 16:45:49 +0000 (16:45 +0000)
committerRotem Liss <rotem@users.mediawiki.org>
Wed, 23 Aug 2006 16:45:49 +0000 (16:45 +0000)
Actually, creating new magic words, replacing CURRENT with LOCAL in their names, which use the local time zone, per discussion: http://mail.wikimedia.org/pipermail/mediawiki-l/2006-August/014542.html . The behavior of the current magic words is not changed.

includes/MagicWord.php
includes/Parser.php
languages/MessagesEn.php
languages/MessagesHe.php

index e616639..4df1c6f 100644 (file)
@@ -43,6 +43,16 @@ class MagicWord {
                'currentyear',
                'currenttime',
                'currenthour',
+               'localmonth',
+               'localmonthname',
+               'localmonthnamegen',
+               'localmonthabbrev',
+               'localday',
+               'localday2',
+               'localdayname',
+               'localyear',
+               'localtime',
+               'localhour',
                'numberofarticles',
                'numberoffiles',
                'sitename',
@@ -57,6 +67,8 @@ class MagicWord {
                'namespacee',
                'currentweek',
                'currentdow',
+               'localweek',
+               'localdow',
                'revisionid',
                'subpagename',
                'subpagenamee',
@@ -78,6 +90,7 @@ class MagicWord {
                'basepagenamee',
                'urlencode',
                'currenttimestamp',
+               'localtimestamp',
                'directionmark',
                'language',
                'contentlanguage',
index 3307191..2123630 100644 (file)
@@ -2336,6 +2336,25 @@ class Parser
                $ts = time();
                wfRunHooks( 'ParserGetVariableValueTs', array( &$this, &$ts ) );
 
+               # Use the time zone
+               global $wgLocaltimezone;
+               if ( isset( $wgLocaltimezone ) ) {
+                       $oldtz = getenv( 'TZ' );
+                       putenv( 'TZ='.$wgLocaltimezone );
+               }
+               $localTimestamp = date( 'YmdHis', $ts );
+               $localMonth = date( 'm', $ts );
+               $localMonthName = date( 'n', $ts );
+               $localDay = date( 'j', $ts );
+               $localDay2 = date( 'd', $ts );
+               $localDayOfWeek = date( 'w', $ts );
+               $localWeek = date( 'W', $ts );
+               $localYear = date( 'Y', $ts );
+               $localHour = date( 'H', $ts );
+               if ( isset( $wgLocaltimezone ) ) {
+                       putenv( 'TZ='.$oldtz );
+               }
+
                switch ( $index ) {
                        case 'currentmonth':
                                return $varCache[$index] = $wgContLang->formatNum( date( 'm', $ts ) );
@@ -2349,6 +2368,18 @@ class Parser
                                return $varCache[$index] = $wgContLang->formatNum( date( 'j', $ts ) );
                        case 'currentday2':
                                return $varCache[$index] = $wgContLang->formatNum( date( 'd', $ts ) );
+                       case 'localmonth':
+                               return $varCache[$index] = $wgContLang->formatNum( $localMonth );
+                       case 'localmonthname':
+                               return $varCache[$index] = $wgContLang->getMonthName( $localMonthName );
+                       case 'localmonthnamegen':
+                               return $varCache[$index] = $wgContLang->getMonthNameGen( $localMonthName );
+                       case 'localmonthabbrev':
+                               return $varCache[$index] = $wgContLang->getMonthAbbreviation( $localMonthName );
+                       case 'localday':
+                               return $varCache[$index] = $wgContLang->formatNum( $localDay );
+                       case 'localday2':
+                               return $varCache[$index] = $wgContLang->formatNum( $localDay2 );
                        case 'pagename':
                                return $this->mTitle->getText();
                        case 'pagenamee':
@@ -2413,6 +2444,20 @@ class Parser
                                return $varCache[$index] = $wgContLang->formatNum( (int)date( 'W', $ts ) );
                        case 'currentdow':
                                return $varCache[$index] = $wgContLang->formatNum( date( 'w', $ts ) );
+                       case 'localdayname':
+                               return $varCache[$index] = $wgContLang->getWeekdayName( $localDayOfWeek + 1 );
+                       case 'localyear':
+                               return $varCache[$index] = $wgContLang->formatNum( $localYear, true );
+                       case 'localtime':
+                               return $varCache[$index] = $wgContLang->time( $localTimestamp, false, false );
+                       case 'localhour':
+                               return $varCache[$index] = $wgContLang->formatNum( $localHour, true );
+                       case 'localweek':
+                               // @bug 4594 PHP5 has it zero padded, PHP4 does not, cast to
+                               // int to remove the padding
+                               return $varCache[$index] = $wgContLang->formatNum( (int)$localWeek );
+                       case 'localdow':
+                               return $varCache[$index] = $wgContLang->formatNum( $localDayOfWeek );
                        case 'numberofarticles':
                                return $varCache[$index] = $wgContLang->formatNum( wfNumberOfArticles() );
                        case 'numberoffiles':
@@ -2425,6 +2470,8 @@ class Parser
                                return $varCache[$index]  = $wgContLang->formatNum( wfNumberOfAdmins() );
                        case 'currenttimestamp':
                                return $varCache[$index] = wfTimestampNow();
+                       case 'localtimestamp':
+                               return $varCache[$index] = $localTimestamp;
                        case 'currentversion':
                                global $wgVersion;
                                return $wgVersion;
index ce70494..03caa2f 100644 (file)
@@ -209,6 +209,16 @@ $magicWords = array(
        'currentyear'            => array( 1,    'CURRENTYEAR'            ),
        'currenttime'            => array( 1,    'CURRENTTIME'            ),
        'currenthour'            => array( 1,    'CURRENTHOUR'            ),
+       'localmonth'             => array( 1,    'LOCALMONTH'             ),
+       'localmonthname'         => array( 1,    'LOCALMONTHNAME'         ),
+       'localmonthnamegen'      => array( 1,    'LOCALMONTHNAMEGEN'      ),
+       'localmonthabbrev'       => array( 1,    'LOCALMONTHABBREV'       ),
+       'localday'               => array( 1,    'LOCALDAY'               ),
+       'localday2'              => array( 1,    'LOCALDAY2'              ),
+       'localdayname'           => array( 1,    'LOCALDAYNAME'           ),
+       'localyear'              => array( 1,    'LOCALYEAR'              ),
+       'localtime'              => array( 1,    'LOCALTIME'              ),
+       'localhour'              => array( 1,    'LOCALHOUR'              ),
        'numberofpages'          => array( 1,    'NUMBEROFPAGES'          ),
        'numberofarticles'       => array( 1,    'NUMBEROFARTICLES'       ),
        'numberoffiles'          => array( 1,    'NUMBEROFFILES'          ),
@@ -256,6 +266,8 @@ $magicWords = array(
        'nocontentconvert'       => array( 0,    '__NOCONTENTCONVERT__', '__NOCC__'),
        'currentweek'            => array( 1,    'CURRENTWEEK'            ),
        'currentdow'             => array( 1,    'CURRENTDOW'             ),
+       'localweek'              => array( 1,    'LOCALWEEK'              ),
+       'localdow'               => array( 1,    'LOCALDOW'               ),
        'revisionid'             => array( 1,    'REVISIONID'             ),
        'plural'                 => array( 0,    'PLURAL:'                ),
        'fullurl'                => array( 0,    'FULLURL:'               ),
@@ -271,14 +283,15 @@ $magicWords = array(
        'currentversion'         => array( 1,    'CURRENTVERSION'         ),
        'urlencode'              => array( 0,    'URLENCODE:'             ),
        'currenttimestamp'       => array( 1,    'CURRENTTIMESTAMP'       ),
+       'localtimestamp'         => array( 1,    'LOCALTIMESTAMP'         ),
        'directionmark'          => array( 1,    'DIRECTIONMARK', 'DIRMARK' ),
-       'language'               => array( 0,    '#LANGUAGE:' ),
+       'language'               => array( 0,    '#LANGUAGE:'             ),
        'contentlanguage'        => array( 1,    'CONTENTLANGUAGE', 'CONTENTLANG' ),
        'pagesinnamespace'       => array( 1,    'PAGESINNAMESPACE:', 'PAGESINNS:' ),
-       'numberofadmins'         => array( 1,    'NUMBEROFADMINS' ),
-       'formatnum'              => array( 0,    'FORMATNUM' ),
-       'padleft'                                => array( 0,    'PADLEFT' ),
-       'padright'                               => array( 0,    'PADRIGHT' ),
+       'numberofadmins'         => array( 1,    'NUMBEROFADMINS'         ),
+       'formatnum'              => array( 0,    'FORMATNUM'              ),
+       'padleft'                => array( 0,    'PADLEFT'                ),
+       'padright'               => array( 0,    'PADRIGHT'               ),
 
 );
 
index 2fb7d00..53f1861 100644 (file)
@@ -76,6 +76,16 @@ $magicWords = array(
        'currentyear'           => array( 1,    'שנה נוכחית',                               'CURRENTYEAR'            ),
        'currenttime'           => array( 1,    'שעה נוכחית',                               'CURRENTTIME'            ),
        'currenthour'           => array( 1,    'שעות נוכחיות',                             'CURRENTHOUR'            ),
+       'localmonth'            => array( 1,    'חודש מקומי',                               'LOCALMONTH'             ),
+       'localmonthname'        => array( 1,    'שם חודש מקומי',                            'LOCALMONTHNAME'         ),
+       'localmonthnamegen'     => array( 1,    'שם חודש מקומי קניין',                      'LOCALMONTHNAMEGEN'      ),
+       'localmonthabbrev'      => array( 1,    'קיצור חודש מקומי',                         'LOCALMONTHABBREV'       ),
+       'localday'              => array( 1,    'יום מקומי',                                'LOCALDAY'               ),
+       'localday2'             => array( 1,    'יום מקומי 2',                              'LOCALDAY2'              ),
+       'localdayname'          => array( 1,    'שם יום מקומי',                             'LOCALDAYNAME'           ),
+       'localyear'             => array( 1,    'שנה מקומית',                               'LOCALYEAR'              ),
+       'localtime'             => array( 1,    'שעה מקומית',                               'LOCALTIME'              ),
+       'localhour'             => array( 1,    'שעות מקומיות',                             'LOCALHOUR'              ),
        'numberofpages'         => array( 1,    'מספר דפים כולל', 'מספר דפים',             'NUMBEROFPAGES'          ),
        'numberofarticles'      => array( 1,    'מספר ערכים',                              'NUMBEROFARTICLES'       ),
        'numberoffiles'         => array( 1,    'מספר קבצים',                              'NUMBEROFFILES'          ),
@@ -123,6 +133,8 @@ $magicWords = array(
        'nocontentconvert'      => array( 0,    '__ללא_המרת_תוכן__',                   '__NOCONTENTCONVERT__', '__NOCC__'),
        'currentweek'           => array( 1,    'שבוע נוכחי',                           'CURRENTWEEK'            ),
        'currentdow'            => array( 1,    'מספר יום נוכחי',                       'CURRENTDOW'             ),
+       'localweek'             => array( 1,    'שבוע מקומי',                           'LOCALWEEK'              ),
+       'localdow'              => array( 1,    'מספר יום מקומי',                       'LOCALDOW'               ),
        'revisionid'            => array( 1,    'מזהה גרסה',                            'REVISIONID'             ),
        'plural'                => array( 0,    'רבים:',                                'PLURAL:'                ),
        'fullurl'               => array( 0,    'כתובת מלאה:',                          'FULLURL:'               ),
@@ -138,14 +150,15 @@ $magicWords = array(
        'currentversion'        => array( 1,    'גרסה נוכחית',                         'CURRENTVERSION'         ),
        'urlencode'             => array( 0,    'נתיב מקודד:',                         'URLENCODE:'             ),
        'currenttimestamp'      => array( 1,    'זמן נוכחי',                           'CURRENTTIMESTAMP'       ),
+       'localtimestamp'        => array( 1,    'זמן מקומי',                           'LOCALTIMESTAMP'         ),
        'directionmark'         => array( 1,    'סימן כיווניות',                       'DIRECTIONMARK', 'DIRMARK' ),
-       'language'              => array( 0,    '#שפה:',                              '#LANGUAGE:' ),
+       'language'              => array( 0,    '#שפה:',                              '#LANGUAGE:'             ),
        'contentlanguage'       => array( 1,    'שפת תוכן',                           'CONTENTLANGUAGE', 'CONTENTLANG' ),
        'pagesinnamespace'      => array( 1,    'דפים במרחב השם:',                   'PAGESINNAMESPACE:', 'PAGESINNS:' ),
-       'numberofadmins'        => array( 1,    'מספר מפעילים',                      'NUMBEROFADMINS' ),
-       'formatnum'             => array( 0,    'עיצוב מספר',                        'FORMATNUM' ),
-       'padleft'               => array( 0,    'ריפוד משמאל',                       'PADLEFT' ),
-       'padright'              => array( 0,    'ריפוד מימין',                       'PADRIGHT' ),
+       'numberofadmins'        => array( 1,    'מספר מפעילים',                      'NUMBEROFADMINS'         ),
+       'formatnum'             => array( 0,    'עיצוב מספר',                        'FORMATNUM'              ),
+       'padleft'               => array( 0,    'ריפוד משמאל',                       'PADLEFT'                ),
+       'padright'              => array( 0,    'ריפוד מימין',                       'PADRIGHT'               ),
 );
 
 $namespaceNames = array(