52 ConvertibleTimestamp $ts,
54 LoggerInterface $logger
56 $pageLang = $parser->getTargetLanguage();
65 return $pageLang->formatNumNoSeparators( $ts->format(
'm' ) );
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' ) );
75 return $pageLang->formatNumNoSeparators( $ts->format(
'j' ) );
77 return $pageLang->formatNumNoSeparators( $ts->format(
'd' ) );
79 return $pageLang->formatNumNoSeparators( self::makeTsLocal( $svcOptions, $ts )->format(
'm' ) );
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' ) );
89 return $pageLang->formatNumNoSeparators( self::makeTsLocal( $svcOptions, $ts )->format(
'j' ) );
91 return $pageLang->formatNumNoSeparators( self::makeTsLocal( $svcOptions, $ts )->format(
'd' ) );
101 case 'basepagenamee':
103 case 'talkpagenamee':
104 case 'subjectpagename':
105 case 'subjectpagenamee':
111 case 'revisionmonth':
112 case 'revisionmonth1':
114 case 'revisiontimestamp':
117 case 'namespacenumber':
121 case 'subjectspacee':
122 case 'cascadingsources':
123 # First argument of the corresponding parser function
124 # (second argument of the PHP implementation) is
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 );
135 case 'currentdayname':
136 return $pageLang->getWeekdayName( (
int)$ts->format(
'w' ) + 1 );
138 return $pageLang->formatNumNoSeparators( $ts->format(
'Y' ) );
140 return $pageLang->time( $ts->getTimestamp( TS_MW ),
false,
false );
142 return $pageLang->formatNumNoSeparators( $ts->format(
'H' ) );
146 return $pageLang->formatNum( (
int)$ts->format(
'W' ) );
148 return $pageLang->formatNum( $ts->format(
'w' ) );
150 return $pageLang->getWeekdayName(
151 (
int)self::makeTsLocal( $svcOptions, $ts )->format(
'w' ) + 1
154 return $pageLang->formatNumNoSeparators( self::makeTsLocal( $svcOptions, $ts )->format(
'Y' ) );
156 return $pageLang->time(
157 self::makeTsLocal( $svcOptions, $ts )->format(
'YmdHis' ),
162 return $pageLang->formatNumNoSeparators( self::makeTsLocal( $svcOptions, $ts )->format(
'H' ) );
166 return $pageLang->formatNum( (
int)self::makeTsLocal( $svcOptions, $ts )->format(
'W' ) );
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':
185 return (
string)$svcOptions->
get( MainConfigNames::ArticlePath );
187 return (
string)$svcOptions->
get( MainConfigNames::Sitename );
189 return (
string)$svcOptions->
get( MainConfigNames::Server );
191 return (
string)$svcOptions->
get( MainConfigNames::ServerName );
193 return (
string)$svcOptions->
get( MainConfigNames::ScriptPath );
195 return (
string)$svcOptions->
get( MainConfigNames::StylePath );
196 case 'directionmark':
197 return $pageLang->getDirMark();
198 case 'contentlanguage':
201 return $pageLang->getCode();