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 : |
<?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; } } }