PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 7.0.13
Admin Columns v7.0.13
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 months ago BaseColumnFactory.php 5 months ago ColumnFactory.php 5 months ago ColumnIdGenerator.php 5 months ago ColumnLabelTrait.php 5 months ago Context.php 5 months ago CustomFieldContext.php 5 months ago GroupTrait.php 5 months ago LabelEncoder.php 5 months ago SettingUpdater.php 5 months ago
SettingUpdater.php
81 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
19 private Storage $storage;
20
21 private Aggregate $column_factory;
22
23 private ConfigFactory $config_factory;
24
25 public function __construct(Storage $storage, ConfigFactory $config_factory, Aggregate $column_factory)
26 {
27 $this->storage = $storage;
28 $this->config_factory = $config_factory;
29 $this->column_factory = $column_factory;
30 }
31
32 public function update(ListScreenId $list_id, ColumnId $column_id, array $settings): void
33 {
34 $list_screen = $this->storage->find($list_id);
35
36 if ( ! $list_screen) {
37 return;
38 }
39
40 $column = $list_screen->get_column($column_id);
41
42 if ( ! $column) {
43 return;
44 }
45
46 $factory = null;
47
48 foreach ($this->column_factory->create($list_screen->get_table_screen()) as $candidate) {
49 if ($candidate->get_column_type() === $column->get_type()) {
50 $factory = $candidate;
51 break;
52 }
53 }
54
55 if ( ! $factory) {
56 return;
57 }
58
59 $config = $this->config_factory->create($column)->with($settings);
60 $column = $factory->create($config);
61
62 $list_screen->set_columns($this->replace_in_collection($list_screen->get_columns(), $column));
63
64 $this->storage->save($list_screen);
65 }
66
67 private function replace_in_collection(ColumnIterator $iterator, Column $updated): ColumnCollection
68 {
69 $columns = iterator_to_array($iterator);
70
71 foreach ($columns as $k => $column) {
72 if ($column->get_id()->equals($updated->get_id())) {
73 $columns[$k] = $updated;
74 }
75 }
76
77 return new ColumnCollection($columns);
78 }
79
80 }
81