diff options
author | Vincent Petry <pvince81@owncloud.com> | 2015-12-03 16:40:20 +0100 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2015-12-03 16:40:20 +0100 |
commit | 7d8aaa81c0221c86d600c637943ffd48889ce6d9 (patch) | |
tree | c7ff19ddef02cfa9d30d9d59db372d4c715c2d14 | |
parent | e89ab22d3a0606db0063266ea0fc230d7182d46e (diff) | |
parent | cef8c875f995d2b8d98b2931d9d332f73efe3aa7 (diff) | |
download | nextcloud-server-7d8aaa81c0221c86d600c637943ffd48889ce6d9.tar.gz nextcloud-server-7d8aaa81c0221c86d600c637943ffd48889ce6d9.zip |
Merge pull request #20489 from owncloud/backport-20487-8.1
[8.1] Activity oracle sql error for favorites
-rw-r--r-- | apps/files/lib/activity.php | 9 | ||||
-rw-r--r-- | apps/files/tests/activitytest.php | 21 |
2 files changed, 23 insertions, 7 deletions
diff --git a/apps/files/lib/activity.php b/apps/files/lib/activity.php index 3ed437c045a..6cf2786239a 100644 --- a/apps/files/lib/activity.php +++ b/apps/files/lib/activity.php @@ -333,6 +333,7 @@ class Activity implements IExtension { */ $parameters = $fileQueryList = []; $parameters[] = 'files'; + $parameters[] = 'files'; $fileQueryList[] = '(`type` <> ? AND `type` <> ?)'; $parameters[] = self::TYPE_SHARE_CREATED; @@ -347,10 +348,12 @@ class Activity implements IExtension { $parameters[] = $favorite . '/%'; } - $parameters[] = 'files'; - return [ - ' CASE WHEN `app` = ? THEN (' . implode(' OR ', $fileQueryList) . ') ELSE `app` <> ? END ', + ' CASE ' + . 'WHEN `app` <> ? THEN 1 ' + . 'WHEN `app` = ? AND (' . implode(' OR ', $fileQueryList) . ') THEN 1 ' + . 'ELSE 0 ' + . 'END = 1 ', $parameters, ]; } diff --git a/apps/files/tests/activitytest.php b/apps/files/tests/activitytest.php index cdb1d21bcd8..fba41386cab 100644 --- a/apps/files/tests/activitytest.php +++ b/apps/files/tests/activitytest.php @@ -290,16 +290,16 @@ class ActivityTest extends TestCase { 'items' => [], 'folders' => [], ], - ' CASE WHEN `app` = ? THEN ((`type` <> ? AND `type` <> ?)) ELSE `app` <> ? END ', - ['files', Activity::TYPE_SHARE_CREATED, Activity::TYPE_SHARE_CHANGED, 'files'] + ' CASE WHEN `app` <> ? THEN 1 WHEN `app` = ? AND ((`type` <> ? AND `type` <> ?)) THEN 1 ELSE 0 END = 1 ', + ['files', 'files', Activity::TYPE_SHARE_CREATED, Activity::TYPE_SHARE_CHANGED] ], [ [ 'items' => ['file.txt', 'folder'], 'folders' => ['folder'], ], - ' CASE WHEN `app` = ? THEN ((`type` <> ? AND `type` <> ?) OR `file` = ? OR `file` = ? OR `file` LIKE ?) ELSE `app` <> ? END ', - ['files', Activity::TYPE_SHARE_CREATED, Activity::TYPE_SHARE_CHANGED, 'file.txt', 'folder', 'folder/%', 'files'] + ' CASE WHEN `app` <> ? THEN 1 WHEN `app` = ? AND ((`type` <> ? AND `type` <> ?) OR `file` = ? OR `file` = ? OR `file` LIKE ?) THEN 1 ELSE 0 END = 1 ', + ['files', 'files', Activity::TYPE_SHARE_CREATED, Activity::TYPE_SHARE_CHANGED, 'file.txt', 'folder', 'folder/%'] ], ]; } @@ -333,6 +333,19 @@ class ActivityTest extends TestCase { $result = $this->activityExtension->getQueryForFilter('all'); $this->assertEquals([$query, $parameters], $result); + + $this->executeQueryForFilter($result); + } + + public function executeQueryForFilter(array $result) { + list($resultQuery, $resultParameters) = $result; + $resultQuery = str_replace('`file`', '`user`', $resultQuery); + $resultQuery = str_replace('`type`', '`key`', $resultQuery); + + $connection = \OC::$server->getDatabaseConnection(); + $result = $connection->executeQuery('SELECT * FROM `*PREFIX*privatedata` WHERE ' . $resultQuery, $resultParameters); + $rows = $result->fetchAll(); + $result->closeCursor(); } protected function mockUserSession($user) { |