/** * {@inheritdoc} */ public function denormalize($data, $class, $format = null, array $context = []) { if (empty($data)) { return null; } return $this->repository->findOneByIdentifier($data['filePath']); }
/** * {@inheritdoc} */ public function denormalize($data, $class, $format = null, array $context = []) { if (null === $data || '' === $data) { return null; } if (is_file($data)) { return $this->storer->store(new \SplFileInfo($data), FileStorage::CATALOG_STORAGE_ALIAS); } return $this->repository->findOneByIdentifier($data); }
/** * {@inheritdoc} * * Expected data input format : * { * "originalFilename": "original_filename.extension", * "filePath": "/absolute/file/path/filename.extension" * } */ public function setAttributeData(ProductInterface $product, AttributeInterface $attribute, $data, array $options = []) { $options = $this->resolver->resolve($options); $this->checkLocaleAndScope($attribute, $options['locale'], $options['scope'], 'media'); $this->checkData($attribute, $data); if (null === $data || empty($data['filePath'])) { $file = null; } elseif (null === ($file = $this->repository->findOneByIdentifier($data['filePath']))) { $file = $this->storeFile($attribute, $data); } $this->setMedia($product, $attribute, $file, $options['locale'], $options['scope']); }
/** * @param Request $request * @param string $filename * @param string $filter * * @return RedirectResponse */ public function showAction(Request $request, $filename, $filter = null) { $filename = urldecode($filename); if (self::DEFAULT_IMAGE_KEY === $filename) { return $this->renderDefaultImage(FileTypes::MISC, $filter); } $file = $this->fileRepository->findOneByIdentifier($filename); if (null !== $file) { if (FileTypes::IMAGE === ($fileType = $this->fileTypeGuesser->guess($file->getMimeType()))) { try { return $this->imagineController->filterAction($request, $filename, $filter); } catch (NotFoundHttpException $e) { return $this->renderDefaultImage(FileTypes::IMAGE, $filter); } } return $this->renderDefaultImage($fileType, $filter); } return $this->renderDefaultImage(FileTypes::MISC, $filter); }
/** * {@inheritdoc} */ public function compare($data, $originals) { $default = ['locale' => null, 'scope' => null, 'data' => ['filePath' => null]]; $originals = array_merge($default, $originals); // compare a local file and a stored file (can happen during an import for instance) if (isset($data['data']['filePath']) && isset($originals['data']['filePath']) && is_file($data['data']['filePath'])) { $originalFile = $this->repository->findOneByIdentifier($originals['data']['filePath']); if (null !== $originalFile && $originalFile->getHash() === $this->getHashFile($data['data']['filePath'])) { return null; } } // compare the two stored files by their filepaths if (isset($data['data']['filePath']) && isset($originals['data']['filePath']) && $data['data']['filePath'] === $originals['data']['filePath']) { return null; } // compare the two stored files by their hashes if (isset($data['data']['hash']) && isset($originals['data']['hash']) && $data['data']['hash'] === $originals['data']['hash']) { return null; } if (!isset($data['data']['filePath']) && !isset($originals['data']['filePath'])) { return null; } return $data; }