diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2013-08-12 09:28:15 +0200 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2013-08-12 09:28:15 +0200 |
commit | 08aa4418c30cfc18ccc69a0f0f9cb9e17be6c196 (patch) | |
tree | 577a29fb579188d16003a209ce2a2e9c5b0aa2bd /includes/content/TextContentHandler.php | |
parent | cacc939b34e315b85e2d72997811eb6677996cc1 (diff) |
Update to MediaWiki 1.21.1
Diffstat (limited to 'includes/content/TextContentHandler.php')
-rw-r--r-- | includes/content/TextContentHandler.php | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/includes/content/TextContentHandler.php b/includes/content/TextContentHandler.php new file mode 100644 index 00000000..e7f41e18 --- /dev/null +++ b/includes/content/TextContentHandler.php @@ -0,0 +1,115 @@ +<?php +/** + * Base content handler class for flat text contents. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @since 1.21 + * + * @file + * @ingroup Content + */ + +/** + * Base content handler implementation for flat text contents. + * + * @ingroup Content + */ +class TextContentHandler extends ContentHandler { + + public function __construct( $modelId = CONTENT_MODEL_TEXT, $formats = array( CONTENT_FORMAT_TEXT ) ) { + parent::__construct( $modelId, $formats ); + } + + /** + * Returns the content's text as-is. + * + * @param $content Content + * @param $format string|null + * @return mixed + */ + public function serializeContent( Content $content, $format = null ) { + $this->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 $oldContent Content|string String + * @param $myContent Content|string String + * @param $yourContent Content|string String + * + * @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; + } + + /** + * Unserializes a Content object of the type supported by this ContentHandler. + * + * @since 1.21 + * + * @param $text string serialized form of the content + * @param $format null|String the format used for serialization + * + * @return Content the TextContent object wrapping $text + */ + public function unserializeContent( $text, $format = null ) { + $this->checkFormat( $format ); + + return new TextContent( $text ); + } + + /** + * Creates an empty TextContent object. + * + * @since 1.21 + * + * @return Content + */ + public function makeEmptyContent() { + return new TextContent( '' ); + } +} |