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 5 days ago BaseColumnFactory.php 5 days ago ColumnFactory.php 5 days ago ColumnIdGenerator.php 5 days ago ColumnLabelTrait.php 5 days ago Context.php 5 days ago CustomFieldContext.php 5 days ago GroupTrait.php 5 days ago LabelEncoder.php 5 days ago SettingUpdater.php 5 days 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