Compare commits

...

7 Commits

Author SHA1 Message Date
github-actions[bot]
9c706465b2 Merge pull request #12001 from firefly-iii/release-1774102841
🤖 Automatically merge the PR into the develop branch.
2026-03-21 15:20:48 +01:00
JC5
a40425fd75 🤖 Auto commit for release 'develop' on 2026-03-21 2026-03-21 15:20:41 +01:00
James Cole
e9a37592ba Improved sorting and slicing for https://github.com/firefly-iii/firefly-iii/issues/12000 2026-03-21 15:05:00 +01:00
James Cole
0c598cb034 Fix changelog header. 2026-03-21 11:57:08 +01:00
github-actions[bot]
f5dea9ac09 Merge pull request #11999 from firefly-iii/develop
🤖 Automatically merge the PR into the main branch.
2026-03-21 11:54:49 +01:00
github-actions[bot]
4ef7944147 Merge pull request #11998 from firefly-iii/release-1774090477
🤖 Automatically merge the PR into the develop branch.
2026-03-21 11:54:45 +01:00
JC5
4e1c84944c 🤖 Auto commit for release 'v6.5.8' on 2026-03-21 2026-03-21 11:54:37 +01:00
5 changed files with 23 additions and 52 deletions

View File

@@ -75,8 +75,6 @@ class GroupCollector implements GroupCollectorInterface
$this->userGroup = null;
$this->limit = null;
$this->page = null;
$this->startRow = null;
$this->endRow = null;
$this->hasAccountInfo = false;
$this->hasCatInformation = false;
@@ -443,9 +441,15 @@ class GroupCollector implements GroupCollectorInterface
$this->query->orWhereIn('transaction_journals.transaction_group_id', $groupIds);
}
$result = $this->query->get($this->fields);
$this->total = $result->count();
// if no post-filters are present, it can be sliced and returned.
if (0 === count($this->sorting) && 0 === count($this->postFilters) && null !== $this->limit && null !== $this->page) {
$offset = ($this->page - 1) * $this->limit;
$result = $result->slice($offset, $this->limit);
}
// $this->dumpQueryInLogs();
// Log::debug(sprintf('Count of result is %d', $result->count()));
// now to parse this into an array.
// now to parse the rest into an array.
$collection = $this->parseArray($result);
// filter the array using all available post filters:
@@ -454,19 +458,12 @@ class GroupCollector implements GroupCollectorInterface
// sort the collection, if sort instructions are present.
$collection = $this->sortCollection($collection);
// count it and continue:
$this->total = $collection->count();
// now filter the array according to the page and the limit (if necessary)
if (null !== $this->limit && null !== $this->page) {
if (count($this->postFilters) > 0 && null !== $this->limit && null !== $this->page) {
$offset = ($this->page - 1) * $this->limit;
return $collection->slice($offset, $this->limit);
}
// OR filter the array according to the start and end row variable
if (null !== $this->startRow && null !== $this->endRow) {
return $collection->slice($this->startRow, $this->endRow);
}
return $collection;
}
@@ -477,17 +474,11 @@ class GroupCollector implements GroupCollectorInterface
public function getPaginatedGroups(): LengthAwarePaginator
{
Log::debug('Now in getPaginatedGroups()');
$set = $this->getGroups();
$limit = $this->limit ?? 1;
if (0 === $this->limit) {
$this->setLimit(50);
}
if (null !== $this->startRow && null !== $this->endRow) {
/** @var int $total */
$total = $this->endRow - $this->startRow;
return new LengthAwarePaginator($set, $this->total, $total, 1);
}
$limit = $this->limit ?? 1;
$set = $this->getGroups();
return new LengthAwarePaginator($set, $this->total, $limit, $this->page);
}
@@ -519,13 +510,6 @@ class GroupCollector implements GroupCollectorInterface
return $this;
}
public function setEndRow(int $endRow): self
{
$this->endRow = $endRow;
return $this;
}
public function setExpandGroupSearch(bool $expandGroupSearch): GroupCollectorInterface
{
$this->expandGroupSearch = $expandGroupSearch;
@@ -636,13 +620,6 @@ class GroupCollector implements GroupCollectorInterface
return $this;
}
public function setStartRow(int $startRow): self
{
$this->startRow = $startRow;
return $this;
}
/**
* Limit the search to one specific transaction group.
*/
@@ -692,6 +669,10 @@ class GroupCollector implements GroupCollectorInterface
#[Override]
public function sortCollection(Collection $collection): Collection
{
if (0 === count($this->sorting)) {
return $collection;
}
/**
* @var string $field
* @var string $direction

View File

@@ -469,11 +469,6 @@ interface GroupCollectorInterface
*/
public function setEnd(Carbon $end): self;
/**
* Set the page to get.
*/
public function setEndRow(int $endRow): self;
public function setExpandGroupSearch(bool $expandGroupSearch): self;
/**
@@ -573,11 +568,6 @@ interface GroupCollectorInterface
*/
public function setStart(Carbon $start): self;
/**
* Set the page to get.
*/
public function setStartRow(int $startRow): self;
/**
* Limit results to a specific tag.
*/

View File

@@ -3,7 +3,7 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).
### v6.5.8 - 2026-03-22
## v6.5.8 - 2026-03-22
<!-- summary: This release fixes a regression bug in user registration. -->

View File

@@ -79,7 +79,7 @@ return [
// see cer.php for exchange rates feature flag.
],
'version' => 'develop/2026-03-21',
'build_time' => 1774089937,
'build_time' => 1774102650,
'api_version' => '2.1.0', // field is no longer used.
'db_version' => 28, // field is no longer used.

12
package-lock.json generated
View File

@@ -4135,9 +4135,9 @@
"license": "MIT"
},
"node_modules/baseline-browser-mapping": {
"version": "2.10.9",
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.9.tgz",
"integrity": "sha512-OZd0e2mU11ClX8+IdXe3r0dbqMEznRiT4TfbhYIbcRPZkqJ7Qwer8ij3GZAmLsRKa+II9V1v5czCkvmHH3XZBg==",
"version": "2.10.10",
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.10.tgz",
"integrity": "sha512-sUoJ3IMxx4AyRqO4MLeHlnGDkyXRoUG0/AI9fjK+vS72ekpV0yWVY7O0BVjmBcRtkNcsAO2QDZ4tdKKGoI6YaQ==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -7143,9 +7143,9 @@
}
},
"node_modules/i18next": {
"version": "25.9.0",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-25.9.0.tgz",
"integrity": "sha512-mJ4rVRNWOTkqh5xnaGR6iMFT5vEw3Y2MTJhcjinR/7u8cRv6dAfC0ofuePh5fVPxoh395p6JdrJTStCcNW66gg==",
"version": "25.10.0",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-25.10.0.tgz",
"integrity": "sha512-syBEN80PJ3MOpczGXFtv6OTfKQzgi/VbvgtQQjr1z5b/0xSGa1iG8n5ESG7TVT5scGbbRr/1Du2tufHEkr5pHw==",
"funding": [
{
"type": "individual",