403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/yandex.market/lib/export/promo/discount/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/yandex.market/lib/export/promo/discount/manager.php
<?php

namespace Yandex\Market\Export\Promo\Discount;

use Yandex\Market;
use Bitrix\Main;

Main\Localization\Loc::loadMessages(__FILE__);

class Manager
{
    /** @var string[] */
    protected static $providerList;

    /** @return string[] */
    public static function getTypeList()
    {
        return array_merge(
            static::getInternalTypeList(),
            static::getProviderTypeList()
        );
    }

    public static function isInternalType($type)
    {
        return in_array($type, static::getInternalTypeList(), true);
    }

    /** @return string[] */
    public static function getInternalTypeList()
    {
        return [
            Market\Export\Promo\Table::PROMO_TYPE_PROMO_CODE,
            Market\Export\Promo\Table::PROMO_TYPE_FLASH_DISCOUNT,
			Market\Export\Promo\Table::PROMO_TYPE_GIFT_WITH_PURCHASE,
            Market\Export\Promo\Table::PROMO_TYPE_GIFT_N_PLUS_M,
            Market\Export\Promo\Table::PROMO_TYPE_BONUS_CARD,
        ];
    }

    /** @return string */
    public static function getInternalTypeTitle($type)
    {
    	$typeUpper = Market\Data\TextString::toUpper($type);
        $typeKey = str_replace(['-', ' '], '_', $typeUpper);

        return Market\Config::getLang('EXPORT_PROMO_PROVIDER_INTERNAL_TYPE_' . $typeKey);
    }

    /** @return string[] */
    public static function getProviderTypeList()
    {
        return array_keys(static::getProviderList());
    }

    /**
     * ������ �����������
     *
     * @return array $type => $className
     *
     * @throws Main\ArgumentOutOfRangeException
     */
    public static function getProviderList()
    {
        if (static::$providerList === null)
        {
            static::$providerList = array_merge(
                static::loadModuleProviderList(),
                static::loadUserProviderList()
            );
        }

        return static::$providerList;
    }

    /**
     * �������� �� ���� ���������� (�� �����������)
     *
     * @param $type
     * @param $className
     *
     * @return string
     *
     * @throws Main\SystemException
     */
    public static function getProviderTypeTitle($type, $className = null)
    {
        if ($className === null)
        {
            $className = static::getProviderTypeClassName($type);
        }

        return $className::getTitle();
    }

    /**
     * ����� �� ���� ����������
     *
     * @param $type
     * @param $externalId
     *
     * @return AbstractProvider
     *
     * @throws Main\SystemException
     */
    public static function getProviderInstance($type, $externalId)
    {
        $className = static::getProviderTypeClassName($type);

        return new $className($externalId);
    }

    /**
     * �������� ������ �� ���� ����������
     *
     * @param $type
     *
     * @return AbstractProvider
     *
     * @throws Main\SystemException
     */
    public static function getProviderTypeClassName($type)
    {
        $list = static::getProviderList();

        if (isset($list[$type]))
        {
            $result = $list[$type];
        }
        else
        {
            throw new Main\SystemException(
                Market\Config::getLang('EXPORT_PROMO_PROVIDER_CLASS_NAME_NOT_FOUND', [
                    '#TYPE#' => $type
                ])
            );
        }

        return $result;
    }

    /**
     * ������� ������� �� ��� ���� enum
     *
     * @return array
     */
    public static function getTypeEnum()
    {
        $result = [];
        $externalGroup = Market\Config::getLang('EXPORT_PROMO_PROVIDER_EXTERNAL_GROUP');
        $internalGroup = Market\Config::getLang('EXPORT_PROMO_PROVIDER_INTERNAL_GROUP');

	    foreach (static::getProviderList() as $type => $className)
	    {
		    $result[] = [
			    'ID' => $type,
			    'VALUE' => static::getProviderTypeTitle($type, $className),
				'GROUP' => $externalGroup
		    ];
	    }

        foreach (static::getInternalTypeList() as $internalType)
        {
            $result[] = [
                'ID' => $internalType,
                'VALUE' => static::getInternalTypeTitle($internalType),
				'GROUP' => $internalGroup
            ];
        }

        return $result;
    }

    /**
     * ��������� ���������, ��������� � �����
     *
     * @return array
     */
    protected static function loadModuleProviderList()
    {
	    /** @var class-string<AbstractProvider>[] $typeList */
        $result = [];
        $typeList = [
            'sale_discount' => SaleProvider::class,
            'catalog_discount' => CatalogProvider::class,
	        'catalog_price' => PriceProvider::class,
        ];

        foreach ($typeList as $type => $className)
        {
            if ($className::isEnvironmentSupport())
            {
                $result[$type] = $className;
            }
        }

        return $result;
    }

    /**
     * ��������� ���������, ����������� ������������
     *
     * @return array
     *
     * @throws Main\ArgumentOutOfRangeException
     */
    protected static function loadUserProviderList()
    {
        $result = [];

        $event = new Main\Event(Market\Config::getModuleName(), 'onExportPromoProviderBuildList');
        $event->send();

        foreach ($event->getResults() as $eventResult)
        {
            $eventData = $eventResult->getParameters();

            if (isset($eventData['TYPE']))
            {
                if (
                    !isset($eventData['CLASS_NAME']) // is required
                    || !is_subclass_of($eventData['CLASS_NAME'], AbstractProvider::class) // must be child of reference
                )
                {
                    throw new Main\ArgumentOutOfRangeException('invalid provider class');
                }

                $result[$eventData['TYPE']] = $eventData['CLASS_NAME'];
            }
        }

        return $result;
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit