function RegisterMemberByTicket($ar_member, $ticket_id, $session_id) { if ($ar_member["ID"] > 0) { $ID = $ar_member["ID"]; } else { $ID = false; } $member_id = $ar_member["MEMBER_ID"]; if (!CControllerMember::CheckFields($ar_member, $ID)) { return false; } $ar_member["MEMBER_ID"] = $member_id; $arParameters = array("controller_ticket_id" => $ticket_id, "join_command" => ' COption::SetOptionString("main", "controller_member", "Y"); COption::SetOptionString("main", "controller_ticket", ""); RegisterModuleDependences("main", "OnUserLoginExternal", "main", "CControllerClient", "OnExternalLogin", 1); RegisterModuleDependences("main", "OnExternalAuthList", "main", "CControllerClient", "OnExternalAuthList"); ', "disconnect_command" => ' CControllerClient::RestoreAll(); COption::SetOptionString("main", "controller_member", "N"); COption::SetOptionString("main", "controller_member_id", ""); COption::SetOptionString("main", "controller_url", ""); UnRegisterModuleDependences("main", "OnUserLoginExternal", "main", "CControllerClient", "OnExternalLogin", 1); UnRegisterModuleDependences("main", "OnExternalAuthList", "main", "CControllerClient", "OnExternalAuthList"); '); $oRequest = new CControllerServerRequestTo($ar_member, "register", $arParameters); if ($session_id) { $oRequest->session_id = $session_id; } if (($oResponse = $oRequest->Send()) == false) { return false; } $result = $oResponse->OK(); if ($result === false) { $e = new CApplicationException($oResponse->text); $GLOBALS["APPLICATION"]->ThrowException($e); return false; } if ($ID > 0) { $ar_member["DISCONNECTED"] = "N"; $ID = CControllerMember::Update($ID, $ar_member) ? $ID : false; } else { $ID = CControllerMember::Add($ar_member); } if ($ID > 0) { $arControllerLog = array('NAME' => 'REGISTRATION', 'CONTROLLER_MEMBER_ID' => $ID, 'DESCRIPTION' => GetMessage("CTRLR_MEM_LOG_DESC_JOIN_BY_TICKET2"), 'STATUS' => 'Y'); CControllerLog::Add($arControllerLog); CControllerMember::SetGroupSettings($ID); if (!isset($ar_member["DISCONNECTED"]) || $ar_member["DISCONNECTED"] == "N") { // add join event CTimeZone::Disable(); $db_res = CControllerMember::GetByID($ID); CTimeZone::Enable(); if ($arFields = $db_res->Fetch()) { $events = GetModuleEvents("controller", "OnAfterRegisterMemberByTicket"); while ($arEvent = $events->Fetch()) { ExecuteModuleEventEx($arEvent, array(&$arFields)); } CEvent::Send("CONTROLLER_MEMBER_REGISTER", SITE_ID, $arFields); } } return $ID; } return false; }