- Модуль: statistic
- Путь к файлу: ~/bitrix/modules/statistic/classes/mysql/statistic.php
- Класс: CStatistics
- Вызов: CStatistics::CleanUpEventDynamic
static function CleanUpEventDynamic()
{
set_time_limit(0);
ignore_user_abort(true);
$err_mess = "File: ".__FILE__."
Line: ";
$DB = CDatabase::GetModuleConnection('statistic');
$DAYS = intval(COption::GetOptionString("statistic", "EVENT_DYNAMIC_DAYS"));
$EID = 0;
if ($DAYS>=0)
{
$strSql = "
SELECT
ID,
ifnull(DYNAMIC_KEEP_DAYS,'".$DAYS."') as DYNAMIC_KEEP_DAYS
FROM
b_stat_event
";
$w = $DB->Query($strSql, false, $err_mess.__LINE__);
while ($wr = $w->Fetch())
{
$EDAYS = intval($wr["DYNAMIC_KEEP_DAYS"]);
$EID = intval($wr["ID"]);
$strSql = "
SELECT
ID,
COUNTER,
MONEY
FROM
b_stat_event_day
WHERE
EVENT_ID = ".$EID."
AND DATE_STAT <= DATE_SUB(CURDATE(),INTERVAL ".$EDAYS." DAY)
";
$z = $DB->Query($strSql, false, $err_mess.__LINE__);
while ($zr=$z->Fetch())
{
$ID = $zr["ID"];
if (intval($zr["COUNTER"])>0)
{
$arFields = Array(
"DATE_CLEANUP" => $DB->GetNowFunction(),
"COUNTER" => "COUNTER + ".intval($zr["COUNTER"]),
"MONEY" => "MONEY + ".doubleval($zr["MONEY"])
);
$DB->Update("b_stat_event",$arFields,"WHERE ID='$EID'",$err_mess.__LINE__);
}
$strSql = "DELETE FROM b_stat_event_day WHERE ID='$ID'";
$DB->Query($strSql, false, $err_mess.__LINE__);
}
}
if (intval($EID)>0 && COption::GetOptionString("statistic", "USE_AUTO_OPTIMIZE")=="Y")
{
$DB->Query("OPTIMIZE TABLE b_stat_event_day", false, $err_mess.__LINE__);
}
}
}