PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 7.1.4
Admin Columns v7.1.4
7.1.4 7.0.19 2.3.5 2.4 2.4.1 2.4.10 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.6.1 2.5.6.2 2.5.6.3 2.5.6.4 3.0 3.0.1 3.0.2 3.0.3 3.0.5 3.0.7 3.1 3.1.1 3.1.10 3.1.2 3.1.3 3.1.5 3.2.3 3.2.7 3.3.1 3.4.1 3.4.6 3.4.8 4.0.1 4.0.3 4.1.6 4.2.2 4.2.5 4.3 4.3.2 4.4.1 4.4.4 4.4.5 4.5.5 4.6.1 4.7.18 4.7.19 4.7.20 4.7.7 7.0.13 7.0.14 7.0.16 trunk 1.0 1.1 1.1.3 1.2 1.2.1 1.3 1.3.1 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.5.1 1.4.6 1.4.6.1 1.4.6.2 1.4.6.3 1.4.6.4 1.4.7 1.4.8 1.4.9 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 2.2.1 2.2.1.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.5.1 2.2.6 2.2.6.1 2.2.6.2 2.2.6.3 2.2.6.4 2.2.7 2.2.8 2.2.8.1 2.2.9 2.3.1 2.3.2 2.3.3
codepress-admin-columns / classes / Storage / Encoder / BaseEncoder.php
codepress-admin-columns / classes / Storage / Encoder Last commit date
BaseEncoder.php 1 day ago
BaseEncoder.php
99 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\Storage\Encoder;
6
7 use AC;
8 use AC\ListScreen;
9 use AC\Plugin\Version;
10 use AC\Setting\ComponentCollection;
11
12 class BaseEncoder implements AC\Storage\Encoder
13 {
14 private Version $version;
15
16 private ?ListScreen $list_screen = null;
17
18 public function __construct(Version $version)
19 {
20 $this->version = $version;
21 }
22
23 /**
24 * @return static
25 */
26 public function set_list_screen(ListScreen $list_screen): self
27 {
28 $this->list_screen = $list_screen;
29
30 return $this;
31 }
32
33 public function encode(): array
34 {
35 $encoded_data = [
36 'version' => (string)$this->version,
37 ];
38
39 if ($this->list_screen instanceof ListScreen) {
40 $encoded_data['list_screen'] = [
41 'title' => $this->list_screen->get_title(),
42 'type' => (string)$this->list_screen->get_table_id(),
43 'id' => (string)$this->list_screen->get_id(),
44 'status' => (string)$this->list_screen->get_status(),
45 'updated' => $this->list_screen->get_updated()->getTimestamp(),
46 'columns' => $this->encode_columns(),
47 'settings' => $this->get_preferences(),
48 ];
49 }
50
51 return $encoded_data;
52 }
53
54 protected function get_preferences(): array
55 {
56 if (! $this->list_screen instanceof ListScreen) {
57 return [];
58 }
59
60 return $this->list_screen->get_preferences();
61 }
62
63 private function encode_settings(ComponentCollection $settings, array $encoded = []): array
64 {
65 foreach ($settings as $setting) {
66 if ($setting->has_input()) {
67 $encoded[$setting->get_input()->get_name()] = $setting->get_input()->get_value();
68 }
69
70 if ($setting->has_children()) {
71 $encoded = $this->encode_settings($setting->get_children()->get_iterator(), $encoded);
72 }
73 }
74
75 return $encoded;
76 }
77
78 private function encode_columns(): array
79 {
80 $encode = [];
81
82 if (! $this->list_screen instanceof ListScreen) {
83 return $encode;
84 }
85
86 /**
87 * @var AC\Column $column
88 */
89 foreach ($this->list_screen->get_columns() as $column) {
90 $data = $this->encode_settings($column->get_settings());
91 $data['type'] = $column->get_type();
92
93 $encode[] = $data;
94 }
95
96 return $encode;
97 }
98 }
99