- Модуль: controller
- Путь к файлу: ~/bitrix/modules/controller/classes/general/counter.php
- Класс: CAllControllerCounter
- Вызов: CAllControllerCounter::UpdateMemberValues
static function UpdateMemberValues($CONTROLLER_MEMBER_ID, $arValues, $preserve = false)
{
global $DB;
$CONTROLLER_MEMBER_ID = intval($CONTROLLER_MEMBER_ID);
if (!$preserve)
{
$DB->Query("
DELETE FROM b_controller_counter_value
WHERE CONTROLLER_MEMBER_ID = ".$CONTROLLER_MEMBER_ID."
");
}
foreach($arValues as $CONTROLLER_COUNTER_ID => $value)
{
$CONTROLLER_COUNTER_ID = intval($CONTROLLER_COUNTER_ID);
if($CONTROLLER_COUNTER_ID > 0)
{
if(isset($arValues["DATE_FORMAT"]) && CheckDateTime($value, $arValues["DATE_FORMAT"]))
$sqlDate = $DB->CharToDateFunction($DB->FormatDate($value, $arValues["DATE_FORMAT"], CLang::GetDateFormat("FULL", LANGUAGE_ID)));
elseif(CheckDateTime($value, "YYYY-MM-DD HH:MI:SS"))
$sqlDate = $DB->CharToDateFunction($DB->FormatDate($value, "YYYY-MM-DD HH:MI:SS", CLang::GetDateFormat("FULL", LANGUAGE_ID)));
else
$sqlDate = "NULL";
if ($preserve)
{
$DB->Query("
DELETE FROM b_controller_counter_value
WHERE CONTROLLER_MEMBER_ID = ".$CONTROLLER_MEMBER_ID."
AND CONTROLLER_COUNTER_ID = ".$CONTROLLER_COUNTER_ID."
");
}
$res = $DB->Query("
INSERT INTO b_controller_counter_value
(CONTROLLER_MEMBER_ID, CONTROLLER_COUNTER_ID, VALUE_INT, VALUE_FLOAT, VALUE_DATE, VALUE_STRING)
SELECT
cm.ID
,cc.ID
,".intval($value)."
,".roundDB($value)."
,".$sqlDate."
,'".$DB->ForSQL($value, 255)."'
FROM
b_controller_member cm
INNER JOIN b_controller_counter_group ccg ON ccg.CONTROLLER_GROUP_ID = cm.CONTROLLER_GROUP_ID
INNER JOIN b_controller_counter cc ON cc.ID = ccg.CONTROLLER_COUNTER_ID
WHERE
cm.ID = ".$CONTROLLER_MEMBER_ID."
and cc.ID = ".$CONTROLLER_COUNTER_ID."
", true);
if (!$res)
break;
}
}
return true;
}