* @return bool
*/
public function importRevision( $revision ) {
- if ( !$revision->getContent()->getContentHandler()->canBeUsedOn( $revision->getTitle() ) ) {
+ if ( !$revision->getContentHandler()->canBeUsedOn( $revision->getTitle() ) ) {
$this->notice( 'import-error-bad-location',
$revision->getTitle()->getPrefixedText(),
$revision->getID(),
if ( isset( $revisionInfo['id'] ) ) {
$revision->setID( $revisionInfo['id'] );
}
- if ( isset( $revisionInfo['text'] ) ) {
- $revision->setText( $revisionInfo['text'] );
- }
if ( isset( $revisionInfo['model'] ) ) {
$revision->setModel( $revisionInfo['model'] );
}
}
$revision->setTitle( $pageInfo['_title'] );
+ if ( isset( $revisionInfo['text'] ) ) {
+ $handler = $revision->getContentHandler();
+ $text = $handler->importTransform(
+ $revisionInfo['text'],
+ $revision->getFormat() );
+
+ $revision->setText( $text );
+ }
if ( isset( $revisionInfo['timestamp'] ) ) {
$revision->setTimestamp( $revisionInfo['timestamp'] );
} else {
/** @var Content */
protected $content = null;
+ /** @var ContentHandler */
+ protected $contentHandler = null;
+
/** @var string */
public $comment = "";
return $this->text;
}
+ /**
+ * @return ContentHandler
+ */
+ function getContentHandler() {
+ if ( is_null( $this->contentHandler ) ) {
+ $this->contentHandler = ContentHandler::getForModelID( $this->getModel() );
+ }
+
+ return $this->contentHandler;
+ }
+
/**
* @return Content
*/
function getContent() {
if ( is_null( $this->content ) ) {
- $this->content =
- ContentHandler::makeContent(
- $this->text,
- $this->getTitle(),
- $this->getModel(),
- $this->getFormat()
- );
+ $handler = $this->getContentHandler();
+ $this->content = $handler->unserializeContent( $this->text, $this->getFormat() );
}
return $this->content;
* @return string
*/
function getFormat() {
- if ( is_null( $this->model ) ) {
- $this->format = ContentHandler::getForTitle( $this->getTitle() )->getDefaultFormat();
+ if ( is_null( $this->format ) ) {
+ $this->format = $this->getContentHandler()->getDefaultFormat();
}
return $this->format;
*/
abstract public function unserializeContent( $blob, $format = null );
+ /**
+ * Apply import transformation (per default, returns $blob unchanged).
+ * This gives subclasses an opportunity to transform data blobs on import.
+ *
+ * @singe 1.24
+ *
+ * @param string $blob
+ * @param string|null $format
+ *
+ * @return string
+ */
+ public function importTransform( $blob, $format = null ) {
+ return $blob;
+ }
+
/**
* Creates an empty Content object of the type supported by this
* ContentHandler.