Add small HtmlCacheUpdater service class to normalize purging code
[lhc/web/wiklou.git] / includes / deferred / HTMLCacheUpdate.php
index a480aec..3dd533d 100644 (file)
  */
 
 /**
- * Class to invalidate the HTML cache of all the pages linking to a given title.
+ * Class to invalidate the HTML/file cache of all the pages linking to a given title.
  *
  * @ingroup Cache
+ * @deprecated Since 1.34; Enqueue jobs from HTMLCacheUpdateJob::newForBacklinks instead
  */
-class HTMLCacheUpdate implements DeferrableUpdate {
+class HTMLCacheUpdate extends DataUpdate {
        /** @var Title */
-       public $mTitle;
-
+       private $title;
        /** @var string */
-       public $mTable;
+       private $table;
 
        /**
-        * @param Title $titleTo
+        * @param Title $title
         * @param string $table
         */
-       function __construct( Title $titleTo, $table ) {
-               $this->mTitle = $titleTo;
-               $this->mTable = $table;
+       public function __construct( Title $title, $table ) {
+               $this->title = $title;
+               $this->table = $table;
        }
 
        public function doUpdate() {
-               $job = new HTMLCacheUpdateJob(
-                       $this->mTitle,
-                       array(
-                               'table' => $this->mTable,
-                               'recursive' => true
-                       ) + Job::newRootJobParams( // "overall" refresh links job info
-                               "htmlCacheUpdate:{$this->mTable}:{$this->mTitle->getPrefixedText()}"
-                       )
+               $job = HTMLCacheUpdateJob::newForBacklinks(
+                       $this->title,
+                       $this->table,
+                       [ 'causeAction' => $this->getCauseAction(), 'causeAgent' => $this->getCauseAgent() ]
                );
-
-               $count = $this->mTitle->getBacklinkCache()->getNumLinks( $this->mTable, 100 );
-               if ( $count >= 100 ) { // many backlinks
-                       JobQueueGroup::singleton()->lazyPush( $job );
-               } else { // few backlinks ($count might be off even if 0)
-                       $dbw = wfGetDB( DB_MASTER );
-                       $dbw->onTransactionIdle( function () use ( $job ) {
-                               $job->run(); // just do the purge query now
-                       } );
-               }
+               JobQueueGroup::singleton()->lazyPush( $job );
        }
 }