2021-07-21 01:03:59 +00:00
|
|
|
<?php
|
|
|
|
|
namespace MediaWiki\Content\Transform;
|
|
|
|
|
|
|
|
|
|
use Content;
|
|
|
|
|
use MediaWiki\Content\IContentHandlerFactory;
|
|
|
|
|
use MediaWiki\Page\PageReference;
|
|
|
|
|
use MediaWiki\User\UserIdentity;
|
|
|
|
|
use ParserOptions;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* A service to transform content.
|
|
|
|
|
*
|
|
|
|
|
* @since 1.37
|
|
|
|
|
*/
|
|
|
|
|
class ContentTransformer {
|
|
|
|
|
/** @var IContentHandlerFactory */
|
|
|
|
|
private $contentHandlerFactory;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param IContentHandlerFactory $contentHandlerFactory
|
|
|
|
|
*/
|
|
|
|
|
public function __construct( IContentHandlerFactory $contentHandlerFactory ) {
|
|
|
|
|
$this->contentHandlerFactory = $contentHandlerFactory;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns a Content object with pre-save transformations applied (or $content
|
|
|
|
|
* if no transformations apply).
|
|
|
|
|
*
|
|
|
|
|
* @param Content $content
|
|
|
|
|
* @param PageReference $page
|
|
|
|
|
* @param UserIdentity $user
|
2021-08-11 19:28:45 +00:00
|
|
|
* @param ParserOptions $parserOptions
|
2021-07-21 01:03:59 +00:00
|
|
|
*
|
|
|
|
|
* @return Content
|
|
|
|
|
*/
|
|
|
|
|
public function preSaveTransform(
|
|
|
|
|
Content $content,
|
|
|
|
|
PageReference $page,
|
|
|
|
|
UserIdentity $user,
|
2021-08-11 19:28:45 +00:00
|
|
|
ParserOptions $parserOptions
|
2021-07-21 01:03:59 +00:00
|
|
|
): Content {
|
|
|
|
|
$contentHandler = $this->contentHandlerFactory->getContentHandler( $content->getModel() );
|
2021-08-11 19:28:45 +00:00
|
|
|
$pstParams = new PreSaveTransformParamsValue( $page, $user, $parserOptions );
|
2021-07-21 01:03:59 +00:00
|
|
|
|
|
|
|
|
return $contentHandler->preSaveTransform( $content, $pstParams );
|
|
|
|
|
}
|
2021-08-09 13:39:19 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns a Content object with preload transformations applied (or $content
|
|
|
|
|
* if no transformations apply).
|
|
|
|
|
*
|
|
|
|
|
* @param Content $content
|
|
|
|
|
* @param PageReference $page
|
|
|
|
|
* @param ParserOptions $parserOptions
|
|
|
|
|
* @param array $params
|
|
|
|
|
*
|
|
|
|
|
* @return Content
|
|
|
|
|
*/
|
|
|
|
|
public function preloadTransform(
|
|
|
|
|
Content $content,
|
|
|
|
|
PageReference $page,
|
|
|
|
|
ParserOptions $parserOptions,
|
|
|
|
|
array $params = []
|
|
|
|
|
): Content {
|
|
|
|
|
$contentHandler = $this->contentHandlerFactory->getContentHandler( $content->getModel() );
|
|
|
|
|
$pltParams = new PreloadTransformParamsValue( $page, $parserOptions, $params );
|
|
|
|
|
|
|
|
|
|
return $contentHandler->preloadTransform( $content, $pltParams );
|
|
|
|
|
}
|
2021-07-21 01:03:59 +00:00
|
|
|
}
|