protected static function _socnet_check($USER, $iblock_type_id, $iblock_id, $socnet_group_id) { $type_check = CListPermissions::_socnet_type_check($USER, $iblock_type_id, $socnet_group_id); if ($type_check < 0) { return $type_check; } $iblock_check = CListPermissions::_iblock_check($iblock_type_id, $iblock_id); if ($iblock_check < 0) { return $iblock_check; } $iblock_socnet_group_id = CIBlock::GetArrayByID($iblock_id, "SOCNET_GROUP_ID"); if ($iblock_socnet_group_id != $socnet_group_id) { return CListPermissions::ACCESS_DENIED; } $socnet_role = CSocNetUserToGroup::GetUserRole($USER->GetID(), $socnet_group_id); if ($socnet_role !== "A" && CIBlock::GetArrayByID($iblock_id, "RIGHTS_MODE") === "E") { return ''; } static $roles = array("A", "E", "K", "T"); if (!in_array($socnet_role, $roles)) { if ($USER->IsAuthorized()) { $socnet_role = "L"; } else { $socnet_role = "N"; } } $arSocnetPerm = CLists::GetSocnetPermission($iblock_id); return $arSocnetPerm[$socnet_role]; }
/** * @param $USER CUser * @param $iblock_type_id string * @param $iblock_id int * @param $socnet_group_id int * @return string */ protected static function _socnet_check($USER, $iblock_type_id, $iblock_id, $socnet_group_id) { $type_check = CListPermissions::_socnet_type_check($USER, $iblock_type_id, $socnet_group_id); if ($type_check < 0) { return $type_check; } $iblock_check = CListPermissions::_iblock_check($iblock_type_id, $iblock_id); if ($iblock_check < 0) { return $iblock_check; } $iblock_socnet_group_id = CIBlock::GetArrayByID($iblock_id, "SOCNET_GROUP_ID"); if ($iblock_socnet_group_id != $socnet_group_id) { return CListPermissions::ACCESS_DENIED; } $socnet_role = CSocNetUserToGroup::GetUserRole($USER->GetID(), $socnet_group_id); if ($socnet_role !== "A" && CIBlock::GetArrayByID($iblock_id, "RIGHTS_MODE") === "E") { return ''; } static $roles = array("A", "E", "K", "T"); if (!in_array($socnet_role, $roles)) { if ($USER->IsAuthorized()) { $socnet_role = "L"; } else { $socnet_role = "N"; } } if (!CSocNetFeaturesPerms::CanPerformOperation($USER->GetID(), SONET_ENTITY_GROUP, $socnet_group_id, "group_lists", "write", CSocNetUser::IsCurrentUserModuleAdmin())) { return "D"; } else { $arSocnetPerm = CLists::GetSocnetPermission($iblock_id); return $arSocnetPerm[$socnet_role]; } }
if ($arParams["SOCNET_GROUP_ID"]) { $arResult["HIGHLIGHT"] = array("socnetgroup" => array("group_id" => $arParams["SOCNET_GROUP_ID"]), "groups" => array("disabled" => true)); } else { $arResult["HIGHLIGHT"] = array("groups" => array("disabled" => true)); } } else { if ($arParams["SOCNET_GROUP_ID"]) { $arResult["HIGHLIGHT"] = array("socnetgroup" => array("group_id" => $arParams["SOCNET_GROUP_ID"])); } else { $arResult["HIGHLIGHT"] = null; } } if ($RIGHTS_MODE != 'E') { $i = 0; if ($arParams["SOCNET_GROUP_ID"]) { $arSocnetPerm = CLists::GetSocnetPermission($arResult["IBLOCK_ID"]); foreach ($arSocnetPerm as $role => $permission) { if ($permission > "W") { $permission = "W"; } switch ($role) { case "A": case "E": case "K": $arResult["RIGHTS"]['n' . $i++] = array("GROUP_CODE" => "SG" . $arParams["SOCNET_GROUP_ID"] . "_" . $role, "IS_INHERITED" => "N", "TASK_ID" => CIBlockRights::LetterToTask($permission)); break; case "L": $arResult["RIGHTS"]['n' . $i++] = array("GROUP_CODE" => "AU", "IS_INHERITED" => "N", "TASK_ID" => CIBlockRights::LetterToTask($permission)); break; case "N": $arResult["RIGHTS"]['n' . $i++] = array("GROUP_CODE" => "G2", "IS_INHERITED" => "N", "TASK_ID" => CIBlockRights::LetterToTask($permission));
public static function GetIBlockPermission($iblock_id, $user_id) { global $USER; //IBlock permissions by default $Permission = CIBlock::GetPermission($iblock_id, $user_id); if ($Permission < "W") { $arIBlock = CIBlock::GetArrayByID($iblock_id); if ($arIBlock) { //Check if iblock is list $arListsPerm = CLists::GetPermission($arIBlock["IBLOCK_TYPE_ID"]); if (count($arListsPerm)) { //User groups if ($user_id == $USER->GetID()) { $arUserGroups = $USER->GetUserGroupArray(); } else { $arUserGroups = $USER->GetUserGroup($user_id); } //One of lists admins if (count(array_intersect($arListsPerm, $arUserGroups))) { $Permission = "X"; } } } } if ($Permission < "W" && $arIBlock["SOCNET_GROUP_ID"] && CModule::IncludeModule('socialnetwork')) { $arSocnetPerm = CLists::GetSocnetPermission($iblock_id); $socnet_role = CSocNetUserToGroup::GetUserRole($USER->GetID(), $arIBlock["SOCNET_GROUP_ID"]); $Permission = $arSocnetPerm[$socnet_role]; } return $Permission; }