• Модуль: 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);
}