wiki.techinc.nl/includes/content/TextContentHandler.php
Antoine Musso 42a8daaf5a (bug 26280) all files should have GPL header
MediaWiki is licensed under GPL so we should really add the header to
our PHP code unless reusing code licensed differently.

Tested using:
  ack-grep --php -L 'This program is free software' \
    includes/ maintenance/ mw-config/ resources/ skins/

Output the following files:
 includes/ExternalEdit.php (public domain)

Various other licenses:
 includes/json/Services_JSON.php
 includes/libs/CSSMin.php
 includes/libs/IEContentAnalyzer.php
 includes/libs/JavaScriptMinifier.php
 includes/libs/jsminplus.php
 includes/normal/Utf8Case.php
 includes/objectcache/MemcachedClient.php

File autogenerated from a GPL file and Unicode data:
 includes/ZhConversion.php

A few lines coming from stack overflow:
 maintenance/mwdoc-filter.php

Message files do not have any license :-/

Change-Id: I214a988edfa9e2dfcc762612a0f7d47eee8bcb74
2012-11-18 15:34:00 +01:00

108 lines
3 KiB
PHP

<?php
/**
* 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
*
* @file
*/
/**
* @since 1.21
*/
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( '' );
}
}