fnUserPrivs
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ClientUsersID | int | IN | |
@ClientsID | int | IN | |
@ObjectTypeFilter | int | IN |
Definition
Copy
CREATE FUNCTION [dbo].[fnUserPrivs]
(
@ClientUsersID int,
@ClientsID int,
@ObjectTypeFilter int
)
RETURNS TABLE
AS
RETURN
SELECT
O.Guid ObjectGuid,
1 ObjectTypeID,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canView,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canEdit,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canAdd,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canDelete,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canSecure
FROM dbo.fnUserRoles(@ClientUsersID,1) UR
INNER JOIN [dbo].RoleObjectPrivs OP ON OP.ClientRolesID = UR.ClientRolesID
RIGHT OUTER JOIN SiteContent O on O.GUID = OP.ObjectGUID
WHERE @ObjectTypeFilter IN (0,1) AND O.DELETED = 0 AND O.GUID IS NOT NULL
GROUP BY O.GUID,O.OwnerID
UNION ALL
SELECT
O.Guid ObjectGuid,
2 ObjectTypeID,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canView,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canEdit,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canAdd,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canDelete,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canSecure
FROM dbo.fnUserRoles(@ClientUsersID,1) UR
INNER JOIN [dbo].RoleObjectPrivs OP ON OP.ClientRolesID = UR.ClientRolesID
RIGHT OUTER JOIN SitePages O on O.GUID = OP.ObjectGUID
WHERE @ObjectTypeFilter IN (0,2,3) AND O.DELETED = 0 AND O.GUID IS NOT NULL
GROUP BY O.GUID,O.OwnerID
UNION ALL
SELECT
O.Guid ObjectGuid,
5 ObjectTypeID,
CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure
FROM dbo.fnUserRoles(@ClientUsersID,1) UR
INNER JOIN [dbo].RoleObjectPrivs OP ON OP.ClientRolesID = UR.ClientRolesID
RIGHT OUTER JOIN ApplicationTasks O on O.GUID = OP.ObjectGUID
WHERE @ObjectTypeFilter IN (0,5) AND O.GUID IS NOT NULL
GROUP BY O.GUID
UNION ALL
SELECT
O.Guid ObjectGuid,
12 ObjectTypeID,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canView,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canEdit,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canAdd,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canDelete,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canSecure
FROM dbo.fnUserRoles(@ClientUsersID,1) UR
INNER JOIN [dbo].RoleObjectPrivs OP ON OP.ClientRolesID = UR.ClientRolesID
RIGHT OUTER JOIN EmailList O on O.GUID = OP.ObjectGUID
WHERE @ObjectTypeFilter IN (0,12) AND O.DELETED = 0 AND O.GUID IS NOT NULL
GROUP BY O.GUID,O.OwnerID
UNION ALL
SELECT
O.Guid ObjectGuid,
14 ObjectTypeID,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canView,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canEdit,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canAdd,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canDelete,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canSecure
FROM dbo.fnUserRoles(@ClientUsersID,1) UR
INNER JOIN [dbo].RoleObjectPrivs OP ON OP.ClientRolesID = UR.ClientRolesID
RIGHT OUTER JOIN EmailTemplate O on O.GUID = OP.ObjectGUID
WHERE @ObjectTypeFilter IN (0,14) AND O.DELETED = 0 AND O.GUID IS NOT NULL
GROUP BY O.GUID,O.OwnerID
UNION ALL
SELECT
O.Guid ObjectGuid,
18 ObjectTypeID,
CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure
FROM dbo.fnUserRoles(@ClientUsersID,1) UR
INNER JOIN [dbo].RoleObjectPrivs OP ON OP.ClientRolesID = UR.ClientRolesID
RIGHT OUTER JOIN ClientClassYears O on O.GUID = OP.ObjectGUID
WHERE @ObjectTypeFilter IN (0,18) AND O.GUID IS NOT NULL
GROUP BY O.GUID
UNION ALL
SELECT
O.Guid ObjectGuid,
20 ObjectTypeID,
CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure
FROM dbo.fnUserRoles(@ClientUsersID,1) UR
INNER JOIN [dbo].RoleObjectPrivs OP ON OP.ClientRolesID = UR.ClientRolesID
RIGHT OUTER JOIN DocUploadPart O on O.GUID = OP.ObjectGUID
WHERE @ObjectTypeFilter IN (0,20) AND O.GUID IS NOT NULL
GROUP BY O.GUID
UNION ALL
SELECT
O.Guid ObjectGuid,
21 ObjectTypeID,
CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure
FROM dbo.fnUserRoles(@ClientUsersID,1) UR
INNER JOIN [dbo].RoleObjectPrivs OP ON OP.ClientRolesID = UR.ClientRolesID
RIGHT OUTER JOIN DiscussionGroups O on O.GUID = OP.ObjectGUID
WHERE @ObjectTypeFilter IN (0,21) AND O.GUID IS NOT NULL
GROUP BY O.GUID
UNION ALL
SELECT
O.Guid ObjectGuid,
22 ObjectTypeID,
CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure
FROM dbo.fnUserRoles(@ClientUsersID,1) UR
INNER JOIN [dbo].RoleObjectPrivs OP ON OP.ClientRolesID = UR.ClientRolesID
RIGHT OUTER JOIN JobBoards O on O.GUID = OP.ObjectGUID
WHERE @ObjectTypeFilter IN (0,22) AND O.GUID IS NOT NULL
GROUP BY O.GUID
UNION ALL
SELECT
O.Guid ObjectGuid,
25 ObjectTypeID,
CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure
FROM dbo.fnUserRoles(@ClientUsersID,1) UR
INNER JOIN [dbo].RoleObjectPrivs OP ON OP.ClientRolesID = UR.ClientRolesID
RIGHT OUTER JOIN GivingHistory O on O.GUID = OP.ObjectGUID
WHERE @ObjectTypeFilter IN (0,25) AND O.GUID IS NOT NULL
GROUP BY O.GUID
UNION ALL
SELECT
O.Guid ObjectGuid,
26 ObjectTypeID,
CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure
FROM dbo.fnUserRoles(@ClientUsersID,1) UR
INNER JOIN [dbo].RoleObjectPrivs OP ON OP.ClientRolesID = UR.ClientRolesID
RIGHT OUTER JOIN NewsReaders O on O.GUID = OP.ObjectGUID
WHERE @ObjectTypeFilter IN (0,26) AND O.GUID IS NOT NULL
GROUP BY O.GUID
UNION ALL
SELECT
O.Guid ObjectGuid,
27 ObjectTypeID,
CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure
FROM dbo.fnUserRoles(@ClientUsersID,1) UR
INNER JOIN [dbo].RoleObjectPrivs OP ON OP.ClientRolesID = UR.ClientRolesID
RIGHT OUTER JOIN NewsChannels O on O.GUID = OP.ObjectGUID
WHERE @ObjectTypeFilter IN (0,27) AND O.GUID IS NOT NULL
GROUP BY O.GUID
UNION ALL
SELECT
O.Guid ObjectGuid,
30 ObjectTypeID,
CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure
FROM dbo.fnUserRoles(@ClientUsersID,1) UR
INNER JOIN [dbo].RoleObjectPrivs OP ON OP.ClientRolesID = UR.ClientRolesID
RIGHT OUTER JOIN SiteStylesheets O on O.GUID = OP.ObjectGUID
WHERE @ObjectTypeFilter IN (0,30) AND O.GUID IS NOT NULL
GROUP BY O.GUID
UNION ALL
SELECT
O.CalendarCategoryPicksID ObjectGuid,
31 ObjectTypeID,
CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure
FROM dbo.fnUserRoles(@ClientUsersID,1) UR
INNER JOIN [dbo].RoleObjectPrivs OP ON OP.ClientRolesID = UR.ClientRolesID
RIGHT OUTER JOIN CalendarEvtCategoryPicks O on O.CalendarCategoryPicksID = OP.ObjectGUID
WHERE @ObjectTypeFilter IN (0,31) AND O.CalendarCategoryPicksID IS NOT NULL
GROUP BY O.CalendarCategoryPicksID
UNION ALL
SELECT
O.Guid ObjectGuid,
33 ObjectTypeID,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canView,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canEdit,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canAdd,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canDelete,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canSecure
FROM dbo.fnUserRoles(@ClientUsersID,1) UR
INNER JOIN [dbo].RoleObjectPrivs OP ON OP.ClientRolesID = UR.ClientRolesID
RIGHT OUTER JOIN EmailProject O on O.GUID = OP.ObjectGUID
WHERE @ObjectTypeFilter IN (0,33) AND O.DELETED = 0 AND O.GUID IS NOT NULL
GROUP BY O.GUID,O.OwnerID
UNION ALL
SELECT
O.Guid ObjectGuid,
34 ObjectTypeID,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canView,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canEdit,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canAdd,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canDelete,
CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1)
ELSE CONVERT(bit,0) END canSecure
FROM dbo.fnUserRoles(@ClientUsersID,1) UR
INNER JOIN [dbo].RoleObjectPrivs OP ON OP.ClientRolesID = UR.ClientRolesID
RIGHT OUTER JOIN dbo.CustomFormElement O on O.GUID = OP.ObjectGUID
WHERE @ObjectTypeFilter IN (0,34) AND O.GUID IS NOT NULL AND O.TypeID = 1
GROUP BY O.GUID,O.OwnerID