checkFormat( $format ); return $content->getNativeData(); } /** * Attempts to merge differences between three versions. Returns a new * Content object for a clean merge and false for failure or a conflict. * * All three Content objects passed as parameters must have the same * content model. * * This text-based implementation uses wfMerge(). * * @param Content $oldContent The page's previous content. * @param Content $myContent One of the page's conflicting contents. * @param Content $yourContent One of the page's conflicting contents. * * @return Content|bool */ public function merge3( Content $oldContent, Content $myContent, Content $yourContent ) { $this->checkModelID( $oldContent->getModel() ); $this->checkModelID( $myContent->getModel() ); $this->checkModelID( $yourContent->getModel() ); $format = $this->getDefaultFormat(); $old = $this->serializeContent( $oldContent, $format ); $mine = $this->serializeContent( $myContent, $format ); $yours = $this->serializeContent( $yourContent, $format ); $ok = wfMerge( $old, $mine, $yours, $result ); if ( !$ok ) { return false; } if ( !$result ) { return $this->makeEmptyContent(); } $mergedContent = $this->unserializeContent( $result, $format ); return $mergedContent; } /** * Returns the name of the associated Content class, to * be used when creating new objects. Override expected * by subclasses. * * @since 1.24 * * @return string */ protected function getContentClass() { return 'TextContent'; } /** * Unserializes a Content object of the type supported by this ContentHandler. * * @since 1.21 * * @param string $text Serialized form of the content * @param string $format The format used for serialization * * @return Content The TextContent object wrapping $text */ public function unserializeContent( $text, $format = null ) { $this->checkFormat( $format ); $class = $this->getContentClass(); return new $class( $text ); } /** * Creates an empty TextContent object. * * @since 1.21 * * @return Content A new TextContent object with empty text. */ public function makeEmptyContent() { $class = $this->getContentClass(); return new $class( '' ); } /** * @see ContentHandler::supportsDirectEditing * * @return bool Default is true for TextContent and derivatives. */ public function supportsDirectEditing() { return true; } }