JEMBOT MAWOT Bypass Shell
<?php
/**
* Mollie https://www.mollie.nl
*
* @author Mollie B.V. <info@mollie.nl>
* @copyright Mollie B.V.
* @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md
*
* @see https://github.com/mollie/PrestaShop
* @codingStandardsIgnoreStart
*/
declare(strict_types=1);
namespace Mollie\Subscription\Install;
use AttributeGroup;
use Mollie;
use Mollie\Adapter\ConfigurationAdapter;
use Mollie\Adapter\ProductAttributeAdapter;
use Mollie\Logger\PrestaLoggerInterface;
use Mollie\Subscription\Config\Config;
use Mollie\Subscription\Repository\LanguageRepository;
use PrestaShopDatabaseException;
use PrestaShopException;
use Psr\Log\LogLevel;
use Validate;
if (!defined('_PS_VERSION_')) {
exit;
}
class AttributeInstaller extends AbstractInstaller
{
private const FILE_NAME = 'AttributeInstaller';
/** @var ConfigurationAdapter */
private $configuration;
/** @var Mollie */
private $module;
/** @var LanguageRepository */
private $language;
/** @var PrestaLoggerInterface */
private $logger;
/** @var ProductAttributeAdapter */
private $productAttributeAdapter;
public function __construct(
PrestaLoggerInterface $logger,
ConfigurationAdapter $configuration,
Mollie $module,
LanguageRepository $language,
ProductAttributeAdapter $productAttributeAdapter
) {
$this->logger = $logger;
$this->configuration = $configuration;
$this->module = $module;
$this->language = $language;
$this->productAttributeAdapter = $productAttributeAdapter;
}
public function install(): bool
{
$languages = $this->language->getAllLanguages();
try {
$attributeGroup = $this->createAttributeGroup($languages);
$this->createAttributes($languages, (int) $attributeGroup->id);
} catch (PrestaShopDatabaseException|PrestaShopException $e) {
$this->errors[] = $this->module->l('Failed to add attributes', self::FILE_NAME);
$this->logger->log(LogLevel::ERROR, $e->getMessage());
return false;
}
return true;
}
/**
* @param array<string, array<string, string>> $languages
*/
private function createAttributeGroup(array $languages): AttributeGroup
{
$existingAttributeGroup = new AttributeGroup((int) $this->configuration->get(Config::SUBSCRIPTION_ATTRIBUTE_GROUP));
if (Validate::isLoadedObject($existingAttributeGroup)) {
return $existingAttributeGroup;
}
$attributeGroup = new AttributeGroup();
foreach ($languages as $language) {
/* @phpstan-ignore-next-line */
$attributeGroup->name[$language['id_lang']] = 'Mollie Subscription';
/* @phpstan-ignore-next-line */
$attributeGroup->public_name[$language['id_lang']] = 'Subscription';
}
$attributeGroup->group_type = 'select';
$attributeGroup->add();
$this->configuration->updateValue(Config::SUBSCRIPTION_ATTRIBUTE_GROUP, $attributeGroup->id);
return $attributeGroup;
}
/**
* @param array<string, array<string, string>> $languages
*/
private function createAttributes(array $languages, int $attributeGroupId): void
{
foreach (Config::getSubscriptionAttributeOptions() as $attributeName => $attributeConfigKey) {
$existingAttribute = $this->productAttributeAdapter->getProductAttribute((int) $this->configuration->get($attributeConfigKey));
if (Validate::isLoadedObject($existingAttribute)) {
continue;
}
$attribute = $this->productAttributeAdapter->getProductAttribute();
foreach ($languages as $language) {
/* @phpstan-ignore-next-line */
$attribute->name[$language['id_lang']] = $attributeName;
}
$attribute->id_attribute_group = $attributeGroupId;
$attribute->add();
$this->configuration->updateValue($attributeConfigKey, $attribute->id);
}
}
}
xxxxx1.0, XXX xxxx