public function GetAllowableUserGroups($documentType) { $documentType = trim($documentType); if (strlen($documentType) <= 0) { return false; } $iblockId = intval(substr($documentType, strlen("iblock_"))); $arResult = array("Author" => GetMessage("IBD_DOCUMENT_AUTHOR")); $arRes = array(1); if (CIBlock::GetArrayByID($iblockId, "RIGHTS_MODE") === "E") { $obRights = new CIBlockRights($iblockId); foreach ($obRights->GetGroups() as $GROUP_CODE) { if (preg_match("/^G(\\d+)\$/", $GROUP_CODE, $match)) { $arRes[] = $match[1]; } } } else { foreach (CIBlock::GetGroupPermissions($iblockId) as $groupId => $perm) { if ($perm > "R") { $arRes[] = $groupId; } } } $dbGroupsList = CGroup::GetListEx(array("NAME" => "ASC"), array("ID" => $arRes)); while ($arGroup = $dbGroupsList->Fetch()) { $arResult[$arGroup["ID"]] = $arGroup["NAME"]; } return $arResult; }
public function GetAllowableUserGroups($documentType) { $documentType = trim($documentType); if (strlen($documentType) <= 0) { return false; } $iblockId = intval(substr($documentType, strlen("type_"))); $arResult = array("Author" => GetMessage("BPVDX_DOCUMENT_AUTHOR")); // $arRes = array(1); // $arGroups = CIBlock::GetGroupPermissions($iblockId); // foreach ($arGroups as $groupId => $perm) // { // if ($perm > "R") // $arRes[] = $groupId; // } $dbGroupsList = CGroup::GetListEx(array("NAME" => "ASC"), array("ACTIVE" => "Y")); //array("ID" => $arRes) while ($arGroup = $dbGroupsList->Fetch()) { $arResult[$arGroup["ID"]] = $arGroup["NAME"]; } return $arResult; }
public static function GetAllowableUserGroups($documentType) { $documentType = trim($documentType); if (strlen($documentType) <= 0) { return false; } $arDocumentID = self::GetDocumentInfo($documentType); if ($arDocumentID !== false) { $documentType = $arDocumentID['TYPE']; } $arResult = array('author' => GetMessage('CRM_DOCUMENT_AUTHOR')); $arGroupsID = array(1); $arUsersID = array(); $arRelations = CCrmPerms::GetEntityRelations($documentType, BX_CRM_PERM_SELF); foreach ($arRelations as $relation) { $preffix = substr($relation, 0, 1); if ($preffix === 'G') { $arGroupsID[] = intval(substr($relation, 1)); } elseif ($preffix === 'U') { $arUsersID[] = substr($relation, 1); } } //Crutch for Bitrix24 context (user group management is not suppotted) if (IsModuleInstalled('bitrix24')) { $siteID = CAllSite::GetDefSite(); $dbResult = CGroup::GetList($by = '', $order = '', array('STRING_ID' => 'EMPLOYEES_' . $siteID, 'STRING_ID_EXACT_MATCH' => 'Y')); if ($arEmloyeeGroup = $dbResult->Fetch()) { $employeeGroupID = intval($arEmloyeeGroup['ID']); if (!in_array($employeeGroupID, $arGroupsID, true)) { $arGroupsID[] = $employeeGroupID; } } } if (!empty($arGroupsID)) { $dbGroupList = CGroup::GetListEx(array('NAME' => 'ASC'), array('ID' => $arGroupsID)); while ($arGroup = $dbGroupList->Fetch()) { $arResult[$arGroup['ID']] = $arGroup['NAME']; } } if (isset(self::$UNGROUPED_USERS[$documentType])) { unset(self::$UNGROUPED_USERS[$documentType]); } self::$UNGROUPED_USERS[$documentType] = $arUsersID; if (!empty($arUsersID)) { //Group with empty name will be hidden in group list $arResult['ungrouped'] = ''; //$arResult['ungrouped'] = GetMessage('CRM_DOCUMENT_UNGROUPED_USERS'); } return $arResult; }
/** * @param $documentType * @param bool $withExtended * @return array|bool */ public function GetAllowableUserGroups($documentType, $withExtended = false) { $documentType = trim($documentType); if (strlen($documentType) <= 0) { return false; } $iblockId = intval(substr($documentType, strlen("iblock_"))); $result = array("Author" => GetMessage("IBD_DOCUMENT_AUTHOR")); $groupsId = array(1); $extendedGroupsCode = array(); if (CIBlock::GetArrayByID($iblockId, "RIGHTS_MODE") === "E") { $rights = new CIBlockRights($iblockId); foreach ($rights->GetGroups() as $iblockGroupCode) { if (preg_match("/^G(\\d+)\$/", $iblockGroupCode, $match)) { $groupsId[] = $match[1]; } else { $extendedGroupsCode[] = $iblockGroupCode; } } } else { foreach (CIBlock::GetGroupPermissions($iblockId) as $groupId => $perm) { if ($perm > "R") { $groupsId[] = $groupId; } } } $groupsIterator = CGroup::GetListEx(array("NAME" => "ASC"), array("ID" => $groupsId)); while ($group = $groupsIterator->Fetch()) { $result[$group["ID"]] = $group["NAME"]; } if ($withExtended && $extendedGroupsCode) { foreach ($extendedGroupsCode as $groupCode) { $result['group_' . $groupCode] = CBPHelper::getExtendedGroupName($groupCode); } } return $result; }
public function GetAllowableUserGroups($documentType) { if ($storage = self::needProxyToDiskByDocType($documentType)) { return self::proxyToDisk(__FUNCTION__, array(\Bitrix\Disk\BizProcDocumentCompatible::generateDocumentType($storage->getId()))); } $iblockId = intval(substr($documentType, strlen("iblock_"))); if ($iblockId <= 0) { throw new CBPArgumentOutOfRangeException("documentType", $documentType); } $documentType = trim($documentType); if (strlen($documentType) <= 0) { return false; } $iblockId = intval(substr($documentType, strlen("iblock_"))); $arResult = array("Author" => GetMessage("IBD_DOCUMENT_AUTHOR")); $arRes = array(1); 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)) { $arRes[] = $match[1]; } } } else { $arGroups = CIBlock::GetGroupPermissions($iblockId); foreach ($arGroups as $groupId => $perm) { if ($perm >= "R") { $arRes[] = $groupId; } } } //Crutch for Bitrix24 context (user group management is not suppotted) if (IsModuleInstalled('bitrix24')) { $siteID = CAllSite::GetDefSite(); $dbResult = CGroup::GetList($by = '', $order = '', array('STRING_ID' => 'EMPLOYEES_' . $siteID, 'STRING_ID_EXACT_MATCH' => 'Y')); if ($arEmployeeGroup = $dbResult->Fetch()) { $employeeGroupID = intval($arEmployeeGroup['ID']); if (!in_array($employeeGroupID, $arRes, true)) { $arRes[] = $employeeGroupID; } } } $dbGroupsList = CGroup::GetListEx(array("NAME" => "ASC"), array("ID" => $arRes)); while ($arGroup = $dbGroupsList->Fetch()) { $arResult[$arGroup["ID"]] = $arGroup["NAME"]; } return $arResult; }
$arLangIDs[] = $arLang["LID"]; $arLangList[$arLang["LID"]] = $arLang["NAME"]; } $arStatusGroups = array(); $arStatusGroupIDs = array(); $arSaleManagerGroups = array(); $rsSaleManagerGroups = $APPLICATION->GetGroupRightList(array("MODULE_ID" => "sale", "G_ACCESS" => "U")); while ($arSaleManagerGroup = $rsSaleManagerGroups->Fetch()) { $arSaleManagerGroup["GROUP_ID"] = intval($arSaleManagerGroup["GROUP_ID"]); if (2 >= $arSaleManagerGroup["GROUP_ID"]) { continue; } $arSaleManagerGroups[] = $arSaleManagerGroup["GROUP_ID"]; } if (!empty($arSaleManagerGroups)) { $rsGroups = CGroup::GetListEx(array('SORT' => 'ASC', 'ID' => 'ASC'), array('ID' => $arSaleManagerGroups), false, false, array('ID', 'NAME')); while ($arGroup = $rsGroups->Fetch()) { $arGroup['ID'] = intval($arGroup['ID']); $arStatusGroups[$arGroup['ID']] = $arGroup['NAME']; $arStatusGroupIDs[] = $arGroup['ID']; } } $arErrors = array(); $bVarsFromForm = false; $arFields = array(); $arPerms = array(); $arLangName = array(); $arPermFields = array("GROUP_ID" => 0, "PERM_VIEW" => 'N', "PERM_CANCEL" => 'N', "PERM_MARK" => 'N', "PERM_DELIVERY" => 'N', "PERM_DEDUCTION" => 'N', "PERM_PAYMENT" => 'N', "PERM_STATUS" => 'N', "PERM_STATUS_FROM" => 'N', "PERM_UPDATE" => 'N', "PERM_DELETE" => 'N'); $arPermFieldKeys = array_keys($arPermFields); $arPermFieldKeysCut = $arPermFieldKeys; unset($arPermFieldKeysCut[0]);