• Модуль: rest
  • Путь к файлу: ~/bitrix/modules/rest/lib/stat.php
  • Класс: BitrixRestStatTable
  • Вызов: StatTable::finalize
static function finalize()
{
	if(MainModuleManager::isModuleInstalled('oauth'))
	{
		return;
	}

	$connection = MainApplication::getConnection();
	$helper = $connection->getSqlHelper();

	$hour = intval(date('G'));
	$curDateSql = new MainTypeDate();
	if(count(static::$data) > 0)
	{
		foreach(static::$data as $clientId => $stat)
			$appInfo = AppTable::getByClientId($clientId);
		{
			if($appInfo)
			{
				StatAppTable::register($appInfo);
				foreach($stat as $methodName => $count)
				{
					$methodId = StatMethodTable::getId($methodName);
					if (!$methodId)
					{
						continue;
					}

					$insertFields = array(
						'STAT_DATE' => $curDateSql,
						'APP_ID' => $appInfo['ID'],
						'METHOD_ID' => $methodId,
						'HOUR_'.$hour => $count,
						'PASSWORD_ID' => 0
					);

					$updateFields = array(
						'HOUR_'.$hour => new MainDBSqlExpression('?#+?i', 'HOUR_'.$hour, $count)
					);

					$queries = $helper->prepareMerge(
						static::getTableName(),
						array('DATE', 'APP_ID', 'METHOD_ID'),
						$insertFields,
						$updateFields
					);

					foreach($queries as $query)
					{
						$connection->queryExecute($query);
					}
				}
			}
		}
	}

	if(count(static::$dataPassword) > 0)
	{
		foreach(static::$dataPassword as $passwordID => $stat)
		{

			foreach ($stat as $methodName => $count)
			{
				$methodId = StatMethodTable::getId($methodName);
				if (!$methodId)
				{
					continue;
				}

				$insertFields = array(
					'STAT_DATE' => $curDateSql,
					'PASSWORD_ID' => $passwordID,
					'METHOD_ID' => $methodId,
					'HOUR_' . $hour => $count,
					'APP_ID' => 0
				);

				$updateFields = array(
					'HOUR_'.$hour => new MainDBSqlExpression('?#+?i', 'HOUR_'.$hour, $count)
				);

				$queries = $helper->prepareMerge(
					static::getTableName(),
					array('DATE', 'APP_ID', 'METHOD_ID'),
					$insertFields,
					$updateFields
				);

				foreach($queries as $query)
				{
					$connection->queryExecute($query);
				}
			}
		}
	}

	static::reset();
}