PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.5
Independent Analytics – WordPress Analytics Plugin v2.15.5
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 / AsEnumCollection.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
AsEnumCollection.php
66 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 AsEnumCollection implements Castable
11 {
12 /**
13 * Get the caster class to use when casting from / to this cast target.
14 *
15 * @template TEnum of \UnitEnum|\BackedEnum
16 *
17 * @param array{class-string<TEnum>} $arguments
18 * @return CastsAttributes<Collection<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 Collection($data))->map(function ($value) use($enumClass) {
40 return \is_subclass_of($enumClass, BackedEnum::class) ? $enumClass::from($value) : \constant($enumClass . '::' . $value);
41 });
42 }
43 public function set($model, $key, $value, $attributes)
44 {
45 $value = $value !== null ? (new Collection($value))->map(function ($enum) {
46 return $this->getStorableEnumValue($enum);
47 })->toJson() : null;
48 return [$key => $value];
49 }
50 public function serialize($model, string $key, $value, array $attributes)
51 {
52 return (new Collection($value))->map(function ($enum) {
53 return $this->getStorableEnumValue($enum);
54 })->toArray();
55 }
56 protected function getStorableEnumValue($enum)
57 {
58 if (\is_string($enum) || \is_int($enum)) {
59 return $enum;
60 }
61 return $enum instanceof BackedEnum ? $enum->value : $enum->name;
62 }
63 };
64 }
65 }
66