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 / ColumnSize / UserStorage.php
codepress-admin-columns / classes / ColumnSize Last commit date
ListStorage.php 1 day ago UserStorage.php 1 day ago
UserStorage.php
116 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\ColumnSize;
6
7 use AC\Preferences\Preference;
8 use AC\Preferences\SiteFactory;
9 use AC\Type\ColumnId;
10 use AC\Type\ColumnWidth;
11 use AC\Type\ListScreenId;
12
13 class UserStorage
14 {
15 private const OPTION_UNIT = 'unit';
16 private const OPTION_VALUE = 'value';
17
18 private SiteFactory $storage_factory;
19
20 public function __construct(SiteFactory $storage_factory)
21 {
22 $this->storage_factory = $storage_factory;
23 }
24
25 private function create_storage(): Preference
26 {
27 return $this->storage_factory->create('column_widths');
28 }
29
30 public function save(ListScreenId $list_id, ColumnId $column_name, ColumnWidth $column_width): void
31 {
32 $widths = $this->create_storage()->find((string)$list_id) ?: [];
33
34 $widths[(string)$column_name] = [
35 self::OPTION_UNIT => $column_width->get_unit(),
36 self::OPTION_VALUE => $column_width->get_value(),
37 ];
38
39 $this->create_storage()->save(
40 (string)$list_id,
41 $widths
42 );
43 }
44
45 public function exists(ListScreenId $list_id): bool
46 {
47 return null !== $this->create_storage()->find((string)$list_id);
48 }
49
50 public function get(ListScreenId $list_id, ColumnId $column_id): ?ColumnWidth
51 {
52 $widths = $this->create_storage()->find((string)$list_id);
53
54 $name = (string)$column_id;
55
56 if (! isset($widths[$name])) {
57 return null;
58 }
59
60 return new ColumnWidth(
61 $widths[$name][self::OPTION_UNIT],
62 $widths[$name][self::OPTION_VALUE]
63 );
64 }
65
66 /**
67 * @param ListScreenId $list_id
68 *
69 * @return ColumnWidth[]
70 */
71 public function get_all(ListScreenId $list_id): array
72 {
73 $widths = $this->create_storage()->find((string)$list_id);
74
75 if (! $widths) {
76 return [];
77 }
78
79 $column_widths = [];
80
81 foreach ($widths as $column_name => $width) {
82 $column_widths[$column_name] = new ColumnWidth(
83 $width[self::OPTION_UNIT],
84 $width[self::OPTION_VALUE]
85 );
86 }
87
88 return $column_widths;
89 }
90
91 public function delete(ListScreenId $list_id, string $column_name): void
92 {
93 $widths = $this->create_storage()->find(
94 (string)$list_id
95 );
96
97 if (! $widths) {
98 return;
99 }
100
101 unset($widths[$column_name]);
102
103 $widths
104 ? $this->create_storage()->save((string)$list_id, $widths)
105 : $this->delete_by_list_id($list_id);
106 }
107
108 public function delete_by_list_id(ListScreenId $list_id): void
109 {
110 $this->create_storage()->delete(
111 (string)$list_id
112 );
113 }
114
115 }
116