From bb7e236e7466dadcd909ec93cd894a7602473f88 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Wed, 5 Apr 2017 15:12:30 +0200 Subject: [PATCH] Allow searching file by fileid Signed-off-by: Robin Appelman --- apps/dav/lib/Files/FileSearchBackend.php | 8 +++++--- lib/private/Files/Cache/QuerySearchHelper.php | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/apps/dav/lib/Files/FileSearchBackend.php b/apps/dav/lib/Files/FileSearchBackend.php index 5816c65993..0d837807fd 100644 --- a/apps/dav/lib/Files/FileSearchBackend.php +++ b/apps/dav/lib/Files/FileSearchBackend.php @@ -116,6 +116,7 @@ class FileSearchBackend implements ISearchBackend { new SearchPropertyDefinition('{DAV:}getlastmodified', true, true, true, SearchPropertyDefinition::DATATYPE_DATETIME), new SearchPropertyDefinition(FilesPlugin::SIZE_PROPERTYNAME, true, true, true, SearchPropertyDefinition::DATATYPE_NONNEGATIVE_INTEGER), new SearchPropertyDefinition(TagsPlugin::FAVORITE_PROPERTYNAME, true, true, true, SearchPropertyDefinition::DATATYPE_BOOLEAN), + new SearchPropertyDefinition(FilesPlugin::INTERNAL_FILEID_PROPERTYNAME, true, true, false, SearchPropertyDefinition::DATATYPE_NONNEGATIVE_INTEGER), // select only properties new SearchPropertyDefinition('{DAV:}resourcetype', false, true, false), @@ -127,7 +128,6 @@ class FileSearchBackend implements ISearchBackend { new SearchPropertyDefinition(FilesPlugin::OWNER_DISPLAY_NAME_PROPERTYNAME, false, true, false), new SearchPropertyDefinition(FilesPlugin::DATA_FINGERPRINT_PROPERTYNAME, false, true, false), new SearchPropertyDefinition(FilesPlugin::HAS_PREVIEW_PROPERTYNAME, false, true, false, SearchPropertyDefinition::DATATYPE_BOOLEAN), - new SearchPropertyDefinition(FilesPlugin::INTERNAL_FILEID_PROPERTYNAME, false, true, false, SearchPropertyDefinition::DATATYPE_NONNEGATIVE_INTEGER), new SearchPropertyDefinition(FilesPlugin::FILEID_PROPERTYNAME, false, true, false, SearchPropertyDefinition::DATATYPE_NONNEGATIVE_INTEGER), ]; } @@ -222,7 +222,7 @@ class FileSearchBackend implements ISearchBackend { case Operator::OPERATION_IS_COLLECTION: return new SearchComparison('eq', 'mimetype', ICacheEntry::DIRECTORY_MIMETYPE); default: - throw new \InvalidArgumentException('Unsupported operation ' . $trimmedType. ' (' . $operator->type . ')'); + throw new \InvalidArgumentException('Unsupported operation ' . $trimmedType . ' (' . $operator->type . ')'); } } @@ -244,6 +244,8 @@ class FileSearchBackend implements ISearchBackend { return 'favorite'; case TagsPlugin::TAGS_PROPERTYNAME: return 'tagname'; + case FilesPlugin::INTERNAL_FILEID_PROPERTYNAME: + return 'fileid'; default: throw new \InvalidArgumentException('Unsupported property for search or order: ' . $propertyName); } @@ -266,7 +268,7 @@ class FileSearchBackend implements ISearchBackend { return 0 + $value; } $date = \DateTime::createFromFormat(\DateTime::ATOM, $value); - return ($date instanceof \DateTime) ? $date->getTimestamp() : 0; + return ($date instanceof \DateTime) ? $date->getTimestamp() : 0; default: return $value; } diff --git a/lib/private/Files/Cache/QuerySearchHelper.php b/lib/private/Files/Cache/QuerySearchHelper.php index 2d20da72f5..6812caabd2 100644 --- a/lib/private/Files/Cache/QuerySearchHelper.php +++ b/lib/private/Files/Cache/QuerySearchHelper.php @@ -152,7 +152,8 @@ class QuerySearchHelper { 'name' => 'string', 'size' => 'integer', 'tagname' => 'string', - 'favorite' => 'boolean' + 'favorite' => 'boolean', + 'fileid' => 'integer' ]; $comparisons = [ 'mimetype' => ['eq', 'like'], @@ -161,6 +162,7 @@ class QuerySearchHelper { 'size' => ['eq', 'gt', 'lt', 'gte', 'lte'], 'tagname' => ['eq', 'like'], 'favorite' => ['eq'], + 'fileid' => ['eq'] ]; if (!isset($types[$operator->getField()])) {