public static boolean contains( PermissionChecker permissionChecker, long groupId, long folderId, String actionId) throws PortalException { if (folderId == BookmarksFolderConstants.DEFAULT_PARENT_FOLDER_ID) { return BookmarksPermission.contains(permissionChecker, groupId, actionId); } else { BookmarksFolder folder = BookmarksFolderLocalServiceUtil.getBookmarksFolder(folderId); return contains(permissionChecker, folder, actionId); } }
public static boolean contains( PermissionChecker permissionChecker, BookmarksFolder folder, String actionId) throws PortalException { if (actionId.equals(ActionKeys.ADD_FOLDER)) { actionId = ActionKeys.ADD_SUBFOLDER; } Boolean hasPermission = StagingPermissionUtil.hasPermission( permissionChecker, folder.getGroupId(), BookmarksFolder.class.getName(), folder.getFolderId(), PortletKeys.BOOKMARKS, actionId); if (hasPermission != null) { return hasPermission.booleanValue(); } if (actionId.equals(ActionKeys.VIEW) && PropsValues.PERMISSIONS_VIEW_DYNAMIC_INHERITANCE) { try { long folderId = folder.getFolderId(); while (folderId != BookmarksFolderConstants.DEFAULT_PARENT_FOLDER_ID) { folder = BookmarksFolderLocalServiceUtil.getFolder(folderId); if (!_hasPermission(permissionChecker, folder, actionId)) { return false; } folderId = folder.getParentFolderId(); } } catch (NoSuchFolderException nsfe) { if (!folder.isInTrash()) { throw nsfe; } } return BookmarksPermission.contains(permissionChecker, folder.getGroupId(), actionId); } return _hasPermission(permissionChecker, folder, actionId); }