Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/old/vendor/amasty/base/Model/SysInfo/Provider/Collector/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/amasty/base/Model/SysInfo/Provider/Collector/Config.php
<?php

declare(strict_types=1);

/**
 * @author Amasty Team
 * @copyright Copyright (c) Amasty (https://www.amasty.com)
 * @package Magento 2 Base Package
 */

namespace Amasty\Base\Model\SysInfo\Provider\Collector;

use Magento\Config\Model\ResourceModel\Config\Data\Collection as ConfigCollection;
use Magento\Config\Model\ResourceModel\Config\Data\CollectionFactory as ConfigCollectionFactory;
use Magento\Framework\DB\Adapter\AdapterInterface;
use Magento\Framework\DB\Select;

class Config implements CollectorInterface
{
    public const CONFIG_PATH_KEY = 'path';
    public const CONFIG_VALUE_KEY = 'value';

    /**
     * @var ConfigCollectionFactory
     */
    private $configCollectionFactory;

    public function __construct(
        ConfigCollectionFactory $configCollectionFactory
    ) {
        $this->configCollectionFactory = $configCollectionFactory;
    }

    public function get(): array
    {
        $configData = [];

        $configCollection = $this->configCollectionFactory->create()
            ->addFieldToSelect([self::CONFIG_PATH_KEY, self::CONFIG_VALUE_KEY]);

        $this->addConditionSql($configCollection);

        foreach ($configCollection->getData() as $config) {
            $path = $this->preparePath($config[self::CONFIG_PATH_KEY]);
            $configData[$path] = $config[self::CONFIG_VALUE_KEY];
        }

        return $configData;
    }

    private function preparePath(string $path): string
    {
        return str_replace('/', '_', $path);
    }

    private function addConditionSql(ConfigCollection $collection): void
    {
        $connection = $collection->getConnection();
        $likeSqlCondition = $this->getConditions($connection, $this->getLikeKeywords(), true);
        $notLikeSqlCondition = $this->getConditions($connection, $this->getNotLikeKeywords(), false);

        $collection->getSelect()
            ->where($likeSqlCondition)
            ->where($notLikeSqlCondition);
    }

    private function getLikeKeywords(): array
    {
        return ['am', 'carriers', 'payment'];
    }

    private function getNotLikeKeywords(): array
    {
        return [
            'token',
            'key',
            'secret',
            'password',
            'pwd',
            'credentials',
            'access_license_number',
            'userid',
            'account_id',
            'merchant_id',
            'username',
            'amazon'
        ];
    }

    private function getConditions(
        AdapterInterface $connection,
        array $keywords,
        bool $isLike
    ): string {
        $conditions = [];
        $operator = $isLike ? Select::SQL_OR : Select::SQL_AND;

        foreach ($keywords as $keyword) {
            $conditions[] = $connection->prepareSqlCondition(
                self::CONFIG_PATH_KEY,
                $isLike ? ['like' => $keyword . '%'] : ['nlike' => '%' . $keyword . '%']
            );
        }

        return implode(' ' . $operator . ' ', $conditions);
    }
}

Spamworldpro Mini