41 $block = $authority->getBlock();
42 if ( $block && $block->isSitewide() ) {
51 $forceLinkUpdate = $params[
'forcelinkupdate'];
52 $forceRecursiveLinkUpdate = $params[
'forcerecursivelinkupdate'];
53 $pageSet = $this->getPageSet();
56 $result = $pageSet->getInvalidTitlesAndRevisions();
57 $userName = $authority->getUser()->getName();
60 foreach ( $pageSet->getGoodPages() as $pageIdentity ) {
61 $title = $this->titleFormatter->getPrefixedText( $pageIdentity );
63 'ns' => $pageIdentity->getNamespace(),
66 $page = $this->wikiPageFactory->newFromTitle( $pageIdentity );
68 $purgeAuthStatus = PermissionStatus::newEmpty();
69 if ( $authority->authorizeAction(
'purge', $purgeAuthStatus ) ) {
74 if ( $purgeAuthStatus->isRateLimitExceeded() ) {
77 $this->
addWarning( Status::wrap( $purgeAuthStatus )->getMessage() );
81 if ( $forceLinkUpdate || $forceRecursiveLinkUpdate ) {
82 $linkpurgeAuthStatus = PermissionStatus::newEmpty();
83 if ( $authority->authorizeAction(
'linkpurge', $linkpurgeAuthStatus ) ) {
84 # Logging to better see expensive usage patterns
85 if ( $forceRecursiveLinkUpdate ) {
86 LoggerFactory::getInstance(
'RecursiveLinkPurge' )->info(
87 "Recursive link purge enqueued for {title}",
95 $page->updateParserCache( [
96 'causeAction' =>
'api-purge',
97 'causeAgent' => $userName,
99 $page->doSecondaryDataUpdates( [
100 'recursive' => $forceRecursiveLinkUpdate,
101 'causeAction' =>
'api-purge',
102 'causeAgent' => $userName,
103 'defer' => DeferredUpdates::PRESEND,
106 $r[
'linkupdate'] =
true;
108 if ( $linkpurgeAuthStatus->isRateLimitExceeded() ) {
110 $forceLinkUpdate =
false;
111 $forceRecursiveLinkUpdate =
false;
113 $this->
addWarning( Status::wrap( $linkpurgeAuthStatus )->getMessage() );
122 $apiResult->addValue(
null, $this->
getModuleName(), $result );
124 $values = $pageSet->getNormalizedTitlesAsResult( $apiResult );
126 $apiResult->addValue(
null,
'normalized', $values );
128 $values = $pageSet->getConvertedTitlesAsResult( $apiResult );
130 $apiResult->addValue(
null,
'converted', $values );
132 $values = $pageSet->getRedirectTitlesAsResult( $apiResult );
134 $apiResult->addValue(
null,
'redirects', $values );
138 $continuationManager->setContinuationIntoResult( $apiResult );