• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/user.php
  • Класс: BitrixMainUserTable
  • Вызов: UserTable::getUserGroupIds
static function getUserGroupIds($userId)
{
	$groups = array();

	// anonymous groups
	$result = GroupTable::getList(array(
		'select' => array('ID'),
		'filter' => array(
			'=ANONYMOUS' => 'Y',
			'=ACTIVE' => 'Y'
		)
	));

	while ($row = $result->fetch())
	{
		$groups[] = $row['ID'];
	}

	if(!in_array(2, $groups))
		$groups[] = 2;

	if($userId > 0)
	{
		// private groups
		$nowTimeExpression = new SqlExpression(
			static::getEntity()->getConnection()->getSqlHelper()->getCurrentDateTimeFunction()
		);

		$result = GroupTable::getList(array(
			'select' => array('ID'),
			'filter' => array(
				'=UserGroup:GROUP.USER_ID' => $userId,
				'=ACTIVE' => 'Y',
				array(
					'LOGIC' => 'OR',
					'=UserGroup:GROUP.DATE_ACTIVE_FROM' => null,
					'<=UserGroup:GROUP.DATE_ACTIVE_FROM' => $nowTimeExpression,
				),
				array(
					'LOGIC' => 'OR',
					'=UserGroup:GROUP.DATE_ACTIVE_TO' => null,
					'>=UserGroup:GROUP.DATE_ACTIVE_TO' => $nowTimeExpression,
				),
				array(
					'LOGIC' => 'OR',
					'!=ANONYMOUS' => 'Y',
					'=ANONYMOUS' => null
				)
			)
		));

		while ($row = $result->fetch())
		{
			$groups[] = $row['ID'];
		}
	}

	sort($groups);

	return $groups;
}