2828
2929namespace OC \Search \Provider ;
3030
31- use OC \Files \Filesystem ;
31+ use OC \Files \Search \SearchComparison ;
32+ use OC \Files \Search \SearchOrder ;
33+ use OC \Files \Search \SearchQuery ;
34+ use OCP \Files \FileInfo ;
35+ use OCP \Files \IRootFolder ;
36+ use OCP \Files \Search \ISearchComparison ;
37+ use OCP \Files \Search \ISearchOrder ;
38+ use OCP \IUserSession ;
3239use OCP \Search \PagedProvider ;
3340
3441/**
@@ -45,35 +52,38 @@ class File extends PagedProvider {
4552 * @return \OCP\Search\Result[]
4653 */
4754 public function search ($ query , int $ limit = null , int $ offset = null ) {
48- if ($ offset === null ) {
49- $ offset = 0 ;
55+ /** @var IRootFolder $rootFolder */
56+ $ rootFolder = \OC ::$ server ->query (IRootFolder::class);
57+ /** @var IUserSession $userSession */
58+ $ userSession = \OC ::$ server ->query (IUserSession::class);
59+ $ user = $ userSession ->getUser ();
60+ if (!$ user ) {
61+ return [];
5062 }
51- \OC_Util::setupFS ();
52- $ files = Filesystem::search ($ query );
63+ $ userFolder = $ rootFolder ->getUserFolder ($ user ->getUID ());
64+ $ fileQuery = new SearchQuery (
65+ new SearchComparison (ISearchComparison::COMPARE_LIKE , 'name ' , '% ' . $ query . '% ' ),
66+ (int )$ limit ,
67+ (int )$ offset ,
68+ [
69+ new SearchOrder (ISearchOrder::DIRECTION_DESCENDING , 'mtime ' ),
70+ ],
71+ $ user
72+ );
73+ $ files = $ userFolder ->search ($ fileQuery );
5374 $ results = [];
54- if ($ limit !== null ) {
55- $ files = array_slice ($ files , $ offset , $ offset + $ limit );
56- }
5775 // edit results
5876 foreach ($ files as $ fileData ) {
59- // skip versions
60- if (strpos ($ fileData ['path ' ], '_versions ' ) === 0 ) {
61- continue ;
62- }
63- // skip top-level folder
64- if ($ fileData ['name ' ] === 'files ' && $ fileData ['parent ' ] === -1 ) {
65- continue ;
66- }
6777 // create audio result
68- if ($ fileData[ ' mimepart ' ] === 'audio ' ) {
78+ if ($ fileData-> getMimePart () === 'audio ' ) {
6979 $ result = new \OC \Search \Result \Audio ($ fileData );
7080 }
7181 // create image result
72- elseif ($ fileData[ ' mimepart ' ] === 'image ' ) {
82+ elseif ($ fileData-> getMimePart () === 'image ' ) {
7383 $ result = new \OC \Search \Result \Image ($ fileData );
7484 }
7585 // create folder result
76- elseif ($ fileData[ ' mimetype ' ] === ' httpd/unix-directory ' ) {
86+ elseif ($ fileData-> getMimetype () === FileInfo:: MIMETYPE_FOLDER ) {
7787 $ result = new \OC \Search \Result \Folder ($ fileData );
7888 }
7989 // or create file result
0 commit comments