@@ -86,6 +86,7 @@ protected function getListQuery()
8686 $ from_date = $ this ->getState ('from_date ' );
8787 $ limit = $ this ->getState ('list.limit ' );
8888 $ start = $ this ->getState ('list.start ' );
89+ $ filter_condition = $ this ->getState ('filter_condition ' );
8990
9091 $ result_arr = array ();
9192
@@ -99,15 +100,51 @@ protected function getListQuery()
99100 // Get all filters
100101 $ filters = $ this ->get ('filter_fields ' );
101102
102- foreach ($ filters as $ filter )
103+ // Default filter condition AND support
104+ if ($ filter_condition != 'any ' )
103105 {
104- $ filterValue = $ this ->getState ($ filter );
106+ foreach ($ filters as $ filter )
107+ {
108+ $ filterValue = $ this ->getState ($ filter );
109+
110+ if (!empty ($ filterValue ) && $ filter != 'type ' )
111+ {
112+ $ filterValue = $ this ->activityStreamActivitiesHelper ->buildActivityFilterQuery ($ filterValue );
113+ $ query ->where ($ db ->quoteName ($ filter ) . ' IN ( ' . $ filterValue . ') ' );
114+ }
115+ }
116+ }
117+ else
118+ {
119+ // Filter condition OR support
120+ $ whereClause = array ();
105121
106- if (! empty ( $ filterValue ) && $ filter != ' type ' )
122+ foreach ( $ filters as $ filter )
107123 {
108- $ filterValue = $ this ->activityStreamActivitiesHelper ->buildActivityFilterQuery ($ filterValue );
109- $ query ->where ($ db ->quoteName ($ filter ) . ' IN ( ' . $ filterValue . ') ' );
124+ $ filterValue = $ this ->getState ($ filter );
125+
126+ if (!empty ($ filterValue ) && $ filter != 'type ' )
127+ {
128+ $ filterValue = $ this ->activityStreamActivitiesHelper ->buildActivityFilterQuery ($ filterValue );
129+ $ conditionFilters = array ('target_id ' , 'object_id ' , 'actor_id ' );
130+
131+ if (!in_array ($ filter , $ conditionFilters ))
132+ {
133+ $ query ->where ($ db ->quoteName ($ filter ) . ' IN ( ' . $ filterValue . ') ' );
134+ }
135+ else
136+ {
137+ $ whereClause [] = $ db ->quoteName ($ filter ) . " IN ( " . $ filterValue . ") " ;
138+ }
139+ }
110140 }
141+
142+ if (!empty ($ whereClause ))
143+ {
144+ $ whereClause = '( ' . implode (' OR ' , $ whereClause ) . ') ' ;
145+ }
146+
147+ $ query ->where ($ whereClause );
111148 }
112149
113150 // Return results from specified date
0 commit comments