Поддержка серверов

CUserTypeManager::getUserFieldsWithReadyData: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=168301

//    CUserTypeManager::getUserFieldsWithReadyData()
//    /bitrix/modules/main/classes/general/usertype.php:1161

    function getUserFieldsWithReadyData($entity_id, $readyData, $LANG = false, $user_id = false, $primaryIdName = 'VALUE_ID')
    {
        if ($readyData === null)
        {
            return $this->GetUserFields($entity_id, null, $LANG, $user_id);
        }

        $entity_id = preg_replace("/[^0-9A-Z_]+/", "", $entity_id);
        $cacheId = $entity_id . "." . $LANG . '.' . (int) $user_id;

        //global $DB;

        $result = array();
        if(!array_key_exists($cacheId, $this->arFieldsCache))
        {
            $arFilter = array("ENTITY_ID"=>$entity_id);
            if($LANG)
                $arFilter["LANG"]=$LANG;

            $rs = call_user_func_array(array('CUserTypeEntity', 'GetList'), array(array(), $arFilter));
            while($arUserField = $rs->Fetch())
            {
                if($arType = $this->GetUserType($arUserField["USER_TYPE_ID"]))
                {
                    if(
                        $user_id !== 0
                        && is_callable(array($arType["CLASS_NAME"], "checkpermission"))
                    )
                    {
                        if(!call_user_func_array(array($arType["CLASS_NAME"], "checkpermission"), array($arUserField, $user_id)))
                            continue;
                    }
                    $arUserField["USER_TYPE"] = $arType;
                    $arUserField["VALUE"] = false;
                    if(!is_array($arUserField["SETTINGS"]) || empty($arUserField["SETTINGS"]))
                        $arUserField["SETTINGS"] = $this->PrepareSettings(0, $arUserField);
                    $result[$arUserField["FIELD_NAME"]] = $arUserField;
                }
            }
            $this->arFieldsCache[$cacheId] = $result;
        }
        else
            $result = $this->arFieldsCache[$cacheId];

        foreach ($readyData as $key => $value)
        {
            if(array_key_exists($key, $result))
            {
                if($result[$key]["MULTIPLE"]=="Y" && !is_array($value))
                {
                    $value = unserialize($value);
                }

                $result[$key]["VALUE"] = $this->OnAfterFetch($result[$key], $value);
                $result[$key]["ENTITY_VALUE_ID"] = $readyData[$primaryIdName];
            }
        }

        return $result;
    }
';

Блог разработчика

9 августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение