Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Show.php
Go to the documentation of this file.
1 <?php
7 
9 
14 {
20  const ADMIN_RESOURCE = 'Magento_Swatches::iframe';
21 
27  protected $swatchHelper;
28 
32  protected $adapterFactory;
33 
37  protected $config;
38 
42  protected $filesystem;
43 
47  protected $uploaderFactory;
48 
57  public function __construct(
58  \Magento\Backend\App\Action\Context $context,
59  \Magento\Swatches\Helper\Media $swatchHelper,
60  \Magento\Framework\Image\AdapterFactory $adapterFactory,
61  \Magento\Catalog\Model\Product\Media\Config $config,
62  \Magento\Framework\Filesystem $filesystem,
63  \Magento\MediaStorage\Model\File\UploaderFactory $uploaderFactory
64  ) {
65  $this->swatchHelper = $swatchHelper;
66  $this->adapterFactory = $adapterFactory;
67  $this->config = $config;
68  $this->filesystem = $filesystem;
69  $this->uploaderFactory = $uploaderFactory;
70  parent::__construct($context);
71  }
72 
78  public function execute()
79  {
80  try {
81  $uploader = $this->uploaderFactory->create(['fileId' => 'datafile']);
82  $uploader->setAllowedExtensions(['jpg', 'jpeg', 'gif', 'png']);
84  $imageAdapter = $this->adapterFactory->create();
85  $uploader->addValidateCallback('catalog_product_image', $imageAdapter, 'validateUploadFile');
86  $uploader->setAllowRenameFiles(true);
87  $uploader->setFilesDispersion(true);
89  $mediaDirectory = $this->filesystem->getDirectoryRead(DirectoryList::MEDIA);
91  $result = $uploader->save($mediaDirectory->getAbsolutePath($config->getBaseTmpMediaPath()));
92  unset($result['path']);
93 
94  $this->_eventManager->dispatch(
95  'swatch_gallery_upload_image_after',
96  ['result' => $result, 'action' => $this]
97  );
98 
99  unset($result['tmp_name']);
100 
101  $result['url'] = $this->config->getTmpMediaUrl($result['file']);
102  $result['file'] = $result['file'] . '.tmp';
103 
104  $newFile = $this->swatchHelper->moveImageFromTmp($result['file']);
105  $this->swatchHelper->generateSwatchVariations($newFile);
106  $fileData = ['swatch_path' => $this->swatchHelper->getSwatchMediaUrl(), 'file_path' => $newFile];
107  $this->getResponse()->setBody(json_encode($fileData));
108  } catch (\Exception $e) {
109  $result = ['error' => $e->getMessage(), 'errorcode' => $e->getCode()];
110  $this->getResponse()->setBody(json_encode($result));
111  }
112  }
113 }
__construct(\Magento\Backend\App\Action\Context $context, \Magento\Swatches\Helper\Media $swatchHelper, \Magento\Framework\Image\AdapterFactory $adapterFactory, \Magento\Catalog\Model\Product\Media\Config $config, \Magento\Framework\Filesystem $filesystem, \Magento\MediaStorage\Model\File\UploaderFactory $uploaderFactory)
Definition: Show.php:57
$mediaDirectory