From c764ca310cdfa890caf6fc144da2a3aa5861cbee Mon Sep 17 00:00:00 2001 From: Graham Wharton Date: Sun, 10 Mar 2019 13:59:49 +0000 Subject: [PATCH] Transactional emails are now database aware with regard to email logo image. --- .../Magento/Email/Model/AbstractTemplate.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/Email/Model/AbstractTemplate.php b/app/code/Magento/Email/Model/AbstractTemplate.php index a6ecdaf24ebbb..7f9bda7ab0cdd 100644 --- a/app/code/Magento/Email/Model/AbstractTemplate.php +++ b/app/code/Magento/Email/Model/AbstractTemplate.php @@ -14,6 +14,7 @@ use Magento\Store\Model\Information as StoreInformation; use Magento\Store\Model\ScopeInterface; use Magento\Store\Model\Store; +use Magento\MediaStorage\Helper\File\Storage\Database; /** * Template model class @@ -163,6 +164,11 @@ abstract class AbstractTemplate extends AbstractModel implements TemplateTypesIn */ private $urlModel; + /** + * @var Database + */ + private $fileStorageDatabase; + /** * @param \Magento\Framework\Model\Context $context * @param \Magento\Framework\View\DesignInterface $design @@ -177,6 +183,7 @@ abstract class AbstractTemplate extends AbstractModel implements TemplateTypesIn * @param \Magento\Framework\Filter\FilterManager $filterManager * @param \Magento\Framework\UrlInterface $urlModel * @param array $data + * @param Database $fileStorageDatabase * * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ @@ -193,7 +200,8 @@ public function __construct( \Magento\Email\Model\TemplateFactory $templateFactory, \Magento\Framework\Filter\FilterManager $filterManager, \Magento\Framework\UrlInterface $urlModel, - array $data = [] + array $data = [], + Database $fileStorageDatabase = null ) { $this->design = $design; $this->area = isset($data['area']) ? $data['area'] : null; @@ -207,6 +215,7 @@ public function __construct( $this->templateFactory = $templateFactory; $this->filterManager = $filterManager; $this->urlModel = $urlModel; + $this->fileStorageDatabase = $fileStorageDatabase ?: \Magento\Framework\App\ObjectManager::getInstance()->get(Database::class); parent::__construct($context, $registry, null, null, $data); } @@ -394,6 +403,11 @@ protected function getLogoUrl($store) if ($fileName) { $uploadDir = \Magento\Email\Model\Design\Backend\Logo::UPLOAD_DIR; $mediaDirectory = $this->filesystem->getDirectoryRead(DirectoryList::MEDIA); + if ($this->fileStorageDatabase->checkDbUsage() && + !$mediaDirectory->isFile($uploadDir . '/' . $fileName) + ) { + $this->fileStorageDatabase->saveFileToFilesystem($uploadDir . '/' . $fileName); + } if ($mediaDirectory->isFile($uploadDir . '/' . $fileName)) { return $this->storeManager->getStore()->getBaseUrl( \Magento\Framework\UrlInterface::URL_TYPE_MEDIA