findTitle( $par ); // Go to the main page if given invalid title. if ( !$title ) { $title = Title::newMainPage(); } return $title; } /** * Assuming the user's interface language is fi. Given input Page, it * returns Page/fi if it exists, otherwise Page. Given input Page/de, * it returns Page/fi if it exists, otherwise Page/de if it exists, * otherwise Page. * * @param string $par * @return Title|null */ public function findTitle( $par ) { // base = title without language code suffix // provided = the title as it was given $base = $provided = Title::newFromText( $par ); if ( $base && strpos( $par, '/' ) !== false ) { $pos = strrpos( $par, '/' ); $basepage = substr( $par, 0, $pos ); $code = substr( $par, $pos + 1 ); if ( strlen( $code ) && Language::isKnownLanguageTag( $code ) ) { $base = Title::newFromText( $basepage ); } } if ( !$base ) { return null; } $uiCode = $this->getLanguage()->getCode(); $proposed = $base->getSubpage( $uiCode ); if ( $uiCode !== $this->getConfig()->get( 'LanguageCode' ) && $proposed && $proposed->exists() ) { return $proposed; } elseif ( $provided && $provided->exists() ) { return $provided; } else { return $base; } } }