diff --git a/.travis.yml b/.travis.yml index bd79535b..58c77013 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,18 +2,12 @@ language: php matrix: include: - - php: 5.4 - env: TEST_CONFIG="phpunit.xml" - - php: 5.5 - env: TEST_CONFIG="phpunit.xml" - php: 5.6 env: TEST_CONFIG="phpunit.xml" - php: 7.0 env: TEST_CONFIG="phpunit.xml" - php: 7.1 env: TEST_CONFIG="phpunit.xml" - - php: 5.5 - env: TEST_CONFIG="phpunit-integration-legacy.xml" - php: 5.6 env: TEST_CONFIG="phpunit-integration-legacy.xml" - php: 7.1 diff --git a/composer.json b/composer.json index 4420d6a4..fb2460c5 100644 --- a/composer.json +++ b/composer.json @@ -11,7 +11,7 @@ ], "minimum-stability": "alpha", "require": { - "ezsystems/ezpublish-kernel": "^6.0@dev" + "ezsystems/ezpublish-kernel": "^6.11@dev" }, "require-dev": { "phpunit/phpunit": "~4.7", @@ -31,7 +31,7 @@ }, "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.3.x-dev" } } } diff --git a/lib/FieldType/XmlText/XmlTextStorage.php b/lib/FieldType/XmlText/XmlTextStorage.php index c0cc7fb3..87dc4535 100644 --- a/lib/FieldType/XmlText/XmlTextStorage.php +++ b/lib/FieldType/XmlText/XmlTextStorage.php @@ -10,7 +10,7 @@ */ namespace eZ\Publish\Core\FieldType\XmlText; -use eZ\Publish\Core\FieldType\GatewayBasedStorage; +use eZ\Publish\SPI\FieldType\GatewayBasedStorage; use eZ\Publish\SPI\Persistence\Content\VersionInfo; use eZ\Publish\SPI\Persistence\Content\Field; @@ -21,7 +21,7 @@ class XmlTextStorage extends GatewayBasedStorage */ public function storeFieldData(VersionInfo $versionInfo, Field $field, array $context) { - $update = $this->getGateway($context)->storeFieldData($versionInfo, $field); + $update = $this->gateway->storeFieldData($versionInfo, $field); if ($update) { return true; @@ -37,16 +37,13 @@ public function storeFieldData(VersionInfo $versionInfo, Field $field, array $co */ public function getFieldData(VersionInfo $versionInfo, Field $field, array $context) { - $this->getGateway($context)->getFieldData($field); + $this->gateway->getFieldData($field); } public function deleteFieldData(VersionInfo $versionInfo, array $fieldIds, array $context) { - /** @var \eZ\Publish\Core\FieldType\XmlText\XmlTextStorage\Gateway $gateway */ - $gateway = $this->getGateway($context); - foreach ($fieldIds as $fieldId) { - $gateway->unlinkUrl($fieldId, $versionInfo->versionNo); + $this->gateway->unlinkUrl($fieldId, $versionInfo->versionNo); } } diff --git a/lib/FieldType/XmlText/XmlTextStorage/Gateway.php b/lib/FieldType/XmlText/XmlTextStorage/Gateway.php index 0bad36b0..84a5cdca 100644 --- a/lib/FieldType/XmlText/XmlTextStorage/Gateway.php +++ b/lib/FieldType/XmlText/XmlTextStorage/Gateway.php @@ -10,7 +10,7 @@ */ namespace eZ\Publish\Core\FieldType\XmlText\XmlTextStorage; -use eZ\Publish\Core\FieldType\StorageGateway; +use eZ\Publish\SPI\FieldType\StorageGateway; use eZ\Publish\SPI\Persistence\Content\Field; use eZ\Publish\SPI\Persistence\Content\VersionInfo; use eZ\Publish\Core\FieldType\Url\UrlStorage\Gateway as UrlGateway; diff --git a/lib/FieldType/XmlText/XmlTextStorage/Gateway/LegacyStorage.php b/lib/FieldType/XmlText/XmlTextStorage/Gateway/LegacyStorage.php index af8d2846..7e229814 100644 --- a/lib/FieldType/XmlText/XmlTextStorage/Gateway/LegacyStorage.php +++ b/lib/FieldType/XmlText/XmlTextStorage/Gateway/LegacyStorage.php @@ -15,50 +15,22 @@ use eZ\Publish\Core\Persistence\Database\DatabaseHandler; use eZ\Publish\SPI\Persistence\Content\VersionInfo; use eZ\Publish\SPI\Persistence\Content\Field; +use eZ\Publish\Core\FieldType\Url\UrlStorage\Gateway as UrlGateway; use DOMDocument; use PDO; -use RuntimeException; class LegacyStorage extends Gateway { - protected $dbHandler; - /** - * Set database handler for this gateway. - * - * @param mixed $dbHandler - * - * @throws RuntimeException if $dbHandler is not an instance of - * {@link \eZ\Publish\Core\Persistence\Database\DatabaseHandler} + * @var \eZ\Publish\Core\Persistence\Database\DatabaseHandler */ - public function setConnection($dbHandler) - { - // This obviously violates the Liskov substitution Principle, but with - // the given class design there is no sane other option. Actually the - // dbHandler *should* be passed to the constructor, and there should - // not be the need to post-inject it. - if (!$dbHandler instanceof DatabaseHandler) { - throw new RuntimeException('Invalid dbHandler passed'); - } - - $this->urlGateway->setConnection($dbHandler); - $this->dbHandler = $dbHandler; - } + protected $dbHandler; - /** - * Returns the active connection. - * - * @throws RuntimeException if no connection has been set, yet. - * - * @return DatabaseHandler - */ - protected function getConnection() + public function __construct(DatabaseHandler $dbHandler, UrlGateway $urlGateway) { - if ($this->dbHandler === null) { - throw new RuntimeException('Missing database connection.'); - } + parent::__construct($urlGateway); - return $this->dbHandler; + $this->dbHandler = $dbHandler; } /** @@ -237,7 +209,7 @@ protected function getObjectId(array $linksRemoteIds) if (!empty($linksRemoteIds)) { /** @var $q \eZ\Publish\Core\Persistence\Database\SelectQuery */ - $q = $this->getConnection()->createSelectQuery(); + $q = $this->dbHandler->createSelectQuery(); $q ->select('id', 'remote_id') ->from('ezcontentobject') diff --git a/lib/settings/fieldtype_external_storages.yml b/lib/settings/fieldtype_external_storages.yml index 89724269..de5a4105 100644 --- a/lib/settings/fieldtype_external_storages.yml +++ b/lib/settings/fieldtype_external_storages.yml @@ -4,5 +4,7 @@ parameters: services: ezpublish.fieldType.ezxmltext.externalStorage: class: "%ezpublish.fieldType.ezxmltext.externalStorage.class%" + arguments: + - "@ezpublish.fieldType.ezxmltext.storage_gateway" tags: - {name: ezpublish.fieldType.externalStorageHandler, alias: ezxmltext} diff --git a/lib/settings/storage_engines/legacy/external_storage_gateways.yml b/lib/settings/storage_engines/legacy/external_storage_gateways.yml index 59e91b52..61996fe1 100644 --- a/lib/settings/storage_engines/legacy/external_storage_gateways.yml +++ b/lib/settings/storage_engines/legacy/external_storage_gateways.yml @@ -4,6 +4,6 @@ parameters: services: ezpublish.fieldType.ezxmltext.storage_gateway: class: "%ezpublish.fieldType.ezxmltext.storage_gateway.class%" - arguments: ["@ezpublish.fieldType.ezurl.storage_gateway"] - tags: - - {name: ezpublish.fieldType.externalStorageHandler.gateway, alias: ezxmltext, identifier: LegacyStorage} + arguments: + - "@ezpublish.api.storage_engine.legacy.dbhandler" + - "@ezpublish.fieldType.ezurl.storage_gateway" diff --git a/tests/lib/XmlTextSPIIntegrationTest.php b/tests/lib/XmlTextSPIIntegrationTest.php index 4c87b8b3..cc04fc70 100644 --- a/tests/lib/XmlTextSPIIntegrationTest.php +++ b/tests/lib/XmlTextSPIIntegrationTest.php @@ -66,8 +66,11 @@ public function getCustomHandler() $fieldType, new XmlTextConverter(), new FieldType\XmlText\XmlTextStorage( - array( - 'LegacyStorage' => new LegacyStorage(new UrlGateway()), + new LegacyStorage( + $this->getDatabaseHandler(), + new UrlGateway( + $this->getDatabaseHandler() + ) ) ) );