Synchronization.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\MediaStorage\Model\File\Storage;
  7. use Magento\Framework\Exception\FileSystemException;
  8. use Magento\Framework\Filesystem\Directory\WriteInterface as DirectoryWrite;
  9. use Magento\Framework\Filesystem\File\WriteInterface;
  10. use Magento\MediaStorage\Service\ImageResize;
  11. use Magento\MediaStorage\Model\File\Storage\Database;
  12. /**
  13. * Class Synchronization
  14. */
  15. class Synchronization
  16. {
  17. /**
  18. * Database storage factory
  19. *
  20. * @var DatabaseFactory
  21. */
  22. protected $storageFactory;
  23. /**
  24. * File stream handler
  25. *
  26. * @var DirectoryWrite
  27. */
  28. protected $mediaDirectory;
  29. /**
  30. * @param DatabaseFactory $storageFactory
  31. * @param DirectoryWrite $directory
  32. */
  33. public function __construct(
  34. DatabaseFactory $storageFactory,
  35. DirectoryWrite $directory
  36. ) {
  37. $this->storageFactory = $storageFactory;
  38. $this->mediaDirectory = $directory;
  39. }
  40. /**
  41. * Synchronize file
  42. *
  43. * @param string $relativeFileName
  44. * @return void
  45. * @throws \LogicException
  46. */
  47. public function synchronize($relativeFileName)
  48. {
  49. /** @var $storage Database */
  50. $storage = $this->storageFactory->create();
  51. try {
  52. $storage->loadByFilename($relativeFileName);
  53. } catch (\Exception $e) {
  54. }
  55. if ($storage->getId()) {
  56. /** @var WriteInterface $file */
  57. $file = $this->mediaDirectory->openFile($relativeFileName, 'w');
  58. try {
  59. $file->lock();
  60. $file->write($storage->getContent());
  61. $file->unlock();
  62. $file->close();
  63. } catch (FileSystemException $e) {
  64. $file->close();
  65. }
  66. }
  67. }
  68. }