CBPVirtualDocument :: GetDocumentFields: Bitrix method

      
<?php 
//  CBPVirtualDocument :: GetDocumentFields()
//  /dist/bitrix/modules/bizproc/classes/general/virtualdocument.php:1386

    
public function GetDocumentFields($documentType)
    {
        
$v substr($documentTypestrlen("type_"));
        if (
intval($v)."!" != $v."!")
            throw new 
CBPArgumentOutOfRangeException("documentType"$documentType);
        
$iblockId intval($v);

        
$arDocumentFieldTypes self::GetDocumentFieldTypes($documentType);

        
$arResult = array(
            
"ID" => array(
                
"Name" => GetMessage("BPVDX_FIELD_ID"),
                
"Type" => "N",
                
"Filterable" => true,
                
"Editable" => false,
                
"Required" => false,
            ),
            
"TIMESTAMP_X" => array(
                
"Name" => GetMessage("BPVDX_FIELD_TIMESTAMP_X"),
                
"Type" => "S:DateTime",
                
"Filterable" => true,
                
"Editable" => true,
                
"Required" => false,
            ),
            
"MODIFIED_BY" => array(
                
"Name" => GetMessage("BPVDX_FIELD_MODYFIED"),
                
"Type" => "S:UserID",
                
"Filterable" => true,
                
"Editable" => true,
                
"Required" => false,
            ),
            
"MODIFIED_BY_PRINTABLE" => array(
                
"Name" => GetMessage("BPVDX_FIELD_MODIFIED_BY_USER_PRINTABLE"),
                
"Type" => "S",
                
"Filterable" => false,
                
"Editable" => false,
                
"Required" => false,
            ),
            
"DATE_CREATE" => array(
                
"Name" => GetMessage("BPVDX_FIELD_DATE_CREATE"),
                
"Type" => "S:DateTime",
                
"Filterable" => true,
                
"Editable" => true,
                
"Required" => false,
            ),
            
"CREATED_BY" => array(
                
"Name" => GetMessage("BPVDX_FIELD_CREATED"),
                
"Type" => "S:UserID",
                
"Filterable" => true,
                
"Editable" => false,
                
"Required" => false,
            ),
            
"CREATED_BY_PRINTABLE" => array(
                
"Name" => GetMessage("BPVDX_FIELD_CREATED_BY_USER_PRINTABLE"),
                
"Type" => "S",
                
"Filterable" => false,
                
"Editable" => false,
                
"Required" => false,
            ),
            
"IBLOCK_ID" => array(
                
"Name" => GetMessage("BPVDX_FIELD_IBLOCK_ID"),
                
"Type" => "N",
                
"Filterable" => true,
                
"Editable" => true,
                
"Required" => false,
            ),
            
"ACTIVE" => array(
                
"Name" => GetMessage("BPVDX_FIELD_ACTIVE"),
                
"Type" => "B",
                
"Filterable" => true,
                
"Editable" => true,
                
"Required" => false,
            ),
            
/*"BP_PUBLISHED" => array(
                "Name" => GetMessage("BPVDX_FIELD_BP_PUBLISHED"),
                "Type" => "B",
                "Filterable" => false,
                "Editable" => true,
                "Required" => false,
            ),*/
            
"ACTIVE_FROM" => array(
                
"Name" => GetMessage("BPVDX_FIELD_DATE_ACTIVE_FROM"),
                
"Type" => "S:DateTime",
                
"Filterable" => true,
                
"Editable" => true,
                
"Required" => false,
            ),
            
"ACTIVE_TO" => array(
                
"Name" => GetMessage("BPVDX_FIELD_DATE_ACTIVE_TO"),
                
"Type" => "S:DateTime",
                
"Filterable" => true,
                
"Editable" => true,
                
"Required" => false,
            ),
            
"SORT" => array(
                
"Name" => GetMessage("BPVDX_FIELD_SORT"),
                
"Type" => "N",
                
"Filterable" => true,
                
"Editable" => true,
                
"Required" => false,
            ),
            
"NAME" => array(
                
"Name" => GetMessage("BPVDX_FIELD_NAME"),
                
"Type" => "S",
                
"Filterable" => true,
                
"Editable" => true,
                
"Required" => true,
            ),
            
"PREVIEW_PICTURE" => array(
                
"Name" => GetMessage("BPVDX_FIELD_PREVIEW_PICTURE"),
                
"Type" => "F",
                
"Filterable" => false,
                
"Editable" => true,
                
"Required" => false,
            ),
            
"PREVIEW_TEXT" => array(
                
"Name" => GetMessage("BPVDX_FIELD_PREVIEW_TEXT"),
                
"Type" => "T",
                
"Filterable" => false,
                
"Editable" => true,
                
"Required" => false,
            ),
            
"PREVIEW_TEXT_TYPE" => array(
                
"Name" => GetMessage("BPVDX_FIELD_PREVIEW_TEXT_TYPE"),
                
"Type" => "L",
                
"Options" => array(
                    
"text" => GetMessage("BPVDX_DESC_TYPE_TEXT"),
                    
"html" => "Html",
                ),
                
"Filterable" => false,
                
"Editable" => true,
                
"Required" => false,
            ),
            
"DETAIL_PICTURE" => array(
                
"Name" => GetMessage("BPVDX_FIELD_DETAIL_PICTURE"),
                
"Type" => "F",
                
"Filterable" => false,
                
"Editable" => true,
                
"Required" => false,
            ),
            
"DETAIL_TEXT" => array(
                
"Name" => GetMessage("BPVDX_FIELD_DETAIL_TEXT"),
                
"Type" => "T",
                
"Filterable" => false,
                
"Editable" => true,
                
"Required" => false,
            ),
            
"DETAIL_TEXT_TYPE" => array(
                
"Name" => GetMessage("BPVDX_FIELD_DETAIL_TEXT_TYPE"),
                
"Type" => "L",
                
"Options" => array(
                    
"text" => GetMessage("BPVDX_DESC_TYPE_TEXT"),
                    
"html" => "Html",
                ),
                
"Filterable" => false,
                
"Editable" => true,
                
"Required" => false,
            ),
            
"CODE" => array(
                
"Name" => GetMessage("BPVDX_FIELD_CODE"),
                
"Type" => "S",
                
"Filterable" => true,
                
"Editable" => true,
                
"Required" => false,
            ),
            
"XML_ID" => array(
                
"Name" => GetMessage("BPVDX_FIELD_XML_ID"),
                
"Type" => "S",
                
"Filterable" => true,
                
"Editable" => true,
                
"Required" => false,
            ),
        );

        
$arKeys array_keys($arResult);
        foreach (
$arKeys as $key)
            
$arResult[$key]["Multiple"] = false;

        
$dbProperties CIBlockProperty::GetList(
            array(
"sort" => "asc""name" => "asc"),
            array(
"IBLOCK_ID" => $iblockId)
        );
        while (
$arProperty $dbProperties->Fetch())
        {
            if (
strlen(trim($arProperty["CODE"])) > 0)
                
$key "PROPERTY_".$arProperty["CODE"];
            else
                
$key "PROPERTY_".$arProperty["ID"];

            
$arResult[$key] = array(
                
"Name" => $arProperty["NAME"],
                
"Filterable" => ($arProperty["FILTRABLE"] == "Y"),
                
"Editable" => true,
                
"Required" => ($arProperty["IS_REQUIRED"] == "Y"),
                
"Multiple" => ($arProperty["MULTIPLE"] == "Y"),
                
"Type" => $arProperty["PROPERTY_TYPE"],
            );

            if (
strlen($arProperty["USER_TYPE"]) > 0)
            {
                
$arResult[$key]["Type"] = "S:".$arProperty["USER_TYPE"];

                if (
$arProperty["USER_TYPE"] == "UserID"
                    
|| $arProperty["USER_TYPE"] == "employee" && (COption::GetOptionString("bizproc""employee_compatible_mode""N") != "Y"))
                {
                    
$arResult[$key."_PRINTABLE"] = array(
                        
"Name" => $arProperty["NAME"].GetMessage("BPVDX_FIELD_USERNAME_PROPERTY"),
                        
"Filterable" => false,
                        
"Editable" => false,
                        
"Required" => false,
                        
"Multiple" => ($arProperty["MULTIPLE"] == "Y"),
                        
"Type" => "S",
                    );
                }
                elseif (
$arProperty["USER_TYPE"] == "EList")
                {
                    
$arResult[$key]["Type"] = "E:EList";
                    
$arResult[$key]["Options"] = $arProperty["LINK_IBLOCK_ID"];
                }
            }
            elseif (
$arProperty["PROPERTY_TYPE"] == "L")
            {
                
$arResult[$key]["Options"] = array();
                
$dbPropertyEnums CIBlockProperty::GetPropertyEnum($arProperty["ID"]);
                while (
$arPropertyEnum $dbPropertyEnums->GetNext())
                    
$arResult[$key]["Options"][$arPropertyEnum["XML_ID"]] = $arPropertyEnum["VALUE"];
            }
            elseif (
$arProperty["PROPERTY_TYPE"] == "F")
            {
                
$arResult[$key."_PRINTABLE"] = array(
                    
"Name" => $arProperty["NAME"].GetMessage("BPVDX_FIELD_USERNAME_PROPERTY"),
                    
"Filterable" => false,
                    
"Editable" => false,
                    
"Required" => false,
                    
"Multiple" => ($arProperty["MULTIPLE"] == "Y"),
                    
"Type" => "S",
                );
            }
            elseif (
$arProperty["PROPERTY_TYPE"] == "S" && intval($arProperty["ROW_COUNT"]) > 1)
                
$arResult[$key]["Type"] = "T";
        }

        
$arKeys array_keys($arResult);
        foreach (
$arKeys as $k)
        {
            
$arResult[$k]["BaseType"] = $arDocumentFieldTypes[$arResult[$k]["Type"]]["BaseType"];
            
$arResult[$k]["Complex"] = $arDocumentFieldTypes[$arResult[$k]["Type"]]["Complex"];
        }

        return 
$arResult;
    }