@@ -153,25 +153,30 @@ public function searchInCaches(ISearchQuery $searchQuery, array $caches): array
153153 if ($ user === null ) {
154154 throw new \InvalidArgumentException ("Searching by tag requires the user to be set in the query " );
155155 }
156- if ($ searchQuery ->getSearchOperation () instanceof ISearchComparison && $ searchQuery ->getSearchOperation ()->getField () === 'systemtag ' ) {
157- $ query
158- ->leftJoin ('file ' , 'systemtag_object_mapping ' , 'systemtagmap ' , $ builder ->expr ()->andX (
159- $ builder ->expr ()->eq ('file.fileid ' , $ builder ->expr ()->castColumn ('systemtagmap.objectid ' , IQueryBuilder::PARAM_INT )),
160- $ builder ->expr ()->eq ('systemtagmap.objecttype ' , $ builder ->createNamedParameter ('files ' ))
161- ))
162- ->leftJoin ('systemtagmap ' , 'systemtag ' , 'systemtag ' , $ builder ->expr ()->andX (
163- $ builder ->expr ()->eq ('systemtag.id ' , 'systemtagmap.systemtagid ' ),
164- $ builder ->expr ()->eq ('systemtag.visibility ' , $ builder ->createNamedParameter (true ))
165- ));
166- } else {
167- $ query
168- ->leftJoin ('file ' , 'vcategory_to_object ' , 'tagmap ' , $ builder ->expr ()->eq ('file.fileid ' , 'tagmap.objid ' ))
169- ->leftJoin ('tagmap ' , 'vcategory ' , 'tag ' , $ builder ->expr ()->andX (
170- $ builder ->expr ()->eq ('tagmap.type ' , 'tag.type ' ),
171- $ builder ->expr ()->eq ('tagmap.categoryid ' , 'tag.id ' ),
172- $ builder ->expr ()->eq ('tag.type ' , $ builder ->createNamedParameter ('files ' )),
173- $ builder ->expr ()->eq ('tag.uid ' , $ builder ->createNamedParameter ($ user ->getUID ()))
174- ));
156+ if ($ searchQuery ->getSearchOperation () instanceof ISearchComparison) {
157+ switch ($ searchQuery ->getSearchOperation ()->getField ()) {
158+ case 'systemtag ' :
159+ $ query
160+ ->leftJoin ('file ' , 'systemtag_object_mapping ' , 'systemtagmap ' , $ builder ->expr ()->andX (
161+ $ builder ->expr ()->eq ('file.fileid ' , $ builder ->expr ()->castColumn ('systemtagmap.objectid ' , IQueryBuilder::PARAM_INT )),
162+ $ builder ->expr ()->eq ('systemtagmap.objecttype ' , $ builder ->createNamedParameter ('files ' ))
163+ ))
164+ ->leftJoin ('systemtagmap ' , 'systemtag ' , 'systemtag ' , $ builder ->expr ()->andX (
165+ $ builder ->expr ()->eq ('systemtag.id ' , 'systemtagmap.systemtagid ' ),
166+ $ builder ->expr ()->eq ('systemtag.visibility ' , $ builder ->createNamedParameter (true ))
167+ ));
168+ break ;
169+ case 'tagname ' :
170+ $ query
171+ ->leftJoin ('file ' , 'vcategory_to_object ' , 'tagmap ' , $ builder ->expr ()->eq ('file.fileid ' , 'tagmap.objid ' ))
172+ ->leftJoin ('tagmap ' , 'vcategory ' , 'tag ' , $ builder ->expr ()->andX (
173+ $ builder ->expr ()->eq ('tagmap.type ' , 'tag.type ' ),
174+ $ builder ->expr ()->eq ('tagmap.categoryid ' , 'tag.id ' ),
175+ $ builder ->expr ()->eq ('tag.type ' , $ builder ->createNamedParameter ('files ' )),
176+ $ builder ->expr ()->eq ('tag.uid ' , $ builder ->createNamedParameter ($ user ->getUID ()))
177+ ));
178+ break ;
179+ }
175180 }
176181 }
177182
0 commit comments