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