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/rospirotorg.ru/bitrix/modules/vkapi.market/lib/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/vkapi.market/lib/export.php
<?php

namespace VKapi\Market;

use Bitrix\Main\Entity;
use Bitrix\Main\Loader;
use Bitrix\Main\Localization\Loc;
\Bitrix\Main\Localization\Loc::loadMessages(__FILE__);
/**
 * Class Export - �������������� �������� ����� �� ����� � �����������,
 * ������ �������, ������ �������� ���������, � ��
 * ������ ���� �� ������ ��������
 * 
 * @package VKapi\Market
 */
class Export
{
    /**
     * @var Export
     */
    private static $instance = null;
    protected $oOption = null;
    protected $oTable = null;
    protected $oElement = false;
    protected $oProperty = false;
    protected $oPropertyEnum = false;
    protected $arProps = [];
    public function __construct()
    {
        $this->oTable = new \VKapi\Market\ExportTable();
        if (\Bitrix\Main\Loader::includeModule('iblock')) {
            $this->oIblock = new \CIBlock();
            $this->oProperty = new \CIBlockProperty();
            $this->oPropertyEnum = new \CIBlockPropertyEnum();
        }
    }
    /**
     * @return \VKapi\Market\Manager
     */
    public function manager()
    {
        return \VKapi\Market\Manager::getInstance();
    }
    /**
     * ������ ����� ������� �� ����� � �������
     * 
     * @return \VKapi\Market\ExportTable
     */
    public function getTable()
    {
        return $this->oTable;
    }
    /**
     * ������������� ��������
     * 
     * @param $name
     * @param array $arReplace
     * @return mixed|string
     */
    public function getMessage($name, $arReplace = [])
    {
        return \VKapi\Market\Manager::getInstance()->getMessage('EXPORT.' . $name, $arReplace);
    }
    /**
     * ������ ������ � �������� �������, �� ������ � html ����������� SelectBoxFromArray()
     * 
     * @return array
     * @throws \Bitrix\Main\ArgumentException
     * @throws \Bitrix\Main\ObjectPropertyException
     * @throws \Bitrix\Main\SystemException
     */
    public function getSelectList()
    {
        static $arExportList;
        if (!isset($arExportList)) {
            $arExportList = ['REFERENCE_ID' => [''], 'REFERENCE' => [$this->getMessage('NO_SELECT')]];
            $dbrExport = $this->getTable()->getList(['filter' => ['ACTIVE' => true, 'AUTO' => false]]);
            while ($arExport = $dbrExport->Fetch()) {
                $arExportList['REFERENCE_ID'][] = $arExport['ID'];
                $arExportList['REFERENCE'][] = '[' . $arExport['ID'] . '] ' . '[' . $arExport['GROUP_ID'] . '] ' . $arExport['GROUP_NAME'];
            }
        }
        return $arExportList;
    }
    /**
     * ������ ������ ������ ������� �� ����������� � js
     * 
     * @return array
     * @throws \Bitrix\Main\ArgumentException
     * @throws \Bitrix\Main\ObjectPropertyException
     * @throws \Bitrix\Main\SystemException
     */
    public function getItemsForJs()
    {
        static $arExportList;
        if (!isset($arExportList)) {
            $arExportList = [];
            $dbrExport = $this->getTable()->getList(['order' => ['ID' => 'ASC'], 'filter' => ['ACTIVE' => true]]);
            while ($arExport = $dbrExport->Fetch()) {
                $arExportList[] = ['ID' => $arExport['ID'], 'NAME' => $arExport['NAME'], 'GROUP_ID' => $arExport['GROUP_ID'], 'GROUP_NAME' => $arExport["GROUP_NAME"]];
            }
        }
        return \VKapi\Market\Manager::getInstance()->toJsDataFormat($arExportList);
    }
    /**
     * ������ ���� ������ ��������
     * 
     * @throws \Bitrix\Main\ArgumentException
     * @throws \Bitrix\Main\SystemException
     */
    public function showExportBlockByHand()
    {
        \CUtil::InitJSCore('jquery');
        $rand = \Bitrix\Main\Security\Random::getString(10);
        $container = 'vkapi-market-hand-export--' . $rand;
        // �������� ����
        echo '<div class="vkapi-market-hand-export" id="' . $container . '"></div>';
        // ��������� �����
        $arData = ['items' => $this->getItemsForJs()];
        // �������� js
        ?>
        <script type="text/javascript" class="vkapi-market-data">
            (function () {
                var params = <?php 
        echo \Bitrix\Main\Web\Json::encode($arData);
        ?>;
                window.VKapiMarketHandExportJs = window.VKapiMarketHandExportJs || {};
                window.VKapiMarketHandExportJs['<?php 
        echo $container;
        ?>'] = new VKapiMarketHandExport('<?php 
        echo $container;
        ?>', params);
            })();
        </script>
        <?php 
    }
    /**
     * ��������� ����� �� ���� ������� � ��������� �������� �������
     * 
     * @return \VKapi\Market\Result
     * @throws \Bitrix\Main\ObjectPropertyException
     * @throws \Bitrix\Main\SystemException
     * @throws \Bitrix\Main\ArgumentException
     */
    public function parseExportDataFromPostData()
    {
        $result = new \VKapi\Market\Result();
        $result->setData('FIELDS', []);
        $req = \Bitrix\Main\Application::getInstance()->getContext()->getRequest();
        $oManager = \VKapi\Market\Manager::getInstance();
        $oConnect = new \VKapi\Market\Connect();
        $oCondition = new \VKapi\Market\Condition\Manager();
        $oCondition->addCondition(new \VKapi\Market\Condition\Group());
        $oCondition->addCondition(new \VKapi\Market\Condition\CatalogField());
        $oCondition->addCondition(new \VKapi\Market\Condition\IblockElementFieldBase());
        $oCondition->addCondition(new \VKapi\Market\Condition\IblockElementField());
        $oCondition->addCondition(new \VKapi\Market\Condition\IblockElementProperty());
        $oPhoto = new \VKapi\Market\Export\Photo();
        $arSiteList = $oManager->getSiteList();
        $arAccounts = $oConnect->getAccountList();
        $arIblockItems = $oManager->getIblockItems();
        // ��������� ������� �����
        $arWatermarkPosition = $oPhoto->getWatermarkPositionSelectList();
        // ���������� ������� �����
        $arWatermarkOpactity = $oPhoto->getWatermarkOpacitySelectList();
        // ���������
        $arWatermarkKoef = $oPhoto->getWatermarkKoefficientSelectList();
        $arFields = [];
        // ����� � ��������� ������� -----
        $arResult = [];
        if ((int) $req->get('ID') > 0 || (int) $req->get('COPY_ID') > 0) {
            $dbrExport = $this->getTable()->getList(['filter' => ['ID' => (int) $req->get('ID') ?: (int) $req->get('COPY_ID')]]);
            if ($ar = $dbrExport->fetch()) {
                $arResult = $ar;
            }
        }
        do {
            $arFields['NAME'] = htmlspecialchars(trim($req->getPost('NAME')));
            if (strlen(trim($req->getPost('NAME'))) <= 0) {
                $result->addError($this->getMessage('ERROR.FILED.NAME'));
                break;
            }
            if (strlen(trim($req->getPost('SITE_ID'))) <= 0 || !isset($arSiteList[$req->getPost('SITE_ID')])) {
                $result->addError($this->getMessage('ERROR.FILED.SITE_ID'));
                break;
            }
            if (strlen(trim($req->getPost('ACCOUNT_ID'))) <= 0 || !isset($arAccounts[$req->getPost('ACCOUNT_ID')])) {
                $result->addError($this->getMessage('ERROR.FILED.ACCOUNT_ID'));
                break;
            }
            if (strlen(trim($req->getPost('GROUP_ID'))) <= 0) {
                $result->addError($this->getMessage('ERROR.FILED.GROUP_ID'));
                break;
            }
            if (strlen(trim($req->getPost('GROUP_NAME'))) <= 0) {
                $result->addError($this->getMessage('ERROR.FILED.GROUP_NAME'));
                break;
            }
            $arFields['SITE_ID'] = trim($req->getPost('SITE_ID'));
            $arFields['ACCOUNT_ID'] = trim($req->getPost('ACCOUNT_ID'));
            $arFields['GROUP_NAME'] = htmlspecialchars(trim($req->getPost('GROUP_NAME')));
            $arFields['GROUP_ID'] = trim($req->getPost('GROUP_ID'));
            $arFields['CATALOG_ID'] = intval($req->getPost('CATALOG_IBLOCK_ID'));
            if (!isset($arIblockItems[$arFields['CATALOG_ID']])) {
                $result->addError($this->getMessage('ERROR.FILED.CATALOG_IBLOCK_ID'));
                break;
            }
            if ((int) $req->getPost('CATEGORY_ID') <= 0) {
                $result->addError($this->getMessage('ERROR.FILED.CATEGORY_ID'));
                break;
            }
            $arFields['ACTIVE'] = $req->getPost('ACTIVE') == 'Y';
            $arFields['AUTO'] = $req->getPost('AUTO') == 'Y';
            $watermarkId = (int) $arResult['PARAMS']['WATERMARK'];
            // �������� ������� �����
            if (!!$req->getPost('WATERMARK_del') && $req->getPost('WATERMARK_del') == 'Y' && (int) $arResult['PARAMS']['WATERMARK']) {
                \CFile::Delete((int) $arResult['PARAMS']['WATERMARK']);
                $watermarkId = 0;
            }
            // ���������� ������ ����� ------------------------------------------------------
            if ((int) $_FILES['WATERMARK']['size'] && (int) $req->get('ID')) {
                $arType = ['image/png' => 'png', 'image/jpeg' => 'jpeg', 'image/jpg' => 'jpg', 'image/gif' => 'gif'];
                $arFile = $_FILES["WATERMARK"];
                $arFile["MODULE_ID"] = "vkapi.market";
                $arFile["name"] = "watermark" . (int) $req->get('ID') . '.' . $arType[$arFile['type']];
                $watermarkId = \CFile::SaveFile($arFile, "vkapi.market/wm/");
            }
            // �������� ---------------------------------------------------------------------
            $arFields['ALBUMS'] = $req->getPost('ALBUMS');
            // ������������� �����, ���� � ������� ��� ������� � ��� �� ������ ��� � � �� 1,2,3,...
            $arFields['ALBUMS'] = (array) $arFields['ALBUMS'];
            $arFields['PARAMS'] = ['CONDITIONS' => $oCondition->parse(), 'CATEGORY_ID' => (int) $req->getPost('CATEGORY_ID'), 'CURRENCY_ID' => trim($req->getPost('CURRENCY_ID')), 'CATALOG_IBLOCK_ID' => trim($req->getPost('CATALOG_IBLOCK_ID')), 'OFFER_IBLOCK_ID' => trim($req->getPost('OFFER_IBLOCK_ID')), 'LINK_PROPERTY_ID' => trim($req->getPost('LINK_PROPERTY_ID')), 'DESCRIPTION_DELETE' => array_intersect((array) $req->getPost('DESCRIPTION_DELETE'), ['LINK', 'IMG', 'TABLE']), 'IMAGE_TO_SQUARE' => $req->getPost('IMAGE_TO_SQUARE') ? 1 : 0, 'DISABLED_OLD_ALBUM_DELETING' => $req->getPost('DISABLED_OLD_ALBUM_DELETING') ? 1 : 0, 'DISABLED_OLD_ITEM_DELETING' => $req->getPost('DISABLED_OLD_ITEM_DELETING') ? 1 : 0, 'EXTENDED_GOODS' => $req->getPost('EXTENDED_GOODS') ? 1 : 0, 'OFFER_COMBINE' => $req->getPost('OFFER_COMBINE') ? 1 : 0, 'PRODUCT_PRICE' => trim($req->getPost('PRODUCT_PRICE')), 'PRODUCT_PRICE_GROUPS' => empty((array) $req->getPost('PRODUCT_PRICE_GROUPS')) ? [2] : (array) $req->getPost('PRODUCT_PRICE_GROUPS'), 'PRODUCT_PRICE_OLD' => trim($req->getPost('PRODUCT_PRICE_OLD')), 'PRODUCT_NAME' => trim($req->getPost('PRODUCT_NAME')), 'PRODUCT_WEIGHT' => trim($req->getPost('PRODUCT_WEIGHT')), 'PRODUCT_LENGTH' => trim($req->getPost('PRODUCT_LENGTH')), 'PRODUCT_HEIGHT' => trim($req->getPost('PRODUCT_HEIGHT')), 'PRODUCT_WIDTH' => trim($req->getPost('PRODUCT_WIDTH')), 'PRODUCT_QUANTITY' => trim($req->getPost('PRODUCT_QUANTITY')), 'PRODUCT_PICTURE' => trim($req->getPost('PRODUCT_PICTURE')), 'PRODUCT_PICTURE_MORE' => trim($req->getPost('PRODUCT_PICTURE_MORE')), 'PRODUCT_SKU' => trim($req->getPost('PRODUCT_SKU')), 'OFFER_PRICE' => trim($req->getPost('OFFER_PRICE')), 'OFFER_PRICE_GROUPS' => empty((array) $req->getPost('OFFER_PRICE_GROUPS')) ? [2] : (array) $req->getPost('OFFER_PRICE_GROUPS'), 'OFFER_PRICE_OLD' => trim($req->getPost('OFFER_PRICE_OLD')), 'OFFER_NAME' => trim($req->getPost('OFFER_NAME')), 'OFFER_WEIGHT' => trim($req->getPost('OFFER_WEIGHT')), 'OFFER_LENGTH' => trim($req->getPost('OFFER_LENGTH')), 'OFFER_HEIGHT' => trim($req->getPost('OFFER_HEIGHT')), 'OFFER_WIDTH' => trim($req->getPost('OFFER_WIDTH')), 'OFFER_QUANTITY' => trim($req->getPost('OFFER_QUANTITY')), 'OFFER_PICTURE' => trim($req->getPost('OFFER_PICTURE')), 'OFFER_PICTURE_MORE' => trim($req->getPost('OFFER_PICTURE_MORE')), 'OFFER_SKU' => trim($req->getPost('OFFER_SKU')), 'PRODUCT_DEFAULT_TEXT' => $req->getPost('PRODUCT_DEFAULT_TEXT'), 'PRODUCT_TEMPLATE' => $req->getPost('PRODUCT_TEMPLATE'), 'OFFER_DEFAULT_TEXT' => $req->getPost('OFFER_DEFAULT_TEXT'), 'OFFER_TEMPLATE' => $req->getPost('OFFER_TEMPLATE'), 'OFFER_TEMPLATE_BEFORE' => $req->getPost('OFFER_TEMPLATE_BEFORE'), 'OFFER_TEMPLATE_AFTER' => $req->getPost('OFFER_TEMPLATE_AFTER'), 'PREVIEW_IN_VK_PRODUCT_ID' => intval($req->getPost('PREVIEW_IN_VK_PRODUCT_ID')), 'PREVIEW_IN_VK_PRODUCT_NAME' => trim($req->getPost('PREVIEW_IN_VK_PRODUCT_NAME')), 'PREVIEW_IN_VK_OFFER_ID' => intval($req->getPost('PREVIEW_IN_VK_OFFER_ID')), 'PREVIEW_IN_VK_OFFER_NAME' => trim($req->getPost('PREVIEW_IN_VK_OFFER_NAME')), 'WATERMARK' => $watermarkId, 'WATERMARK_POSITION' => in_array($req->getPost('WATERMARK_POSITION'), $arWatermarkPosition['REFERENCE_ID']) ? $req->getPost('WATERMARK_POSITION') : '', 'WATERMARK_OPACITY' => in_array($req->getPost('WATERMARK_OPACITY'), $arWatermarkOpactity['REFERENCE_ID']) ? $req->getPost('WATERMARK_OPACITY') : '', 'WATERMARK_COEFFICIENT' => in_array($req->getPost('WATERMARK_COEFFICIENT'), $arWatermarkKoef['REFERENCE_ID']) ? $req->getPost('WATERMARK_COEFFICIENT') : ''];
            if (is_array($req->getPost('PROPERTIES'))) {
                $arFields['PARAMS']['PROPERTIES'] = $req->getPost('PROPERTIES');
            }
            // �������� ����� ������ �����
            $arIblock = $oManager->getIblockById($arFields['PARAMS']['CATALOG_IBLOCK_ID']);
            if ($arIblock) {
                if ($arIblock['IS_CATALOG']) {
                    $arFields['PARAMS']['OFFER_IBLOCK_ID'] = $arIblock['OFFER_IBLOCK_ID'];
                    $arFields['PARAMS']['LINK_PROPERTY_ID'] = $arIblock['LINK_PROPERTY_ID'];
                }
            } else {
                $arFields['PARAMS']['CATALOG_IBLOCK_ID'] = '';
                $arFields['PARAMS']['OFFER_IBLOCK_ID'] = '';
                $arFields['PARAMS']['LINK_PROPERTY_ID'] = '';
            }
            // //�������� ����������� ����� ������� ������� � �������� ����������� ---------
            $arFieldsCheck = ['PRODUCT_PRICE', 'PRODUCT_NAME', 'PRODUCT_PICTURE'];
            foreach ($arFieldsCheck as $fieldCode) {
                if (empty($arFields['PARAMS'][$fieldCode])) {
                    $result->addError($this->getMessage('ERROR.FILED.' . $fieldCode));
                    break 2;
                }
            }
            if ($arFields['PARAMS']['LINK_PROPERTY_ID']) {
                $arFieldsCheck = ['OFFER_PRICE', 'OFFER_NAME', 'OFFER_PICTURE'];
                foreach ($arFieldsCheck as $fieldCode) {
                    if (empty($arFields['PARAMS'][$fieldCode])) {
                        $result->addError($this->getMessage('ERROR.FILED.' . $fieldCode));
                        break 2;
                    }
                }
            }
            $result->setData('FIELDS', $arFields);
        } while (false);
        return $result;
    }
}
?>

Youez - 2016 - github.com/yon3zu
LinuXploit