Update ContentTransformer to access ContentHandler::preLoadTransform through the service. Prepare object to hold a data that required for ContentHandler::preLoadTranform params. This is a fully backwards compatible change. We are doing hard deprecation via MWDebug::detectDeprecatedOverride. However, with the ContentHandler calling Content and Content calling ContentHandler, it doesn't matter whether callers use Content or ContentHandler. This will allow us to naturally convert all callers. Bug: T287157 Change-Id: I89537e1e7d24c6e15252b2b51890a0bd81ea3e6b
71 lines
1.9 KiB
PHP
71 lines
1.9 KiB
PHP
<?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
|
|
* @param ParserOptions $parserOptions
|
|
*
|
|
* @return Content
|
|
*/
|
|
public function preSaveTransform(
|
|
Content $content,
|
|
PageReference $page,
|
|
UserIdentity $user,
|
|
ParserOptions $parserOptions
|
|
): Content {
|
|
$contentHandler = $this->contentHandlerFactory->getContentHandler( $content->getModel() );
|
|
$pstParams = new PreSaveTransformParamsValue( $page, $user, $parserOptions );
|
|
|
|
return $contentHandler->preSaveTransform( $content, $pstParams );
|
|
}
|
|
|
|
/**
|
|
* 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 );
|
|
}
|
|
}
|