- Модуль: lists
- Путь к файлу: ~/bitrix/modules/lists/lib/entity/element.php
- Класс: BitrixListsEntityElement
- Вызов: Element::getElements
private function getElements($navData)
{
$elements = [];
$fields = $this->listObject->getFields();
$elementSelect = ["ID", "IBLOCK_ID", "NAME", "IBLOCK_SECTION_ID", "CREATED_BY", "BP_PUBLISHED", "CODE"];
$propertyFields = [];
$ignoreSortFields = ["S:Money", "PREVIEW_TEXT", "DETAIL_TEXT", "S:ECrm", "S:map_yandex", "PREVIEW_PICTURE",
"DETAIL_PICTURE", "S:DiskFile", "IBLOCK_SECTION_ID", "BIZPROC", "COMMENTS"];
$availableFieldsIdForSort = ["ID"];
foreach ($fields as $fieldId => $field)
{
if ($this->listObject->is_field($fieldId))
$elementSelect[] = $fieldId;
else
$propertyFields[] = $fieldId;
if ($fieldId == "CREATED_BY")
$elementSelect[] = "CREATED_USER_NAME";
if ($fieldId == "MODIFIED_BY")
$elementSelect[] = "USER_NAME";
if (!($field["MULTIPLE"] == "Y" || in_array($field["TYPE"], $ignoreSortFields)))
{
$availableFieldsIdForSort[] = $fieldId;
}
}
$order = $this->getOrder($availableFieldsIdForSort);
$filter = [
"=IBLOCK_TYPE" => $this->params["IBLOCK_TYPE_ID"],
"IBLOCK_ID" => $this->iblockId,
"ID" => $this->params["ELEMENT_ID"] ? $this->params["ELEMENT_ID"] : "",
"=CODE" => $this->params["ELEMENT_CODE"] ? $this->params["ELEMENT_CODE"] : "",
"SHOW_NEW" => (!empty($this->params["CAN_FULL_EDIT"]) && $this->params["CAN_FULL_EDIT"] == "Y" ? "Y" : "N"),
"CHECK_PERMISSIONS" => "Y"
];
$filter = $this->getInputFilter($filter);
$queryObject = CIBlockElement::getList($order, $filter, false, $navData, $elementSelect);
while ($result = $queryObject->fetch())
{
$elements[$result["ID"]] = $result;
if (!empty($propertyFields))
{
$queryProperty = CIBlockElement::getProperty(
$this->iblockId,
$result["ID"], "SORT", "ASC",
array("ACTIVE" => "Y", "EMPTY" => "N")
);
while ($property = $queryProperty->fetch())
{
$propertyId = $property["ID"];
$elements[$result["ID"]]["PROPERTY_".$propertyId][
$property["PROPERTY_VALUE_ID"]] = $property["VALUE"];
}
}
}
return array($elements, $queryObject);
}