Fix files search provider

The move to OCS make it so no filesystem is setup.
This makes the static file search code do boom.
Explicitly getting the users filesystem helps.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
This commit is contained in:
Roeland Jago Douma 2020-09-11 10:27:02 +02:00
parent 8ab2d5a8d9
commit 5724d4c6fe
No known key found for this signature in database
GPG Key ID: F941078878347C0C
1 changed files with 11 additions and 1 deletions

View File

@ -31,6 +31,7 @@ namespace OCA\Files\Search;
use OC\Search\Provider\File; use OC\Search\Provider\File;
use OC\Search\Result\File as FileResult; use OC\Search\Result\File as FileResult;
use OCP\Files\IMimeTypeDetector; use OCP\Files\IMimeTypeDetector;
use OCP\Files\IRootFolder;
use OCP\IL10N; use OCP\IL10N;
use OCP\IURLGenerator; use OCP\IURLGenerator;
use OCP\IUser; use OCP\IUser;
@ -53,14 +54,19 @@ class FilesSearchProvider implements IProvider {
/** @var IMimeTypeDetector */ /** @var IMimeTypeDetector */
private $mimeTypeDetector; private $mimeTypeDetector;
/** @var IRootFolder */
private $rootFolder;
public function __construct(File $fileSearch, public function __construct(File $fileSearch,
IL10N $l10n, IL10N $l10n,
IURLGenerator $urlGenerator, IURLGenerator $urlGenerator,
IMimeTypeDetector $mimeTypeDetector) { IMimeTypeDetector $mimeTypeDetector,
IRootFolder $rootFolder) {
$this->l10n = $l10n; $this->l10n = $l10n;
$this->fileSearch = $fileSearch; $this->fileSearch = $fileSearch;
$this->urlGenerator = $urlGenerator; $this->urlGenerator = $urlGenerator;
$this->mimeTypeDetector = $mimeTypeDetector; $this->mimeTypeDetector = $mimeTypeDetector;
$this->rootFolder = $rootFolder;
} }
/** /**
@ -92,6 +98,10 @@ class FilesSearchProvider implements IProvider {
* @inheritDoc * @inheritDoc
*/ */
public function search(IUser $user, ISearchQuery $query): SearchResult { public function search(IUser $user, ISearchQuery $query): SearchResult {
// Make sure we setup the users filesystem
$this->rootFolder->getUserFolder($user->getUID());
return SearchResult::complete( return SearchResult::complete(
$this->l10n->t('Files'), $this->l10n->t('Files'),
array_map(function (FileResult $result) { array_map(function (FileResult $result) {