1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.module.forum.admin.moderation;
35
36 import info.magnolia.cms.core.search.QueryResult;
37 import info.magnolia.cms.gui.controlx.list.ValueProvider;
38 import info.magnolia.cms.gui.controlx.search.QueryBuilder;
39 import info.magnolia.cms.gui.controlx.search.RepositorySearchListModel;
40 import info.magnolia.cms.security.User;
41 import info.magnolia.context.MgnlContext;
42 import info.magnolia.module.forum.DefaultForumManager;
43
44 import java.util.Collection;
45
46 import org.apache.commons.collections.CollectionUtils;
47 import org.apache.commons.collections.Predicate;
48 import org.apache.commons.lang.StringUtils;
49 import org.slf4j.Logger;
50 import org.slf4j.LoggerFactory;
51
52
53
54
55
56
57
58
59 public final class ModerationListModel extends RepositorySearchListModel {
60
61 private static final Logger log = LoggerFactory.getLogger(ModerationListModel.class);
62
63
64
65
66 public ModerationListModel(String id) {
67 super(id);
68 }
69
70
71
72
73 @Override
74 protected QueryBuilder getQueryBuilder() {
75 return new QueryBuilder(this){
76 @Override
77 protected String buildWhereClause() {
78 String where = super.buildWhereClause();
79 if(StringUtils.isNotEmpty(where)){
80 where += " and ";
81 }
82 where += "validated is null";
83 return where;
84 }
85 };
86 }
87
88 @Override
89 public String getNodeType() {
90 return DefaultForumManager.MESSAGE_NODETYPE;
91 }
92
93 @Override
94 public String getResultNodeType() {
95 return DefaultForumManager.MESSAGE_NODETYPE;
96 }
97
98
99
100
101 @Override
102 protected Collection getResult(QueryResult result) {
103 Collection messages = super.getResult(result);
104
105 CollectionUtils.filter(messages, new Predicate() {
106 @Override
107 public boolean evaluate(Object message) {
108
109
110
111
112 User currentUser = MgnlContext.getUser();
113 return (currentUser.hasRole(DefaultForumManager.ROLE_FORUM_ALL_MODERATOR) || currentUser.hasRole(DefaultForumManager.ROLE_FORUM_ALL_ADMIN));
114 }
115 });
116 return messages;
117 }
118
119 @Override
120 public ValueProvider getValueProvider() {
121 return new MessageValueProvider(super.getValueProvider());
122 }
123 }