From e4314cd49a3e8dd0775a9fca526268a3ec84fbeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edi=20Modri=C4=87?= Date: Thu, 30 Oct 2014 21:15:21 +0100 Subject: [PATCH] Fix EZP-23544: Only log an error if URL with non empty ID is not found in DB --- .../FieldType/Tests/Url/UrlStorageTest.php | 19 +++++++++++++++++++ eZ/Publish/Core/FieldType/Url/UrlStorage.php | 9 +++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/eZ/Publish/Core/FieldType/Tests/Url/UrlStorageTest.php b/eZ/Publish/Core/FieldType/Tests/Url/UrlStorageTest.php index 6f0d5e90591..fd53a3cddb2 100644 --- a/eZ/Publish/Core/FieldType/Tests/Url/UrlStorageTest.php +++ b/eZ/Publish/Core/FieldType/Tests/Url/UrlStorageTest.php @@ -144,6 +144,25 @@ public function testGetFieldDataNotFound() $this->assertEquals( "", $field->value->externalData ); } + public function testGetFieldDataWithEmptyUrlId() + { + $versionInfo = new VersionInfo(); + $fieldValue = new FieldValue( array( "data" => array( "urlId" => null ) ) ); + $field = new Field( array( "id" => 42, "value" => $fieldValue ) ); + $gateway = $this->getGatewayMock(); + + $gateway + ->expects( $this->never() ) + ->method( "getIdUrlMap" ); + + $logger = $this->getLoggerMock(); + $logger + ->expects( $this->never() ) + ->method( "error" ); + + $this->assertEquals( null, $field->value->externalData ); + } + public function testDeleteFieldData() { $versionInfo = new VersionInfo( array( "versionNo" => 24 ) ); diff --git a/eZ/Publish/Core/FieldType/Url/UrlStorage.php b/eZ/Publish/Core/FieldType/Url/UrlStorage.php index 25225062eaf..1462e1e3cc1 100644 --- a/eZ/Publish/Core/FieldType/Url/UrlStorage.php +++ b/eZ/Publish/Core/FieldType/Url/UrlStorage.php @@ -78,10 +78,15 @@ public function storeFieldData( VersionInfo $versionInfo, Field $field, array $c */ public function getFieldData( VersionInfo $versionInfo, Field $field, array $context ) { - /** @var \eZ\Publish\Core\FieldType\Url\UrlStorage\Gateway $gateway */ - $gateway = $this->getGateway( $context ); $id = $field->value->data["urlId"]; + if ( empty( $id ) ) + { + $field->value->externalData = null; + return; + } + /** @var \eZ\Publish\Core\FieldType\Url\UrlStorage\Gateway $gateway */ + $gateway = $this->getGateway( $context ); $map = $gateway->getIdUrlMap( array( $id ) ); // URL id is not in the DB