• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/ustat/ustat.php
  • Класс: BitrixIntranetUStatUStat
  • Вызов: UStat::getHourlyCompanyActivitySince
static function getHourlyCompanyActivitySince(TypeDateTime $hour = null)
{
	$query = new EntityQuery('Bitrix\Intranet\UStat\UserHourTable');

	// set all activity columns
	$uStatFields = UserHourTable::getEntity()->getFields();

	foreach ($uStatFields as $uStatField)
	{
		if ($uStatField instanceof EntityScalarField && !$uStatField->isPrimary())
		{
			$query->addSelect(new EntityExpressionField(
				$uStatField->getName().'_SUM', 'SUM(%s)', $uStatField->getName()
			));
		}
	}

	// add & automatically group by hour
	$query->addSelect('HOUR');

	// add filter by date
	if ($hour !== null)
	{
		$query->setFilter(array('>=HOUR' => ConvertTimeStamp($hour->getTimestamp(), 'FULL')));
	}

	// collect activity
	$activity = array();

	$result = $query->exec();

	while ($row = $result->fetch())
	{
		foreach ($row as $k => $v)
		{
			if (mb_substr($k, -4) === '_SUM')
			{
				$row[mb_substr($k, 0, -4)] = $v;
				unset($row[$k]);
			}
		}

		$activity[] = $row;
	}

	return $activity;
}