getNamespace() == NS_CATEGORY ) { $optionalColon = ':'; } else { $iw = $destination->getInterwiki(); if ( $iw && Language::fetchLanguageName( $iw, null, 'mw' ) ) { $optionalColon = ':'; } } $mwRedir = MagicWord::get( 'redirect' ); $redirectText = $mwRedir->getSynonym( 0 ) . ' [[' . $optionalColon . $destination->getFullText() . ']]'; if ( $text != '' ) { $redirectText .= "\n" . $text; } $class = $this->getContentClass(); return new $class( $redirectText ); } /** * Returns true because wikitext supports redirects. * * @return bool Always true. * * @see ContentHandler::supportsRedirects */ public function supportsRedirects() { return true; } /** * Returns true because wikitext supports sections. * * @return bool Always true. * * @see ContentHandler::supportsSections */ public function supportsSections() { return true; } /** * Returns true, because wikitext supports caching using the * ParserCache mechanism. * * @since 1.21 * * @return bool Always true. * * @see ContentHandler::isParserCacheSupported */ public function isParserCacheSupported() { return true; } /** * Get file handler * @return FileContentHandler */ protected function getFileHandler() { return new FileContentHandler(); } public function getFieldsForSearchIndex( SearchEngine $engine ) { $fields = parent::getFieldsForSearchIndex( $engine ); $fields['heading'] = $engine->makeSearchFieldMapping( 'heading', SearchIndexField::INDEX_TYPE_TEXT ); $fields['heading']->setFlag( SearchIndexField::FLAG_SCORING ); $fields['auxiliary_text'] = $engine->makeSearchFieldMapping( 'auxiliary_text', SearchIndexField::INDEX_TYPE_TEXT ); $fields['opening_text'] = $engine->makeSearchFieldMapping( 'opening_text', SearchIndexField::INDEX_TYPE_TEXT ); $fields['opening_text']->setFlag( SearchIndexField::FLAG_SCORING | SearchIndexField::FLAG_NO_HIGHLIGHT ); // Until we have full first-class content handler for files, we invoke it explicitly here $fields = array_merge( $fields, $this->getFileHandler()->getFieldsForSearchIndex( $engine ) ); return $fields; } public function getDataForSearchIndex( WikiPage $page, ParserOutput $parserOutput, SearchEngine $engine ) { $fields = parent::getDataForSearchIndex( $page, $parserOutput, $engine ); $structure = new WikiTextStructure( $parserOutput ); $fields['heading'] = $structure->headings(); // text fields $fields['opening_text'] = $structure->getOpeningText(); $fields['text'] = $structure->getMainText(); // overwrites one from ContentHandler $fields['auxiliary_text'] = $structure->getAuxiliaryText(); $fields['defaultsort'] = $structure->getDefaultSort(); // Until we have full first-class content handler for files, we invoke it explicitly here if ( NS_FILE == $page->getTitle()->getNamespace() ) { $fields = array_merge( $fields, $this->getFileHandler()->getDataForSearchIndex( $page, $parserOutput, $engine ) ); } return $fields; } }