- Модуль: controller
- Путь к файлу: ~/bitrix/modules/controller/classes/general/controllermember.php
- Класс: CAllControllerMember
- Вызов: CAllControllerMember::CloseMember
static function CloseMember($member_id, $bClose = true, $task_id = false)
{
/** @global CMain $APPLICATION */
global $APPLICATION;
if(!($arMember = CControllerMember::GetMember($member_id)))
return false;
$arControllerLog = Array(
'NAME'=>'SITE_CLOSING',
'CONTROLLER_MEMBER_ID'=>$arMember['ID'],
'DESCRIPTION'=>($bClose ? GetMessage("CTRLR_MEM_LOG_SITE_CLO") : GetMessage("CTRLR_MEM_LOG_SITE_OPE")),
'STATUS'=>'Y',
"TASK_ID"=>$task_id
);
$strCommand = 'CControllerClient::SetOptionString("main", "site_stopped", "'.($bClose?'Y':'N').'");';
$result = CControllerMember::RunCommand($member_id, $strCommand, array(), $task_id, 'run_immediate');
if($result === false)
{
$e = $APPLICATION->GetException();
if ($e)
$arControllerLog['DESCRIPTION'] = $e->GetString();
else
$arControllerLog['DESCRIPTION'] = 'Unknown error [001]';
$arControllerLog['STATUS'] = 'N';
}
else
{
CControllerMember::Update($arMember['ID'], Array('SITE_ACTIVE'=>(!$bClose?'Y':'N')));
}
if ($task_id === false)
{
CControllerLog::Add($arControllerLog);
}
// close event
CTimeZone::Disable();
$db_res = CControllerMember::GetByID($arMember["ID"]);
CTimeZone::Enable();
if($arFields = $db_res->Fetch())
{
foreach (GetModuleEvents("controller", "OnAfterCloseMember", true) as $arEvent)
{
ExecuteModuleEventEx($arEvent, array(&$arFields));
}
if($bClose)
CEvent::Send("CONTROLLER_MEMBER_CLOSED", SITE_ID, $arFields);
else
CEvent::Send("CONTROLLER_MEMBER_OPENED", SITE_ID, $arFields);
}
return $result;
}