- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/node/text.php
- Класс: BitrixLandingNodeText
- Вызов: Text::saveNode
static function saveNode(BitrixLandingBlock $block, $selector, array $data, $additional = []): array
{
$result = [];
$doc = $block->getDom();
$resultList = $doc->querySelectorAll($selector);
$additional['sanitize'] = !isset($additional['sanitize']) ||
isset($additional['sanitize']) &&
$additional['sanitize'] === true;
foreach ($data as $pos => $value)
{
if (isset($value['url']))
{
$url = is_array($value['url'])
? json_encode($value['url'])
: $value['url'];
}
else
{
$url = '';
}
if (isset($value['text']))
{
$value = $value['text'];
}
if (!is_string($value) && !is_int($value))
{
continue;
}
$value = trim($value);
if (isset($resultList[$pos]))
{
$result[$pos] = [];
if ($additional['sanitize'])
{
$value = BitrixLandingManager::sanitize($value, $bad);
}
// clear some amp
if ($value)
{
$value = preg_replace('/&([^s]{1})/is', '&$1', $value);
$value = str_replace(
' bxstyle="',
' style="',
$value
);
}
else
{
$value = ' ';
}
if (History::isActive())
{
$history = new History($block->getLandingId(), History::ENTITY_TYPE_LANDING);
$history->push('EDIT_TEXT', [
'block' => $block,
'selector' => $selector,
'position' => (int)$pos,
'valueBefore' => $resultList[$pos]->getInnerHTML(),
'valueAfter' => $value,
]);
}
$result[$pos]['content'] = $value;
$resultList[$pos]->setInnerHTML($value);
if ($url)
{
$result[$pos]['attrs'] = [
'data-pseudo-url' => $url
];
$resultList[$pos]->setAttribute('data-pseudo-url', $url);
}
}
}
return $result;
}