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