From ded7cd7266fac6d97af03e2da9ab24d6b13499f3 Mon Sep 17 00:00:00 2001 From: Alexis Gousseau Date: Thu, 28 Aug 2025 11:58:49 +0200 Subject: [PATCH] chore: :arrow_up: update laravel-common to v4.1.0 --- .../ActivityLogs/ActivityLogsEventEnum.php | 2 +- app/Enums/ApiError.php | 2 +- app/Enums/ApiStatus.php | 2 +- app/Enums/ArcadiaMailType.php | 2 +- app/Enums/ArcadiaOrderType.php | 2 +- app/Enums/Claims/ClaimMessageType.php | 2 +- app/Enums/Claims/ClaimResponseType.php | 2 +- app/Enums/Claims/ClaimStatus.php | 2 +- app/Enums/Claims/ClaimType.php | 2 +- app/Enums/Country.php | 2 +- app/Enums/CustomerExportType.php | 2 +- .../Pagination/ItemsPerPaginationEnum.php | 2 +- app/Enums/QuestionType.php | 2 +- app/Enums/Theme/BootstrapThemeEnum.php | 2 +- app/Enums/Users/RoleEnum.php | 2 +- app/Traits/Enums/BaseEnum.php | 310 ------------------ composer.json | 2 +- composer.lock | 12 +- 18 files changed, 22 insertions(+), 332 deletions(-) delete mode 100644 app/Traits/Enums/BaseEnum.php diff --git a/app/Enums/ActivityLogs/ActivityLogsEventEnum.php b/app/Enums/ActivityLogs/ActivityLogsEventEnum.php index ebb098c..7689de4 100644 --- a/app/Enums/ActivityLogs/ActivityLogsEventEnum.php +++ b/app/Enums/ActivityLogs/ActivityLogsEventEnum.php @@ -2,7 +2,7 @@ namespace App\Enums\ActivityLogs; -use App\Traits\Enums\BaseEnum; +use Uwil\LaravelCommon\Traits\Enums\BaseEnum; enum ActivityLogsEventEnum: int { diff --git a/app/Enums/ApiError.php b/app/Enums/ApiError.php index bbaa3d3..828a1d7 100644 --- a/app/Enums/ApiError.php +++ b/app/Enums/ApiError.php @@ -2,7 +2,7 @@ namespace App\Enums; -use App\Traits\Enums\BaseEnum; +use Uwil\LaravelCommon\Traits\Enums\BaseEnum; enum ApiError: int { diff --git a/app/Enums/ApiStatus.php b/app/Enums/ApiStatus.php index 8405e3f..94ef2a5 100644 --- a/app/Enums/ApiStatus.php +++ b/app/Enums/ApiStatus.php @@ -2,7 +2,7 @@ namespace App\Enums; -use App\Traits\Enums\BaseEnum; +use Uwil\LaravelCommon\Traits\Enums\BaseEnum; enum ApiStatus: int { diff --git a/app/Enums/ArcadiaMailType.php b/app/Enums/ArcadiaMailType.php index 01d6254..4617e4b 100644 --- a/app/Enums/ArcadiaMailType.php +++ b/app/Enums/ArcadiaMailType.php @@ -2,7 +2,7 @@ namespace App\Enums; -use App\Traits\Enums\BaseEnum; +use Uwil\LaravelCommon\Traits\Enums\BaseEnum; enum ArcadiaMailType: int { diff --git a/app/Enums/ArcadiaOrderType.php b/app/Enums/ArcadiaOrderType.php index 2785ae2..aa4eda2 100644 --- a/app/Enums/ArcadiaOrderType.php +++ b/app/Enums/ArcadiaOrderType.php @@ -2,7 +2,7 @@ namespace App\Enums; -use App\Traits\Enums\BaseEnum; +use Uwil\LaravelCommon\Traits\Enums\BaseEnum; enum ArcadiaOrderType: int { diff --git a/app/Enums/Claims/ClaimMessageType.php b/app/Enums/Claims/ClaimMessageType.php index 3b2e965..1115cb2 100644 --- a/app/Enums/Claims/ClaimMessageType.php +++ b/app/Enums/Claims/ClaimMessageType.php @@ -2,7 +2,7 @@ namespace App\Enums\Claims; -use App\Traits\Enums\BaseEnum; +use Uwil\LaravelCommon\Traits\Enums\BaseEnum; enum ClaimMessageType: int { diff --git a/app/Enums/Claims/ClaimResponseType.php b/app/Enums/Claims/ClaimResponseType.php index c8575eb..20646b7 100644 --- a/app/Enums/Claims/ClaimResponseType.php +++ b/app/Enums/Claims/ClaimResponseType.php @@ -2,7 +2,7 @@ namespace App\Enums\Claims; -use App\Traits\Enums\BaseEnum; +use Uwil\LaravelCommon\Traits\Enums\BaseEnum; enum ClaimResponseType: int { diff --git a/app/Enums/Claims/ClaimStatus.php b/app/Enums/Claims/ClaimStatus.php index 29ca37b..53d2c64 100644 --- a/app/Enums/Claims/ClaimStatus.php +++ b/app/Enums/Claims/ClaimStatus.php @@ -2,7 +2,7 @@ namespace App\Enums\Claims; -use App\Traits\Enums\BaseEnum; +use Uwil\LaravelCommon\Traits\Enums\BaseEnum; enum ClaimStatus: int { diff --git a/app/Enums/Claims/ClaimType.php b/app/Enums/Claims/ClaimType.php index bab2dca..96edd54 100644 --- a/app/Enums/Claims/ClaimType.php +++ b/app/Enums/Claims/ClaimType.php @@ -2,7 +2,7 @@ namespace App\Enums\Claims; -use App\Traits\Enums\BaseEnum; +use Uwil\LaravelCommon\Traits\Enums\BaseEnum; enum ClaimType: int { diff --git a/app/Enums/Country.php b/app/Enums/Country.php index 2a6928d..df157cc 100644 --- a/app/Enums/Country.php +++ b/app/Enums/Country.php @@ -2,7 +2,7 @@ namespace App\Enums; -use App\Traits\Enums\BaseEnum; +use Uwil\LaravelCommon\Traits\Enums\BaseEnum; enum Country: int { diff --git a/app/Enums/CustomerExportType.php b/app/Enums/CustomerExportType.php index 73a18b5..4e6770a 100644 --- a/app/Enums/CustomerExportType.php +++ b/app/Enums/CustomerExportType.php @@ -2,7 +2,7 @@ namespace App\Enums; -use App\Traits\Enums\BaseEnum; +use Uwil\LaravelCommon\Traits\Enums\BaseEnum; enum CustomerExportType: int { diff --git a/app/Enums/Pagination/ItemsPerPaginationEnum.php b/app/Enums/Pagination/ItemsPerPaginationEnum.php index b1682f8..7c66cee 100644 --- a/app/Enums/Pagination/ItemsPerPaginationEnum.php +++ b/app/Enums/Pagination/ItemsPerPaginationEnum.php @@ -2,7 +2,7 @@ namespace App\Enums\Pagination; -use App\Traits\Enums\BaseEnum; +use Uwil\LaravelCommon\Traits\Enums\BaseEnum; enum ItemsPerPaginationEnum: int { diff --git a/app/Enums/QuestionType.php b/app/Enums/QuestionType.php index 86f4be6..6ebb821 100644 --- a/app/Enums/QuestionType.php +++ b/app/Enums/QuestionType.php @@ -2,7 +2,7 @@ namespace App\Enums; -use App\Traits\Enums\BaseEnum; +use Uwil\LaravelCommon\Traits\Enums\BaseEnum; enum QuestionType: int { diff --git a/app/Enums/Theme/BootstrapThemeEnum.php b/app/Enums/Theme/BootstrapThemeEnum.php index f1f3725..4ee8c33 100644 --- a/app/Enums/Theme/BootstrapThemeEnum.php +++ b/app/Enums/Theme/BootstrapThemeEnum.php @@ -2,7 +2,7 @@ namespace App\Enums\Theme; -use App\Traits\Enums\BaseEnum; +use Uwil\LaravelCommon\Traits\Enums\BaseEnum; enum BootstrapThemeEnum: int { diff --git a/app/Enums/Users/RoleEnum.php b/app/Enums/Users/RoleEnum.php index b72f1cb..2c11a29 100644 --- a/app/Enums/Users/RoleEnum.php +++ b/app/Enums/Users/RoleEnum.php @@ -2,7 +2,7 @@ namespace App\Enums\Users; -use App\Traits\Enums\BaseEnum; +use Uwil\LaravelCommon\Traits\Enums\BaseEnum; enum RoleEnum: int { diff --git a/app/Traits/Enums/BaseEnum.php b/app/Traits/Enums/BaseEnum.php deleted file mode 100644 index 753c898..0000000 --- a/app/Traits/Enums/BaseEnum.php +++ /dev/null @@ -1,310 +0,0 @@ -name]; - } - - /** - * Get enum label. - * - * @return string - */ - public function label(): string - { - return self::toLabels()[$this->name]; - } - - /** - * Get enum name. - * - * @return string - */ - public function name(): string - { - return $this->name; - } - - // * STATIC FETCH METHODS - - /** - * Get enum labels. - * - * @return array - */ - public static function toLabels(): array - { - if (empty(self::getCache('labels'))) { - $labels = self::getLabelsConstant(); - $array = []; - \array_map(function ($enum) use (&$array, $labels) { - if (!\is_null($labels) and !isset($labels[$enum->name])) { - throw new \Error('Missing definition label ' . self::class . " for {$enum->name}"); - } - $array = array_merge($array, [$enum->name => __( - !\is_null($labels) ? $labels[$enum->name] : ucfirst($enum->name) - )]); - }, self::cases()); - self::setCache('labels', $array); - } - return self::getCache('labels'); - } - - /** - * Get enum values. - * - * @return array - */ - public static function toValues(): array - { - if (empty(self::getCache('values'))) { - $array = []; - \array_map(function ($enum) use (&$array) { - $array = array_merge($array, [$enum->name => $enum->value]); - }, self::cases()); - self::setCache('values', $array); - } - return self::getCache('values'); - } - - /** - * Get enums. - * - * @return array - */ - public static function all(): array - { - return self::cases(); - } - - /** - * Get enums. - * - * @return array - */ - public static function toArray(): array - { - if (empty(self::getCache('enums'))) { - $definitions = self::getCustomDefinitions(); - $array = []; - $inflector = InflectorFactory::create()->build(); - \array_map(function ($enum) use (&$array, $definitions, $inflector) { - $baseArray = [ - 'name' => $enum->name, - 'label' => $enum->label(), - 'value' => $enum->value, - ]; - foreach ($definitions as $index => $elements) { - $index = $inflector->singularize(strtolower($index)); - if (!isset($elements[$enum->name])) { - throw new \Error("Missing definition {$index} " . self::class . " for {$enum->name}"); - } - $baseArray[$index] = $elements[$enum->name]; - } - $array = array_merge($array, [$enum->name => (object)$baseArray]); - }, self::cases()); - self::setCache('enums', $array); - } //end if - return self::getCache('enums'); - } - - /** - * Fetch enum using value. - * - * @param \App\Traits\Enums\BaseEnum|integer|string $value - * @param string $field - * @return \App\Traits\Enums\BaseEnum|null - */ - public static function make(self|int|string $value, string $field = 'value'): self|null - { - return !\is_object($value) ? self::cases()[array_search($value, array_column(self::cases(), $field))] : $value; - } - - /** - * Test if 2 enum are equals. - * - * @param object ...$others - * @return boolean - * @throws \Error If provided element are not enums taht extends BaseEnum. - */ - public function equals(object ...$others): bool - { - foreach ($others as $other) { - if (!\in_array(BaseEnum::class, $this->classUsesRecursive($other))) { - throw new \Error(__METHOD__ . - ' requires $enum to use ' . BaseEnum::class); - } - if ( - get_class($this) === get_class($other) - && $this->value === $other->value - ) { - return true; - } - } - return false; - } - - /** - * Serialize to json. - * - * @return mixed - */ - public function jsonSerialize(): mixed - { - return $this->value; - } - - - // * CACHE - - /** - * Get cache array. - * - * @param string $index - * @return array - */ - private static function getCache(string $index): array - { - self::initCache(); - if (!isset($GLOBALS[self::class]['props'][$index])) { - $GLOBALS[self::class]['props'][$index] = []; - } - return $GLOBALS[self::class]['props'][$index]; - } - - /** - * Set cache array. - * - * @param string $index - * @param array $items - * @return void - */ - private static function setCache(string $index, array $items): void - { - self::initCache(); - if (!isset($GLOBALS[self::class]['props'][$index])) { - $GLOBALS[self::class]['props'][$index] = []; - } - $GLOBALS[self::class]['props'][$index] = $items; - } - - /** - * Init cache if needed. - * - * @return void - */ - private static function initCache(): void - { - if (!isset($GLOBALS[self::class])) { - $GLOBALS[self::class] = [ - 'props' => [ - 'enums' => [], - 'values' => [], - 'labels' => [] - ], - 'customProps' => null - ]; - } - } - - // * PRIVATE - - /** - * Fetch the LABELS constant if exists. - * - * @return array|null - */ - private static function getLabelsConstant(): array|null - { - $class_name = self::class; - try { - $constant_reflex = new \ReflectionClassConstant($class_name, 'LABELS'); - return $constant_reflex->getValue(); - } catch (\ReflectionException $e) { - return null; - } - } - - /** - * Get custom constants. - * - * @return array - */ - private static function getCustomDefinitions(): array - { - // ? Has custom props in cache ? - if (!isset($GLOBALS[self::class]) or \is_null($GLOBALS[self::class]['customProps'])) { - $names = []; - \array_map(function (self $enum) use (&$names) { - $names = array_merge($names, [$enum->name => $enum]); - }, self::cases()); - - $GLOBALS[self::class]['customProps'] = \array_filter( - (new \ReflectionClass(self::class))->getConstants(), - function (mixed $constant, string $key) use ($names) { - if ($key === 'LABELS' or !\is_array($constant)) { - return false; - } - return count(\array_filter( - array_flip($constant), - function (string $name) use ($names) { - return array_key_exists($name, $names); - } - )); - }, - ARRAY_FILTER_USE_BOTH - ); - } //end if - return $GLOBALS[self::class]['customProps']; - } - - /** - * Returns all traits used by a class, its parent classes and trait of their traits. - * - * @param object|string $class - * @return array - */ - private function classUsesRecursive($class) - { - if (is_object($class)) { - $class = get_class($class); - } - - $results = []; - - foreach (array_reverse(class_parents($class) ?: []) + [$class => $class] as $class) { - $results += $this->traitUsesRecursive($class); - } - - return array_unique($results); - } - - /** - * Returns all traits used by a trait and its traits. - * - * @param object|string $trait - * @return array - */ - private function traitUsesRecursive($trait) - { - $traits = class_uses($trait) ?: []; - - foreach ($traits as $trait) { - $traits += $this->traitUsesRecursive($trait); - } - - return $traits; - } -} diff --git a/composer.json b/composer.json index 5a3d658..d8545e1 100644 --- a/composer.json +++ b/composer.json @@ -41,7 +41,7 @@ "sentry/sentry-laravel": "^4.10", "uwil/admin-secure-laravel": "^3.0", "uwil/k8s-laravel": "^1.4", - "uwil/laravel-common": "^3.4" + "uwil/laravel-common": "^4.1.0" }, "require-dev": { "brianium/paratest": "^7.2", diff --git a/composer.lock b/composer.lock index 265ed59..f8df817 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ee8bdd66e3ddef5e410f2b2a7d852c2b", + "content-hash": "0009b353976d02e41558711de87179a6", "packages": [ { "name": "24slides/laravel-saml2", @@ -7859,16 +7859,16 @@ }, { "name": "uwil/laravel-common", - "version": "3.4.3", + "version": "4.1.0", "source": { "type": "git", "url": "git@lab.s-web.fr:ldc-web/projets/laravel-common.git", - "reference": "e4d69be567729f0e32379b4ed1ed8cd0dc3746df" + "reference": "01af52e206e690d511752e9f6a52c8b2c537ca8a" }, "dist": { "type": "zip", - "url": "https://lab.s-web.fr/api/v4/projects/215/packages/composer/archives/uwil/laravel-common.zip?sha=e4d69be567729f0e32379b4ed1ed8cd0dc3746df", - "reference": "e4d69be567729f0e32379b4ed1ed8cd0dc3746df", + "url": "https://lab.s-web.fr/api/v4/projects/215/packages/composer/archives/uwil/laravel-common.zip?sha=01af52e206e690d511752e9f6a52c8b2c537ca8a", + "reference": "01af52e206e690d511752e9f6a52c8b2c537ca8a", "shasum": "" }, "require": { @@ -7876,7 +7876,7 @@ "kwaadpepper/image-resizer": "^3.0", "laravel/framework": "~11|~12", "mews/purifier": "^3.4", - "php": "~8.3", + "php": "^8.3", "sentry/sentry-laravel": "^4.10" }, "require-dev": {