51 $this->regex =
'/' . Parser::MARKER_PREFIX .
"([^\x7f<>&'\"]+)" . Parser::MARKER_SUFFIX .
'/';
52 $this->circularRefGuard = [];
55 if ( isset(
$options[
'depthLimit'] ) ) {
56 $this->depthLimit =
$options[
'depthLimit'];
58 if ( isset(
$options[
'sizeLimit'] ) ) {
59 $this->sizeLimit =
$options[
'sizeLimit'];
87 if ( !preg_match( $this->regex, $marker, $m ) ) {
127 if ( !count( $this->data[
$type] ) ) {
131 $callback =
function ( $m ) use (
$type ) {
133 if ( isset( $this->data[
$type][$marker] ) ) {
134 if ( isset( $this->circularRefGuard[$marker] ) ) {
135 return $this->
getWarning(
'parser-unstrip-loop-warning' );
138 if ( $this->depth > $this->highestDepth ) {
141 if ( $this->depth >= $this->depthLimit ) {
146 if (
$value instanceof Closure ) {
150 $this->expandSize += strlen(
$value );
151 if ( $this->expandSize > $this->sizeLimit ) {
155 $this->circularRefGuard[$marker] =
true;
159 unset( $this->circularRefGuard[$marker] );
167 $text = preg_replace_callback( $this->regex, $callback, $text );
179 if ( $this->parser ) {
180 $this->parser->limitationWarn(
$type, $max );
182 return $this->
getWarning(
"$type-warning", $max );
193 return '<span class="error">' .
195 ->numParams( $max )->inContentLanguage()->text() .
207 [
'limitreport-unstrip-depth',
213 [
'limitreport-unstrip-size',
236 $startPos = strpos( $text, Parser::MARKER_PREFIX, $pos );
237 $endPos = strpos( $text, Parser::MARKER_SUFFIX, $pos );
238 if ( $startPos ===
false || $endPos ===
false ) {
242 $endPos += strlen( Parser::MARKER_SUFFIX );
243 $marker = substr( $text, $startPos, $endPos - $startPos );
244 if ( !preg_match( $this->regex, $marker, $m ) ) {
249 if ( isset( $this->data[
'nowiki'][$key] ) ) {
250 $subState->data[
'nowiki'][$key] = $this->data[
'nowiki'][$key];
251 } elseif ( isset( $this->data[
'general'][$key] ) ) {
252 $subState->data[
'general'][$key] = $this->data[
'general'][$key];
269 public function merge( $otherState, $texts ) {
274 foreach ( $otherState->data as
$type => $items ) {
275 foreach ( $items as $key =>
$value ) {
280 $callback =
function ( $m ) use ( $mergePrefix ) {
282 return Parser::MARKER_PREFIX . $mergePrefix .
'-' . $key . Parser::MARKER_SUFFIX;
284 $texts = preg_replace_callback( $otherState->regex, $callback, $texts );
295 return preg_replace( $this->regex,
'', $text );
wfRandomString( $length=32)
Get a random string containing a number of pseudo-random hex characters.
wfDeprecated( $function, $version=false, $component=false, $callerOffset=2)
Throws a warning that $function is deprecated.
PHP Parser - Processes wiki markup (which uses a more user-friendly syntax, such as "[[link]]" for ma...
addNoWiki( $marker, $value)
Add a nowiki strip item.
getLimitReport()
Get an array of parameters to pass to ParserOutput::setLimitReportData()
unstripType( $type, $text)
addGeneral( $marker, $value)
getWarning( $message, $max='')
Get warning HTML.
killMarkers( $text)
Remove any strip markers found in the given text.
merge( $otherState, $texts)
Merge another StripState object into this one.
getLimitationWarning( $type, $max='')
Get warning HTML and register a limitation warning with the parser.
addItem( $type, $marker, $value)
getSubState( $text)
Get a StripState object which is sufficient to unstrip the given text.
__construct(Parser $parser=null, $options=[])
null means default in associative array with keys and values unescaped Should be merged with default with a value of false meaning to suppress the attribute in associative array with keys and values unescaped & $options
null means default in associative array with keys and values unescaped Should be merged with default with a value of false meaning to suppress the attribute in associative array with keys and values unescaped noclasses & $ret
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 "<div ...>$1</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