• Модуль: sender
  • Путь к файлу: ~/bitrix/modules/sender/lib/stat/statistics.php
  • Класс: BitrixSenderStatStatistics
  • Вызов: Statistics::getClickLinks
public function getClickLinks($limit = 15)
{
	$list = array();
	$clickDb = PostingClickTable::getList(array(
		'select' => array('URL', 'CNT'),
		'filter' => array(
			'=POSTING_ID' => $this->filter->get('postingId'),
		),
		'runtime' => array(
			new ExpressionField('CNT', 'COUNT(%s)', 'ID'),
		),
		'group' => array('URL'),
		'order' => array('CNT' => 'DESC'),
		'limit' => $limit
	));
	while($click = $clickDb->fetch())
	{
		$list[] = $click;
	}

	// TODO: temporary block! Remove
	if (!empty($list))
	{
		$letter = EntityLetter::createInstanceByPostingId($this->filter->get('postingId'));
		$linkParams = $letter->getMessage()->getConfiguration()->get('LINK_PARAMS');
		if (!$linkParams)
		{
			return $list;
		}

		$parametersTmp = [];
		parse_str($linkParams, $parametersTmp);
		if (!is_array($parametersTmp) || empty($parametersTmp))
		{
			return $list;
		}
		$linkParams = array_keys($parametersTmp);

		$groupedList = [];
		foreach ($list as $index => $item)
		{
			$item['URL'] = (new Uri($item['URL']))
				->deleteParams($linkParams, true)
				->getUri();
			$item['URL'] = urldecode($item['URL']);
			if (!isset($groupedList[$item['URL']]))
			{
				$groupedList[$item['URL']] = 0;
			}
			$groupedList[$item['URL']] += $item['CNT'];
		}
		$list = [];
		foreach ($groupedList as $url => $cnt)
		{
			$list[] = ['URL' => $url, 'CNT' => $cnt];
		}
	}

	return $list;
}