German localisation updates, patch by ray.
[lhc/web/wiklou.git] / includes / ParserOptions.php
index f165343..dbb0925 100644 (file)
@@ -3,6 +3,7 @@
 /**
  * Set options of the Parser
  * @todo document
+ * @addtogroup Parser
  */
 class ParserOptions
 {
@@ -19,8 +20,15 @@ class ParserOptions
        var $mAllowSpecialInclusion;     # Allow inclusion of special pages
        var $mTidy;                      # Ask for tidy cleanup
        var $mInterfaceMessage;          # Which lang to call for PLURAL and GRAMMAR
+       var $mTargetLanguage;            # Overrides above setting with arbitrary language
        var $mMaxIncludeSize;            # Maximum size of template expansions, in bytes
+       var $mMaxPPNodeCount;            # Maximum number of nodes touched by PPFrame::expand()
+       var $mMaxPPExpandDepth;          # Maximum recursion depth in PPFrame::expand()
+       var $mMaxTemplateDepth;          # Maximum recursion depth for templates within templates
        var $mRemoveComments;            # Remove HTML comments. ONLY APPLIES TO PREPROCESS OPERATIONS
+       var $mTemplateCallback;          # Callback for template fetching
+       var $mEnableLimitReport;         # Enable limit report in an HTML comment on output
+       var $mTimestamp;                 # Timestamp used for {{CURRENTDAY}} etc.
 
        var $mUser;                      # Stored user object, just used to initialise the skin
 
@@ -34,8 +42,13 @@ class ParserOptions
        function getAllowSpecialInclusion()         { return $this->mAllowSpecialInclusion; }
        function getTidy()                          { return $this->mTidy; }
        function getInterfaceMessage()              { return $this->mInterfaceMessage; }
+       function getTargetLanguage()                { return $this->mTargetLanguage; }
        function getMaxIncludeSize()                { return $this->mMaxIncludeSize; }
+       function getMaxPPNodeCount()                { return $this->mMaxPPNodeCount; }
+       function getMaxTemplateDepth()              { return $this->mMaxTemplateDepth; }
        function getRemoveComments()                { return $this->mRemoveComments; }
+       function getTemplateCallback()              { return $this->mTemplateCallback; }
+       function getEnableLimitReport()             { return $this->mEnableLimitReport; }
 
        function getSkin() {
                if ( !isset( $this->mSkin ) ) {
@@ -51,6 +64,13 @@ class ParserOptions
                return $this->mDateFormat;
        }
 
+       function getTimestamp() {
+               if ( !isset( $this->mTimestamp ) ) {
+                       $this->mTimestamp = wfTimestampNow();
+               }
+               return $this->mTimestamp;
+       }
+
        function setUseTeX( $x )                    { return wfSetVar( $this->mUseTeX, $x ); }
        function setUseDynamicDates( $x )           { return wfSetVar( $this->mUseDynamicDates, $x ); }
        function setInterwikiMagic( $x )            { return wfSetVar( $this->mInterwikiMagic, $x ); }
@@ -63,8 +83,14 @@ class ParserOptions
        function setTidy( $x )                      { return wfSetVar( $this->mTidy, $x); }
        function setSkin( $x )                      { $this->mSkin = $x; }
        function setInterfaceMessage( $x )          { return wfSetVar( $this->mInterfaceMessage, $x); }
+       function setTargetLanguage( $x )            { return wfSetVar( $this->mTargetLanguage, $x); }
        function setMaxIncludeSize( $x )            { return wfSetVar( $this->mMaxIncludeSize, $x ); }
+       function setMaxPPNodeCount( $x )            { return wfSetVar( $this->mMaxPPNodeCount, $x ); }
+       function setMaxTemplateDepth( $x )          { return wfSetVar( $this->mMaxTemplateDepth, $x ); }
        function setRemoveComments( $x )            { return wfSetVar( $this->mRemoveComments, $x ); }
+       function setTemplateCallback( $x )          { return wfSetVar( $this->mTemplateCallback, $x ); }
+       function enableLimitReport( $x = true )     { return wfSetVar( $this->mEnableLimitReport, $x ); }
+       function setTimestamp( $x )                 { return wfSetVar( $this->mTimestamp, $x ); }
 
        function __construct( $user = null ) {
                $this->initialiseFromUser( $user );
@@ -82,6 +108,7 @@ class ParserOptions
        function initialiseFromUser( $userInput ) {
                global $wgUseTeX, $wgUseDynamicDates, $wgInterwikiMagic, $wgAllowExternalImages;
                global $wgAllowExternalImagesFrom, $wgAllowSpecialInclusion, $wgMaxArticleSize;
+               global $wgMaxPPNodeCount, $wgMaxTemplateDepth, $wgMaxPPExpandDepth;
                $fname = 'ParserOptions::initialiseFromUser';
                wfProfileIn( $fname );
                if ( !$userInput ) {
@@ -109,10 +136,14 @@ class ParserOptions
                $this->mAllowSpecialInclusion = $wgAllowSpecialInclusion;
                $this->mTidy = false;
                $this->mInterfaceMessage = false;
+               $this->mTargetLanguage = null; // default depends on InterfaceMessage setting
                $this->mMaxIncludeSize = $wgMaxArticleSize * 1024;
+               $this->mMaxPPNodeCount = $wgMaxPPNodeCount;
+               $this->mMaxPPExpandDepth = $wgMaxPPExpandDepth;
+               $this->mMaxTemplateDepth = $wgMaxTemplateDepth;
                $this->mRemoveComments = true;
+               $this->mTemplateCallback = array( 'Parser', 'statelessFetchTemplate' );
+               $this->mEnableLimitReport = false;
                wfProfileOut( $fname );
        }
 }
-
-?>