diff options
author | Bjoern Schiessle <schiessle@owncloud.com> | 2014-11-28 11:18:15 +0100 |
---|---|---|
committer | Bjoern Schiessle <schiessle@owncloud.com> | 2014-11-28 14:46:27 +0100 |
commit | bf2c9be06640c1ce1fff6da893ddb55297069af9 (patch) | |
tree | 41d5d369720c7b99ceff237b0996db6df88a0759 /lib/private/activitymanager.php | |
parent | 154628daf46d2ace4bf90e05053696160b2b00c3 (diff) | |
download | nextcloud-server-bf2c9be06640c1ce1fff6da893ddb55297069af9.tar.gz nextcloud-server-bf2c9be06640c1ce1fff6da893ddb55297069af9.zip |
concatenate queries with 'or'
Diffstat (limited to 'lib/private/activitymanager.php')
-rw-r--r-- | lib/private/activitymanager.php | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/private/activitymanager.php b/lib/private/activitymanager.php index f31b121c8e8..e0ee7c1b055 100644 --- a/lib/private/activitymanager.php +++ b/lib/private/activitymanager.php @@ -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); } } |