• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/classes/general/tasknotifications.php
  • Класс: CTaskNotifications
  • Вызов: CTaskNotifications::cropMessage
static function cropMessage($template, array $replaces = array(), $length = false)
{
	if($length === false)
	{
		$result = str_replace(array_keys($replaces), $replaces, $template);
	}
	else
	{
		$left = $length - mb_strlen(preg_replace('/#[a-zA-Z_0-9]+#/', '', $template));
		$result = $template;

		// todo: make more clever algorithm here
		foreach($replaces as $placeHolder => $value)
		{
			$fullValue = $value;
			$placeHolder = '#'.$placeHolder.'#';

			if ($left <= 0)
			{
				$result = str_replace($placeHolder, '', $result);
				continue;
			}

			if (mb_strlen($value) > $left)
			{
				$value = mb_substr($value, 0, $left - 3).'...';
			}

			$result = str_replace($placeHolder, $value, $result);
			$left -= mb_strlen($fullValue);
		}
	}

	return $result;
}