2929namespace OC \Files \Cache \Wrapper ;
3030
3131use OC \Files \Cache \Cache ;
32+ use OC \Files \Cache \QuerySearchHelper ;
3233use OC \Files \Search \SearchBinaryOperator ;
3334use OC \Files \Search \SearchComparison ;
3435use OC \Files \Search \SearchQuery ;
@@ -63,6 +64,7 @@ public function __construct($cache, $root) {
6364 } else {
6465 $ this ->unjailedRoot = $ root ;
6566 }
67+ $ this ->querySearchHelper = new QuerySearchHelper ($ this ->mimetypeLoader );
6668 }
6769
6870 protected function getRoot () {
@@ -260,7 +262,7 @@ public function search($pattern) {
260262 ->whereStorageId ()
261263 ->andWhere ($ query ->expr ()->orX (
262264 $ query ->expr ()->like ('path ' , $ query ->createNamedParameter ($ this ->getGetUnjailedRoot () . '/% ' )),
263- $ query ->expr ()->eq ('path_hash ' , $ query ->createNamedParameter (md5 ( $ this ->getGetUnjailedRoot () ))),
265+ $ query ->expr ()->eq ('path ' , $ query ->createNamedParameter ($ this ->getGetUnjailedRoot ())),
264266 ))
265267 ->andWhere ($ query ->expr ()->iLike ('name ' , $ query ->createNamedParameter ($ pattern )));
266268
@@ -292,7 +294,7 @@ public function searchByMime($mimetype) {
292294 ->whereStorageId ()
293295 ->andWhere ($ query ->expr ()->orX (
294296 $ query ->expr ()->like ('path ' , $ query ->createNamedParameter ($ this ->getGetUnjailedRoot () . '/% ' )),
295- $ query ->expr ()->eq ('path_hash ' , $ query ->createNamedParameter (md5 ( $ this ->getGetUnjailedRoot () ))),
297+ $ query ->expr ()->eq ('path ' , $ query ->createNamedParameter ($ this ->getGetUnjailedRoot ())),
296298 ));
297299
298300 if (strpos ($ mimetype , '/ ' )) {
@@ -311,27 +313,21 @@ public function searchByMime($mimetype) {
311313 return $ this ->formatSearchResults ($ results );
312314 }
313315
314- public function searchQuery (ISearchQuery $ query ) {
316+ public function searchQuery (ISearchQuery $ searchQuery ) {
315317 if ($ this ->getGetUnjailedRoot () === '' || $ this ->getGetUnjailedRoot () === '/ ' ) {
316- return parent ::searchQuery ($ query );
318+ return parent ::searchQuery ($ searchQuery );
317319 }
318320
319- $ prefixFilter = new SearchComparison (
320- ISearchComparison::COMPARE_LIKE ,
321- 'path ' ,
322- $ this ->getGetUnjailedRoot () . '/% '
323- );
324- $ rootFilter = new SearchComparison (
325- ISearchComparison::COMPARE_EQUAL ,
326- 'path ' ,
327- $ this ->getGetUnjailedRoot ()
328- );
329- $ operation = new SearchBinaryOperator (
330- ISearchBinaryOperator::OPERATOR_AND ,
331- [new SearchBinaryOperator (ISearchBinaryOperator::OPERATOR_OR , [$ prefixFilter , $ rootFilter ]) , $ query ->getSearchOperation ()]
332- );
333- $ simpleQuery = new SearchQuery ($ operation , $ query ->getLimit (), $ query ->getOffset (), $ query ->getOrder (), $ query ->getUser ());
334- $ results = $ this ->getCache ()->searchQuery ($ simpleQuery );
321+ $ query = $ this ->buildSearchQuery ($ searchQuery );
322+
323+ $ query ->andWhere ($ query ->expr ()->orX (
324+ $ query ->expr ()->like ('path ' , $ query ->createNamedParameter ($ this ->getGetUnjailedRoot () . '/% ' )),
325+ $ query ->expr ()->eq ('path ' , $ query ->createNamedParameter ($ this ->getGetUnjailedRoot ())),
326+ ));
327+
328+ $ result = $ query ->execute ();
329+ $ results = $ this ->searchResultToCacheEntries ($ result );
330+ $ result ->closeCursor ();
335331 return $ this ->formatSearchResults ($ results );
336332 }
337333
0 commit comments