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 / Column / SettingUpdater.php
codepress-admin-columns / classes / Column Last commit date
Base.php 1 day ago BaseColumnFactory.php 1 day ago ColumnFactory.php 1 day ago ColumnIdGenerator.php 1 day ago ColumnLabelTrait.php 1 day ago Context.php 1 day ago CustomFieldContext.php 1 day ago GroupTrait.php 1 day ago LabelEncoder.php 1 day ago SettingUpdater.php 1 day ago
SettingUpdater.php
80 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\Column;
6
7 use AC\Column;
8 use AC\ColumnCollection;
9 use AC\ColumnFactories\Aggregate;
10 use AC\ColumnIterator;
11 use AC\ListScreenRepository\Storage;
12 use AC\Setting\ConfigFactory;
13 use AC\Type\ColumnId;
14 use AC\Type\ListScreenId;
15
16 class SettingUpdater
17 {
18 private Storage $storage;
19
20 private Aggregate $column_factory;
21
22 private ConfigFactory $config_factory;
23
24 public function __construct(Storage $storage, ConfigFactory $config_factory, Aggregate $column_factory)
25 {
26 $this->storage = $storage;
27 $this->config_factory = $config_factory;
28 $this->column_factory = $column_factory;
29 }
30
31 public function update(ListScreenId $list_id, ColumnId $column_id, array $settings): void
32 {
33 $list_screen = $this->storage->find($list_id);
34
35 if (! $list_screen) {
36 return;
37 }
38
39 $column = $list_screen->get_column($column_id);
40
41 if (! $column) {
42 return;
43 }
44
45 $factory = null;
46
47 foreach ($this->column_factory->create($list_screen->get_table_screen()) as $candidate) {
48 if ($candidate->get_column_type() === $column->get_type()) {
49 $factory = $candidate;
50 break;
51 }
52 }
53
54 if (! $factory) {
55 return;
56 }
57
58 $config = $this->config_factory->create($column)->with($settings);
59 $column = $factory->create($config);
60
61 $list_screen->set_columns($this->replace_in_collection($list_screen->get_columns(), $column));
62
63 $this->storage->save($list_screen);
64 }
65
66 private function replace_in_collection(ColumnIterator $iterator, Column $updated): ColumnCollection
67 {
68 $columns = iterator_to_array($iterator);
69
70 foreach ($columns as $k => $column) {
71 if ($column->get_id()->equals($updated->get_id())) {
72 $columns[$k] = $updated;
73 }
74 }
75
76 return new ColumnCollection($columns);
77 }
78
79 }
80