static function getDocumentFields($documentType)
{
$v = mb_substr($documentType, mb_strlen("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 (trim($arProperty["CODE"]) <> '')
$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 ($arProperty["USER_TYPE"] <> '')
{
$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;
}