Fix profiling
[lhc/web/wiklou.git] / includes / Parser.php
index 3e2c80a..a5162d6 100644 (file)
@@ -1520,6 +1520,8 @@ class Parser
                }
 
                if( is_null( $this->mTitle ) ) {
+                       wfProfileOut( $fname );
+                       wfProfileOut( $fname.'-setup' );
                        throw new MWException( __METHOD__.": \$this->mTitle is null\n" );
                }
                $nottalk = !$this->mTitle->isTalkPage();
@@ -1609,6 +1611,7 @@ class Parser
                        # should be external links.
                        if (preg_match('/^\b(?:' . wfUrlProtocols() . ')/', $m[1])) {
                                $s .= $prefix . '[[' . $line ;
+                               wfProfileOut( "$fname-misc" );
                                continue;
                        }
 
@@ -1755,7 +1758,14 @@ class Parser
 
                        # Special and Media are pseudo-namespaces; no pages actually exist in them
                        if( $ns == NS_MEDIA ) {
-                               $link = $sk->makeMediaLinkObj( $nt, $text );
+                               # Give extensions a chance to select the file revision for us
+                               $skip = $time = false;
+                               wfRunHooks( 'BeforeParserMakeImageLinkObj', array( &$this, &$nt, &$skip, &$time ) );
+                               if ( $skip ) {
+                                       $link = $sk->makeLinkObj( $nt );
+                               } else {
+                                       $link = $sk->makeMediaLinkObj( $nt, $text, $time );
+                               }
                                # Cloak with NOPARSE to avoid replacement in replaceExternalLinks
                                $s .= $prefix . $this->armorLinks( $link ) . $trail;
                                $this->mOutput->addImage( $nt->getDBkey() );
@@ -3284,6 +3294,20 @@ class Parser
                }
        }
 
+       /**
+        * Increment the expensive function count
+        *
+        * @return boolean False if the limit has been exceeded
+        */
+       function incrementExpensiveFunctionCount() {
+               global $wgExpensiveParserFunctionLimit;
+               $this->mExpensiveFunctionCount++;
+               if($this->mExpensiveFunctionCount <= $wgExpensiveParserFunctionLimit) {
+                       return true;
+               }
+               return false;
+       }
+
        /**
         * Strip double-underscore items like __NOGALLERY__ and __NOTOC__
         * Fills $this->mDoubleUnderscores, returns the modified text
@@ -4662,7 +4686,7 @@ class Parser
 
                if ( is_string( $outText ) ) {
                        // Re-insert stripped tags
-                       $outText = trim( $this->mStripState->unstripBoth( $outText ) );
+                       $outText = rtrim( $this->mStripState->unstripBoth( $outText ) );
                }
 
                return $outText;