PluginProbe
Tableberg – Simple Gutenberg Table Block / 1.0.2
Tableberg – Simple Gutenberg Table Block v1.0.2
1.1.5 1.1.4 1.1.3 1.1.2 1.1.1 1.1.0 1.0.5 1.0.4 1.0.3 1.0.2 1.0.1 trunk 0.0.2 0.2.1 0.3.2 0.3.3 0.4.1 0.5.0 0.5.1 0.5.2 0.5.3 0.5.4 0.5.5 0.5.6 0.5.7 All 42 releases
tableberg / renderer / Image / ImageAttrs.php

ImageAttrs.php in Tableberg – Simple Gutenberg Table Block 1.0.2, at renderer/Image/ImageAttrs.php

163 lines 4.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Tableberg\Renderer\Image;
4
5 use Tableberg\Renderer\Attrs\Corners;
6 use Tableberg\Renderer\Attrs\NumberAttr;
7 use Tableberg\Renderer\Attrs\Sides;
8 use Tableberg\Renderer\Attrs\StringAttr;
9
10 use function Tableberg\Renderer\getOrNull;
11
12 class ImageAttrs {
13 /** @var MediaAttrs */
14 public $media;
15
16 /** @var StringAttr */
17 public $height;
18
19 /** @var StringAttr */
20 public $width;
21
22 /** @var StringAttr */
23 public $alt;
24
25 /** @var StringAttr */
26 public $align;
27
28 /** @var StringAttr */
29 public $aspectRatio;
30
31 /** @var StringAttr */
32 public $scale;
33
34 /** @var StringAttr */
35 public $sizeSlug;
36
37 /** @var StringAttr */
38 public $caption;
39
40 /** @var StringAttr */
41 public $href;
42
43 /** @var StringAttr */
44 public $linkTarget;
45
46 /** @var Sides */
47 public $border;
48
49 /** @var Corners */
50 public $borderRadius;
51
52 /**
53 * @param array<string, mixed>|null $data
54 * @return self
55 */
56 public static function from_array($data) {
57 $data = is_array($data) ? $data : [];
58 $defaults = Defaults::get_defaults();
59
60 $instance = new self();
61 $instance->media = MediaAttrs::from_array(getOrNull($data['media']));
62 $instance->height = new StringAttr(getOrNull($data['height']), $defaults['height']);
63 $instance->width = new StringAttr(getOrNull($data['width']), $defaults['width']);
64 $instance->alt = new StringAttr(getOrNull($data['alt']), $defaults['alt']);
65 $instance->align = new StringAttr(
66 getOrNull($data['align']),
67 $defaults['align'],
68 ['left', 'center', 'right']
69 );
70 $instance->aspectRatio = new StringAttr(
71 getOrNull($data['aspectRatio']),
72 $defaults['aspectRatio']
73 );
74 $instance->scale = new StringAttr(getOrNull($data['scale']), $defaults['scale']);
75 $instance->sizeSlug = new StringAttr(getOrNull($data['sizeSlug']), $defaults['sizeSlug']);
76 $instance->caption = new StringAttr(getOrNull($data['caption']), $defaults['caption']);
77 $instance->href = new StringAttr(getOrNull($data['href']), $defaults['href']);
78 $instance->linkTarget = new StringAttr(
79 getOrNull($data['linkTarget']),
80 $defaults['linkTarget'],
81 ['_blank', '_self']
82 );
83 $instance->border = Sides::from_array(getOrNull($data['border']), $defaults['border']);
84 $instance->borderRadius = Corners::from_array(
85 getOrNull($data['borderRadius']),
86 $defaults['borderRadius']
87 );
88
89 return $instance;
90 }
91 }
92
93 class MediaSizeAttrs {
94 /** @var StringAttr */
95 public $url;
96
97 /** @var NumberAttr */
98 public $width;
99
100 /** @var NumberAttr */
101 public $height;
102
103 /** @var StringAttr */
104 public $orientation;
105
106 /**
107 * @param array<string, mixed>|null $data
108 * @return self
109 */
110 public static function from_array($data) {
111 $data = is_array($data) ? $data : [];
112
113 $instance = new self();
114 $instance->url = new StringAttr(getOrNull($data['url']), '');
115 $instance->width = new NumberAttr(getOrNull($data['width']), 0);
116 $instance->height = new NumberAttr(getOrNull($data['height']), 0);
117 $instance->orientation = new StringAttr(getOrNull($data['orientation']), '');
118
119 return $instance;
120 }
121 }
122
123 class MediaAttrs {
124 /** @var NumberAttr */
125 public $id;
126
127 /** @var StringAttr */
128 public $url;
129
130 /** @var StringAttr */
131 public $alt;
132
133 /** @var array<string, MediaSizeAttrs> */
134 public $sizes;
135
136 /**
137 * @param array<string, mixed>|null $data
138 * @return self
139 */
140 public static function from_array($data) {
141 $data = is_array($data) ? $data : [];
142
143 $instance = new self();
144 $instance->id = new NumberAttr(getOrNull($data['id']), 0);
145 $instance->url = new StringAttr(getOrNull($data['url']), '');
146 $instance->alt = new StringAttr(getOrNull($data['alt']), '');
147 $instance->sizes = [];
148
149 $rawSizes = getOrNull($data['sizes']);
150 if (is_array($rawSizes)) {
151 foreach ($rawSizes as $slug => $sizeData) {
152 if (!is_string($slug) || !is_array($sizeData)) {
153 continue;
154 }
155
156 $instance->sizes[$slug] = MediaSizeAttrs::from_array($sizeData);
157 }
158 }
159
160 return $instance;
161 }
162 }
163