mirror of
https://github.com/nextcloud/server.git
synced 2026-05-28 04:32:30 -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
2600a00c00
commit
67551f379f
2 changed files with 59 additions and 31 deletions
|
|
@ -413,37 +413,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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -739,7 +739,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';
|
||||
/**
|
||||
|
|
@ -755,7 +755,7 @@ class FolderTest extends NodeTest {
|
|||
$folderInfo = $this->getMockBuilder(FileInfo::class)
|
||||
->disableOriginalConstructor()->getMock();
|
||||
|
||||
$baseTime = 1000;
|
||||
$baseTime = time();
|
||||
$storage = new Temporary();
|
||||
$mount = new MountPoint($storage, '');
|
||||
|
||||
|
|
@ -823,7 +823,7 @@ class FolderTest extends NodeTest {
|
|||
$folderInfo = $this->getMockBuilder(FileInfo::class)
|
||||
->disableOriginalConstructor()->getMock();
|
||||
|
||||
$baseTime = 1000;
|
||||
$baseTime = time();
|
||||
$storage = new Temporary();
|
||||
$mount = new MountPoint($storage, '');
|
||||
|
||||
|
|
@ -890,7 +890,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