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

_ShowUserPropertyField: метод Битрикс

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

//    _ShowUserPropertyField()
//    /bitrix/modules/iblock/admin_tools.php:443

function _ShowUserPropertyField($name, $property_fields, $values, $bInitDef = false, $bVarsFromForm = false, $max_file_size_show=50000, $form_name = "form_element", $bCopy = false)
{
    global $bCopy;

    $name = htmlspecialcharsbx($name);

    $start = 0;

    if(!is_array($property_fields["~VALUE"]))
        $values = array();
    else
        $values = $property_fields["~VALUE"];

    unset($property_fields["VALUE"]);
    unset($property_fields["~VALUE"]);

    $html = '';
    $arUserType = CIBlockProperty::GetUserType($property_fields["USER_TYPE"]);
    $bMultiple = $property_fields["MULTIPLE"] == "Y" && array_key_exists("GetPropertyFieldHtmlMulty", $arUserType);
    $max_val = -1;

    if(($arUserType["PROPERTY_TYPE"] !== "F") || (!$bCopy))
    {
        if($bMultiple)
        {
            $html .= '';
        }
        else
        {
            foreach($values as $key=>$val)
            {
                if($bCopy)
                {
                    $key = "n".$start;
                    $start++;
                }

                if(!is_array($val) || !array_key_exists("VALUE",$val))
                    $val = array("VALUE"=>$val, "DESCRIPTION"=>"");

                $html .= '';

                if(substr($key, -1, 1)=='n' && $max_val < intval(substr($key, 1)))
                    $max_val = intval(substr($key, 1));
                if($property_fields["MULTIPLE"] != "Y")
                {
                    $bVarsFromForm = true;
                    break;
                }
            }
        }
    }

    if(
        (!$bVarsFromForm && !$bMultiple)
        || ($bVarsFromForm && !$bMultiple && count($values) == 0) //Was not displayed
    )
    {
        $bDefaultValue = is_array($property_fields["DEFAULT_VALUE"]) || strlen($property_fields["DEFAULT_VALUE"]);

        if($property_fields["MULTIPLE"]=="Y")
        {
            $cnt = (int)$property_fields["MULTIPLE_CNT"];
            if($cnt <= 0 || $cnt > 30)
                $cnt = 5;

            if($bInitDef && $bDefaultValue)
                $cnt++;
        }
        else
        {
            $cnt = 1;
        }

        for($i=$max_val+1; $i<$max_val+1+$cnt; $i++)
        {
            if($i==0 && $bInitDef && $bDefaultValue)
                $val = array(
                    "VALUE"=>$property_fields["DEFAULT_VALUE"],
                    "DESCRIPTION"=>"",
                );
            else
                $val = array(
                    "VALUE"=>"",
                    "DESCRIPTION"=>"",
                );

            $key = "n".($start + $i);

            $html .= '';
        }
        $max_val += $cnt;
    }
    if(
        $property_fields["MULTIPLE"]=="Y"
        && $arUserType["USER_TYPE"] !== "HTML"
        && $arUserType["USER_TYPE"] !== "employee"
        && !$bMultiple
    )
    {
        $html .= '';
    }
    $html .= '
';
            $html .= call_user_func_array($arUserType["GetPropertyFieldHtmlMulty"],
                array(
                    $property_fields,
                    $values,
                    array(
                        "VALUE"=>'PROP['.$property_fields["ID"].']',
                        "FORM_NAME"=>$form_name,
                        "MODE"=>"FORM_FILL",
                        "COPY" => $bCopy,
                    ),
                ));
            $html .= '
';
                if(array_key_exists("GetPropertyFieldHtml", $arUserType))
                    $html .= call_user_func_array($arUserType["GetPropertyFieldHtml"],
                        array(
                            $property_fields,
                            $val,
                            array(
                                "VALUE"=>'PROP['.$property_fields["ID"].']['.$key.'][VALUE]',
                                "DESCRIPTION"=>'PROP['.$property_fields["ID"].']['.$key.'][DESCRIPTION]',
                                "FORM_NAME"=>$form_name,
                                "MODE"=>"FORM_FILL",
                                "COPY"=>$bCopy,
                            ),
                        ));
                else
                    $html .= ' ';
                $html .= '
';
            if(array_key_exists("GetPropertyFieldHtml", $arUserType))
                $html .= call_user_func_array($arUserType["GetPropertyFieldHtml"],
                    array(
                        $property_fields,
                        $val,
                        array(
                            "VALUE"=>'PROP['.$property_fields["ID"].']['.$key.'][VALUE]',
                            "DESCRIPTION"=>'PROP['.$property_fields["ID"].']['.$key.'][DESCRIPTION]',
                            "FORM_NAME"=>$form_name,
                            "MODE"=>"FORM_FILL",
                            "COPY"=>$bCopy,
                        ),
                    ));
            else
                $html .= ' ';
            $html .= '
GetMessage("IBLOCK_AT_PROP_ADD").'" onClick="addNewRow(\'tb'.md5($name).'\')">
';
    echo $html;
}

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

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

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

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

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

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

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

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