diff options
Diffstat (limited to 'includes/api/ApiPurge.php')
-rw-r--r-- | includes/api/ApiPurge.php | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/includes/api/ApiPurge.php b/includes/api/ApiPurge.php index 134f4a0d..0812ba51 100644 --- a/includes/api/ApiPurge.php +++ b/includes/api/ApiPurge.php @@ -42,15 +42,15 @@ class ApiPurge extends ApiBase { */ private static function addValues( array &$result, $values, $flag = null, $name = null ) { foreach ( $values as $val ) { - if( $val instanceof Title ) { + if ( $val instanceof Title ) { $v = array(); ApiQueryBase::addTitleInfo( $v, $val ); - } elseif( $name !== null ) { + } elseif ( $name !== null ) { $v = array( $name => $val ); } else { $v = $val; } - if( $flag !== null ) { + if ( $flag !== null ) { $v[$flag] = ''; } $result[] = $v; @@ -64,6 +64,7 @@ class ApiPurge extends ApiBase { $params = $this->extractRequestParams(); $forceLinkUpdate = $params['forcelinkupdate']; + $forceRecursiveLinkUpdate = $params['forcerecursivelinkupdate']; $pageSet = $this->getPageSet(); $pageSet->execute(); @@ -82,8 +83,8 @@ class ApiPurge extends ApiBase { $page->doPurge(); // Directly purge and skip the UI part of purge(). $r['purged'] = ''; - if ( $forceLinkUpdate ) { - if ( !$this->getUser()->pingLimiter() ) { + if ( $forceLinkUpdate || $forceRecursiveLinkUpdate ) { + if ( !$this->getUser()->pingLimiter( 'linkpurge' ) ) { global $wgEnableParserCache; $popts = $page->makeParserOptions( 'canonical' ); @@ -93,7 +94,8 @@ class ApiPurge extends ApiBase { $p_result = $content->getParserOutput( $title, $page->getLatest(), $popts, $wgEnableParserCache ); # Update the links tables - $updates = $content->getSecondaryDataUpdates( $title, null, true, $p_result ); + $updates = $content->getSecondaryDataUpdates( + $title, null, $forceRecursiveLinkUpdate, $p_result ); DataUpdate::runUpdates( $updates ); $r['linkupdate'] = ''; @@ -150,7 +152,10 @@ class ApiPurge extends ApiBase { } public function getAllowedParams( $flags = 0 ) { - $result = array( 'forcelinkupdate' => false ); + $result = array( + 'forcelinkupdate' => false, + 'forcerecursivelinkupdate' => false + ); if ( $flags ) { $result += $this->getPageSet()->getFinalParams( $flags ); } @@ -158,8 +163,12 @@ class ApiPurge extends ApiBase { } public function getParamDescription() { - return $this->getPageSet()->getParamDescription() - + array( 'forcelinkupdate' => 'Update the links tables' ); + return $this->getPageSet()->getFinalParamDescription() + + array( + 'forcelinkupdate' => 'Update the links tables', + 'forcerecursivelinkupdate' => 'Update the links table, and update ' . + 'the links tables for any page that uses this page as a template', + ); } public function getResultProperties() { @@ -204,7 +213,7 @@ class ApiPurge extends ApiBase { public function getPossibleErrors() { return array_merge( parent::getPossibleErrors(), - $this->getPageSet()->getPossibleErrors() + $this->getPageSet()->getFinalPossibleErrors() ); } |