Merge "LoadBalancer object injection cleanups"
[lhc/web/wiklou.git] / includes / specialpage / SpecialPage.php
index 408c726..99b9f33 100644 (file)
@@ -1,6 +1,4 @@
 <?php
-use MediaWiki\MediaWikiServices;
-
 /**
  * Parent class for all special pages.
  *
@@ -24,6 +22,8 @@ use MediaWiki\MediaWikiServices;
  */
 
 use MediaWiki\Auth\AuthManager;
+use MediaWiki\Linker\LinkRenderer;
+use MediaWiki\MediaWikiServices;
 
 /**
  * Parent class for all special pages.
@@ -60,6 +60,11 @@ class SpecialPage {
         */
        protected $mContext;
 
+       /**
+        * @var \MediaWiki\Linker\LinkRenderer|null
+        */
+       private $linkRenderer;
+
        /**
         * Get a localised Title object for a specified special page name
         *
@@ -175,6 +180,27 @@ class SpecialPage {
                return $this->mIncludable;
        }
 
+       /**
+        * How long to cache page when it is being included.
+        *
+        * @note If cache time is not 0, then the current user becomes an anon
+        *   if you want to do any per-user customizations, than this method
+        *   must be overriden to return 0.
+        * @since 1.26
+        * @return int Time in seconds, 0 to disable caching altogether,
+        *  false to use the parent page's cache settings
+        */
+       public function maxIncludeCacheTime() {
+               return $this->getConfig()->get( 'MiserMode' ) ? $this->getCacheTTL() : 0;
+       }
+
+       /**
+        * @return int Seconds that this page can be cached
+        */
+       protected function getCacheTTL() {
+               return 60 * 60;
+       }
+
        /**
         * Whether the special page is being evaluated via transclusion
         * @param bool $x
@@ -805,4 +831,24 @@ class SpecialPage {
                        wfTransactionalTimeLimit();
                }
        }
+
+       /**
+        * @since 1.28
+        * @return \MediaWiki\Linker\LinkRenderer
+        */
+       protected function getLinkRenderer() {
+               if ( $this->linkRenderer ) {
+                       return $this->linkRenderer;
+               } else {
+                       return MediaWikiServices::getInstance()->getLinkRenderer();
+               }
+       }
+
+       /**
+        * @since 1.28
+        * @param \MediaWiki\Linker\LinkRenderer $linkRenderer
+        */
+       public function setLinkRenderer( LinkRenderer $linkRenderer ) {
+               $this->linkRenderer = $linkRenderer;
+       }
 }