MediaWiki REL1_32
TrackingCategories.php
Go to the documentation of this file.
1<?php
29 private $config;
30
36 private static $coreTrackingCategories = [
37 'index-category',
38 'noindex-category',
39 'duplicate-args-category',
40 'expensive-parserfunction-category',
41 'post-expand-template-argument-category',
42 'post-expand-template-inclusion-category',
43 'hidden-category-category',
44 'broken-file-category',
45 'node-count-exceeded-category',
46 'expansion-depth-exceeded-category',
47 'restricted-displaytitle-ignored',
48 'deprecated-self-close-category',
49 'template-loop-category',
50 ];
51
55 public function __construct( Config $config ) {
56 $this->config = $config;
57 }
58
63 public function getTrackingCategories() {
64 $categories = array_merge(
65 self::$coreTrackingCategories,
66 ExtensionRegistry::getInstance()->getAttribute( 'TrackingCategories' ),
67 $this->config->get( 'TrackingCategories' ) // deprecated
68 );
69
70 // Only show magic link tracking categories if they are enabled
71 $enableMagicLinks = $this->config->get( 'EnableMagicLinks' );
72 if ( $enableMagicLinks['ISBN'] ) {
73 $categories[] = 'magiclink-tracking-isbn';
74 }
75 if ( $enableMagicLinks['RFC'] ) {
76 $categories[] = 'magiclink-tracking-rfc';
77 }
78 if ( $enableMagicLinks['PMID'] ) {
79 $categories[] = 'magiclink-tracking-pmid';
80 }
81
82 $trackingCategories = [];
83 foreach ( $categories as $catMsg ) {
84 /*
85 * Check if the tracking category varies by namespace
86 * Otherwise only pages in the current namespace will be displayed
87 * If it does vary, show pages considering all namespaces
88 */
89 $msgObj = wfMessage( $catMsg )->inContentLanguage();
90 $allCats = [];
91 $catMsgTitle = Title::makeTitleSafe( NS_MEDIAWIKI, $catMsg );
92 if ( !$catMsgTitle ) {
93 continue;
94 }
95
96 // Match things like {{NAMESPACE}} and {{NAMESPACENUMBER}}.
97 // False positives are ok, this is just an efficiency shortcut
98 if ( strpos( $msgObj->plain(), '{{' ) !== false ) {
99 $ns = MWNamespace::getValidNamespaces();
100 foreach ( $ns as $namesp ) {
101 $tempTitle = Title::makeTitleSafe( $namesp, $catMsg );
102 if ( !$tempTitle ) {
103 continue;
104 }
105 $catName = $msgObj->title( $tempTitle )->text();
106 # Allow tracking categories to be disabled by setting them to "-"
107 if ( $catName !== '-' ) {
108 $catTitle = Title::makeTitleSafe( NS_CATEGORY, $catName );
109 if ( $catTitle ) {
110 $allCats[] = $catTitle;
111 }
112 }
113 }
114 } else {
115 $catName = $msgObj->text();
116 # Allow tracking categories to be disabled by setting them to "-"
117 if ( $catName !== '-' ) {
118 $catTitle = Title::makeTitleSafe( NS_CATEGORY, $catName );
119 if ( $catTitle ) {
120 $allCats[] = $catTitle;
121 }
122 }
123 }
124 $trackingCategories[$catMsg] = [
125 'cats' => $allCats,
126 'msg' => $catMsgTitle,
127 ];
128 }
129
130 return $trackingCategories;
131 }
132}
This class performs some operations related to tracking categories, such as creating a list of all su...
getTrackingCategories()
Read the global and extract title objects from the corresponding messages.
__construct(Config $config)
static array $coreTrackingCategories
Tracking categories that exist in core.
either a unescaped string or a HtmlArmor object after in associative array form externallinks including delete and has completed for all link tables whether this was an auto creation use $formDescriptor instead default is conds Array Extra conditions for the No matching items in log is displayed if loglist is empty msgKey Array If you want a nice box with a set this to the key of the message First element is the message additional optional elements are parameters for the key that are processed with wfMessage() -> params() ->parseAsBlock() - offset Set to overwrite offset parameter in $wgRequest set to '' to unset offset - wrap String Wrap the message in html(usually something like "&lt;div ...>$1&lt;/div>"). - flags Integer display flags(NO_ACTION_LINK, NO_EXTRA_USER_LINKS) 'LogException':Called before an exception(or PHP error) is logged. This is meant for integration with external error aggregation services
const NS_CATEGORY
Definition Defines.php:78
Interface for configuration instances.
Definition Config.php:28
The wiki should then use memcached to cache various data To use multiple just add more items to the array To increase the weight of a make its entry a array("192.168.0.1:11211", 2))