• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblockdocument.php
  • Класс: CIBlockDocument
  • Вызов: CIBlockDocument::GetAllowableUserGroups
static function GetAllowableUserGroups($documentType, $withExtended = false)
{
	$documentType = trim($documentType);
	if ($documentType == '')
		return false;

	$iblockId = intval(mb_substr($documentType, mb_strlen("iblock_")));

	$result = array('Author' => GetMessage('IBD_DOCUMENT_AUTHOR'));

	$groupsId = array(1);
	$extendedGroupsCode = array();
	if(CIBlock::GetArrayByID($iblockId, "RIGHTS_MODE") === "E")
	{
		$obRights = new CIBlockRights($iblockId);
		foreach($obRights->GetGroups(/*"element_bizproc_start"*/) as $GROUP_CODE)
			if(preg_match("/^G(\d+)$/", $GROUP_CODE, $match))
				$groupsId[] = $match[1];
			else
				$extendedGroupsCode[] = $GROUP_CODE;
	}
	else
	{
		foreach(CIBlock::GetGroupPermissions($iblockId) as $groupId => $perm)
		{
			if ($perm > "R")
				$groupsId[] = $groupId;
		}
	}

	$dbGroupsList = CGroup::GetListEx(array("NAME" => "ASC"), array("ID" => $groupsId));
	while ($arGroup = $dbGroupsList->Fetch())
		$result[$arGroup["ID"]] = $arGroup["NAME"];

	if ($withExtended && $extendedGroupsCode)
	{
		foreach ($extendedGroupsCode as $groupCode)
		{
			$result['group_'.$groupCode] = CBPHelper::getExtendedGroupName($groupCode);
		}
	}

	return $result;
}