- Модуль: lists
- Путь к файлу: ~/bitrix/modules/lists/lib/entity/element.php
- Класс: BitrixListsEntityElement
- Вызов: Element::getElementFields
private function getElementFields($elementId, array $values)
{
$elementFields = [
"IBLOCK_ID" => $this->iblockId,
"CODE" => $this->params["ELEMENT_CODE"],
"ID" => $elementId,
"PROPERTY_VALUES" => []
];
$fields = $this->listObject->getFields();
foreach ($fields as $fieldId => $fieldData)
{
$fieldValue = $values[$fieldId];
if ($this->listObject->is_field($fieldId))
{
if ($fieldId == "PREVIEW_PICTURE" || $fieldId == "DETAIL_PICTURE")
{
$this->setPictureValue($elementFields, $fieldId, $fieldValue, $values);
}
elseif ($fieldId == "PREVIEW_TEXT" || $fieldId == "DETAIL_TEXT")
{
$this->setTextValue($elementFields, $fieldId, $fieldValue, $fieldData);
}
else
{
$this->setBaseValue($elementFields, $fieldId, $fieldValue);
}
}
else
{
if (!is_array($fieldValue))
{
$fieldValue = [$fieldValue];
}
switch ($fieldData["TYPE"])
{
case "F":
$this->setFileValue($elementFields, $fieldId, $fieldValue, $fieldData, $values);
break;
case "N":
$this->setIntegerValue($elementFields, $fieldValue, $fieldData);
break;
case "S:DiskFile":
$this->setFileDiskValue($elementFields, $fieldValue, $fieldData);
break;
case "S:Date":
$this->setDateValue($elementFields, $fieldValue, $fieldData);
break;
case "S:DateTime":
$this->setDateTimeValue($elementFields, $fieldValue, $fieldData);
break;
case "S:HTML":
$this->setHtmlValue($elementFields, $fieldValue, $fieldData);
break;
default:
$this->setPropertyValue($elementFields, $fieldValue, $fieldData);
}
}
}
global $USER;
if (empty($values["MODIFIED_BY"]) && isset($USER) && is_object($USER))
{
$userId = $USER->getID();
$elementFields["MODIFIED_BY"] = $userId;
}
unset($elementFields["TIMESTAMP_X"]);
$elementFields["IBLOCK_SECTION_ID"] = (
is_numeric($values['IBLOCK_SECTION_ID'])
? (int) $values['IBLOCK_SECTION_ID'] : 0
);
return $elementFields;
}