- Модуль: controller
- Путь к файлу: ~/bitrix/modules/controller/classes/general/controllermember.php
- Класс: CAllControllerMember
- Вызов: CAllControllerMember::RegisterMemberByTicket
static function RegisterMemberByTicket($ar_member, $ticket_id, $session_id)
{
/** @global CMain $APPLICATION */
global $APPLICATION;
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);
$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())
{
foreach (GetModuleEvents("controller", "OnAfterRegisterMemberByTicket", true) as $arEvent)
{
ExecuteModuleEventEx($arEvent, array(&$arFields));
}
CEvent::Send("CONTROLLER_MEMBER_REGISTER", SITE_ID, $arFields);
}
}
return $ID;
}
return false;
}