@@ -751,14 +751,39 @@ private function _getSharedWith(
751751 }
752752
753753 if ($ path !== null ) {
754- $ qb ->leftJoin ('s ' , 'share ' , 'sc ' , $ qb ->expr ()->eq ('s.parent ' , 'sc.id ' ))
755- ->andWhere ($ qb ->expr ()->eq ('sc.share_type ' , $ qb ->createNamedParameter (IShare::TYPE_DECK_USER )))
756- ->andWhere ($ qb ->expr ()->eq ('sc.share_with ' , $ qb ->createNamedParameter ($ userId )));
754+ $ path = str_replace ('/ ' . $ userId . '/files ' , '' , $ path );
755+ $ path = rtrim ($ path , '/ ' );
756+
757+ $ onClause = $ qb ->expr ()->andX (
758+ $ qb ->expr ()->eq ('sc.parent ' , 's.id ' ),
759+ $ qb ->expr ()->eq ('sc.share_type ' , $ qb ->createNamedParameter (IShare::TYPE_DECK_USER )),
760+ $ qb ->expr ()->eq ('sc.share_with ' , $ qb ->createNamedParameter ($ userId )),
761+ );
762+ $ qb ->leftJoin ('s ' , 'share ' , 'sc ' , $ onClause );
757763
758764 if ($ forChildren ) {
759- $ qb ->andWhere ($ qb ->expr ()->like ('sc.file_target ' , $ qb ->createNamedParameter ($ this ->dbConnection ->escapeLikeParameter ($ path ) . '_% ' )));
765+ $ childPathTemplate = $ this ->dbConnection ->escapeLikeParameter ($ path ) . '/_% ' ;
766+
767+ $ qb ->andWhere (
768+ $ qb ->expr ()->orX (
769+ $ qb ->expr ()->like ('sc.file_target ' , $ qb ->createNamedParameter ($ childPathTemplate , IQueryBuilder::PARAM_STR )),
770+ $ qb ->expr ()->andX (
771+ $ qb ->expr ()->isNull ('sc.file_target ' ),
772+ $ qb ->expr ()->like ('s.file_target ' , $ qb ->createNamedParameter ($ childPathTemplate , IQueryBuilder::PARAM_STR )),
773+ ),
774+ ),
775+ );
760776 } else {
761- $ qb ->andWhere ($ qb ->expr ()->eq ('sc.file_target ' , $ qb ->createNamedParameter ($ path )));
777+ $ nonChildPath = $ path === '' ? '/ ' : $ path ;
778+ $ qb ->andWhere (
779+ $ qb ->expr ()->orX (
780+ $ qb ->expr ()->eq ('sc.file_target ' , $ qb ->createNamedParameter ($ nonChildPath , IQueryBuilder::PARAM_STR )),
781+ $ qb ->expr ()->andX (
782+ $ qb ->expr ()->isNull ('sc.file_target ' ),
783+ $ qb ->expr ()->eq ('s.file_target ' , $ qb ->createNamedParameter ($ nonChildPath , IQueryBuilder::PARAM_STR )),
784+ ),
785+ ),
786+ );
762787 }
763788 }
764789
0 commit comments