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