Tweak r48249 -- allow specification of the default format, and require the date to...
authorAndrew Garrett <werdna@users.mediawiki.org>
Tue, 10 Mar 2009 05:19:05 +0000 (05:19 +0000)
committerAndrew Garrett <werdna@users.mediawiki.org>
Tue, 10 Mar 2009 05:19:05 +0000 (05:19 +0000)
includes/parser/CoreParserFunctions.php
includes/parser/DateFormatter.php

index 8371451..f5bb76e 100644 (file)
@@ -89,11 +89,17 @@ class CoreParserFunctions {
                }
        }
        
-       static function formatDate( $parser, $date ) {
+       static function formatDate( $parser, $date, $defaultPref = null ) {
                $df = DateFormatter::getInstance();
                
+               $date = trim($date);
+               
                $pref = $parser->mOptions->getDateFormat();
-               $date = $df->reformat( $pref, $date, false );
+               
+               if ($pref == 'default' && $defaultPref)
+                       $pref = $defaultPref;
+               
+               $date = $df->reformat( $pref, $date, array('match-whole') );
                return $date;
        }
 
index d2153f0..aa6415e 100644 (file)
@@ -117,7 +117,11 @@ class DateFormatter
         * @param $preference String: User preference
         * @param $text String: Text to reformat
         */
-       function reformat( $preference, $text, $linked = true ) {
+       function reformat( $preference, $text, $options = array('linked') ) {
+       
+               $linked = in_array( 'linked', $options );
+               $match_whole = in_array( 'match-whole', $options );
+               
                if ( isset( $this->preferences[$preference] ) ) {
                        $preference = $this->preferences[$preference];
                } else {
@@ -145,6 +149,13 @@ class DateFormatter
                                $regex = str_replace( array( '\[\[', '\]\]' ), '', $regex );
                        }
                        
+                       if ($match_whole) {
+                               // Let's hope this works
+                               $regex = preg_replace( '!^/!', '/^', $regex );
+                               $regex = str_replace( $this->regexTrail,
+                                       '$'.$this->regexTrail, $regex );
+                       }
+                       
                        // Another horrible hack
                        $this->mLinked = $linked;
                        $text = preg_replace_callback( $regex, array( &$this, 'replace' ), $text );