From 3dc8b859742972399ec8a4fc3a8ab3c465e3577e Mon Sep 17 00:00:00 2001 From: Serhey Dolgushev Date: Thu, 4 Apr 2019 14:13:29 -0400 Subject: [PATCH 1/8] Use RichText validator, instead of eZ\Publish\Core --- bundle/Resources/config/services.yml | 1 + lib/FieldType/XmlText/Converter/RichText.php | 35 ++++++-------------- 2 files changed, 11 insertions(+), 25 deletions(-) diff --git a/bundle/Resources/config/services.yml b/bundle/Resources/config/services.yml index 5de42004..a70f4623 100644 --- a/bundle/Resources/config/services.yml +++ b/bundle/Resources/config/services.yml @@ -39,5 +39,6 @@ services: ezxmltext.richtext_converter: class: eZ\Publish\Core\FieldType\XmlText\Converter\RichText arguments: + - "@ezrichtext.validator.docbook" - "@ezpublish.api.repository" - "@?logger" diff --git a/lib/FieldType/XmlText/Converter/RichText.php b/lib/FieldType/XmlText/Converter/RichText.php index cfd7eba6..8b0ac58b 100644 --- a/lib/FieldType/XmlText/Converter/RichText.php +++ b/lib/FieldType/XmlText/Converter/RichText.php @@ -16,7 +16,7 @@ use Psr\Log\LoggerInterface; use eZ\Publish\Core\FieldType\RichText\Converter\Aggregate; use eZ\Publish\Core\FieldType\RichText\Converter\Xslt; -use eZ\Publish\Core\FieldType\RichText\Validator; +use EzSystems\EzPlatformRichText\eZ\RichText\ValidatorInterface; use eZ\Publish\Core\Base\Exceptions\NotFoundException; use Psr\Log\NullLogger; use Psr\Log\LogLevel; @@ -36,7 +36,7 @@ class RichText implements Converter */ private $imageContentTypes; /** - * @var \eZ\Publish\Core\FieldType\RichText\Validator + * @var ValidatorInterface */ private $validator; @@ -64,17 +64,22 @@ class RichText implements Converter /** * RichText constructor. + * @param null $validator * @param null $apiRepository * @param LoggerInterface|null $logger */ - public function __construct($apiRepository = null, LoggerInterface $logger = null) - { + public function __construct( + ValidatorInterface $validator = null, + $apiRepository = null, + LoggerInterface $logger = null + ) { + $this->validator = $validator; + $this->logger = $logger instanceof LoggerInterface ? $logger : new NullLogger(); $this->imageContentTypes = []; $this->apiRepository = $apiRepository; $this->styleSheets = null; - $this->validator = null; $this->converter = null; $this->customTagsLog = [self::INLINE_CUSTOM_TAG => [], self::BLOCK_CUSTOM_TAG => []]; } @@ -116,31 +121,11 @@ public function setCustomStylesheets(array $customStylesheets = []) $this->converter = null; } - /** - * @param array $customValidators - */ - public function setCustomValidators(array $customValidators = []) - { - $validators = array_merge( - [ - './vendor/ezsystems/ezpublish-kernel/eZ/Publish/Core/FieldType/RichText/Resources/schemas/docbook/ezpublish.rng', - ], - $customValidators, - [ - './vendor/ezsystems/ezpublish-kernel/eZ/Publish/Core/FieldType/RichText/Resources/schemas/docbook/docbook.iso.sch.xsl', - ] - ); - $this->validator = new Validator($validators); - } - protected function getConverter() { if ($this->styleSheets === null) { $this->setCustomStylesheets([]); } - if ($this->validator === null) { - $this->setCustomValidators([]); - } if ($this->converter === null) { $this->converter = new Aggregate( [ From 1228ed521fd63019686795c4e56754fbd7b4f82e Mon Sep 17 00:00:00 2001 From: Serhey Dolgushev Date: Wed, 17 Apr 2019 16:47:21 -0400 Subject: [PATCH 2/8] Validtor can be injected --- bundle/Resources/config/services.yml | 2 +- lib/FieldType/XmlText/Converter/RichText.php | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/bundle/Resources/config/services.yml b/bundle/Resources/config/services.yml index a70f4623..33dd729a 100644 --- a/bundle/Resources/config/services.yml +++ b/bundle/Resources/config/services.yml @@ -39,6 +39,6 @@ services: ezxmltext.richtext_converter: class: eZ\Publish\Core\FieldType\XmlText\Converter\RichText arguments: - - "@ezrichtext.validator.docbook" - "@ezpublish.api.repository" - "@?logger" + - "@ezpublish.fieldType.ezrichtext.validator.docbook" diff --git a/lib/FieldType/XmlText/Converter/RichText.php b/lib/FieldType/XmlText/Converter/RichText.php index 8b0ac58b..c4dcf57f 100644 --- a/lib/FieldType/XmlText/Converter/RichText.php +++ b/lib/FieldType/XmlText/Converter/RichText.php @@ -16,11 +16,12 @@ use Psr\Log\LoggerInterface; use eZ\Publish\Core\FieldType\RichText\Converter\Aggregate; use eZ\Publish\Core\FieldType\RichText\Converter\Xslt; -use EzSystems\EzPlatformRichText\eZ\RichText\ValidatorInterface; +use eZ\Publish\Core\FieldType\RichText\Validator; use eZ\Publish\Core\Base\Exceptions\NotFoundException; use Psr\Log\NullLogger; use Psr\Log\LogLevel; use Symfony\Component\Debug\Exception\ContextErrorException; +use eZ\Publish\Core\SignalSlot\Repository; class RichText implements Converter { @@ -36,7 +37,7 @@ class RichText implements Converter */ private $imageContentTypes; /** - * @var ValidatorInterface + * @var Validator */ private $validator; @@ -64,14 +65,14 @@ class RichText implements Converter /** * RichText constructor. - * @param null $validator * @param null $apiRepository * @param LoggerInterface|null $logger + * @param Validator $validator */ public function __construct( - ValidatorInterface $validator = null, - $apiRepository = null, - LoggerInterface $logger = null + Repository $apiRepository = null, + LoggerInterface $logger = null, + Validator $validator = null ) { $this->validator = $validator; From dfd8bdfc31a2daee884b729ecadde0db362f0f46 Mon Sep 17 00:00:00 2001 From: Serhey Dolgushev Date: Wed, 17 Apr 2019 16:47:55 -0400 Subject: [PATCH 3/8] Use Validator in tests --- .../Converter/EzxmlToDocbookTest.php | 32 +++++++++++-------- .../lib/FieldType/Converter/RichTextTest.php | 16 ++++++++-- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/tests/lib/FieldType/Converter/EzxmlToDocbookTest.php b/tests/lib/FieldType/Converter/EzxmlToDocbookTest.php index f950c117..0ac00c4a 100644 --- a/tests/lib/FieldType/Converter/EzxmlToDocbookTest.php +++ b/tests/lib/FieldType/Converter/EzxmlToDocbookTest.php @@ -8,6 +8,7 @@ */ namespace EzSystems\EzPlatformXmlTextFieldType\Tests\FieldType\Converter; +use eZ\Publish\Core\FieldType\RichText\Validator; use eZ\Publish\Core\FieldType\XmlText\Converter\RichText; use eZ\Publish\Core\SignalSlot\Repository; use eZ\Publish\API\Repository\ContentService; @@ -56,25 +57,30 @@ private function createApiRepositoryStub() */ protected function getConverter($inputFile) { + $validatorSchemas = [ + './vendor/ezsystems/ezpublish-kernel/eZ/Publish/Core/FieldType/RichText/Resources/schemas/docbook/ezpublish.rng', + './vendor/ezsystems/ezpublish-kernel/eZ/Publish/Core/FieldType/RichText/Resources/schemas/docbook/docbook.iso.sch.xsl' + ]; + $apiRepositoryStub = $this->createApiRepositoryStub(); + if (basename($inputFile) === '017-customYoutube.xml') { - $apiRepositoryStub = $this->createApiRepositoryStub(); - $customStylesheets = + $customStylesheets = [ [ - [ - 'path' => __DIR__ . '/Xslt/_fixtures/ezxml/custom_stylesheets/youtube_docbook.xsl', - 'priority' => 100, - ], - ]; - $customValidators = [__DIR__ . '/../../../../tests/lib/FieldType/Converter/Xslt/_fixtures/docbook/custom_schemas/youtube.rng']; - $converter = new RichText($apiRepositoryStub); - $converter->setCustomStylesheets($customStylesheets); - $converter->setCustomValidators($customValidators); + 'path' => __DIR__ . '/Xslt/_fixtures/ezxml/custom_stylesheets/youtube_docbook.xsl', + 'priority' => 100, + ], + ]; + $validatorSchemas[] = __DIR__ . '/../../../../tests/lib/FieldType/Converter/Xslt/_fixtures/docbook/custom_schemas/youtube.rng'; + $validator = new Validator($validatorSchemas); + $converter = new RichText($apiRepositoryStub, null, $validator); + $converter->setCustomStylesheets($customStylesheets); return $converter; } + if ($this->converter === null) { - $apiRepositoryStub = $this->createApiRepositoryStub(); - $this->converter = new RichText($apiRepositoryStub); + $validator = new Validator($validatorSchemas); + $this->converter = new RichText($apiRepositoryStub, null, $validator); } return $this->converter; diff --git a/tests/lib/FieldType/Converter/RichTextTest.php b/tests/lib/FieldType/Converter/RichTextTest.php index 7bb2207c..b8e5cb50 100644 --- a/tests/lib/FieldType/Converter/RichTextTest.php +++ b/tests/lib/FieldType/Converter/RichTextTest.php @@ -19,6 +19,7 @@ use eZ\Publish\API\Repository\Values\Content\Location; use Psr\Log\NullLogger; use eZ\Publish\Core\Base\Exceptions\NotFoundException; +use eZ\Publish\Core\FieldType\RichText\Validator; class RichTextTest extends TestCase { @@ -224,9 +225,10 @@ public function testConvert($inputFilePath, $outputFilePath, $logFilePath) { $apiRepositoryStub = $this->createApiRepositoryStub(); $loggerStub = $this->createLoggerStub($logFilePath); + $validator = $this->getValidator(); $inputDocument = $this->createDocument($inputFilePath); - $richText = new RichText($apiRepositoryStub, $loggerStub); + $richText = new RichText($apiRepositoryStub, $loggerStub, $validator); $richText->setImageContentTypes([27]); $result = $richText->convert($inputDocument, true, true); @@ -252,6 +254,15 @@ public function testConvert($inputFilePath, $outputFilePath, $logFilePath) ); } + public function getValidator() { + return new Validator( + array( + './vendor/ezsystems/ezpublish-kernel/eZ/Publish/Core/FieldType/RichText/Resources/schemas/docbook/ezpublish.rng', + './vendor/ezsystems/ezpublish-kernel/eZ/Publish/Core/FieldType/RichText/Resources/schemas/docbook/docbook.iso.sch.xsl' + ) + ); + } + /** * @param string $inputFilePath * @param string $outputFilePath @@ -261,9 +272,10 @@ public function testConvert($inputFilePath, $outputFilePath, $logFilePath) public function testTagEmbeddedImages($inputFilePath, $outputFilePath) { $apiRepositoryStub = $this->createApiRepositoryStub(); + $validator = $this->getValidator(); $inputDocument = $this->createDocument($inputFilePath); - $richText = new RichText($apiRepositoryStub); + $richText = new RichText($apiRepositoryStub, null, $validator); $richText->setImageContentTypes(array(27)); $richText->tagEmbeddedImages($inputDocument, null); From 38cf3bcbd73bb1cd9d29b4566cbf9126e3e58c8c Mon Sep 17 00:00:00 2001 From: Serhey Dolgushev Date: Wed, 17 Apr 2019 16:51:11 -0400 Subject: [PATCH 4/8] Minor type-hint fix --- lib/FieldType/XmlText/Converter/RichText.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/FieldType/XmlText/Converter/RichText.php b/lib/FieldType/XmlText/Converter/RichText.php index c4dcf57f..9c90d566 100644 --- a/lib/FieldType/XmlText/Converter/RichText.php +++ b/lib/FieldType/XmlText/Converter/RichText.php @@ -65,7 +65,7 @@ class RichText implements Converter /** * RichText constructor. - * @param null $apiRepository + * @param Repository $apiRepository * @param LoggerInterface|null $logger * @param Validator $validator */ From 9d2abae35560fee498b8b47a3510b2418ec6f359 Mon Sep 17 00:00:00 2001 From: Serhey Dolgushev Date: Wed, 17 Apr 2019 17:15:07 -0400 Subject: [PATCH 5/8] CS changes --- tests/lib/FieldType/Converter/EzxmlToDocbookTest.php | 2 +- tests/lib/FieldType/Converter/RichTextTest.php | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/lib/FieldType/Converter/EzxmlToDocbookTest.php b/tests/lib/FieldType/Converter/EzxmlToDocbookTest.php index 0ac00c4a..c649e2cc 100644 --- a/tests/lib/FieldType/Converter/EzxmlToDocbookTest.php +++ b/tests/lib/FieldType/Converter/EzxmlToDocbookTest.php @@ -59,7 +59,7 @@ protected function getConverter($inputFile) { $validatorSchemas = [ './vendor/ezsystems/ezpublish-kernel/eZ/Publish/Core/FieldType/RichText/Resources/schemas/docbook/ezpublish.rng', - './vendor/ezsystems/ezpublish-kernel/eZ/Publish/Core/FieldType/RichText/Resources/schemas/docbook/docbook.iso.sch.xsl' + './vendor/ezsystems/ezpublish-kernel/eZ/Publish/Core/FieldType/RichText/Resources/schemas/docbook/docbook.iso.sch.xsl', ]; $apiRepositoryStub = $this->createApiRepositoryStub(); diff --git a/tests/lib/FieldType/Converter/RichTextTest.php b/tests/lib/FieldType/Converter/RichTextTest.php index b8e5cb50..7d6433dd 100644 --- a/tests/lib/FieldType/Converter/RichTextTest.php +++ b/tests/lib/FieldType/Converter/RichTextTest.php @@ -254,11 +254,12 @@ public function testConvert($inputFilePath, $outputFilePath, $logFilePath) ); } - public function getValidator() { + public function getValidator() + { return new Validator( array( './vendor/ezsystems/ezpublish-kernel/eZ/Publish/Core/FieldType/RichText/Resources/schemas/docbook/ezpublish.rng', - './vendor/ezsystems/ezpublish-kernel/eZ/Publish/Core/FieldType/RichText/Resources/schemas/docbook/docbook.iso.sch.xsl' + './vendor/ezsystems/ezpublish-kernel/eZ/Publish/Core/FieldType/RichText/Resources/schemas/docbook/docbook.iso.sch.xsl', ) ); } From 62a1c3737ea15d256cab29b326a6cc325376e14f Mon Sep 17 00:00:00 2001 From: Serhey Dolgushev Date: Thu, 18 Apr 2019 08:37:05 -0400 Subject: [PATCH 6/8] Use eZ\Publish\API\Repository\Repository in RichText converter, type-hint fixes --- lib/FieldType/XmlText/Converter/RichText.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/FieldType/XmlText/Converter/RichText.php b/lib/FieldType/XmlText/Converter/RichText.php index 9c90d566..7094d4ac 100644 --- a/lib/FieldType/XmlText/Converter/RichText.php +++ b/lib/FieldType/XmlText/Converter/RichText.php @@ -21,7 +21,7 @@ use Psr\Log\NullLogger; use Psr\Log\LogLevel; use Symfony\Component\Debug\Exception\ContextErrorException; -use eZ\Publish\Core\SignalSlot\Repository; +use eZ\Publish\API\Repository\Repository; class RichText implements Converter { @@ -37,10 +37,12 @@ class RichText implements Converter */ private $imageContentTypes; /** - * @var Validator + * @var eZ\Publish\Core\FieldType\RichText\Validator */ private $validator; - + /** + * @var eZ\Publish\API\Repository\Repository + */ private $apiRepository; /** From 052c04e492e5a684f994c44e0cfc0cf67718b746 Mon Sep 17 00:00:00 2001 From: Serhey Dolgushev Date: Thu, 18 Apr 2019 08:49:01 -0400 Subject: [PATCH 7/8] Use absolute classes path in properties type-hint --- lib/FieldType/XmlText/Converter/RichText.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/FieldType/XmlText/Converter/RichText.php b/lib/FieldType/XmlText/Converter/RichText.php index 7094d4ac..25da64e3 100644 --- a/lib/FieldType/XmlText/Converter/RichText.php +++ b/lib/FieldType/XmlText/Converter/RichText.php @@ -37,16 +37,16 @@ class RichText implements Converter */ private $imageContentTypes; /** - * @var eZ\Publish\Core\FieldType\RichText\Validator + * @var \eZ\Publish\Core\FieldType\RichText\Validator */ private $validator; /** - * @var eZ\Publish\API\Repository\Repository + * @var \eZ\Publish\API\Repository\Repository */ private $apiRepository; /** - * @var Psr\Log\LoggerInterface + * @var \Psr\Log\LoggerInterface */ private $logger; From 64e3e6796c4c1ebbf0ca8015fac0d0480e0ac108 Mon Sep 17 00:00:00 2001 From: Serhey Dolgushev Date: Thu, 18 Apr 2019 09:10:12 -0400 Subject: [PATCH 8/8] CS fix --- tests/lib/FieldType/Converter/EzxmlToDocbookTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/lib/FieldType/Converter/EzxmlToDocbookTest.php b/tests/lib/FieldType/Converter/EzxmlToDocbookTest.php index c649e2cc..c733b4e3 100644 --- a/tests/lib/FieldType/Converter/EzxmlToDocbookTest.php +++ b/tests/lib/FieldType/Converter/EzxmlToDocbookTest.php @@ -75,6 +75,7 @@ protected function getConverter($inputFile) $validator = new Validator($validatorSchemas); $converter = new RichText($apiRepositoryStub, null, $validator); $converter->setCustomStylesheets($customStylesheets); + return $converter; }