• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/security/currentuser.php
  • Класс: BitrixMainSecurityCurrentUser
  • Вызов: CurrentUser::loadUserGroups
protected function loadUserGroups()
{
	$connection = MainApplication::getDbConnection();
	$sqlHelper = $connection->getSqlHelper();

	$this->userGroups = array();

	$sql = "SELECT G.ID FROM b_group G WHERE G.ANONYMOUS = 'Y' AND G.ACTIVE = 'Y'";
	$recordset = $connection->query($sql);
	while ($record = $recordset->fetch())
		$this->userGroups[] = intval($record["ID"]);

	if (!in_array(2, $this->userGroups))
		$this->userGroups[] = 2;

	if ($this->isAuthenticated)
	{
		$sql =
			"SELECT G.ID ".
			"FROM b_user_group UG ".
			"   INNER JOIN b_group G ON (UG.GROUP_ID = G.ID) ".
			"WHERE UG.USER_ID = ".intval($this->userId)." ".
			"	AND G.ACTIVE = 'Y' ".
			"	AND ((UG.DATE_ACTIVE_FROM IS NULL) OR (UG.DATE_ACTIVE_FROM <= ".$sqlHelper->getCurrentDateTimeFunction().")) ".
			"	AND ((UG.DATE_ACTIVE_TO IS NULL) OR (UG.DATE_ACTIVE_TO >= ".$sqlHelper->getCurrentDateTimeFunction().")) ".
			"	AND (G.ANONYMOUS <> 'Y' OR G.ANONYMOUS IS NULL) ";
		$recordset = $connection->query($sql);
		while ($record = $recordset->fetch())
			$this->userGroups[] = intval($record["ID"]);

		$this->userGroups = array_unique($this->userGroups, SORT_NUMERIC);

		$this->isAdmin = in_array(1, $this->userGroups, true);
	}

	sort($this->userGroups, SORT_NUMERIC);
}