🤖 Auto commit for release 'develop' on 2025-08-16

This commit is contained in:
JC5
2025-08-16 06:13:15 +02:00
parent 8f9ab150ee
commit 91ce1d3b88
24 changed files with 46 additions and 57 deletions

View File

@@ -46,7 +46,7 @@ class AccountController extends Controller
use AccountFilter; use AccountFilter;
// this array only exists to test if the constructor will use it properly. // this array only exists to test if the constructor will use it properly.
protected array $accepts = ['application/json', 'application/vnd.api+json']; protected array $accepts = ['application/json', 'application/vnd.api+json'];
protected array $acceptedRoles = [UserRoleEnum::READ_ONLY]; protected array $acceptedRoles = [UserRoleEnum::READ_ONLY];
/** @var array<int, string> */ /** @var array<int, string> */

View File

@@ -29,7 +29,6 @@ use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest;
use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Enums\UserRoleEnum;
use FireflyIII\Models\Bill; use FireflyIII\Models\Bill;
use FireflyIII\Repositories\Bill\BillRepositoryInterface; use FireflyIII\Repositories\Bill\BillRepositoryInterface;
use FireflyIII\User;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
/** /**

View File

@@ -29,7 +29,6 @@ use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest;
use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Enums\UserRoleEnum;
use FireflyIII\Models\Budget; use FireflyIII\Models\Budget;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\User;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
/** /**

View File

@@ -29,7 +29,6 @@ use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest;
use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Enums\UserRoleEnum;
use FireflyIII\Models\Category; use FireflyIII\Models\Category;
use FireflyIII\Repositories\Category\CategoryRepositoryInterface; use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
use FireflyIII\User;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
/** /**

View File

@@ -30,7 +30,6 @@ use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest;
use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Enums\UserRoleEnum;
use FireflyIII\Models\TransactionCurrency; use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface; use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
use FireflyIII\User;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
/** /**

View File

@@ -29,7 +29,6 @@ use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest;
use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Enums\UserRoleEnum;
use FireflyIII\Models\ObjectGroup; use FireflyIII\Models\ObjectGroup;
use FireflyIII\Repositories\ObjectGroup\ObjectGroupRepositoryInterface; use FireflyIII\Repositories\ObjectGroup\ObjectGroupRepositoryInterface;
use FireflyIII\User;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
/** /**

View File

@@ -30,7 +30,6 @@ use FireflyIII\Enums\UserRoleEnum;
use FireflyIII\Models\PiggyBank; use FireflyIII\Models\PiggyBank;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface; use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface;
use FireflyIII\User;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
/** /**

View File

@@ -29,7 +29,6 @@ use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest;
use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Enums\UserRoleEnum;
use FireflyIII\Models\Tag; use FireflyIII\Models\Tag;
use FireflyIII\Repositories\Tag\TagRepositoryInterface; use FireflyIII\Repositories\Tag\TagRepositoryInterface;
use FireflyIII\User;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
/** /**

View File

@@ -31,7 +31,6 @@ use FireflyIII\Enums\UserRoleEnum;
use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface; use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepositoryInterface; use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepositoryInterface;
use FireflyIII\User;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;

View File

@@ -26,15 +26,11 @@ namespace FireflyIII\Api\V1\Controllers\Chart;
use FireflyIII\Api\V1\Controllers\Controller; use FireflyIII\Api\V1\Controllers\Controller;
use FireflyIII\Api\V1\Requests\Chart\ChartRequest; use FireflyIII\Api\V1\Requests\Chart\ChartRequest;
use FireflyIII\Enums\AccountTypeEnum;
use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Enums\UserRoleEnum;
use FireflyIII\Exceptions\FireflyException; use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Models\Account; use FireflyIII\Models\Account;
use FireflyIII\Models\Preference;
use FireflyIII\Models\TransactionCurrency; use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Support\Chart\ChartData;
use FireflyIII\Support\Facades\Preferences;
use FireflyIII\Support\Facades\Steam; use FireflyIII\Support\Facades\Steam;
use FireflyIII\Support\Http\Api\ApiSupport; use FireflyIII\Support\Http\Api\ApiSupport;
use FireflyIII\Support\Http\Api\CleansChartData; use FireflyIII\Support\Http\Api\CleansChartData;
@@ -48,8 +44,8 @@ use Illuminate\Support\Facades\Log;
class AccountController extends Controller class AccountController extends Controller
{ {
use ApiSupport; use ApiSupport;
use CollectsAccountsFromFilter;
use CleansChartData; use CleansChartData;
use CollectsAccountsFromFilter;
protected array $acceptedRoles = [UserRoleEnum::READ_ONLY]; protected array $acceptedRoles = [UserRoleEnum::READ_ONLY];
@@ -102,17 +98,17 @@ class AccountController extends Controller
private function renderAccountData(array $params, Account $account): void private function renderAccountData(array $params, Account $account): void
{ {
Log::debug(sprintf('Now in %s(array, #%d)', __METHOD__, $account->id)); Log::debug(sprintf('Now in %s(array, #%d)', __METHOD__, $account->id));
$currency = $this->repository->getAccountCurrency($account); $currency = $this->repository->getAccountCurrency($account);
$currentStart = clone $params['start']; $currentStart = clone $params['start'];
$range = Steam::finalAccountBalanceInRange($account, $params['start'], clone $params['end'], $this->convertToPrimary); $range = Steam::finalAccountBalanceInRange($account, $params['start'], clone $params['end'], $this->convertToPrimary);
$previous = array_values($range)[0]['balance']; $previous = array_values($range)[0]['balance'];
$pcPrevious = null; $pcPrevious = null;
if (!$currency instanceof TransactionCurrency) { if (!$currency instanceof TransactionCurrency) {
$currency = $this->primaryCurrency; $currency = $this->primaryCurrency;
} }
$currentSet = [ $currentSet = [
'label' => $account->name, 'label' => $account->name,
// the currency that belongs to the account. // the currency that belongs to the account.

View File

@@ -25,7 +25,7 @@ class BalanceController extends Controller
{ {
use CleansChartData; use CleansChartData;
use CollectsAccountsFromFilter; use CollectsAccountsFromFilter;
protected array $acceptedRoles = [UserRoleEnum::READ_ONLY]; protected array $acceptedRoles = [UserRoleEnum::READ_ONLY];
private array $chartData = []; private array $chartData = [];
private GroupCollectorInterface $collector; private GroupCollectorInterface $collector;

View File

@@ -62,9 +62,9 @@ abstract class Controller extends BaseController
use ValidatesRequests; use ValidatesRequests;
use ValidatesUserGroupTrait; use ValidatesUserGroupTrait;
protected const string CONTENT_TYPE = 'application/vnd.api+json'; protected const string CONTENT_TYPE = 'application/vnd.api+json';
protected const string JSON_CONTENT_TYPE = 'application/json'; protected const string JSON_CONTENT_TYPE = 'application/json';
protected array $accepts = ['application/json', 'application/vnd.api+json']; protected array $accepts = ['application/json', 'application/vnd.api+json'];
/** @var array<int, string> */ /** @var array<int, string> */
protected array $allowedSort; protected array $allowedSort;
@@ -106,8 +106,8 @@ abstract class Controller extends BaseController
*/ */
private function getParameters(): ParameterBag private function getParameters(): ParameterBag
{ {
$bag = new ParameterBag(); $bag = new ParameterBag();
$page = (int)request()->get('page'); $page = (int)request()->get('page');
if ($page < 1) { if ($page < 1) {
$page = 1; $page = 1;
} }
@@ -117,7 +117,7 @@ abstract class Controller extends BaseController
$bag->set('page', $page); $bag->set('page', $page);
// some date fields: // some date fields:
$dates = ['start', 'end', 'date']; $dates = ['start', 'end', 'date'];
foreach ($dates as $field) { foreach ($dates as $field) {
$date = null; $date = null;
@@ -128,7 +128,7 @@ abstract class Controller extends BaseController
Log::error($e->getMessage()); Log::error($e->getMessage());
Log::error($e->getTraceAsString()); Log::error($e->getTraceAsString());
} }
$obj = null; $obj = null;
if (null !== $date) { if (null !== $date) {
try { try {
$obj = Carbon::parse((string)$date); $obj = Carbon::parse((string)$date);
@@ -173,7 +173,7 @@ abstract class Controller extends BaseController
&& auth()->check()) { && auth()->check()) {
// set default for user: // set default for user:
/** @var User $user */ /** @var User $user */
$user = auth()->user(); $user = auth()->user();
/** @var Preference $pageSize */ /** @var Preference $pageSize */
$pageSize = (int)app('preferences')->getForUser($user, 'listPageSize', 50)->data; $pageSize = (int)app('preferences')->getForUser($user, 'listPageSize', 50)->data;
@@ -200,7 +200,7 @@ abstract class Controller extends BaseController
if ('' === $param) { if ('' === $param) {
return $bag; return $bag;
} }
$parts = explode(',', $param); $parts = explode(',', $param);
foreach ($parts as $part) { foreach ($parts as $part) {
$part = trim($part); $part = trim($part);
$direction = 'asc'; $direction = 'asc';
@@ -236,14 +236,14 @@ abstract class Controller extends BaseController
$params[$key] = $value; $params[$key] = $value;
} }
return $return . http_build_query($params); return $return.http_build_query($params);
} }
final protected function getManager(): Manager final protected function getManager(): Manager
{ {
// create some objects: // create some objects:
$manager = new Manager(); $manager = new Manager();
$baseUrl = request()->getSchemeAndHttpHost() . '/api/v1'; $baseUrl = request()->getSchemeAndHttpHost().'/api/v1';
$manager->setSerializer(new JsonApiSerializer($baseUrl)); $manager->setSerializer(new JsonApiSerializer($baseUrl));
return $manager; return $manager;
@@ -251,14 +251,14 @@ abstract class Controller extends BaseController
final protected function jsonApiList(string $key, LengthAwarePaginator $paginator, AbstractTransformer $transformer): array final protected function jsonApiList(string $key, LengthAwarePaginator $paginator, AbstractTransformer $transformer): array
{ {
$manager = new Manager(); $manager = new Manager();
$baseUrl = sprintf('%s/api/v1/', request()->getSchemeAndHttpHost()); $baseUrl = sprintf('%s/api/v1/', request()->getSchemeAndHttpHost());
// TODO add stuff to path? // TODO add stuff to path?
$manager->setSerializer(new JsonApiSerializer($baseUrl)); $manager->setSerializer(new JsonApiSerializer($baseUrl));
$objects = $paginator->getCollection(); $objects = $paginator->getCollection();
// the transformer, at this point, needs to collect information that ALL items in the collection // the transformer, at this point, needs to collect information that ALL items in the collection
// require, like meta-data and stuff like that, and save it for later. // require, like meta-data and stuff like that, and save it for later.
@@ -279,8 +279,8 @@ abstract class Controller extends BaseController
final protected function jsonApiObject(string $key, array|Model $object, AbstractTransformer $transformer): array final protected function jsonApiObject(string $key, array|Model $object, AbstractTransformer $transformer): array
{ {
// create some objects: // create some objects:
$manager = new Manager(); $manager = new Manager();
$baseUrl = sprintf('%s/api/v1', request()->getSchemeAndHttpHost()); $baseUrl = sprintf('%s/api/v1', request()->getSchemeAndHttpHost());
$manager->setSerializer(new JsonApiSerializer($baseUrl)); $manager->setSerializer(new JsonApiSerializer($baseUrl));
// $transformer->collectMetaData(new Collection([$object])); // $transformer->collectMetaData(new Collection([$object]));

View File

@@ -64,6 +64,7 @@ class DestroyController extends Controller
$this->middleware( $this->middleware(
function ($request, $next) { function ($request, $next) {
$this->validateUserGroup($request); $this->validateUserGroup($request);
return $next($request); return $next($request);
} }
); );

View File

@@ -61,7 +61,6 @@ class ExportController extends Controller
} }
/** /**
*
* @throws FireflyException * @throws FireflyException
* *
* @SuppressWarnings("PHPMD.UnusedFormalParameter") * @SuppressWarnings("PHPMD.UnusedFormalParameter")

View File

@@ -44,7 +44,6 @@ use Illuminate\Http\JsonResponse;
*/ */
class PurgeController extends Controller class PurgeController extends Controller
{ {
/** /**
* TODO cleanup and use repositories. * TODO cleanup and use repositories.
*/ */

View File

@@ -84,7 +84,7 @@ class ShowController extends Controller
$enrichment->setUser($admin); $enrichment->setUser($admin);
$enrichment->setStart($this->parameters->get('start')); $enrichment->setStart($this->parameters->get('start'));
$enrichment->setEnd($this->parameters->get('end')); $enrichment->setEnd($this->parameters->get('end'));
$budget = $enrichment->enrichSingle($budget); $budget = $enrichment->enrichSingle($budget);
$manager = $this->getManager(); $manager = $this->getManager();

View File

@@ -1,5 +1,7 @@
<?php <?php
declare(strict_types=1);
namespace FireflyIII\Console\Commands\System; namespace FireflyIII\Console\Commands\System;
use FireflyIII\Console\Commands\ShowsFriendlyMessages; use FireflyIII\Console\Commands\ShowsFriendlyMessages;
@@ -15,7 +17,7 @@ class ResetsErrorMailLimit extends Command
* *
* @var string * @var string
*/ */
protected $signature = 'firefly-iii:reset-error-mail-limit'; protected $signature = 'firefly-iii:reset-error-mail-limit';
/** /**
* The console command description. * The console command description.
@@ -41,6 +43,7 @@ class ResetsErrorMailLimit extends Command
if (!file_exists($file)) { if (!file_exists($file)) {
$this->friendlyInfo(sprintf('Created new limits file at "%s"', $file)); $this->friendlyInfo(sprintf('Created new limits file at "%s"', $file));
file_put_contents($file, json_encode($limits, JSON_PRETTY_PRINT)); file_put_contents($file, json_encode($limits, JSON_PRETTY_PRINT));
return CommandAlias::SUCCESS; return CommandAlias::SUCCESS;
} }
if (!is_writable($file)) { if (!is_writable($file)) {

View File

@@ -913,6 +913,4 @@ class ExportDataGenerator
{ {
$this->userGroup = $userGroup; $this->userGroup = $userGroup;
} }
} }

View File

@@ -39,7 +39,7 @@ use Illuminate\Support\Facades\Log;
trait ValidatesUserGroupTrait trait ValidatesUserGroupTrait
{ {
protected ?UserGroup $userGroup = null; protected ?UserGroup $userGroup = null;
protected ?User $user = null; protected ?User $user = null;
/** /**
* An "undocumented" filter * An "undocumented" filter
@@ -102,7 +102,7 @@ trait ValidatesUserGroupTrait
if ($user->hasRoleInGroupOrOwner($group, $role)) { if ($user->hasRoleInGroupOrOwner($group, $role)) {
Log::debug(sprintf('validateUserGroup: User has role "%s" in group #%d, return the group.', $role->value, $groupId)); Log::debug(sprintf('validateUserGroup: User has role "%s" in group #%d, return the group.', $role->value, $groupId));
$this->userGroup = $group; $this->userGroup = $group;
$this->user = $user; $this->user = $user;
return $group; return $group;
} }

View File

@@ -73,6 +73,7 @@ trait UserGroupTrait
return; return;
} }
$class = null === $user ? 'NULL' : $user::class; $class = null === $user ? 'NULL' : $user::class;
throw new FireflyException(sprintf('Object is %s, not User.', $class)); throw new FireflyException(sprintf('Object is %s, not User.', $class));
} }

View File

@@ -81,7 +81,7 @@ class CategoryTransformer extends AbstractTransformer
private function beautify(?array $array): ?array private function beautify(?array $array): ?array
{ {
if(null === $array) { if (null === $array) {
return null; return null;
} }
$return = []; $return = [];

12
composer.lock generated
View File

@@ -11876,16 +11876,16 @@
}, },
{ {
"name": "rector/rector", "name": "rector/rector",
"version": "2.1.3", "version": "2.1.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/rectorphp/rector.git", "url": "https://github.com/rectorphp/rector.git",
"reference": "dd430c869fddf4965049c8fd6f5ee49f155cfddf" "reference": "fe613c528819222f8686a9a037a315ef9d4915b3"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/rectorphp/rector/zipball/dd430c869fddf4965049c8fd6f5ee49f155cfddf", "url": "https://api.github.com/repos/rectorphp/rector/zipball/fe613c528819222f8686a9a037a315ef9d4915b3",
"reference": "dd430c869fddf4965049c8fd6f5ee49f155cfddf", "reference": "fe613c528819222f8686a9a037a315ef9d4915b3",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -11924,7 +11924,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/rectorphp/rector/issues", "issues": "https://github.com/rectorphp/rector/issues",
"source": "https://github.com/rectorphp/rector/tree/2.1.3" "source": "https://github.com/rectorphp/rector/tree/2.1.4"
}, },
"funding": [ "funding": [
{ {
@@ -11932,7 +11932,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2025-08-13T11:43:04+00:00" "time": "2025-08-15T14:41:36+00:00"
}, },
{ {
"name": "sebastian/cli-parser", "name": "sebastian/cli-parser",

View File

@@ -78,8 +78,8 @@ return [
'running_balance_column' => env('USE_RUNNING_BALANCE', false), 'running_balance_column' => env('USE_RUNNING_BALANCE', false),
// see cer.php for exchange rates feature flag. // see cer.php for exchange rates feature flag.
], ],
'version' => '6.3.0-beta.2', 'version' => 'develop/2025-08-16',
'build_time' => 1755258109, 'build_time' => 1755317476,
'api_version' => '2.1.0', // field is no longer used. 'api_version' => '2.1.0', // field is no longer used.
'db_version' => 26, 'db_version' => 26,

6
package-lock.json generated
View File

@@ -5700,9 +5700,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/electron-to-chromium": { "node_modules/electron-to-chromium": {
"version": "1.5.202", "version": "1.5.203",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.202.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.203.tgz",
"integrity": "sha512-NxbYjRmiHcHXV1Ws3fWUW+SLb62isauajk45LUJ/HgIOkUA7jLZu/X2Iif+X9FBNK8QkF9Zb4Q2mcwXCcY30mg==", "integrity": "sha512-uz4i0vLhfm6dLZWbz/iH88KNDV+ivj5+2SA+utpgjKaj9Q0iDLuwk6Idhe9BTxciHudyx6IvTvijhkPvFGUQ0g==",
"dev": true, "dev": true,
"license": "ISC" "license": "ISC"
}, },