- Модуль: controller
- Путь к файлу: ~/bitrix/modules/controller/classes/general/counter.php
- Класс: CAllControllerCounter
- Вызов: CAllControllerCounter::Update
static function Update($ID, $arFields)
{
global $DB, $USER;
$ID = intval($ID);
if(!CControllerCounter::CheckFields($arFields, $ID))
return false;
if (array_key_exists("COMMAND", $arFields))
{
$rsCounter = $DB->Query("select * from b_controller_counter where ID = ".$ID);
$arCounter = $rsCounter->Fetch();
if ($arCounter and $arCounter["COMMAND"] != $arFields["COMMAND"])
{
$counterHistory = BitrixControllerCounterHistoryTable::createObject();
$counterHistory->setCounterId($ID);
$counterHistory->setTimestampX(new BitrixMainTypeDateTime());
$counterHistory->setUserId(is_object($USER)? $USER->GetID(): 0);
$counterHistory->setName(isset($arFields["NAME"])? $arFields["NAME"]: $arCounter["NAME"]);
$counterHistory->setCommandFrom($arCounter["COMMAND"]);
$counterHistory->setCommandTo($arFields["COMMAND"]);
$counterHistory->save();
}
}
unset($arFields["TIMESTAMP_X"]);
$arFields["~TIMESTAMP_X"] = $DB->CurrentTimeFunction();
$arUpdateBinds = array();
$strUpdate = $DB->PrepareUpdateBind("b_controller_counter", $arFields, "", false, $arUpdateBinds);
$strSql = "UPDATE b_controller_counter SET ".$strUpdate." WHERE ID=".$ID;
$arBinds = array();
foreach($arUpdateBinds as $field_id)
$arBinds[$field_id] = $arFields[$field_id];
if(!$DB->QueryBind($strSql, $arBinds))
return false;
if(array_key_exists("CONTROLLER_GROUP_ID", $arFields))
CControllerCounter::UpdateGroups($ID, $arFields["CONTROLLER_GROUP_ID"]);
return true;
}