MediaWiki 1.40.4
CoreMagicVariables.php
Go to the documentation of this file.
1<?php
25use Psr\Log\LoggerInterface;
26use Wikimedia\Timestamp\ConvertibleTimestamp;
27
34
47 public static function expand(
48 // Fundamental options
49 Parser $parser,
50 string $id,
51 // Context passed over from the parser
52 ConvertibleTimestamp $ts,
53 ServiceOptions $svcOptions,
54 LoggerInterface $logger
55 ): ?string {
56 $pageLang = $parser->getTargetLanguage();
57 $title = $parser->getTitle();
58
59 switch ( $id ) {
60 case '!':
61 return '|';
62 case '=':
63 return '=';
64 case 'currentmonth':
65 return $pageLang->formatNumNoSeparators( $ts->format( 'm' ) );
66 case 'currentmonth1':
67 return $pageLang->formatNumNoSeparators( $ts->format( 'n' ) );
68 case 'currentmonthname':
69 return $pageLang->getMonthName( (int)$ts->format( 'n' ) );
70 case 'currentmonthnamegen':
71 return $pageLang->getMonthNameGen( (int)$ts->format( 'n' ) );
72 case 'currentmonthabbrev':
73 return $pageLang->getMonthAbbreviation( (int)$ts->format( 'n' ) );
74 case 'currentday':
75 return $pageLang->formatNumNoSeparators( $ts->format( 'j' ) );
76 case 'currentday2':
77 return $pageLang->formatNumNoSeparators( $ts->format( 'd' ) );
78 case 'localmonth':
79 return $pageLang->formatNumNoSeparators( self::makeTsLocal( $svcOptions, $ts )->format( 'm' ) );
80 case 'localmonth1':
81 return $pageLang->formatNumNoSeparators( self::makeTsLocal( $svcOptions, $ts )->format( 'n' ) );
82 case 'localmonthname':
83 return $pageLang->getMonthName( (int)self::makeTsLocal( $svcOptions, $ts )->format( 'n' ) );
84 case 'localmonthnamegen':
85 return $pageLang->getMonthNameGen( (int)self::makeTsLocal( $svcOptions, $ts )->format( 'n' ) );
86 case 'localmonthabbrev':
87 return $pageLang->getMonthAbbreviation( (int)self::makeTsLocal( $svcOptions, $ts )->format( 'n' ) );
88 case 'localday':
89 return $pageLang->formatNumNoSeparators( self::makeTsLocal( $svcOptions, $ts )->format( 'j' ) );
90 case 'localday2':
91 return $pageLang->formatNumNoSeparators( self::makeTsLocal( $svcOptions, $ts )->format( 'd' ) );
92 case 'pagename':
93 case 'pagenamee':
94 case 'fullpagename':
95 case 'fullpagenamee':
96 case 'subpagename':
97 case 'subpagenamee':
98 case 'rootpagename':
99 case 'rootpagenamee':
100 case 'basepagename':
101 case 'basepagenamee':
102 case 'talkpagename':
103 case 'talkpagenamee':
104 case 'subjectpagename':
105 case 'subjectpagenamee':
106 case 'pageid':
107 case 'revisionid':
108 case 'revisionuser':
109 case 'revisionday':
110 case 'revisionday2':
111 case 'revisionmonth':
112 case 'revisionmonth1':
113 case 'revisionyear':
114 case 'revisiontimestamp':
115 case 'namespace':
116 case 'namespacee':
117 case 'namespacenumber':
118 case 'talkspace':
119 case 'talkspacee':
120 case 'subjectspace':
121 case 'subjectspacee':
122 case 'cascadingsources':
123 # First argument of the corresponding parser function
124 # (second argument of the PHP implementation) is
125 # "title".
126
127 # Note that for many of these {{FOO}} is subtly different
128 # from {{FOO:{{PAGENAME}}}}, so we can't pass $title here
129 # we have to explicitly use the "no arguments" form of the
130 # parser function by passing `null` to indicate a missing
131 # argument (which then defaults to the current page title).
132 return CoreParserFunctions::$id( $parser, null );
133 case 'revisionsize':
134 return (string)$parser->getRevisionSize();
135 case 'currentdayname':
136 return $pageLang->getWeekdayName( (int)$ts->format( 'w' ) + 1 );
137 case 'currentyear':
138 return $pageLang->formatNumNoSeparators( $ts->format( 'Y' ) );
139 case 'currenttime':
140 return $pageLang->time( $ts->getTimestamp( TS_MW ), false, false );
141 case 'currenthour':
142 return $pageLang->formatNumNoSeparators( $ts->format( 'H' ) );
143 case 'currentweek':
144 // @bug T6594 PHP5 has it zero padded, PHP4 does not, cast to
145 // int to remove the padding
146 return $pageLang->formatNum( (int)$ts->format( 'W' ) );
147 case 'currentdow':
148 return $pageLang->formatNum( $ts->format( 'w' ) );
149 case 'localdayname':
150 return $pageLang->getWeekdayName(
151 (int)self::makeTsLocal( $svcOptions, $ts )->format( 'w' ) + 1
152 );
153 case 'localyear':
154 return $pageLang->formatNumNoSeparators( self::makeTsLocal( $svcOptions, $ts )->format( 'Y' ) );
155 case 'localtime':
156 return $pageLang->time(
157 self::makeTsLocal( $svcOptions, $ts )->format( 'YmdHis' ),
158 false,
159 false
160 );
161 case 'localhour':
162 return $pageLang->formatNumNoSeparators( self::makeTsLocal( $svcOptions, $ts )->format( 'H' ) );
163 case 'localweek':
164 // @bug T6594 PHP5 has it zero padded, PHP4 does not, cast to
165 // int to remove the padding
166 return $pageLang->formatNum( (int)self::makeTsLocal( $svcOptions, $ts )->format( 'W' ) );
167 case 'localdow':
168 return $pageLang->formatNum( self::makeTsLocal( $svcOptions, $ts )->format( 'w' ) );
169 case 'numberofarticles':
170 case 'numberoffiles':
171 case 'numberofusers':
172 case 'numberofactiveusers':
173 case 'numberofpages':
174 case 'numberofadmins':
175 case 'numberofedits':
176 # second argument is 'raw'; magic variables are "not raw"
177 return CoreParserFunctions::$id( $parser, null );
178 case 'currenttimestamp':
179 return $ts->getTimestamp( TS_MW );
180 case 'localtimestamp':
181 return self::makeTsLocal( $svcOptions, $ts )->format( 'YmdHis' );
182 case 'currentversion':
184 case 'articlepath':
185 return (string)$svcOptions->get( MainConfigNames::ArticlePath );
186 case 'sitename':
187 return (string)$svcOptions->get( MainConfigNames::Sitename );
188 case 'server':
189 return (string)$svcOptions->get( MainConfigNames::Server );
190 case 'servername':
191 return (string)$svcOptions->get( MainConfigNames::ServerName );
192 case 'scriptpath':
193 return (string)$svcOptions->get( MainConfigNames::ScriptPath );
194 case 'stylepath':
195 return (string)$svcOptions->get( MainConfigNames::StylePath );
196 case 'directionmark':
197 return $pageLang->getDirMark();
198 case 'contentlanguage':
199 return $parser->getContentLanguage()->getCode();
200 case 'pagelanguage':
201 return $pageLang->getCode();
202 default:
203 // This is not one of the core magic variables
204 return null;
205 }
206 }
207
215 private static function makeTsLocal( $svcOptions, $ts ) {
216 $localtimezone = $svcOptions->get( MainConfigNames::Localtimezone );
217 $ts->setTimezone( $localtimezone );
218 return $ts;
219 }
220}
Expansions of core magic variables, used by the parser.
static expand(Parser $parser, string $id, ConvertibleTimestamp $ts, ServiceOptions $svcOptions, LoggerInterface $logger)
Expand the magic variable given by $index.
A class for passing options to services.
A class containing constants representing the names of configuration variables.
PHP Parser - Processes wiki markup (which uses a more user-friendly syntax, such as "[[link]]" for ma...
Definition Parser.php:107
getRevisionSize()
Get the size of the revision.
Definition Parser.php:6086
getTitle()
Definition Parser.php:1014
getContentLanguage()
Get the content language that this Parser is using.
Definition Parser.php:1227
static getVersion( $flags='', $lang=null)
Return a string of the MediaWiki version with Git revision if available.