Skip to content

Commit c25f7d7

Browse files
committed
use node search api for legacy file search endpoint
Signed-off-by: Robin Appelman <[email protected]>
1 parent d142177 commit c25f7d7

File tree

3 files changed

+33
-23
lines changed

3 files changed

+33
-23
lines changed

core/Controller/SearchController.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public function __construct(
5555

5656
/**
5757
* @NoAdminRequired
58+
* @NoCSRFRequired
5859
*/
5960
public function search(string $query, array $inApps = [], int $page = 1, int $size = 30): JSONResponse {
6061
$results = $this->searcher->searchPaged($query, $inApps, $page, $size);

lib/private/Search/Provider/File.php

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,14 @@
2929

3030
namespace 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;
3340
use 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

lib/private/Search/Result/File.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,14 +97,13 @@ class File extends \OCP\Search\Result {
9797
public function __construct(FileInfo $data) {
9898
$path = $this->getRelativePath($data->getPath());
9999

100-
$info = pathinfo($path);
101100
$this->id = $data->getId();
102-
$this->name = $info['basename'];
101+
$this->name = $data->getName();
103102
$this->link = \OC::$server->getURLGenerator()->linkToRoute(
104103
'files.view.index',
105104
[
106-
'dir' => $info['dirname'],
107-
'scrollto' => $info['basename'],
105+
'dir' => dirname($path),
106+
'scrollto' => $data->getName(),
108107
]
109108
);
110109
$this->permissions = $data->getPermissions();

0 commit comments

Comments
 (0)