⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.45
Server IP:
185.238.29.86
Server:
Linux server2 6.8.12-6-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-6 (2024-12-19T19:05Z) x86_64
Server Software:
nginx/1.18.0
PHP Version:
8.1.31
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
var
/
www
/
olasjoys
/
src
/
Adapter
/
Shop
/
CommandHandler
/
View File Name :
UploadLogosHandler.php
<?php /** * Copyright since 2007 PrestaShop SA and Contributors * PrestaShop is an International Registered Trademark & Property of PrestaShop SA * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.md. * It is also available through the world-wide-web at this URL: * https://opensource.org/licenses/OSL-3.0 * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to https://devdocs.prestashop.com/ for more information. * * @author PrestaShop SA and Contributors <contact@prestashop.com> * @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShop\PrestaShop\Adapter\Shop\CommandHandler; use PrestaShop\PrestaShop\Core\ConfigurationInterface; use PrestaShop\PrestaShop\Core\Domain\Exception\FileUploadException; use PrestaShop\PrestaShop\Core\Domain\Shop\Command\UploadLogosCommand; use PrestaShop\PrestaShop\Core\Domain\Shop\CommandHandler\UploadLogosHandlerInterface; use PrestaShop\PrestaShop\Core\Domain\Shop\DTO\ShopLogoSettings; use PrestaShop\PrestaShop\Core\Domain\Shop\Exception\ShopException; use PrestaShop\PrestaShop\Core\Hook\HookDispatcherInterface; use PrestaShop\PrestaShop\Core\Shop\LogoUploader; use PrestaShopException; use Symfony\Component\HttpFoundation\File\UploadedFile; /** * Class UploadLogosHandler */ final class UploadLogosHandler implements UploadLogosHandlerInterface { /** * @var ConfigurationInterface */ private $configuration; /** * @var LogoUploader */ private $logoUploader; /** * @var HookDispatcherInterface */ private $hookDispatcher; /** * @param ConfigurationInterface $configuration * @param LogoUploader $logoUploader * @param HookDispatcherInterface $hookDispatcher */ public function __construct( ConfigurationInterface $configuration, LogoUploader $logoUploader, HookDispatcherInterface $hookDispatcher ) { $this->configuration = $configuration; $this->logoUploader = $logoUploader; $this->hookDispatcher = $hookDispatcher; } /** * {@inheritdoc} * * @throws ShopException * @throws FileUploadException */ public function handle(UploadLogosCommand $command) { $this->configuration->set('PS_IMG_UPDATE_TIME', time()); try { if (null !== $command->getUploadedHeaderLogo()) { $this->uploadHeaderLogo($command->getUploadedHeaderLogo()); } if (null !== $command->getUploadedMailLogo()) { $this->uploadMailLogo($command->getUploadedMailLogo()); } if (null !== $command->getUploadedInvoiceLogo()) { $this->uploadInvoiceLogo($command->getUploadedInvoiceLogo()); } if (null !== $command->getUploadedFavicon()) { $this->uploadFavicon($command->getUploadedFavicon()); } } catch (PrestaShopException $exception) { throw new ShopException('An unexpected error occurred when uploading image', 0, $exception); } $this->hookDispatcher->dispatchWithParameters('actionAdminThemesControllerUpdate_optionsAfter'); } /** * @param UploadedFile $uploadedFile */ private function uploadHeaderLogo(UploadedFile $uploadedFile) { $this->setUploadedFileToBeCompatibleWithLegacyUploader(ShopLogoSettings::HEADER_LOGO_FILE_NAME, $uploadedFile); $this->logoUploader->updateHeader(); } /** * @param UploadedFile $uploadedFile */ private function uploadMailLogo(UploadedFile $uploadedFile) { $this->setUploadedFileToBeCompatibleWithLegacyUploader(ShopLogoSettings::MAIL_LOGO_FILE_NAME, $uploadedFile); $this->logoUploader->updateMail(); } /** * @param UploadedFile $uploadedHeaderLogo */ private function uploadInvoiceLogo(UploadedFile $uploadedHeaderLogo) { $this->setUploadedFileToBeCompatibleWithLegacyUploader(ShopLogoSettings::INVOICE_LOGO_FILE_NAME, $uploadedHeaderLogo); $this->logoUploader->updateInvoice(); } /** * @param UploadedFile $uploadedHeaderLogo */ private function uploadFavicon(UploadedFile $uploadedHeaderLogo) { $this->setUploadedFileToBeCompatibleWithLegacyUploader(ShopLogoSettings::FAVICON_FILE_NAME, $uploadedHeaderLogo); $this->logoUploader->updateFavicon(); } /** * @param string $legacyFileName * @param UploadedFile $uploadedFile * * @return array */ private function setUploadedFileToBeCompatibleWithLegacyUploader($legacyFileName, UploadedFile $uploadedFile) { $_FILES[$legacyFileName] = [ 'name' => $uploadedFile->getClientOriginalName(), 'type' => $uploadedFile->getMimeType(), 'tmp_name' => $uploadedFile->getPathname(), 'error' => $uploadedFile->getError(), 'size' => $uploadedFile->getSize(), ]; return $_FILES; } }