Compare commits

..

No commits in common. "3e380f82d2477dc41d810cd990b574c149a1b442" and "2f580c92d1004f5f1e99ef9071a0029e4a352cf6" have entirely different histories.

15 changed files with 85 additions and 55 deletions

View file

@ -79,7 +79,6 @@
"symfony/string": "7.4.*", "symfony/string": "7.4.*",
"symfony/translation": "7.4.*", "symfony/translation": "7.4.*",
"symfony/twig-bundle": "7.4.*", "symfony/twig-bundle": "7.4.*",
"symfony/type-info": "7.4.0",
"symfony/ux-translator": "^2.10", "symfony/ux-translator": "^2.10",
"symfony/ux-turbo": "^2.0", "symfony/ux-turbo": "^2.0",
"symfony/validator": "7.4.*", "symfony/validator": "7.4.*",

89
composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "43757aac5f0141421893ff144ccc462f", "content-hash": "624cf08821477aa7b8f6efc0d4300087",
"packages": [ "packages": [
{ {
"name": "amphp/amp", "name": "amphp/amp",
@ -4997,16 +4997,16 @@
}, },
{ {
"name": "jbtronics/settings-bundle", "name": "jbtronics/settings-bundle",
"version": "v3.1.3", "version": "v3.1.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/jbtronics/settings-bundle.git", "url": "https://github.com/jbtronics/settings-bundle.git",
"reference": "a99c6e4cde40b829c1643b89da506b9588b11eaf" "reference": "f16bce21b54d202baabfe05cb7c64a14d43b9671"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/jbtronics/settings-bundle/zipball/a99c6e4cde40b829c1643b89da506b9588b11eaf", "url": "https://api.github.com/repos/jbtronics/settings-bundle/zipball/f16bce21b54d202baabfe05cb7c64a14d43b9671",
"reference": "a99c6e4cde40b829c1643b89da506b9588b11eaf", "reference": "f16bce21b54d202baabfe05cb7c64a14d43b9671",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5067,7 +5067,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/jbtronics/settings-bundle/issues", "issues": "https://github.com/jbtronics/settings-bundle/issues",
"source": "https://github.com/jbtronics/settings-bundle/tree/v3.1.3" "source": "https://github.com/jbtronics/settings-bundle/tree/v3.1.2"
}, },
"funding": [ "funding": [
{ {
@ -5079,7 +5079,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2026-01-02T23:58:02+00:00" "time": "2025-11-30T22:22:49+00:00"
}, },
{ {
"name": "jfcherng/php-color-output", "name": "jfcherng/php-color-output",
@ -10009,16 +10009,16 @@
}, },
{ {
"name": "spomky-labs/otphp", "name": "spomky-labs/otphp",
"version": "11.4.0", "version": "11.3.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/Spomky-Labs/otphp.git", "url": "https://github.com/Spomky-Labs/otphp.git",
"reference": "ec5ff751e87e67daca2b73a35cae0d0e1d20ad45" "reference": "2d8ccb5fc992b9cc65ef321fa4f00fefdb3f4b33"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/ec5ff751e87e67daca2b73a35cae0d0e1d20ad45", "url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/2d8ccb5fc992b9cc65ef321fa4f00fefdb3f4b33",
"reference": "ec5ff751e87e67daca2b73a35cae0d0e1d20ad45", "reference": "2d8ccb5fc992b9cc65ef321fa4f00fefdb3f4b33",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -10029,7 +10029,18 @@
"symfony/deprecation-contracts": "^3.2" "symfony/deprecation-contracts": "^3.2"
}, },
"require-dev": { "require-dev": {
"symfony/error-handler": "^6.4|^7.0|^8.0" "ekino/phpstan-banned-code": "^1.0",
"infection/infection": "^0.26|^0.27|^0.28|^0.29",
"php-parallel-lint/php-parallel-lint": "^1.3",
"phpstan/phpstan": "^1.0",
"phpstan/phpstan-deprecation-rules": "^1.0",
"phpstan/phpstan-phpunit": "^1.0",
"phpstan/phpstan-strict-rules": "^1.0",
"phpunit/phpunit": "^9.5.26|^10.0|^11.0",
"qossmic/deptrac-shim": "^1.0",
"rector/rector": "^1.0",
"symfony/phpunit-bridge": "^6.1|^7.0",
"symplify/easy-coding-standard": "^12.0"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@ -10064,7 +10075,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/Spomky-Labs/otphp/issues", "issues": "https://github.com/Spomky-Labs/otphp/issues",
"source": "https://github.com/Spomky-Labs/otphp/tree/11.4.0" "source": "https://github.com/Spomky-Labs/otphp/tree/11.3.0"
}, },
"funding": [ "funding": [
{ {
@ -10076,7 +10087,7 @@
"type": "patreon" "type": "patreon"
} }
], ],
"time": "2026-01-03T13:16:55+00:00" "time": "2024-06-12T11:22:32+00:00"
}, },
{ {
"name": "spomky-labs/pki-framework", "name": "spomky-labs/pki-framework",
@ -13755,21 +13766,21 @@
}, },
{ {
"name": "symfony/property-access", "name": "symfony/property-access",
"version": "v7.4.0", "version": "v7.4.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/property-access.git", "url": "https://github.com/symfony/property-access.git",
"reference": "537626149d2910ca43eb9ce465654366bf4442f4" "reference": "30aff8455647be949fc2e8fcef2847d5a6743c98"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/property-access/zipball/537626149d2910ca43eb9ce465654366bf4442f4", "url": "https://api.github.com/repos/symfony/property-access/zipball/30aff8455647be949fc2e8fcef2847d5a6743c98",
"reference": "537626149d2910ca43eb9ce465654366bf4442f4", "reference": "30aff8455647be949fc2e8fcef2847d5a6743c98",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.2", "php": ">=8.2",
"symfony/property-info": "^6.4|^7.0|^8.0" "symfony/property-info": "^6.4.31|~7.3.9|^7.4.2|^8.0.3"
}, },
"require-dev": { "require-dev": {
"symfony/cache": "^6.4|^7.0|^8.0", "symfony/cache": "^6.4|^7.0|^8.0",
@ -13812,7 +13823,7 @@
"reflection" "reflection"
], ],
"support": { "support": {
"source": "https://github.com/symfony/property-access/tree/v7.4.0" "source": "https://github.com/symfony/property-access/tree/v7.4.3"
}, },
"funding": [ "funding": [
{ {
@ -13832,27 +13843,27 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-09-08T21:14:32+00:00" "time": "2025-12-18T10:35:58+00:00"
}, },
{ {
"name": "symfony/property-info", "name": "symfony/property-info",
"version": "v7.4.0", "version": "v7.4.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/property-info.git", "url": "https://github.com/symfony/property-info.git",
"reference": "c3c686e3d3a33a99f6967e69d6d5832acb7c25a1" "reference": "ea62b28cd68fb36e252abd77de61e505a0f2a7b1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/property-info/zipball/c3c686e3d3a33a99f6967e69d6d5832acb7c25a1", "url": "https://api.github.com/repos/symfony/property-info/zipball/ea62b28cd68fb36e252abd77de61e505a0f2a7b1",
"reference": "c3c686e3d3a33a99f6967e69d6d5832acb7c25a1", "reference": "ea62b28cd68fb36e252abd77de61e505a0f2a7b1",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.2", "php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.5|^3",
"symfony/string": "^6.4|^7.0|^8.0", "symfony/string": "^6.4|^7.0|^8.0",
"symfony/type-info": "^7.3.5|^8.0" "symfony/type-info": "~7.3.8|^7.4.1|^8.0.1"
}, },
"conflict": { "conflict": {
"phpdocumentor/reflection-docblock": "<5.2", "phpdocumentor/reflection-docblock": "<5.2",
@ -13902,7 +13913,7 @@
"validator" "validator"
], ],
"support": { "support": {
"source": "https://github.com/symfony/property-info/tree/v7.4.0" "source": "https://github.com/symfony/property-info/tree/v7.4.3"
}, },
"funding": [ "funding": [
{ {
@ -13922,7 +13933,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-11-13T08:38:49+00:00" "time": "2025-12-18T08:28:41+00:00"
}, },
{ {
"name": "symfony/psr-http-message-bridge", "name": "symfony/psr-http-message-bridge",
@ -15432,16 +15443,16 @@
}, },
{ {
"name": "symfony/type-info", "name": "symfony/type-info",
"version": "v7.4.0", "version": "v7.4.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/type-info.git", "url": "https://github.com/symfony/type-info.git",
"reference": "7f9743e921abcce92a03fc693530209c59e73076" "reference": "ac5ab66b21c758df71b7210cf1033d1ac807f202"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/type-info/zipball/7f9743e921abcce92a03fc693530209c59e73076", "url": "https://api.github.com/repos/symfony/type-info/zipball/ac5ab66b21c758df71b7210cf1033d1ac807f202",
"reference": "7f9743e921abcce92a03fc693530209c59e73076", "reference": "ac5ab66b21c758df71b7210cf1033d1ac807f202",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -15491,7 +15502,7 @@
"type" "type"
], ],
"support": { "support": {
"source": "https://github.com/symfony/type-info/tree/v7.4.0" "source": "https://github.com/symfony/type-info/tree/v7.4.1"
}, },
"funding": [ "funding": [
{ {
@ -15511,7 +15522,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-11-07T09:36:46+00:00" "time": "2025-12-05T14:04:53+00:00"
}, },
{ {
"name": "symfony/uid", "name": "symfony/uid",
@ -19038,12 +19049,12 @@
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/Roave/SecurityAdvisories.git", "url": "https://github.com/Roave/SecurityAdvisories.git",
"reference": "5ba14c800ff89c74333c22d56ca1c1f35c424805" "reference": "412d91dc6342787fd733523797d9c9faf2ad3ea5"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/5ba14c800ff89c74333c22d56ca1c1f35c424805", "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/412d91dc6342787fd733523797d9c9faf2ad3ea5",
"reference": "5ba14c800ff89c74333c22d56ca1c1f35c424805", "reference": "412d91dc6342787fd733523797d9c9faf2ad3ea5",
"shasum": "" "shasum": ""
}, },
"conflict": { "conflict": {
@ -19104,7 +19115,7 @@
"backpack/filemanager": "<2.0.2|>=3,<3.0.9", "backpack/filemanager": "<2.0.2|>=3,<3.0.9",
"bacula-web/bacula-web": "<9.7.1", "bacula-web/bacula-web": "<9.7.1",
"badaso/core": "<=2.9.11", "badaso/core": "<=2.9.11",
"bagisto/bagisto": "<2.3.10", "bagisto/bagisto": "<=2.3.7",
"barrelstrength/sprout-base-email": "<1.2.7", "barrelstrength/sprout-base-email": "<1.2.7",
"barrelstrength/sprout-forms": "<3.9", "barrelstrength/sprout-forms": "<3.9",
"barryvdh/laravel-translation-manager": "<0.6.8", "barryvdh/laravel-translation-manager": "<0.6.8",
@ -20037,7 +20048,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2026-01-02T22:05:49+00:00" "time": "2025-12-30T23:05:26+00:00"
}, },
{ {
"name": "sebastian/cli-parser", "name": "sebastian/cli-parser",

View file

@ -104,7 +104,7 @@ final class FieldHelper
{ {
$db_platform = $qb->getEntityManager()->getConnection()->getDatabasePlatform(); $db_platform = $qb->getEntityManager()->getConnection()->getDatabasePlatform();
$key = 'field2_' . hash('xxh3', $field_expr); $key = 'field2_' . md5($field_expr);
//If we are on MySQL, we can just use the FIELD function //If we are on MySQL, we can just use the FIELD function
if ($db_platform instanceof AbstractMySQLPlatform) { if ($db_platform instanceof AbstractMySQLPlatform) {
@ -121,4 +121,4 @@ final class FieldHelper
return $qb; return $qb;
} }
} }

View file

@ -47,6 +47,8 @@ use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\TypeInfo\Type\NullableType;
use Symfony\Component\TypeInfo\Type\ObjectType;
use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints as Assert;
/** /**
@ -93,7 +95,7 @@ class AttachmentType extends AbstractStructuralDBElement
#[ORM\ManyToOne(targetEntity: AttachmentType::class, inversedBy: 'children')] #[ORM\ManyToOne(targetEntity: AttachmentType::class, inversedBy: 'children')]
#[ORM\JoinColumn(name: 'parent_id')] #[ORM\JoinColumn(name: 'parent_id')]
#[Groups(['attachment_type:read', 'attachment_type:write'])] #[Groups(['attachment_type:read', 'attachment_type:write'])]
#[ApiProperty(readableLink: true, writableLink: false)] #[ApiProperty(readableLink: true, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))]
protected ?AbstractStructuralDBElement $parent = null; protected ?AbstractStructuralDBElement $parent = null;
/** /**

View file

@ -50,6 +50,8 @@ use App\Entity\Parameters\CategoryParameter;
use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\TypeInfo\Type\NullableType;
use Symfony\Component\TypeInfo\Type\ObjectType;
use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints as Assert;
/** /**
@ -98,7 +100,7 @@ class Category extends AbstractPartsContainingDBElement
#[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')]
#[ORM\JoinColumn(name: 'parent_id')] #[ORM\JoinColumn(name: 'parent_id')]
#[Groups(['category:read', 'category:write'])] #[Groups(['category:read', 'category:write'])]
#[ApiProperty(readableLink: false, writableLink: false)] #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))]
protected ?AbstractStructuralDBElement $parent = null; protected ?AbstractStructuralDBElement $parent = null;
#[Groups(['category:read', 'category:write'])] #[Groups(['category:read', 'category:write'])]

View file

@ -49,6 +49,8 @@ use App\Entity\Parameters\FootprintParameter;
use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\TypeInfo\Type\NullableType;
use Symfony\Component\TypeInfo\Type\ObjectType;
use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints as Assert;
/** /**
@ -93,7 +95,7 @@ class Footprint extends AbstractPartsContainingDBElement
#[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')]
#[ORM\JoinColumn(name: 'parent_id')] #[ORM\JoinColumn(name: 'parent_id')]
#[Groups(['footprint:read', 'footprint:write'])] #[Groups(['footprint:read', 'footprint:write'])]
#[ApiProperty(readableLink: false, writableLink: false)] #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))]
protected ?AbstractStructuralDBElement $parent = null; protected ?AbstractStructuralDBElement $parent = null;
#[ORM\OneToMany(mappedBy: 'parent', targetEntity: self::class)] #[ORM\OneToMany(mappedBy: 'parent', targetEntity: self::class)]

View file

@ -48,6 +48,8 @@ use App\Entity\Parameters\ManufacturerParameter;
use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\TypeInfo\Type\NullableType;
use Symfony\Component\TypeInfo\Type\ObjectType;
use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints as Assert;
/** /**
@ -92,7 +94,7 @@ class Manufacturer extends AbstractCompany
#[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')]
#[ORM\JoinColumn(name: 'parent_id')] #[ORM\JoinColumn(name: 'parent_id')]
#[Groups(['manufacturer:read', 'manufacturer:write'])] #[Groups(['manufacturer:read', 'manufacturer:write'])]
#[ApiProperty(readableLink: false, writableLink: false)] #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))]
protected ?AbstractStructuralDBElement $parent = null; protected ?AbstractStructuralDBElement $parent = null;
#[ORM\OneToMany(mappedBy: 'parent', targetEntity: self::class)] #[ORM\OneToMany(mappedBy: 'parent', targetEntity: self::class)]

View file

@ -50,6 +50,8 @@ use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\TypeInfo\Type\NullableType;
use Symfony\Component\TypeInfo\Type\ObjectType;
use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Constraints\Length; use Symfony\Component\Validator\Constraints\Length;
@ -130,7 +132,7 @@ class MeasurementUnit extends AbstractPartsContainingDBElement
#[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')]
#[ORM\JoinColumn(name: 'parent_id')] #[ORM\JoinColumn(name: 'parent_id')]
#[Groups(['measurement_unit:read', 'measurement_unit:write'])] #[Groups(['measurement_unit:read', 'measurement_unit:write'])]
#[ApiProperty(readableLink: false, writableLink: false)] #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))]
protected ?AbstractStructuralDBElement $parent = null; protected ?AbstractStructuralDBElement $parent = null;
/** /**

View file

@ -46,6 +46,8 @@ use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\Criteria; use Doctrine\Common\Collections\Criteria;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\TypeInfo\Type\NullableType;
use Symfony\Component\TypeInfo\Type\ObjectType;
use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints as Assert;
/** /**
@ -87,7 +89,7 @@ class PartCustomState extends AbstractPartsContainingDBElement
#[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')]
#[ORM\JoinColumn(name: 'parent_id')] #[ORM\JoinColumn(name: 'parent_id')]
#[Groups(['part_custom_state:read', 'part_custom_state:write'])] #[Groups(['part_custom_state:read', 'part_custom_state:write'])]
#[ApiProperty(readableLink: false, writableLink: false)] #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))]
protected ?AbstractStructuralDBElement $parent = null; protected ?AbstractStructuralDBElement $parent = null;
/** /**

View file

@ -50,6 +50,8 @@ use App\Entity\UserSystem\User;
use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\TypeInfo\Type\NullableType;
use Symfony\Component\TypeInfo\Type\ObjectType;
use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints as Assert;
/** /**
@ -97,7 +99,7 @@ class StorageLocation extends AbstractPartsContainingDBElement
#[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')]
#[ORM\JoinColumn(name: 'parent_id')] #[ORM\JoinColumn(name: 'parent_id')]
#[Groups(['location:read', 'location:write'])] #[Groups(['location:read', 'location:write'])]
#[ApiProperty(readableLink: false, writableLink: false)] #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))]
protected ?AbstractStructuralDBElement $parent = null; protected ?AbstractStructuralDBElement $parent = null;
#[Groups(['location:read', 'location:write'])] #[Groups(['location:read', 'location:write'])]

View file

@ -53,6 +53,8 @@ use Brick\Math\BigDecimal;
use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\TypeInfo\Type\NullableType;
use Symfony\Component\TypeInfo\Type\ObjectType;
use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints as Assert;
/** /**
@ -99,7 +101,7 @@ class Supplier extends AbstractCompany
#[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')]
#[ORM\JoinColumn(name: 'parent_id')] #[ORM\JoinColumn(name: 'parent_id')]
#[Groups(['supplier:read', 'supplier:write'])] #[Groups(['supplier:read', 'supplier:write'])]
#[ApiProperty(readableLink: false, writableLink: false)] #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))]
protected ?AbstractStructuralDBElement $parent = null; protected ?AbstractStructuralDBElement $parent = null;
/** /**

View file

@ -52,6 +52,8 @@ use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\TypeInfo\Type\NullableType;
use Symfony\Component\TypeInfo\Type\ObjectType;
use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints as Assert;
/** /**
@ -125,7 +127,7 @@ class Currency extends AbstractStructuralDBElement
#[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')]
#[ORM\JoinColumn(name: 'parent_id')] #[ORM\JoinColumn(name: 'parent_id')]
#[Groups(['currency:read', 'currency:write'])] #[Groups(['currency:read', 'currency:write'])]
#[ApiProperty(readableLink: false, writableLink: false)] #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))]
protected ?AbstractStructuralDBElement $parent = null; protected ?AbstractStructuralDBElement $parent = null;
/** /**

View file

@ -49,6 +49,8 @@ use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use InvalidArgumentException; use InvalidArgumentException;
use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\TypeInfo\Type\NullableType;
use Symfony\Component\TypeInfo\Type\ObjectType;
use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Context\ExecutionContextInterface; use Symfony\Component\Validator\Context\ExecutionContextInterface;
@ -95,7 +97,7 @@ class Project extends AbstractStructuralDBElement
#[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')]
#[ORM\JoinColumn(name: 'parent_id')] #[ORM\JoinColumn(name: 'parent_id')]
#[Groups(['project:read', 'project:write'])] #[Groups(['project:read', 'project:write'])]
#[ApiProperty(readableLink: false, writableLink: false)] #[ApiProperty(readableLink: false, writableLink: false, nativeType: new NullableType(new ObjectType(self::class)))]
protected ?AbstractStructuralDBElement $parent = null; protected ?AbstractStructuralDBElement $parent = null;
#[Groups(['project:read', 'project:write'])] #[Groups(['project:read', 'project:write'])]

View file

@ -139,7 +139,7 @@ class FileTypeFilterTools
{ {
$filter = trim($filter); $filter = trim($filter);
return $this->cache->get('filter_exts_'.hash('xxh3', $filter), function (ItemInterface $item) use ($filter) { return $this->cache->get('filter_exts_'.md5($filter), function (ItemInterface $item) use ($filter) {
$elements = explode(',', $filter); $elements = explode(',', $filter);
$extensions = []; $extensions = [];

View file

@ -397,13 +397,13 @@ class OEMSecretsProvider implements InfoProviderInterface
* Generates a cache key for storing part details based on the provided provider ID. * Generates a cache key for storing part details based on the provided provider ID.
* *
* This method creates a unique cache key by prefixing the provider ID with 'part_details_' * This method creates a unique cache key by prefixing the provider ID with 'part_details_'
* and hashing the provider ID using XXH3 to ensure a consistent and compact key format. * and hashing the provider ID using MD5 to ensure a consistent and compact key format.
* *
* @param string $provider_id The unique identifier of the provider or part. * @param string $provider_id The unique identifier of the provider or part.
* @return string The generated cache key. * @return string The generated cache key.
*/ */
private function getCacheKey(string $provider_id): string { private function getCacheKey(string $provider_id): string {
return 'oemsecrets_part_' . hash('xxh3', $provider_id); return 'oemsecrets_part_' . md5($provider_id);
} }