• Модуль: statistic
  • Путь к файлу: ~/bitrix/modules/statistic/classes/general/traffic.php
  • Класс: CAllTraffic
  • Вызов: CAllTraffic::IncParam
static function IncParam($arParam, $arParamSite=false, $SITE_ID=false, $DATE=false, $DATE_FORMAT="FULL", $SIGN="+")
{
	$DB = CDatabase::GetModuleConnection('statistic');

	if($DATE==false)
	{
		$strWhere = "WHERE ".CStatistics::DBDateCompare("DATE_STAT");
		$stmp = time();
	}
	else
	{
		$stmp = MakeTimeStamp($DATE, $DATE_FORMAT=="SHORT" ? FORMAT_DATE : FORMAT_DATETIME);
		$strWhere = "WHERE ".CStatistics::DBDateCompare("DATE_STAT", ConvertTimeStamp($stmp));
	}

	$arKeys = array(
		"HOUR" => date("G",$stmp),
		"WEEKDAY" => date("w",$stmp),
		"MONTH" => date("n",$stmp),
	);
	static $arPreKeys = array("HITS"=>0,"FAVORITES"=>0,"SESSIONS"=>0,"C_HOSTS"=>0,"GUESTS"=>0,"NEW_GUESTS"=>0);

	$rows = false;
	if (is_array($arParam) && count($arParam)>0)
	{
		if(array_key_exists("TOTAL_HOSTS", $arParam))
			unset($arParam["TOTAL_HOSTS"]);
		$arFields = array();
		foreach($arParam as $name=>$value)
		{
			if(array_key_exists($name, $arPreKeys))
			{
				$arFields[$name] = $name." + ".intval($value);
			}
			else
			{
				foreach ($arKeys as $key => $v)
				{
					$k = $key."_".$name."_".$v;
					$arFields[$k] = "$k ".($SIGN==="-"? "-": "+")." ".intval($value);
				}
			}
		}

		if (count($arFields)>0)
			$rows = $DB->Update("b_stat_day", $arFields, $strWhere);
	}

	if ($SITE_ID===false)
	{
		$SITE_ID = "";
		if (defined("ADMIN_SECTION") && ADMIN_SECTION===true)
			$SITE_ID = "";
		elseif (defined("SITE_ID"))
			$SITE_ID = SITE_ID;
	}

	if ($SITE_ID <> '' && is_array($arParamSite) && count($arParamSite)>0)
	{
		$arFields = array();
		foreach($arParamSite as $name=>$value)
		{
			if(array_key_exists($name, $arPreKeys))
			{
				$arFields[$name] = $name." + ".intval($value);
			}
			else
			{
				foreach ($arKeys as $key => $v)
				{
					$k = $key."_".$name."_".$v;
					$arFields[$k] = "$k ".($SIGN==="-"? "-": "+")." ".intval($value);
				}
			}
		}
		if (count($arFields)>0)
			$rows = $DB->Update("b_stat_day_site", $arFields, $strWhere." AND SITE_ID='".$DB->ForSql($SITE_ID,2)."'");
	}
	return $rows;
}