CCM NG/ccm-cms: Extended named queries for ContentItem to take permissions into account
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4731 8810af33-2d31-482b-a856-94f89814c4dfccm-docs
parent
24ae8a7747
commit
c51932edb6
|
|
@ -132,10 +132,25 @@ import static org.librecms.CmsConstants.*;
|
||||||
,
|
,
|
||||||
@NamedQuery(
|
@NamedQuery(
|
||||||
name = "ContentItem.countItemsInFolder",
|
name = "ContentItem.countItemsInFolder",
|
||||||
query = "SELECT COUNT(i) FROM ContentItem i "
|
query
|
||||||
|
= "SELECT DISTINCT COUNT(i) "
|
||||||
|
+ "FROM ContentItem i "
|
||||||
+ "JOIN i.categories c "
|
+ "JOIN i.categories c "
|
||||||
|
+ "JOIN i.permissions p "
|
||||||
+ "WHERE c.category = :folder "
|
+ "WHERE c.category = :folder "
|
||||||
+ "AND c.type = '" + CATEGORIZATION_TYPE_FOLDER + "'")
|
+ "AND c.type = '" + CATEGORIZATION_TYPE_FOLDER + "' "
|
||||||
|
+ "AND ("
|
||||||
|
+ " ("
|
||||||
|
+ " p.grantee IN :roles "
|
||||||
|
+ " AND p.grantedPrivilege = "
|
||||||
|
+ " (CASE WHEN i.version = 'DRAFT' "
|
||||||
|
+ " THEN '" + ItemPrivileges.PREVIEW + "' "
|
||||||
|
+ " ELSE '" + ItemPrivileges.VIEW_PUBLISHED + "' "
|
||||||
|
+ " END"
|
||||||
|
+ " )"
|
||||||
|
+ " )"
|
||||||
|
+ " OR true = :isSystemUser OR true = :isAdmin"
|
||||||
|
+ " )")
|
||||||
,
|
,
|
||||||
@NamedQuery(
|
@NamedQuery(
|
||||||
name = "ContentItem.findByNameInFolder",
|
name = "ContentItem.findByNameInFolder",
|
||||||
|
|
@ -162,20 +177,34 @@ import static org.librecms.CmsConstants.*;
|
||||||
,
|
,
|
||||||
@NamedQuery(
|
@NamedQuery(
|
||||||
name = "ContentItem.countByNameInFolder",
|
name = "ContentItem.countByNameInFolder",
|
||||||
query = "SELECT COUNT(i) FROM ContentItem i "
|
query = "SELECT DISTINCT COUNT(i)"
|
||||||
|
+ " FROM ContentItem i "
|
||||||
+ "JOIN i.categories c "
|
+ "JOIN i.categories c "
|
||||||
|
+ "JOIN i.permissions p "
|
||||||
+ "WHERE c.category = :folder "
|
+ "WHERE c.category = :folder "
|
||||||
+ "AND c.type = '" + CATEGORIZATION_TYPE_FOLDER
|
+ "AND c.type = '" + CATEGORIZATION_TYPE_FOLDER + "' "
|
||||||
+ "' "
|
+ "AND i.displayName = :name "
|
||||||
+ "AND i.displayName = :name")
|
+ "AND ("
|
||||||
|
+ " ("
|
||||||
|
+ " p.grantee IN :roles "
|
||||||
|
+ " AND p.grantedPrivilege = "
|
||||||
|
+ " (CASE WHEN i.version = 'DRAFT' "
|
||||||
|
+ " THEN '" + ItemPrivileges.PREVIEW + "' "
|
||||||
|
+ " ELSE '" + ItemPrivileges.VIEW_PUBLISHED + "' "
|
||||||
|
+ " END"
|
||||||
|
+ " )"
|
||||||
|
+ " )"
|
||||||
|
+ " OR true = :isSystemUser OR true = :isAdmin"
|
||||||
|
+ " )")
|
||||||
,
|
,
|
||||||
@NamedQuery(
|
@NamedQuery(
|
||||||
name = "ContentItem.filterByFolderAndName",
|
name = "ContentItem.filterByFolderAndName",
|
||||||
query = "SELECT i FROM ContentItem i "
|
query = "SELECT DISTINCT i "
|
||||||
|
+ "FROM ContentItem i "
|
||||||
+ "JOIN i.categories c "
|
+ "JOIN i.categories c "
|
||||||
|
+ "JOIN i.permissions p "
|
||||||
+ "WHERE c.category = :folder "
|
+ "WHERE c.category = :folder "
|
||||||
+ "AND c.type = '" + CATEGORIZATION_TYPE_FOLDER
|
+ "AND c.type = '" + CATEGORIZATION_TYPE_FOLDER + "' "
|
||||||
+ "' "
|
|
||||||
+ "AND LOWER(i.displayName) LIKE CONCAT(LOWER(:name), '%')")
|
+ "AND LOWER(i.displayName) LIKE CONCAT(LOWER(:name), '%')")
|
||||||
,
|
,
|
||||||
@NamedQuery(
|
@NamedQuery(
|
||||||
|
|
@ -186,6 +215,18 @@ import static org.librecms.CmsConstants.*;
|
||||||
+ "AND c.type = '" + CATEGORIZATION_TYPE_FOLDER
|
+ "AND c.type = '" + CATEGORIZATION_TYPE_FOLDER
|
||||||
+ "' "
|
+ "' "
|
||||||
+ "AND LOWER(i.displayName) LIKE CONCAT(LOWER(:name), '%') "
|
+ "AND LOWER(i.displayName) LIKE CONCAT(LOWER(:name), '%') "
|
||||||
|
+ "AND ("
|
||||||
|
+ " ("
|
||||||
|
+ " p.grantee IN :roles "
|
||||||
|
+ " AND p.grantedPrivilege = "
|
||||||
|
+ " (CASE WHEN i.version = 'DRAFT' "
|
||||||
|
+ " THEN '" + ItemPrivileges.PREVIEW + "' "
|
||||||
|
+ " ELSE '" + ItemPrivileges.VIEW_PUBLISHED + "' "
|
||||||
|
+ " END"
|
||||||
|
+ " )"
|
||||||
|
+ " )"
|
||||||
|
+ " OR true = :isSystemUser OR true = :isAdmin"
|
||||||
|
+ " )"
|
||||||
)
|
)
|
||||||
,
|
,
|
||||||
@NamedQuery(
|
@NamedQuery(
|
||||||
|
|
@ -197,20 +238,51 @@ import static org.librecms.CmsConstants.*;
|
||||||
,
|
,
|
||||||
@NamedQuery(
|
@NamedQuery(
|
||||||
name = "ContentItem.findDraftVersion",
|
name = "ContentItem.findDraftVersion",
|
||||||
query = "SELECT i FROM ContentItem i "
|
query
|
||||||
|
= "SELECT DISTINCT i "
|
||||||
|
+ "FROM ContentItem i "
|
||||||
|
+ "JOIN i.permissions p "
|
||||||
+ "WHERE i.itemUuid = :uuid "
|
+ "WHERE i.itemUuid = :uuid "
|
||||||
+ "AND i.version = org.librecms.contentsection.ContentItemVersion.DRAFT")
|
+ "AND i.version = 'DRAFT' "
|
||||||
|
+ "AND "
|
||||||
|
+ "((p.grantee IN :roles "
|
||||||
|
+ "AND p.grantedPrivilege = '" + ItemPrivileges.PREVIEW + "' "
|
||||||
|
+ ") OR true = :isSystemUser OR true = :isAdmin)")
|
||||||
,
|
,
|
||||||
@NamedQuery(
|
@NamedQuery(
|
||||||
name = "ContentItem.findLiveVersion",
|
name = "ContentItem.findLiveVersion",
|
||||||
query = "SELECT i FROM ContentItem i "
|
query
|
||||||
|
= "SELECT DISTINCT i "
|
||||||
|
+ "FROM ContentItem i "
|
||||||
|
+ "JOIN i.permissions p "
|
||||||
+ "WHERE i.itemUuid = :uuid "
|
+ "WHERE i.itemUuid = :uuid "
|
||||||
+ "AND i.version = org.librecms.contentsection.ContentItemVersion.LIVE")
|
+ "AND i.version = 'LIVE' "
|
||||||
|
+ "AND "
|
||||||
|
+ "((p.grantee IN :roles "
|
||||||
|
+ "AND p.grantedPrivilege = "
|
||||||
|
+ "'"
|
||||||
|
+ ItemPrivileges.VIEW_PUBLISHED
|
||||||
|
+ "' "
|
||||||
|
+ ") OR true = :isSystemUser OR true = :isAdmin)")
|
||||||
,
|
,
|
||||||
@NamedQuery(
|
@NamedQuery(
|
||||||
name = "ContentItem.findItemWithWorkflow",
|
name = "ContentItem.findItemWithWorkflow",
|
||||||
query = "SELECT i FROM ContentItem i "
|
query = "SELECT DISTINCT i "
|
||||||
|
+ "FROM ContentItem i "
|
||||||
|
+ "JOIN i.permissions p "
|
||||||
+ "WHERE i.workflow = :workflow "
|
+ "WHERE i.workflow = :workflow "
|
||||||
|
+ "AND ("
|
||||||
|
+ " ("
|
||||||
|
+ " p.grantee IN :roles "
|
||||||
|
+ " AND p.grantedPrivilege = "
|
||||||
|
+ " (CASE WHEN i.version = 'DRAFT' "
|
||||||
|
+ " THEN '" + ItemPrivileges.PREVIEW + "' "
|
||||||
|
+ " ELSE '" + ItemPrivileges.VIEW_PUBLISHED + "' "
|
||||||
|
+ " END"
|
||||||
|
+ " )"
|
||||||
|
+ " )"
|
||||||
|
+ " OR true = :isSystemUser OR true = :isAdmin"
|
||||||
|
+ " )"
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
public class ContentItem extends CcmObject implements Serializable {
|
public class ContentItem extends CcmObject implements Serializable {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue