- Модуль: intranet
- Путь к файлу: ~/bitrix/modules/intranet/lib/ustat/ustat.php
- Класс: BitrixIntranetUStatUStat
- Вызов: UStat::recountHourlyCompanyActivity
static function recountHourlyCompanyActivity()
{
$currentHour = new TypeDateTime(date('Y-m-d H:00:00'), 'Y-m-d H:00:00');
// last record
$lastRow = DepartmentHourTable::getRow(array(
'filter' => array('=DEPT_ID' => 0, '<=HOUR' => ConvertTimeStamp($currentHour->getTimestamp(), "FULL")),
'order' => array('HOUR' => 'DESC'),
'limit' => 1
));
if (!empty($lastRow))
{
$lastRowDate = is_object($lastRow['HOUR']) ? $lastRow['HOUR'] : new TypeDateTime($lastRow['HOUR'], 'Y-m-d H:00:00');
$lastActivity = static::getHourlyCompanyActivitySince($lastRowDate);
}
else
{
// first ever company activity
$lastActivity = static::getHourlyCompanyActivitySince(null);
}
// update db
foreach ($lastActivity as $activity)
{
// skip if nothing changed for last hour
if ($lastRow['HOUR'] === $activity['HOUR'] && $lastRow['TOTAL'] === $activity['TOTAL'])
{
continue;
}
$activityHour = is_object($activity['HOUR']) ? $activity['HOUR'] : new TypeDateTime($activity['HOUR'], 'Y-m-d H:00:00');
unset($activity['HOUR']);
$updResult = DepartmentHourTable::update(array('DEPT_ID' => 0, 'HOUR' => $activityHour), $activity);
if (!$updResult->getAffectedRowsCount())
{
try
{
DepartmentHourTable::add(array_merge(array('DEPT_ID' => 0, 'HOUR' => $activityHour), $activity));
}
catch (SqlException $e) {}
}
}
return '\'.__METHOD__.'();';
}