eZ\Publish\Core\FieldType\Image\PathGenerator::getStoragePathForField PHP Method

getStoragePathForField() abstract public method

Returns a relative storage path.
abstract public getStoragePathForField ( mixed $fieldId, integer $versionNo, string $languageCode ) : string
$fieldId mixed
$versionNo integer
$languageCode string
return string
    public abstract function getStoragePathForField($fieldId, $versionNo, $languageCode);

Usage Example

 public function storeFieldData(VersionInfo $versionInfo, Field $field, array $context)
 {
     $contentMetaData = array('fieldId' => $field->id, 'versionNo' => $versionInfo->versionNo, 'languageCode' => $field->languageCode);
     // new image
     if (isset($field->value->externalData)) {
         $targetPath = sprintf('%s/%s', $this->pathGenerator->getStoragePathForField($field->id, $versionInfo->versionNo, $field->languageCode), $field->value->externalData['fileName']);
         if (isset($field->value->externalData['id'])) {
             $binaryFile = $this->IOService->loadBinaryFile($field->value->externalData['id']);
         } else {
             if ($this->IOService->exists($targetPath)) {
                 $binaryFile = $this->IOService->loadBinaryFile($targetPath);
             } else {
                 if (isset($field->value->externalData['inputUri'])) {
                     $localFilePath = $field->value->externalData['inputUri'];
                     unset($field->value->externalData['inputUri']);
                     $binaryFileCreateStruct = $this->IOService->newBinaryCreateStructFromLocalFile($localFilePath);
                     $binaryFileCreateStruct->id = $targetPath;
                     $binaryFile = $this->IOService->createBinaryFile($binaryFileCreateStruct);
                     $imageSize = getimagesize($localFilePath);
                     $field->value->externalData['width'] = $imageSize[0];
                     $field->value->externalData['height'] = $imageSize[1];
                 } else {
                     throw new InvalidArgumentException("inputUri", "No source image could be obtained from the given external data");
                 }
             }
         }
         $field->value->externalData['imageId'] = $versionInfo->contentInfo->id . '-' . $field->id;
         $field->value->externalData['uri'] = $binaryFile->uri;
         $field->value->externalData['id'] = $binaryFile->id;
         $field->value->externalData['mime'] = $this->IOService->getMimeType($binaryFile->id);
         $field->value->data = array_merge($field->value->externalData, $contentMetaData);
         $field->value->externalData = null;
     } else {
         if ($field->value->data === null) {
             // Store empty value only with content meta data
             $field->value->data = $contentMetaData;
             return false;
         }
         $this->IOService->loadBinaryFile($field->value->data['id']);
         $field->value->data = array_merge($field->value->data, $contentMetaData);
         $field->value->externalData = null;
     }
     $this->getGateway($context)->storeImageReference($field->value->data['uri'], $field->id);
     // Data has been updated and needs to be stored!
     return true;
 }
All Usage Examples Of eZ\Publish\Core\FieldType\Image\PathGenerator::getStoragePathForField