• Модуль: sender
  • Путь к файлу: ~/bitrix/modules/sender/lib/stat/statistics.php
  • Класс: BitrixSenderStatStatistics
  • Вызов: Statistics::getReadingByDayTime
public function getReadingByDayTime($step = 2)
{
	$list = array();
	for ($i = 0; $i < 24; $i++)
	{
		$list[$i] = array(
			'CNT' => 0,
			'CNT_DISPLAY' => 0,
			'DAY_HOUR' => $i,
			'DAY_HOUR_DISPLAY' => (mb_strlen($i) == 1 ? '0' : '') . $i . ':00',
		);
	}

	$filter = $this->getMappedFilter();
	$readDb = PostingTable::getList(array(
		'select' => array('DAY_HOUR', 'CNT'),
		'filter' => $filter,
		'runtime' => array(
			new ExpressionField('CNT', 'COUNT(%s)', 'POSTING_READ.ID'),
			new ExpressionField('DAY_HOUR', 'HOUR(%s)', 'POSTING_READ.DATE_INSERT'),
		),
		'order' => array('DAY_HOUR' => 'ASC'),
	));
	while($read = $readDb->fetch())
	{
		$read['DAY_HOUR'] = intval($read['DAY_HOUR']);
		if (array_key_exists($read['DAY_HOUR'], $list))
		{
			$list[$read['DAY_HOUR']]['CNT'] = $read['CNT'];
			$list[$read['DAY_HOUR']]['CNT_DISPLAY'] = self::formatNumber($read['CNT'], 0);
		}
	}

	if ($step > 1)
	{
		for ($i = 0; $i < 24; $i+=$step)
		{
			for ($j = 1; $j < $step; $j++)
			{
				$list[$i]['CNT'] += $list[$i + $j]['CNT'];
				unset($list[$i + $j]);
			}
			$list[$i]['CNT_DISPLAY'] = self::formatNumber($list[$i]['CNT'], 0);
		}
	}

	$list = array_values($list);

	return $list;
}