MediaWiki REL1_34
MagicWordFactory.php
Go to the documentation of this file.
1<?php
38 private $mVariableIDsInitialised = false;
39
41 private $mVariableIDs = [
42 '!',
43 'currentmonth',
44 'currentmonth1',
45 'currentmonthname',
46 'currentmonthnamegen',
47 'currentmonthabbrev',
48 'currentday',
49 'currentday2',
50 'currentdayname',
51 'currentyear',
52 'currenttime',
53 'currenthour',
54 'localmonth',
55 'localmonth1',
56 'localmonthname',
57 'localmonthnamegen',
58 'localmonthabbrev',
59 'localday',
60 'localday2',
61 'localdayname',
62 'localyear',
63 'localtime',
64 'localhour',
65 'numberofarticles',
66 'numberoffiles',
67 'numberofedits',
68 'articlepath',
69 'pageid',
70 'sitename',
71 'server',
72 'servername',
73 'scriptpath',
74 'stylepath',
75 'pagename',
76 'pagenamee',
77 'fullpagename',
78 'fullpagenamee',
79 'namespace',
80 'namespacee',
81 'namespacenumber',
82 'currentweek',
83 'currentdow',
84 'localweek',
85 'localdow',
86 'revisionid',
87 'revisionday',
88 'revisionday2',
89 'revisionmonth',
90 'revisionmonth1',
91 'revisionyear',
92 'revisiontimestamp',
93 'revisionuser',
94 'revisionsize',
95 'subpagename',
96 'subpagenamee',
97 'talkspace',
98 'talkspacee',
99 'subjectspace',
100 'subjectspacee',
101 'talkpagename',
102 'talkpagenamee',
103 'subjectpagename',
104 'subjectpagenamee',
105 'numberofusers',
106 'numberofactiveusers',
107 'numberofpages',
108 'currentversion',
109 'rootpagename',
110 'rootpagenamee',
111 'basepagename',
112 'basepagenamee',
113 'currenttimestamp',
114 'localtimestamp',
115 'directionmark',
116 'contentlanguage',
117 'pagelanguage',
118 'numberofadmins',
119 'cascadingsources',
120 ];
121
125 private $mCacheTTLs = [
126 'currentmonth' => 86400,
127 'currentmonth1' => 86400,
128 'currentmonthname' => 86400,
129 'currentmonthnamegen' => 86400,
130 'currentmonthabbrev' => 86400,
131 'currentday' => 3600,
132 'currentday2' => 3600,
133 'currentdayname' => 3600,
134 'currentyear' => 86400,
135 'currenttime' => 3600,
136 'currenthour' => 3600,
137 'localmonth' => 86400,
138 'localmonth1' => 86400,
139 'localmonthname' => 86400,
140 'localmonthnamegen' => 86400,
141 'localmonthabbrev' => 86400,
142 'localday' => 3600,
143 'localday2' => 3600,
144 'localdayname' => 3600,
145 'localyear' => 86400,
146 'localtime' => 3600,
147 'localhour' => 3600,
148 'numberofarticles' => 3600,
149 'numberoffiles' => 3600,
150 'numberofedits' => 3600,
151 'currentweek' => 3600,
152 'currentdow' => 3600,
153 'localweek' => 3600,
154 'localdow' => 3600,
155 'numberofusers' => 3600,
156 'numberofactiveusers' => 3600,
157 'numberofpages' => 3600,
158 'currentversion' => 86400,
159 'currenttimestamp' => 3600,
160 'localtimestamp' => 3600,
161 'pagesinnamespace' => 3600,
162 'numberofadmins' => 3600,
163 'numberingroup' => 3600,
164 ];
165
168 'notoc',
169 'nogallery',
170 'forcetoc',
171 'toc',
172 'noeditsection',
173 'newsectionlink',
174 'nonewsectionlink',
175 'hiddencat',
176 'expectunusedcategory',
177 'index',
178 'noindex',
179 'staticredirect',
180 'notitleconvert',
181 'nocontentconvert',
182 ];
183
185 private $mSubstIDs = [
186 'subst',
187 'safesubst',
188 ];
189
191 private $mObjects = [];
192
195
197 private $contLang;
198
204 public function __construct( Language $contLang ) {
205 $this->contLang = $contLang;
206 }
207
208 public function getContentLanguage() {
209 return $this->contLang;
210 }
211
219 public function get( $id ) {
220 if ( !isset( $this->mObjects[$id] ) ) {
221 $mw = new MagicWord( null, [], false, $this->contLang );
222 $mw->load( $id );
223 $this->mObjects[$id] = $mw;
224 }
225 return $this->mObjects[$id];
226 }
227
233 public function getVariableIDs() {
234 if ( !$this->mVariableIDsInitialised ) {
235 # Get variable IDs
236 Hooks::run( 'MagicWordwgVariableIDs', [ &$this->mVariableIDs ] );
237 $this->mVariableIDsInitialised = true;
238 }
239 return $this->mVariableIDs;
240 }
241
246 public function getSubstIDs() {
247 return $this->mSubstIDs;
248 }
249
256 public function getCacheTTL( $id ) {
257 if ( array_key_exists( $id, $this->mCacheTTLs ) ) {
258 return $this->mCacheTTLs[$id];
259 } else {
260 return -1;
261 }
262 }
263
269 public function getDoubleUnderscoreArray() {
270 if ( is_null( $this->mDoubleUnderscoreArray ) ) {
271 Hooks::run( 'GetDoubleUnderscoreIDs', [ &$this->mDoubleUnderscoreIDs ] );
272 $this->mDoubleUnderscoreArray = $this->newArray( $this->mDoubleUnderscoreIDs );
273 }
274 return $this->mDoubleUnderscoreArray;
275 }
276
283 public function newArray( array $names = [] ) : MagicWordArray {
284 return new MagicWordArray( $names, $this );
285 }
286}
Internationalisation code.
Definition Language.php:37
Class for handling an array of magic words.
A factory that stores information about MagicWords, and creates them on demand with caching.
array $mCacheTTLs
Array of caching hints for ParserCache [ string => int ].
getSubstIDs()
Get an array of parser substitution modifier IDs.
getVariableIDs()
Get an array of parser variable IDs.
MagicWordArray $mDoubleUnderscoreArray
getDoubleUnderscoreArray()
Get a MagicWordArray of double-underscore entities.
__construct(Language $contLang)
#-
newArray(array $names=[])
Get a new MagicWordArray with provided $names.
array $mObjects
[ string => MagicWord ]
getCacheTTL( $id)
Allow external reads of TTL array.
This class encapsulates "magic words" such as "#redirect", NOTOC, etc.
Definition MagicWord.php:57
return[ 'OATHAuth'=> function(MediaWikiServices $services) { return new OATHAuth($services->getMainConfig(), $services->getDBLoadBalancerFactory());}, 'OATHUserRepository'=> function(MediaWikiServices $services) { global $wgOATHAuthDatabase;$auth=$services->getService( 'OATHAuth');return new OATHUserRepository($services->getDBLoadBalancerFactory() ->getMainLB( $wgOATHAuthDatabase), new \HashBagOStuff(['maxKey'=> 5]), $auth);}]