function Update($ID, $arFields, $strNote = "") { global $DB, $USER_FIELD_MANAGER; $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; }