Index: openacs-4/packages/oacs-dav/tcl/oacs-dav-procs-postgresql.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/oacs-dav/tcl/oacs-dav-procs-postgresql.xql,v
diff -u -r1.5 -r1.6
--- openacs-4/packages/oacs-dav/tcl/oacs-dav-procs-postgresql.xql 8 Aug 2006 21:27:07 -0000 1.5
+++ openacs-4/packages/oacs-dav/tcl/oacs-dav-procs-postgresql.xql 7 Aug 2017 23:48:13 -0000 1.6
@@ -14,16 +14,12 @@
from cr_items c1, cr_items c2
where c2.item_id = :item_id
and c1.tree_sortkey between c2.tree_sortkey and tree_right(c2.tree_sortkey)
- and not exists (select 1
- from acs_object_party_privilege_map m
- where m.object_id = cr_items.item_id
- and m.party_id = :user_id
- and m.privilege = :privilege)
+ and acs_permission__permission_p(cr_items.item_id, :user_id, :privilege)
+
-
+
select
coalesce (cr.content_length,0) as content_length,
@@ -41,16 +37,13 @@
cr_items ci2,
acs_objects o
where
- ci1.live_revision = cr.revision_id and
- ci1.tree_sortkey between ci2.tree_sortkey and tree_right(ci2.tree_sortkey) and
- ci2.item_id=:folder_id and
- ci1.item_id = o.object_id and
- (tree_level(ci1.tree_sortkey) - tree_level(ci2.tree_sortkey)) <= :depth :: integer and
- exists (select 1
- from acs_object_party_privilege_map m
- where m.object_id = ci1.item_id
- and m.party_id = :user_id
- and m.privilege = 'read')
+ ci1.live_revision = cr.revision_id
+ and ci1.tree_sortkey between ci2.tree_sortkey and tree_right(ci2.tree_sortkey)
+ and ci2.item_id=:folder_id
+ and ci1.item_id = o.object_id
+ and (tree_level(ci1.tree_sortkey) - tree_level(ci2.tree_sortkey)) <= :depth ::integer
+ and acs_permission__permission_p(ci1.item_id, :user_id, 'read')
+
union
select 0 as content_length,
'*/*' as mime_type,
@@ -66,16 +59,12 @@
cr_items ci2,
acs_objects o
where
- ci1.tree_sortkey between ci2.tree_sortkey and tree_right(ci2.tree_sortkey) and
- ci2.item_id=:folder_id and
- ci1.item_id = o.object_id and
- (tree_level(ci1.tree_sortkey) - tree_level(ci2.tree_sortkey)) <= :depth :: integer and
- exists (select 1
- from acs_object_party_privilege_map m
- where m.object_id = ci1.item_id
- and m.party_id = :user_id
- and m.privilege = 'read') and
- not exists (select 1
+ ci1.tree_sortkey between ci2.tree_sortkey and tree_right(ci2.tree_sortkey)
+ and ci2.item_id = :folder_id
+ and ci1.item_id = o.object_id
+ and (tree_level(ci1.tree_sortkey) - tree_level(ci2.tree_sortkey)) <= :depth ::integer
+ and acs_permission__permission_p(ci1.item_id, :user_id, 'read')
+ and not exists (select 1
from cr_revisions cr
where cr.revision_id = ci1.live_revision)
@@ -98,12 +87,8 @@
where
ci.item_id=:item_id
and ci.item_id = o.object_id
- and cr.revision_id=ci.live_revision
- and exists (select 1
- from acs_object_party_privilege_map m
- where m.object_id = ci.item_id
- and m.party_id = :user_id
- and m.privilege = 'read')
+ and cr.revision_id = ci.live_revision
+ and acs_permission__permission_p(ci.item_id, :user_id, 'read')
@@ -281,5 +266,14 @@
+
+
+ select count(*)
+ from cr_revisions
+ where item_id = :item_id
+ and not acs_permission__permission_p(revision_id, :user_id, 'delete')
+
+
+