mirror of
https://github.com/nextcloud/server.git
synced 2026-05-14 17:39:48 -04:00
Filter out old files when trying to get recent files
Only do so when asking for less than 100 files and having an offset equal to 0. Signed-off-by: Carl Schwan <carl@carlschwan.eu>
This commit is contained in:
parent
19ac8fd167
commit
4d4a6727fc
2 changed files with 59 additions and 31 deletions
|
|
@ -484,37 +484,65 @@ class Folder extends Node implements \OCP\Files\Folder {
|
|||
* @return \OCP\Files\Node[]
|
||||
*/
|
||||
public function getRecent($limit, $offset = 0) {
|
||||
$query = new SearchQuery(
|
||||
new SearchBinaryOperator(
|
||||
// filter out non empty folders
|
||||
ISearchBinaryOperator::OPERATOR_OR,
|
||||
[
|
||||
new SearchBinaryOperator(
|
||||
ISearchBinaryOperator::OPERATOR_NOT,
|
||||
[
|
||||
new SearchComparison(
|
||||
ISearchComparison::COMPARE_EQUAL,
|
||||
'mimetype',
|
||||
FileInfo::MIMETYPE_FOLDER
|
||||
),
|
||||
]
|
||||
),
|
||||
new SearchComparison(
|
||||
ISearchComparison::COMPARE_EQUAL,
|
||||
'size',
|
||||
0
|
||||
),
|
||||
]
|
||||
),
|
||||
$limit,
|
||||
$offset,
|
||||
$filterOutNonEmptyFolder = new SearchBinaryOperator(
|
||||
// filter out non empty folders
|
||||
ISearchBinaryOperator::OPERATOR_OR,
|
||||
[
|
||||
new SearchOrder(
|
||||
ISearchOrder::DIRECTION_DESCENDING,
|
||||
'mtime'
|
||||
new SearchBinaryOperator(
|
||||
ISearchBinaryOperator::OPERATOR_NOT,
|
||||
[
|
||||
new SearchComparison(
|
||||
ISearchComparison::COMPARE_EQUAL,
|
||||
'mimetype',
|
||||
FileInfo::MIMETYPE_FOLDER
|
||||
),
|
||||
]
|
||||
),
|
||||
new SearchComparison(
|
||||
ISearchComparison::COMPARE_EQUAL,
|
||||
'size',
|
||||
0
|
||||
),
|
||||
]
|
||||
);
|
||||
|
||||
$filterNonRecentFiles = new SearchComparison(
|
||||
ISearchComparison::COMPARE_GREATER_THAN,
|
||||
'mtime',
|
||||
strtotime("-2 week")
|
||||
);
|
||||
if ($offset === 0 && $limit <= 100) {
|
||||
$query = new SearchQuery(
|
||||
new SearchBinaryOperator(
|
||||
ISearchBinaryOperator::OPERATOR_AND,
|
||||
[
|
||||
$filterOutNonEmptyFolder,
|
||||
$filterNonRecentFiles,
|
||||
],
|
||||
),
|
||||
$limit,
|
||||
$offset,
|
||||
[
|
||||
new SearchOrder(
|
||||
ISearchOrder::DIRECTION_DESCENDING,
|
||||
'mtime'
|
||||
),
|
||||
]
|
||||
);
|
||||
} else {
|
||||
$query = new SearchQuery(
|
||||
$filterOutNonEmptyFolder,
|
||||
$limit,
|
||||
$offset,
|
||||
[
|
||||
new SearchOrder(
|
||||
ISearchOrder::DIRECTION_DESCENDING,
|
||||
'mtime'
|
||||
),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
return $this->search($query);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -711,7 +711,7 @@ class FolderTest extends NodeTest {
|
|||
$this->assertEquals($expected, $node->getNonExistingName($name));
|
||||
}
|
||||
|
||||
public function testRecent() {
|
||||
public function testRecent(): void {
|
||||
$manager = $this->createMock(Manager::class);
|
||||
$folderPath = '/bar/foo';
|
||||
/**
|
||||
|
|
@ -727,7 +727,7 @@ class FolderTest extends NodeTest {
|
|||
$folderInfo = $this->getMockBuilder(FileInfo::class)
|
||||
->disableOriginalConstructor()->getMock();
|
||||
|
||||
$baseTime = 1000;
|
||||
$baseTime = time();
|
||||
$storage = new Temporary();
|
||||
$mount = new MountPoint($storage, '');
|
||||
|
||||
|
|
@ -795,7 +795,7 @@ class FolderTest extends NodeTest {
|
|||
$folderInfo = $this->getMockBuilder(FileInfo::class)
|
||||
->disableOriginalConstructor()->getMock();
|
||||
|
||||
$baseTime = 1000;
|
||||
$baseTime = time();
|
||||
$storage = new Temporary();
|
||||
$mount = new MountPoint($storage, '');
|
||||
|
||||
|
|
@ -862,7 +862,7 @@ class FolderTest extends NodeTest {
|
|||
$folderInfo = $this->getMockBuilder(FileInfo::class)
|
||||
->disableOriginalConstructor()->getMock();
|
||||
|
||||
$baseTime = 1000;
|
||||
$baseTime = time();
|
||||
$storage = new Temporary();
|
||||
$jail = new Jail([
|
||||
'storage' => $storage,
|
||||
|
|
|
|||
Loading…
Reference in a new issue