|
27 | 27 |
|
28 | 28 | use OC\Files\Search\SearchBinaryOperator; |
29 | 29 | use OC\SystemConfig; |
| 30 | +use OCP\DB\QueryBuilder\IQueryBuilder; |
30 | 31 | use OCP\Files\Cache\ICache; |
31 | 32 | use OCP\Files\Cache\ICacheEntry; |
32 | 33 | use OCP\Files\IMimeTypeLoader; |
@@ -106,13 +107,21 @@ public function searchInCaches(ISearchQuery $searchQuery, array $caches): array |
106 | 107 | throw new \InvalidArgumentException("Searching by tag requires the user to be set in the query"); |
107 | 108 | } |
108 | 109 | $query |
109 | | - ->innerJoin('file', 'vcategory_to_object', 'tagmap', $builder->expr()->eq('file.fileid', 'tagmap.objid')) |
110 | | - ->innerJoin('tagmap', 'vcategory', 'tag', $builder->expr()->andX( |
| 110 | + ->leftJoin('file', 'vcategory_to_object', 'tagmap', $builder->expr()->eq('file.fileid', 'tagmap.objid')) |
| 111 | + ->leftJoin('tagmap', 'vcategory', 'tag', $builder->expr()->andX( |
111 | 112 | $builder->expr()->eq('tagmap.type', 'tag.type'), |
112 | | - $builder->expr()->eq('tagmap.categoryid', 'tag.id') |
| 113 | + $builder->expr()->eq('tagmap.categoryid', 'tag.id'), |
| 114 | + $builder->expr()->eq('tag.type', $builder->createNamedParameter('files')), |
| 115 | + $builder->expr()->eq('tag.uid', $builder->createNamedParameter($user->getUID())) |
113 | 116 | )) |
114 | | - ->andWhere($builder->expr()->eq('tag.type', $builder->createNamedParameter('files'))) |
115 | | - ->andWhere($builder->expr()->eq('tag.uid', $builder->createNamedParameter($user->getUID()))); |
| 117 | + ->leftJoin('file', 'systemtag_object_mapping', 'systemtagmap', $builder->expr()->andX( |
| 118 | + $builder->expr()->eq('file.fileid', $builder->expr()->castColumn('systemtagmap.objectid', IQueryBuilder::PARAM_INT)), |
| 119 | + $builder->expr()->eq('systemtagmap.objecttype', $builder->createNamedParameter('files')) |
| 120 | + )) |
| 121 | + ->leftJoin('systemtagmap', 'systemtag', 'systemtag', $builder->expr()->andX( |
| 122 | + $builder->expr()->eq('systemtag.id', 'systemtagmap.systemtagid'), |
| 123 | + $builder->expr()->eq('systemtag.visibility', $builder->createNamedParameter(true)) |
| 124 | + )); |
116 | 125 | } |
117 | 126 |
|
118 | 127 | $searchExpr = $this->searchBuilder->searchOperatorToDBExpr($builder, $searchQuery->getSearchOperation()); |
|
0 commit comments