• Модуль: controller
  • Путь к файлу: ~/bitrix/modules/controller/classes/general/controllermember.php
  • Класс: CAllControllerMember
  • Вызов: CAllControllerMember::Update
static function Update($ID, $arFields, $strNote = "")
{
	/** @global CUserTypeManager $USER_FIELD_MANAGER */
	global $USER_FIELD_MANAGER;
	/** @global CDatabase $DB */
	global $DB;

	$dbr_m = CControllerMember::GetByID($ID);
	$ar_m = $dbr_m->Fetch();

	if(!CControllerMember::CheckFields($arFields, $ID))
		return false;

	if(!$USER_FIELD_MANAGER->CheckFields("CONTROLLER_MEMBER", $ID, $arFields))
		return false;

	if(
		isset($arFields["CONTROLLER_GROUP_ID"])
		&& $ar_m["CONTROLLER_GROUP_ID"] != $arFields["CONTROLLER_GROUP_ID"]
		&& !isset($arFields["IN_GROUP_FROM"])
	)
		$arFields["~IN_GROUP_FROM"] = $DB->CurrentTimeFunction();

	unset($arFields["TIMESTAMP_X"]);
	if(array_key_exists("TIMESTAMP", $arFields))
		$arFields["~TIMESTAMP_X"] = $DB->CharToDateFunction($arFields["TIMESTAMP"]);
	else
		$arFields["~TIMESTAMP_X"] = $DB->CurrentTimeFunction();

	$arUpdateBinds = array();
	$strUpdate = $DB->PrepareUpdateBind("b_controller_member", $arFields, "", false, $arUpdateBinds);

	$strSql = "UPDATE b_controller_member SET ".$strUpdate." WHERE ID=".intval($ID);

	$arBinds = array();
	foreach($arUpdateBinds as $field_id)
		$arBinds[$field_id] = $arFields[$field_id];

	$DB->QueryBind($strSql, $arBinds);

	$dbr_m = CControllerMember::GetByID($ID);
	$ar_n = $dbr_m->Fetch();

	CControllerMember::logChanges($ID, $ar_m, $ar_n, $strNote);

	$USER_FIELD_MANAGER->Update("CONTROLLER_MEMBER", $ID, $arFields);

	if(
		isset($arFields["CONTROLLER_GROUP_ID"])
		&& $ar_m["CONTROLLER_GROUP_ID"] != $arFields["CONTROLLER_GROUP_ID"]
	)
	{
		CControllerMember::SetGroupSettings($ID);
	}

	if(
		isset($arFields["ACTIVE"]) && $ar_m["ACTIVE"] != $arFields["ACTIVE"]
		|| isset($arFields["DATE_ACTIVE_FROM"]) && $ar_m["DATE_ACTIVE_FROM"] != $arFields["DATE_ACTIVE_FROM"]
		|| isset($arFields["DATE_ACTIVE_TO"]) && $ar_m["DATE_ACTIVE_TO"] != $arFields["DATE_ACTIVE_TO"]
	)
	{
		CControllerMember::UnregisterExpiredAgent($ID);
	}

	return true;
}