示例#1
0
 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;
 }
示例#2
0
 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;
 }
示例#3
0
 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;
 }
示例#4
0
 /**
  * @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;
 }
示例#5
0
 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;
 }
示例#6
0
    $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]);