X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialTrackingCategories.php;h=e503d92b41c0f14c38eaa9c243e5211ec56d03cc;hb=ba39208f91e5caafab28d97999fdddf0dae00410;hp=4c6a3457db6129742214745a2009fdd21c6165b0;hpb=a3b1ef7c21ba9af94f611f6ca1d64e75710db176;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialTrackingCategories.php b/includes/specials/SpecialTrackingCategories.php index 4c6a3457db..e503d92b41 100644 --- a/includes/specials/SpecialTrackingCategories.php +++ b/includes/specials/SpecialTrackingCategories.php @@ -36,26 +36,6 @@ class SpecialTrackingCategories extends SpecialPage { parent::__construct( 'TrackingCategories' ); } - /** - * Tracking categories that exist in core - * - * @var array - */ - private static $coreTrackingCategories = [ - 'index-category', - 'noindex-category', - 'duplicate-args-category', - 'expensive-parserfunction-category', - 'post-expand-template-argument-category', - 'post-expand-template-inclusion-category', - 'hidden-category-category', - 'broken-file-category', - 'node-count-exceeded-category', - 'expansion-depth-exceeded-category', - 'restricted-displaytitle-ignored', - 'deprecated-self-close-category', - ]; - function execute( $par ) { $this->setHeaders(); $this->outputHeader(); @@ -76,10 +56,11 @@ class SpecialTrackingCategories extends SpecialPage { " ); - $trackingCategories = $this->prepareTrackingCategoriesData(); + $trackingCategories = new TrackingCategories( $this->getConfig() ); + $categoryList = $trackingCategories->getTrackingCategories(); $batch = new LinkBatch(); - foreach ( $trackingCategories as $catMsg => $data ) { + foreach ( $categoryList as $catMsg => $data ) { $batch->addObj( $data['msg'] ); foreach ( $data['cats'] as $catTitle ) { $batch->addObj( $catTitle ); @@ -87,21 +68,23 @@ class SpecialTrackingCategories extends SpecialPage { } $batch->execute(); - Hooks::run( 'SpecialTrackingCategories::preprocess', [ $this, $trackingCategories ] ); + Hooks::run( 'SpecialTrackingCategories::preprocess', [ $this, $categoryList ] ); + + $linkRenderer = $this->getLinkRenderer(); - foreach ( $trackingCategories as $catMsg => $data ) { + foreach ( $categoryList as $catMsg => $data ) { $allMsgs = []; $catDesc = $catMsg . '-desc'; - $catMsgTitleText = Linker::link( + $catMsgTitleText = $linkRenderer->makeLink( $data['msg'], - htmlspecialchars( $catMsg ) + $catMsg ); foreach ( $data['cats'] as $catTitle ) { - $html = Linker::link( + $html = $linkRenderer->makeLink( $catTitle, - htmlspecialchars( $catTitle->getText() ) + $catTitle->getText() ); Hooks::run( 'SpecialTrackingCategories::generateCatLink', @@ -141,80 +124,6 @@ class SpecialTrackingCategories extends SpecialPage { $this->getOutput()->addHTML( Html::closeElement( 'table' ) ); } - /** - * Read the global and extract title objects from the corresponding messages - * @return array Array( 'msg' => Title, 'cats' => Title[] ) - */ - private function prepareTrackingCategoriesData() { - $categories = array_merge( - self::$coreTrackingCategories, - ExtensionRegistry::getInstance()->getAttribute( 'TrackingCategories' ), - $this->getConfig()->get( 'TrackingCategories' ) // deprecated - ); - - // Only show magic link tracking categories if they are enabled - $enableMagicLinks = $this->getConfig()->get( 'EnableMagicLinks' ); - if ( $enableMagicLinks['ISBN'] ) { - $categories[] = 'magiclink-tracking-isbn'; - } - if ( $enableMagicLinks['RFC'] ) { - $categories[] = 'magiclink-tracking-rfc'; - } - if ( $enableMagicLinks['PMID'] ) { - $categories[] = 'magiclink-tracking-pmid'; - } - - $trackingCategories = []; - foreach ( $categories as $catMsg ) { - /* - * Check if the tracking category varies by namespace - * Otherwise only pages in the current namespace will be displayed - * If it does vary, show pages considering all namespaces - */ - $msgObj = $this->msg( $catMsg )->inContentLanguage(); - $allCats = []; - $catMsgTitle = Title::makeTitleSafe( NS_MEDIAWIKI, $catMsg ); - if ( !$catMsgTitle ) { - continue; - } - - // Match things like {{NAMESPACE}} and {{NAMESPACENUMBER}}. - // False positives are ok, this is just an efficiency shortcut - if ( strpos( $msgObj->plain(), '{{' ) !== false ) { - $ns = MWNamespace::getValidNamespaces(); - foreach ( $ns as $namesp ) { - $tempTitle = Title::makeTitleSafe( $namesp, $catMsg ); - if ( !$tempTitle ) { - continue; - } - $catName = $msgObj->title( $tempTitle )->text(); - # Allow tracking categories to be disabled by setting them to "-" - if ( $catName !== '-' ) { - $catTitle = Title::makeTitleSafe( NS_CATEGORY, $catName ); - if ( $catTitle ) { - $allCats[] = $catTitle; - } - } - } - } else { - $catName = $msgObj->text(); - # Allow tracking categories to be disabled by setting them to "-" - if ( $catName !== '-' ) { - $catTitle = Title::makeTitleSafe( NS_CATEGORY, $catName ); - if ( $catTitle ) { - $allCats[] = $catTitle; - } - } - } - $trackingCategories[$catMsg] = [ - 'cats' => $allCats, - 'msg' => $catMsgTitle, - ]; - } - - return $trackingCategories; - } - protected function getGroupName() { return 'pages'; }