- Модуль: sender
- Путь к файлу: ~/bitrix/modules/sender/lib/entity/message.php
- Класс: BitrixSenderEntityMessage
- Вызов: Message::saveData
protected function saveData($id, array $data)
{
$fields = $data['FIELDS'];
$utmTags = $data['UTM'];
unset($data['FIELDS']);
unset($data['UTM']);
if (!is_array($fields) && count($fields) === 0)
{
$this->addError('No message fields.');
return $id;
}
$id = $this->saveByEntity(MessageTable::getEntity(), $id, $data);
if ($this->hasErrors())
{
return $id;
}
MessageFieldTable::deleteByMessageId($id);
foreach ($fields as $field)
{
if (!$field['CODE'])
{
continue;
}
if (in_array($field['CODE'], ['MESSAGE_PERSONALIZE', 'SUBJECT_PERSONALIZE', 'TITLE_PERSONALIZE']))
{
continue;
}
if (in_array($field['CODE'], ['MESSAGE', 'SUBJECT', 'TITLE']))
{
preg_match_all("/#([0-9a-zA-Z_.|]+?)#/", $field['VALUE'], $matchesFindPlaceHolders);
$matchesFindPlaceHoldersCount = count($matchesFindPlaceHolders[1]);
if ($matchesFindPlaceHoldersCount > 0)
{
$list = json_encode($matchesFindPlaceHolders);
MessageFieldTable::add(
[
'MESSAGE_ID' => $id,
'TYPE' => $field['TYPE'],
'CODE' => $field['CODE'] . '_PERSONALIZE',
'VALUE' => $list,
]
);
}
}
MessageFieldTable::add([
'MESSAGE_ID' => $id,
'TYPE' => $field['TYPE'],
'CODE' => $field['CODE'],
'VALUE' => $field['VALUE'],
]);
}
MessageUtmTable::deleteByMessageId($id);
if ($utmTags)
{
foreach ($utmTags as $utm)
{
if (empty($utm['VALUE']) || empty($utm['CODE']))
{
continue;
}
MessageUtmTable::add(
[
'MESSAGE_ID' => $id,
'CODE' => $utm['CODE'],
'VALUE' => $utm['VALUE'],
]
);
}
}
return $id;
}