/**
* @param array $fieldIds
* @param array $context
*
* @return boolean
*/
public function deleteFieldData(VersionInfo $versionInfo, array $fieldIds, array $context)
{
/** @var \eZ\Publish\Core\FieldType\Image\ImageStorage\Gateway $gateway */
$gateway = $this->getGateway($context);
$fieldXmls = $gateway->getXmlForImages($versionInfo->versionNo, $fieldIds);
foreach ($fieldXmls as $fieldId => $xml) {
$storedFiles = $this->extractFiles($xml);
if ($storedFiles === null) {
continue;
}
if ($this->aliasCleaner) {
$this->aliasCleaner->removeAliases($this->IOService->getExternalPath($storedFiles['original']));
}
foreach ($storedFiles as $storedFilePath) {
$gateway->removeImageReferences($storedFilePath, $versionInfo->versionNo, $fieldId);
if ($gateway->countImageReferences($storedFilePath) === 0) {
try {
$binaryFile = $this->IOService->loadBinaryFile($storedFilePath);
$this->IOService->deleteBinaryFile($binaryFile);
} catch (NotFoundException $e) {
if (isset($this->logger)) {
$this->logger->error("Image with id {$storedFilePath} not found");
}
}
}
}
}
}