• Модуль: sender
  • Путь к файлу: ~/bitrix/modules/sender/lib/templates/recent.php
  • Класс: BitrixSenderTemplatesRecent
  • Вызов: Recent::getTemplates
static function getTemplates($messageCode = null)
{
	static $result = null;
	if ($result !== null)
	{
		return $result;
	}
	$result = array();

	$filter = array(
		'!=TEMPLATE_TYPE' => null,
		'!=TEMPLATE_ID' => null,
	);
	$userId = SecurityUser::current()->getId();
	if ($userId)
	{
		$filter['=CREATED_BY'] = $userId;
	}
	if ($messageCode)
	{
		$filter['=MESSAGE_CODE'] = $messageCode;
	}

	$chains = EntityLetter::getList(array(
		'select' => array('TEMPLATE_TYPE', 'TEMPLATE_ID'),
		'filter' => $filter,
		'runtime' => array(new ExpressionField('MAX_ID', 'MAX(%s)', 'ID')),
		'limit' => self::$maxCount + 1,
		'cache' => array('ttl' => self::$cacheTtl),
		'group' => array('TEMPLATE_TYPE', 'TEMPLATE_ID'),
		'order' => array('MAX_ID' => 'DESC'),
	));
	foreach ($chains as $chain)
	{
		$template = Selector::create()
			->withTypeId($chain['TEMPLATE_TYPE'])
			->withId($chain['TEMPLATE_ID'])
			->get();

		if (!$template)
		{
			continue;
		}

		if ($template['TYPE'] === Type::getCode(Type::BASE) && $template['ID'] === 'empty')
		{
			continue;
		}

		$template['CATEGORY'] = Category::getCode(Category::RECENT);
		$result[] = $template;

		if (count($result) >= self::$maxCount)
		{
			break;
		}
	}

	return $result;
}