* type), but wikitext content may be represented by a DOM or AST structure in
* the future.
*
+ * 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
+ *
+ * @author Daniel Kinzler
*/
abstract class ContentHandler {
*
* @since 1.21
*
- * @static
* @param $content Content|null
* @return null|string the textual form of $content, if available
* @throws MWException if $content is not an instance of TextContent and
return $content->getNativeData();
}
+ wfDebugLog( 'ContentHandler', 'Accessing ' . $content->getModel() . ' content as text!' );
+
if ( $wgContentHandlerTextFallback == 'fail' ) {
throw new MWException(
"Attempt to get text from Content with model " .
*
* @since 1.21
*
- * @static
- *
* @param $text string the textual representation, will be
* unserialized to create the Content object
* @param $title null|Title the title of the page this text belongs to.
*
* @since 1.21
*
- * @static
* @param $title Title
* @return null|string default model name for the page given by $title
*/
*
* @since 1.21
*
- * @static
* @param $title Title
* @return ContentHandler
*/
*
* @since 1.21
*
- * @static
* @param $content Content
* @return ContentHandler
*/
*
* @since 1.21
*
- * @static
* @param $modelId String The ID of the content model for which to get a
* handler. Use CONTENT_MODEL_XXX constants.
* @return ContentHandler The ContentHandler singleton for handling the
}
}
+ wfDebugLog( 'ContentHandler', 'Created handler for ' . $modelId
+ . ': ' . get_class( $handler ) );
+
ContentHandler::$handlers[$modelId] = $handler;
return ContentHandler::$handlers[$modelId];
}
* Model names are localized using system messages. Message keys
* have the form content-model-$name, where $name is getContentModelName( $id ).
*
- * @static
* @param $name String The content model ID, as given by a CONTENT_MODEL_XXX
* constant or returned by Revision::getContentModel().
*
*
* @since 1.21
*
- * @abstract
* @param $content Content The Content object to serialize
* @param $format null|String The desired serialization format
* @return string Serialized form of the content
*
* @since 1.21
*
- * @abstract
* @param $blob string serialized form of the content
* @param $format null|String the format used for serialization
* @return Content the Content object created by deserializing $blob
$rcid = 0, # FIXME: use everywhere!
$refreshCache = false, $unhide = false
) {
- $this->checkModelID( $context->getTitle()->getContentModel() );
-
$diffEngineClass = $this->getDiffEngineClass();
return new $diffEngineClass( $context, $old, $new, $rcid, $refreshCache, $unhide );
* @return Language the page's language
*/
public function getPageLanguage( Title $title, Content $content = null ) {
- global $wgContLang;
+ global $wgContLang, $wgLang;
+ $pageLang = $wgContLang;
if ( $title->getNamespace() == NS_MEDIAWIKI ) {
// Parse mediawiki messages with correct target language
list( /* $unused */, $lang ) = MessageCache::singleton()->figureMessage( $title->getText() );
- return wfGetLangObj( $lang );
+ $pageLang = wfGetLangObj( $lang );
}
- return $wgContLang;
+ wfRunHooks( 'PageContentLanguage', array( $title, &$pageLang, $wgLang ) );
+ return wfGetLangObj( $pageLang );
}
/**
$content = $rev->getContent();
$blank = false;
- $this->checkModelID( $content->getModel() );
-
// If the page is blank, use the text from the previous revision,
// which can only be blank if there's a move/import/protect dummy
// revision involved
- if ( $content->getSize() == 0 ) {
+ if ( !$content || $content->isEmpty() ) {
$prev = $rev->getPrevious();
- if ( $prev ) {
- $content = $prev->getContent();
+ if ( $prev ) {
+ $rev = $prev;
+ $content = $rev->getContent();
$blank = true;
}
}
+ $this->checkModelID( $rev->getContentModel() );
+
// Find out if there was only one contributor
// Only scan the last 20 revisions
$res = $dbw->select( 'revision', 'rev_user_text',
}
// Max content length = max comment length - length of the comment (excl. $1)
- $text = $content->getTextForSummary( 255 - ( strlen( $reason ) - 2 ) );
+ $text = $content ? $content->getTextForSummary( 255 - ( strlen( $reason ) - 2 ) ) : '';
// Now replace the '$1' placeholder
$reason = str_replace( '$1', $text, $reason );