- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/userconsent/text.php
- Класс: BitrixMainUserConsentText
- Вызов: Text::cut
static function cut($template, array $data)
{
$from = array();
$to = array();
$matchResult = preg_match_all('/%cut.([A-Za-z0-9_.]*).(start|end)%/', $template, $matches, PREG_OFFSET_CAPTURE);
if (!$matchResult)
{
return $template;
}
$cut = array();
foreach ($matches[0] as $key => $match)
{
$tag = $match[0];
$pos = $match[1];
$var = $matches[1][$key][0];
$mod = $matches[2][$key][0];
$from[] = $tag;
$to[] = '';
if (!isset($cut[$var]))
{
$cut[$var] = array('start' => array(), 'end' => array());
}
if (!isset($cut[$var][$mod]))
{
continue;
}
if ($mod == 'end')
{
$pos += strlen($tag);
}
$cut[$var][$mod][] = $pos;
}
$items = array();
foreach ($cut as $key => $item)
{
foreach ($item['start'] as $index => $position)
{
if (!isset($item['end'][$index]))
{
continue;
}
$sortBy = $item['end'][$index];
$items[$sortBy] = array(
'key' => $key,
'start' => $item['start'][$index],
'end' => $item['end'][$index]
);
}
}
krsort($items);
foreach ($items as $item)
{
if (!empty($data[$item['key']]))
{
continue;
}
$start = $item['start'];
$end = $item['end'];
if ($start <= 0 || $end <= 0)
{
continue;
}
$template = substr($template, 0, $start) . substr($template, $end);
}
return str_replace($from, $to, $template);
}