* @private
*/
function replaceInternalLinks2( &$s ) {
+ global $wgExtraInterlanguageLinkPrefixes;
wfProfileIn( __METHOD__ );
wfProfileIn( __METHOD__ . '-setup' );
if ( $noforce ) {
# Interwikis
wfProfileIn( __METHOD__ . "-interwiki" );
- if ( $iw && $this->mOptions->getInterwikiMagic()
- && $nottalk && Language::fetchLanguageName( $iw, null, 'mw' )
+ if (
+ $iw && $this->mOptions->getInterwikiMagic() && $nottalk && (
+ Language::fetchLanguageName( $iw, null, 'mw' ) ||
+ in_array( $iw, $wgExtraInterlanguageLinkPrefixes )
+ )
) {
- // XXX: the above check prevents links to sites with identifiers that are not language codes
-
# Bug 24502: filter duplicates
if ( !isset( $this->mLangLinkLanguages[$iw] ) ) {
$this->mLangLinkLanguages[$iw] = true;
} else {
$localLinkTitle = Title::newFromText( $linkValue );
if ( $localLinkTitle !== null ) {
- $link = $localLinkTitle->getLocalURL();
+ $link = $localLinkTitle->getLinkURL();
}
}
break;
* External callers should use the getSection and replaceSection methods.
*
* @param string $text Page wikitext
- * @param string $section A section identifier string of the form:
+ * @param string|number $sectionId A section identifier string of the form:
* "<flag1> - <flag2> - ... - <section number>"
*
* Currently the only recognised flag is "T", which means the target section number
* @return string For "get", the extracted section text.
* for "replace", the whole page with the section replaced.
*/
- private function extractSections( $text, $section, $mode, $newText = '' ) {
+ private function extractSections( $text, $sectionId, $mode, $newText = '' ) {
global $wgTitle; # not generally used but removes an ugly failure mode
$magicScopeVariable = $this->lock();
# Process section extraction flags
$flags = 0;
- $sectionParts = explode( '-', $section );
+ $sectionParts = explode( '-', $sectionId );
$sectionIndex = array_pop( $sectionParts );
foreach ( $sectionParts as $part ) {
if ( $part === 'T' ) {
* If a section contains subsections, these are also returned.
*
* @param string $text Text to look in
- * @param string $section Section identifier
- * @param string $deftext Default to return if section is not found
+ * @param string|number $sectionId Section identifier as a number or string
+ * (e.g. 0, 1 or 'T-1').
+ * @param string $defaultText Default to return if section is not found
+ *
* @return string Text of the requested section
*/
- public function getSection( $text, $section, $deftext = '' ) {
- return $this->extractSections( $text, $section, "get", $deftext );
+ public function getSection( $text, $sectionId, $defaultText = '' ) {
+ return $this->extractSections( $text, $sectionId, 'get', $defaultText );
}
/**
* specified by $section has been replaced with $text. If the target
* section does not exist, $oldtext is returned unchanged.
*
- * @param string $oldtext Former text of the article
- * @param int $section Section identifier
- * @param string $text Replacing text
+ * @param string $oldText Former text of the article
+ * @param string|number $sectionId Section identifier as a number or string
+ * (e.g. 0, 1 or 'T-1').
+ * @param string $newText Replacing text
+ *
* @return string Modified text
*/
- public function replaceSection( $oldtext, $section, $text ) {
- return $this->extractSections( $oldtext, $section, "replace", $text );
+ public function replaceSection( $oldText, $sectionId, $newText ) {
+ return $this->extractSections( $oldText, $sectionId, 'replace', $newText );
}
/**