Sync up with Parsoid parserTests.
[lhc/web/wiklou.git] / includes / parser / CoreParserFunctions.php
index eacbecd..6f19a23 100644 (file)
@@ -36,7 +36,7 @@ class CoreParserFunctions {
                # Syntax for arguments (see Parser::setFunctionHook):
                #  "name for lookup in localized magic words array",
                #  function callback,
-               #  optional SFH_NO_HASH to omit the hash from calls (e.g. {{int:...}}
+               #  optional Parser::SFH_NO_HASH to omit the hash from calls (e.g. {{int:...}}
                #    instead of {{#int:...}})
                $noHashFunctions = array(
                        'ns', 'nse', 'urlencode', 'lcfirst', 'ucfirst', 'lc', 'uc',
@@ -44,7 +44,7 @@ class CoreParserFunctions {
                        'canonicalurle', 'formatnum', 'grammar', 'gender', 'plural',
                        'numberofpages', 'numberofusers', 'numberofactiveusers',
                        'numberofarticles', 'numberoffiles', 'numberofadmins',
-                       'numberingroup', 'numberofedits', 'numberofviews', 'language',
+                       'numberingroup', 'numberofedits', 'language',
                        'padleft', 'padright', 'anchorencode', 'defaultsort', 'filepath',
                        'pagesincategory', 'pagesize', 'protectionlevel',
                        'namespacee', 'namespacenumber', 'talkspace', 'talkspacee',
@@ -57,24 +57,24 @@ class CoreParserFunctions {
                        'revisiontimestamp', 'revisionuser', 'cascadingsources',
                );
                foreach ( $noHashFunctions as $func ) {
-                       $parser->setFunctionHook( $func, array( __CLASS__, $func ), SFH_NO_HASH );
+                       $parser->setFunctionHook( $func, array( __CLASS__, $func ), Parser::SFH_NO_HASH );
                }
 
-               $parser->setFunctionHook( 'namespace', array( __CLASS__, 'mwnamespace' ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'int', array( __CLASS__, 'intFunction' ), SFH_NO_HASH );
+               $parser->setFunctionHook( 'namespace', array( __CLASS__, 'mwnamespace' ), Parser::SFH_NO_HASH );
+               $parser->setFunctionHook( 'int', array( __CLASS__, 'intFunction' ), Parser::SFH_NO_HASH );
                $parser->setFunctionHook( 'special', array( __CLASS__, 'special' ) );
                $parser->setFunctionHook( 'speciale', array( __CLASS__, 'speciale' ) );
-               $parser->setFunctionHook( 'tag', array( __CLASS__, 'tagObj' ), SFH_OBJECT_ARGS );
+               $parser->setFunctionHook( 'tag', array( __CLASS__, 'tagObj' ), Parser::SFH_OBJECT_ARGS );
                $parser->setFunctionHook( 'formatdate', array( __CLASS__, 'formatDate' ) );
 
                if ( $wgAllowDisplayTitle ) {
-                       $parser->setFunctionHook( 'displaytitle', array( __CLASS__, 'displaytitle' ), SFH_NO_HASH );
+                       $parser->setFunctionHook( 'displaytitle', array( __CLASS__, 'displaytitle' ), Parser::SFH_NO_HASH );
                }
                if ( $wgAllowSlowParserFunctions ) {
                        $parser->setFunctionHook(
                                'pagesinnamespace',
                                array( __CLASS__, 'pagesinnamespace' ),
-                               SFH_NO_HASH
+                               Parser::SFH_NO_HASH
                        );
                }
        }
@@ -379,8 +379,7 @@ class CoreParserFunctions {
                $text = $parser->doQuotes( $text );
 
                // remove stripped text (e.g. the UNIQ-QINU stuff) that was generated by tag extensions/whatever
-               $text = preg_replace( '/' . preg_quote( $parser->uniqPrefix(), '/' ) . '.*?'
-                       . preg_quote( Parser::MARKER_SUFFIX, '/' ) . '/', '', $text );
+               $text = $parser->killMarkers( $text );
 
                // list of disallowed tags for DISPLAYTITLE
                // these will be escaped even though they are allowed in normal wiki text
@@ -489,10 +488,6 @@ class CoreParserFunctions {
        public static function numberofedits( $parser, $raw = null ) {
                return self::formatRaw( SiteStats::edits(), $raw );
        }
-       public static function numberofviews( $parser, $raw = null ) {
-               global $wgDisableCounters;
-               return !$wgDisableCounters ? self::formatRaw( SiteStats::views(), $raw ) : '';
-       }
        public static function pagesinnamespace( $parser, $namespace = 0, $raw = null ) {
                return self::formatRaw( SiteStats::pagesInNs( intval( $namespace ) ), $raw );
        }
@@ -1000,11 +995,6 @@ class CoreParserFunctions {
         * @since 1.23
         */
        private static function getCachedRevisionObject( $parser, $title = null ) {
-               static $cache = null;
-               if ( $cache == null ) {
-                       $cache = new MapCacheLRU( 50 );
-               }
-
                if ( is_null( $title ) ) {
                        return null;
                }
@@ -1024,22 +1014,18 @@ class CoreParserFunctions {
                // Normalize name for cache
                $page = $title->getPrefixedDBkey();
 
-               if ( $cache->has( $page ) ) { // cache contains null values
-                       return $cache->get( $page );
+               if ( !( $parser->currentRevisionCache && $parser->currentRevisionCache->has( $page ) )
+                       && !$parser->incrementExpensiveFunctionCount() ) {
+                       return null;
                }
-               if ( $parser->incrementExpensiveFunctionCount() ) {
-                       $rev = Revision::newFromTitle( $title, false, Revision::READ_NORMAL );
-                       $pageID = $rev ? $rev->getPage() : 0;
-                       $revID = $rev ? $rev->getId() : 0;
-                       $cache->set( $page, $rev ); // maybe null
+               $rev = $parser->fetchCurrentRevisionOfTitle( $title );
+               $pageID = $rev ? $rev->getPage() : 0;
+               $revID = $rev ? $rev->getId() : 0;
 
-                       // Register dependency in templatelinks
-                       $parser->getOutput()->addTemplate( $title, $pageID, $revID );
+               // Register dependency in templatelinks
+               $parser->getOutput()->addTemplate( $title, $pageID, $revID );
 
-                       return $rev;
-               }
-               $cache->set( $page, null );
-               return null;
+               return $rev;
        }
 
        /**