Skip to content
Snippets Groups Projects
Commit bf2c9be0 authored by Björn Schießle's avatar Björn Schießle
Browse files

concatenate queries with 'or'

parent 154628da
No related branches found
No related tags found
No related merge requests found
......@@ -247,16 +247,28 @@ class ActivityManager implements IManager {
* @return array
*/
function getQueryForFilter($filter) {
$conditions = array();
$parameters = array();
foreach($this->extensions as $extension) {
$c = $extension();
if ($c instanceof IExtension) {
$result = $c->getQueryForFilter($filter);
if (is_array($result)) {
return $result;
list($condition, $parameter) = $result;
if ($condition && is_array($parameter)) {
$conditions[] = $condition;
$parameters = array_merge($parameters, $parameter);
}
}
}
}
return array(null, null);
if (empty($conditions)) {
return array(null, null);
}
return array(' and ((' . implode(') or (', $conditions) . '))', $parameters);
}
}
......@@ -87,11 +87,14 @@ class Test_ActivityManager extends \Test\TestCase {
}
public function testQueryForFilter() {
$this->activityManager->registerExtension(function() {
return new SimpleExtension();
});
$result = $this->activityManager->getQueryForFilter('filter1');
$this->assertEquals(
array(
'`app` = ? and `message` like ?',
array('mail', 'ownCloud%')
' and ((`app` = ? and `message` like ?) or (`app` = ? and `message` like ?))',
array('mail', 'ownCloud%', 'mail', 'ownCloud%')
), $result
);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment