}
/**
+ * @deprecated since 1.28, use Parser::escapeWikitext() directly
+ *
* Escapes the given text so that it may be output using addWikiText()
* without any linking, formatting, etc. making its way through. This
* is achieved by substituting certain characters with HTML entities.
* @return string
*/
function wfEscapeWikiText( $text ) {
- global $wgEnableMagicLinks;
- static $repl = null, $repl2 = null;
- if ( $repl === null ) {
- $repl = [
- '"' => '"', '&' => '&', "'" => ''', '<' => '<',
- '=' => '=', '>' => '>', '[' => '[', ']' => ']',
- '{' => '{', '|' => '|', '}' => '}', ';' => ';',
- "\n#" => "\n#", "\r#" => "\r#",
- "\n*" => "\n*", "\r*" => "\r*",
- "\n:" => "\n:", "\r:" => "\r:",
- "\n " => "\n ", "\r " => "\r ",
- "\n\n" => "\n ", "\r\n" => " \n",
- "\n\r" => "\n ", "\r\r" => "\r ",
- "\n\t" => "\n	", "\r\t" => "\r	", // "\n\t\n" is treated like "\n\n"
- "\n----" => "\n----", "\r----" => "\r----",
- '__' => '__', '://' => '://',
- ];
-
- $magicLinks = array_keys( array_filter( $wgEnableMagicLinks ) );
- // We have to catch everything "\s" matches in PCRE
- foreach ( $magicLinks as $magic ) {
- $repl["$magic "] = "$magic ";
- $repl["$magic\t"] = "$magic	";
- $repl["$magic\r"] = "$magic ";
- $repl["$magic\n"] = "$magic ";
- $repl["$magic\f"] = "$magic";
- }
-
- // And handle protocols that don't use "://"
- global $wgUrlProtocols;
- $repl2 = [];
- foreach ( $wgUrlProtocols as $prot ) {
- if ( substr( $prot, -1 ) === ':' ) {
- $repl2[] = preg_quote( substr( $prot, 0, -1 ), '/' );
- }
- }
- $repl2 = $repl2 ? '/\b(' . implode( '|', $repl2 ) . '):/i' : '/^(?!)/';
- }
- $text = substr( strtr( "\n$text", $repl ), 1 );
- $text = preg_replace( $repl2, '$1:', $text );
- return $text;
+ global $wgParser;
+ return $wgParser->escapeWikitext( $text );
}
/**
if ( is_null( $t ) ) {
return '';
}
- return wfEscapeWikiText( $t->getText() );
+ return $parser->escapeWikitext( $t->getText() );
}
- public static function pagenamee( $parser, $title = null ) {
+ public static function pagenamee( Parser $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
- return wfEscapeWikiText( $t->getPartialURL() );
+ return $parser->escapeWikitext( $t->getPartialURL() );
}
- public static function fullpagename( $parser, $title = null ) {
+ public static function fullpagename( Parser $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) || !$t->canTalk() ) {
return '';
}
- return wfEscapeWikiText( $t->getPrefixedText() );
+ return $parser->escapeWikitext( $t->getPrefixedText() );
}
- public static function fullpagenamee( $parser, $title = null ) {
+ public static function fullpagenamee( Parser $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) || !$t->canTalk() ) {
return '';
}
- return wfEscapeWikiText( $t->getPrefixedURL() );
+ return $parser->escapeWikitext( $t->getPrefixedURL() );
}
- public static function subpagename( $parser, $title = null ) {
+ public static function subpagename( Parser $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
- return wfEscapeWikiText( $t->getSubpageText() );
+ return $parser->escapeWikitext( $t->getSubpageText() );
}
- public static function subpagenamee( $parser, $title = null ) {
+ public static function subpagenamee( Parser $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
- return wfEscapeWikiText( $t->getSubpageUrlForm() );
+ return $parser->escapeWikitext( $t->getSubpageUrlForm() );
}
- public static function rootpagename( $parser, $title = null ) {
+ public static function rootpagename( Parser $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
- return wfEscapeWikiText( $t->getRootText() );
+ return $parser->escapeWikitext( $t->getRootText() );
}
- public static function rootpagenamee( $parser, $title = null ) {
+ public static function rootpagenamee( Parser $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
- return wfEscapeWikiText( wfUrlencode( str_replace( ' ', '_', $t->getRootText() ) ) );
+ return $parser->escapeWikitext( wfUrlencode( str_replace( ' ', '_', $t->getRootText() ) ) );
}
- public static function basepagename( $parser, $title = null ) {
+ public static function basepagename( Parser $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
- return wfEscapeWikiText( $t->getBaseText() );
+ return $parser->escapeWikitext( $t->getBaseText() );
}
- public static function basepagenamee( $parser, $title = null ) {
+ public static function basepagenamee( Parser $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
- return wfEscapeWikiText( wfUrlencode( str_replace( ' ', '_', $t->getBaseText() ) ) );
+ return $parser->escapeWikitext( wfUrlencode( str_replace( ' ', '_', $t->getBaseText() ) ) );
}
- public static function talkpagename( $parser, $title = null ) {
+ public static function talkpagename( Parser $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) || !$t->canTalk() ) {
return '';
}
- return wfEscapeWikiText( $t->getTalkPage()->getPrefixedText() );
+ return $parser->escapeWikitext( $t->getTalkPage()->getPrefixedText() );
}
- public static function talkpagenamee( $parser, $title = null ) {
+ public static function talkpagenamee( Parser $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) || !$t->canTalk() ) {
return '';
}
- return wfEscapeWikiText( $t->getTalkPage()->getPrefixedURL() );
+ return $parser->escapeWikitext( $t->getTalkPage()->getPrefixedURL() );
}
- public static function subjectpagename( $parser, $title = null ) {
+ public static function subjectpagename( Parser $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
- return wfEscapeWikiText( $t->getSubjectPage()->getPrefixedText() );
+ return $parser->escapeWikitext( $t->getSubjectPage()->getPrefixedText() );
}
- public static function subjectpagenamee( $parser, $title = null ) {
+ public static function subjectpagenamee( Parser $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
- return wfEscapeWikiText( $t->getSubjectPage()->getPrefixedURL() );
+ return $parser->escapeWikitext( $t->getSubjectPage()->getPrefixedURL() );
}
/**
OutputPage::setupOOUI();
$this->mOutput->setEnableOOUI( true );
}
+
+ /**
+ * Escapes the given text so that it may be output using addWikiText()
+ * without any linking, formatting, etc. making its way through. This
+ * is achieved by substituting certain characters with HTML entities.
+ * As required by the callers, "<nowiki>" is not used.
+ *
+ * @since 1.28
+ *
+ * @param string $text Text to be escaped
+ * @return string
+ */
+ public function escapeWikitext( $text ) {
+ static $repl = null, $repl2 = null;
+ if ( $repl === null ) {
+ $repl = [
+ '"' => '"', '&' => '&', "'" => ''', '<' => '<',
+ '=' => '=', '>' => '>', '[' => '[', ']' => ']',
+ '{' => '{', '|' => '|', '}' => '}', ';' => ';',
+ "\n#" => "\n#", "\r#" => "\r#",
+ "\n*" => "\n*", "\r*" => "\r*",
+ "\n:" => "\n:", "\r:" => "\r:",
+ "\n " => "\n ", "\r " => "\r ",
+ "\n\n" => "\n ", "\r\n" => " \n",
+ "\n\r" => "\n ", "\r\r" => "\r ",
+ "\n\t" => "\n	", "\r\t" => "\r	", // "\n\t\n" is treated like "\n\n"
+ "\n----" => "\n----", "\r----" => "\r----",
+ '__' => '__', '://' => '://',
+ ];
+
+ $magicLinks = array_keys( array_filter( [
+ 'ISBN' => $this->mOptions->getMagicISBNLinks(),
+ 'PMID' => $this->mOptions->getMagicPMIDLinks(),
+ 'RFC' => $this->mOptions->getMagicRFCLinks(),
+ ] ) );
+ // We have to catch everything "\s" matches in PCRE
+ foreach ( $magicLinks as $magic ) {
+ $repl["$magic "] = "$magic ";
+ $repl["$magic\t"] = "$magic	";
+ $repl["$magic\r"] = "$magic ";
+ $repl["$magic\n"] = "$magic ";
+ $repl["$magic\f"] = "$magic";
+ }
+
+ // And handle protocols that don't use "://"
+ global $wgUrlProtocols;
+ $repl2 = [];
+ foreach ( $wgUrlProtocols as $prot ) {
+ if ( substr( $prot, -1 ) === ':' ) {
+ $repl2[] = preg_quote( substr( $prot, 0, -1 ), '/' );
+ }
+ }
+ $repl2 = $repl2 ? '/\b(' . implode( '|', $repl2 ) . '):/i' : '/^(?!)/';
+ }
+ $text = substr( strtr( "\n$text", $repl ), 1 );
+ $text = preg_replace( $repl2, '$1:', $text );
+ return $text;
+ }
}