• Модуль: 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;
}