Skip to content

Commit c93dc80

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

File tree

4 files changed

+33
-24
lines changed

4 files changed

+33
-24
lines changed

core/Controller/SearchController.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ public function __construct(string $appName,
4646

4747
/**
4848
* @NoAdminRequired
49+
* @NoCSRFRequired
4950
*/
5051
public function search(string $query, array $inApps = [], int $page = 1, int $size = 30): JSONResponse {
5152
$results = $this->searcher->searchPaged($query, $inApps, $page, $size);

lib/private/Files/Node/Folder.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
use OC\Files\Search\SearchBinaryOperator;
3535
use OC\Files\Search\SearchComparison;
3636
use OC\Files\Search\SearchQuery;
37-
use OC\Files\Storage\Wrapper\Jail;
3837
use OC\Files\Storage\Storage;
3938
use OCA\Files_Sharing\SharedStorage;
4039
use OCP\DB\QueryBuilder\IQueryBuilder;

lib/private/Search/Provider/File.php

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

2929
namespace 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;
3239
use 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

lib/private/Search/Result/File.php

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

81-
$info = pathinfo($path);
8281
$this->id = $data->getId();
83-
$this->name = $info['basename'];
82+
$this->name = $data->getName();
8483
$this->link = \OC::$server->getURLGenerator()->linkToRoute(
8584
'files.view.index',
8685
[
87-
'dir' => $info['dirname'],
88-
'scrollto' => $info['basename'],
86+
'dir' => dirname($path),
87+
'scrollto' => $data->getName(),
8988
]
9089
);
9190
$this->permissions = $data->getPermissions();

0 commit comments

Comments
 (0)