PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.4
Independent Analytics – WordPress Analytics Plugin v2.15.4
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / illuminate / database / Eloquent / Casts / AsEnumArrayObject.php
independent-analytics / vendor / illuminate / database / Eloquent / Casts Last commit date
ArrayObject.php 1 month ago AsArrayObject.php 1 month ago AsCollection.php 1 month ago AsEncryptedArrayObject.php 1 month ago AsEncryptedCollection.php 1 month ago AsEnumArrayObject.php 1 month ago AsEnumCollection.php 1 month ago AsStringable.php 1 month ago Attribute.php 1 month ago
AsEnumArrayObject.php
70 lines
1 <?php
2
3 namespace IAWPSCOPED\Illuminate\Database\Eloquent\Casts;
4
5 use BackedEnum;
6 use IAWPSCOPED\Illuminate\Contracts\Database\Eloquent\Castable;
7 use IAWPSCOPED\Illuminate\Contracts\Database\Eloquent\CastsAttributes;
8 use IAWPSCOPED\Illuminate\Support\Collection;
9 /** @internal */
10 class AsEnumArrayObject implements Castable
11 {
12 /**
13 * Get the caster class to use when casting from / to this cast target.
14 *
15 * @template TEnum
16 *
17 * @param array{class-string<TEnum>} $arguments
18 * @return CastsAttributes<ArrayObject<array-key, TEnum>, iterable<TEnum>>
19 */
20 public static function castUsing(array $arguments)
21 {
22 return new class($arguments) implements CastsAttributes
23 {
24 protected $arguments;
25 public function __construct(array $arguments)
26 {
27 $this->arguments = $arguments;
28 }
29 public function get($model, $key, $value, $attributes)
30 {
31 if (!isset($attributes[$key]) || \is_null($attributes[$key])) {
32 return;
33 }
34 $data = \json_decode($attributes[$key], \true);
35 if (!\is_array($data)) {
36 return;
37 }
38 $enumClass = $this->arguments[0];
39 return new ArrayObject((new Collection($data))->map(function ($value) use($enumClass) {
40 return \is_subclass_of($enumClass, BackedEnum::class) ? $enumClass::from($value) : \constant($enumClass . '::' . $value);
41 })->toArray());
42 }
43 public function set($model, $key, $value, $attributes)
44 {
45 if ($value === null) {
46 return [$key => null];
47 }
48 $storable = [];
49 foreach ($value as $enum) {
50 $storable[] = $this->getStorableEnumValue($enum);
51 }
52 return [$key => \json_encode($storable)];
53 }
54 public function serialize($model, string $key, $value, array $attributes)
55 {
56 return (new Collection($value->getArrayCopy()))->map(function ($enum) {
57 return $this->getStorableEnumValue($enum);
58 })->toArray();
59 }
60 protected function getStorableEnumValue($enum)
61 {
62 if (\is_string($enum) || \is_int($enum)) {
63 return $enum;
64 }
65 return $enum instanceof BackedEnum ? $enum->value : $enum->name;
66 }
67 };
68 }
69 }
70