- Модуль: lists
- Путь к файлу: ~/bitrix/modules/lists/lib/entity/element.php
- Класс: BitrixListsEntityElement
- Вызов: Element::getAvailableFields
public function getAvailableFields()
{
$availableFields = array("ID", "ACTIVE", "NAME", "TAGS", "XML_ID", "EXTERNAL_ID", "PREVIEW_TEXT",
"PREVIEW_TEXT_TYPE", "PREVIEW_PICTURE", "DETAIL_TEXT", "DETAIL_TEXT_TYPE", "DETAIL_PICTURE",
"CHECK_PERMISSIONS", "PERMISSIONS_BY", "CATALOG_TYPE", "MIN_PERMISSION", "SEARCHABLE_CONTENT",
"SORT", "TIMESTAMP_X", "DATE_MODIFY_FROM", "DATE_MODIFY_TO", "MODIFIED_USER_ID", "MODIFIED_BY",
"DATE_CREATE", "CREATED_USER_ID", "CREATED_BY", "DATE_ACTIVE_FROM", "DATE_ACTIVE_TO", "ACTIVE_DATE",
"ACTIVE_FROM", "ACTIVE_TO", "SECTION_ID");
$listCustomFields = [];
$fields = $this->listObject->getFields();
foreach ($fields as $field)
{
if ($field["CODE"] <> '')
{
$availableFields[] = "PROPERTY_".$field["CODE"];
}
if ($this->isFieldDateType($field["TYPE"]))
{
$callback = $field["PROPERTY_USER_TYPE"]["ConvertToDB"];
$listCustomFields[$field["FIELD_ID"]] = function ($value) use ($callback) {
$regexDetectsIso8601 = '/^([+-]?d{4}(?!d{2}b))'
. '((-?)((0[1-9]|1[0-2])(3([12]d|0[1-9]|3[01]))?'
. '|W([0-4]d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]d'
. '|[12]d{2}|3([0-5]d|6[1-6])))([Ts]((([01]d|2[0-3])'
. '((:?)[0-5]d)?|24:?00)([.,]d+(?!:))?)?(17[0-5]d'
. '([.,]d+)?)?([zZ]|([+-])([01]d|2[0-3]):?([0-5]d)?)?)?)?$/';
if (preg_match($regexDetectsIso8601, $value) === 1)
{
return CRestUtil::unConvertDateTime($value);
}
elseif (is_callable($callback))
{
return call_user_func_array($callback, [[], ["VALUE" => $value]]);
}
else
{
return $value;
}
};
}
}
$availableFields = array_merge($availableFields, array_keys($fields));
return array($availableFields, $listCustomFields);
}