update relnotes
[lhc/web/wiklou.git] / includes / DateFormatter.php
index 8b87215..643da7b 100644 (file)
@@ -2,14 +2,12 @@
 /**
  * Date formatter, recognises dates in plain text and formats them accoding to user preferences.
  *
- * @package MediaWiki
- * @subpackage Parser
+ * @addtogroup Parser
  */
 
 /**
  * @todo preferences, OutputPage
- * @package MediaWiki
- * @subpackage Parser
+ * @addtogroup Parser
  */
 class DateFormatter
 {
@@ -17,7 +15,7 @@ class DateFormatter
        var $monthNames = '', $rxDM, $rxMD, $rxDMY, $rxYDM, $rxMDY, $rxYMD;
 
        var $regexes, $pDays, $pMonths, $pYears;
-       var $rules, $xMonths;
+       var $rules, $xMonths, $preferences;
        
        const ALL = -1;
        const NONE = 0;
@@ -91,36 +89,48 @@ class DateFormatter
                $this->rules[self::MDY][self::DM]       = self::MD;
                $this->rules[self::ALL][self::DM]       = self::DM;
                $this->rules[self::NONE][self::ISO2]    = self::ISO1;
+
+               $this->preferences = array(
+                       'default' => self::NONE,
+                       'dmy' => self::DMY,
+                       'mdy' => self::MDY,
+                       'ymd' => self::YMD,
+                       'ISO 8601' => self::ISO1,
+               );
        }
 
        /**
         * @static
         */
        function &getInstance() {
-               global $wgDBname, $wgMemc;
+               global $wgMemc;
                static $dateFormatter = false;
                if ( !$dateFormatter ) {
-                       $dateFormatter = $wgMemc->get( "$wgDBname:dateformatter" );
+                       $dateFormatter = $wgMemc->get( wfMemcKey( 'dateformatter' ) );
                        if ( !$dateFormatter ) {
                                $dateFormatter = new DateFormatter;
-                               $wgMemc->set( "$wgDBname:dateformatter", $dateFormatter, 3600 );
+                               $wgMemc->set( wfMemcKey( 'dateformatter' ), $dateFormatter, 3600 );
                        }
                }
                return $dateFormatter;
        }
 
        /**
-        * @param $preference
-        * @param $text
+        * @param string $preference User preference
+        * @param string $text Text to reformat
         */
        function reformat( $preference, $text ) {
-               if ($preference == 'ISO 8601') $preference = 4; # The ISO 8601 option used to be 4
+               if ( isset( $this->preferences[$preference] ) ) {
+                       $preference = $this->preferences[$preference];
+               } else {
+                       $preference = self::NONE;
+               }
                for ( $i=1; $i<=self::LAST; $i++ ) {
                        $this->mSource = $i;
-                       if ( @$this->rules[$preference][$i] ) {
+                       if ( isset ( $this->rules[$preference][$i] ) ) {
                                # Specific rules
                                $this->mTarget = $this->rules[$preference][$i];
-                       } elseif ( @$this->rules[self::ALL][$i] ) {
+                       } elseif ( isset ( $this->rules[self::ALL][$i] ) ) {
                                # General rules
                                $this->mTarget = $this->rules[self::ALL][$i];
                        } elseif ( $preference ) {