2929
3030namespace OC \Search \Provider ;
3131
32- use OC \Files \Filesystem ;
32+ use OC \Files \Search \SearchComparison ;
33+ use OC \Files \Search \SearchOrder ;
34+ use OC \Files \Search \SearchQuery ;
35+ use OCP \Files \FileInfo ;
36+ use OCP \Files \IRootFolder ;
37+ use OCP \Files \Search \ISearchComparison ;
38+ use OCP \Files \Search \ISearchOrder ;
39+ use OCP \IUserSession ;
3340use OCP \Search \PagedProvider ;
3441
3542/**
@@ -48,35 +55,38 @@ class File extends PagedProvider {
4855 * @deprecated 20.0.0
4956 */
5057 public function search ($ query , int $ limit = null , int $ offset = null ) {
51- if ($ offset === null ) {
52- $ offset = 0 ;
58+ /** @var IRootFolder $rootFolder */
59+ $ rootFolder = \OC ::$ server ->query (IRootFolder::class);
60+ /** @var IUserSession $userSession */
61+ $ userSession = \OC ::$ server ->query (IUserSession::class);
62+ $ user = $ userSession ->getUser ();
63+ if (!$ user ) {
64+ return [];
5365 }
54- \OC_Util::setupFS ();
55- $ files = Filesystem::search ($ query );
66+ $ userFolder = $ rootFolder ->getUserFolder ($ user ->getUID ());
67+ $ fileQuery = new SearchQuery (
68+ new SearchComparison (ISearchComparison::COMPARE_LIKE , 'name ' , '% ' . $ query . '% ' ),
69+ (int )$ limit ,
70+ (int )$ offset ,
71+ [
72+ new SearchOrder (ISearchOrder::DIRECTION_DESCENDING , 'mtime ' ),
73+ ],
74+ $ user
75+ );
76+ $ files = $ userFolder ->search ($ fileQuery );
5677 $ results = [];
57- if ($ limit !== null ) {
58- $ files = array_slice ($ files , $ offset , $ offset + $ limit );
59- }
6078 // edit results
6179 foreach ($ files as $ fileData ) {
62- // skip versions
63- if (strpos ($ fileData ['path ' ], '_versions ' ) === 0 ) {
64- continue ;
65- }
66- // skip top-level folder
67- if ($ fileData ['name ' ] === 'files ' && $ fileData ['parent ' ] === -1 ) {
68- continue ;
69- }
7080 // create audio result
71- if ($ fileData[ ' mimepart ' ] === 'audio ' ) {
81+ if ($ fileData-> getMimePart () === 'audio ' ) {
7282 $ result = new \OC \Search \Result \Audio ($ fileData );
7383 }
7484 // create image result
75- elseif ($ fileData[ ' mimepart ' ] === 'image ' ) {
85+ elseif ($ fileData-> getMimePart () === 'image ' ) {
7686 $ result = new \OC \Search \Result \Image ($ fileData );
7787 }
7888 // create folder result
79- elseif ($ fileData[ ' mimetype ' ] === ' httpd/unix-directory ' ) {
89+ elseif ($ fileData-> getMimetype () === FileInfo:: MIMETYPE_FOLDER ) {
8090 $ result = new \OC \Search \Result \Folder ($ fileData );
8191 }
8292 // or create file result
0 commit comments