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 / Plugin / Setup.php
codepress-admin-columns / classes / Plugin Last commit date
Install 1 day ago Setup 1 day ago SetupFactory 1 day ago Update 1 day ago Install.php 1 day ago InstallCollection.php 1 day ago Setup.php 1 day ago SetupFactory.php 1 day ago Update.php 1 day ago UpdateCollection.php 1 day ago Version.php 1 day ago
Setup.php
90 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\Plugin;
6
7 use AC\Storage\KeyValue;
8
9 abstract class Setup
10 {
11 private KeyValue $storage;
12
13 private Version $version;
14
15 private InstallCollection $installers;
16
17 private UpdateCollection $updates;
18
19 public function __construct(
20 KeyValue $storage,
21 Version $version,
22 ?InstallCollection $installers = null,
23 ?UpdateCollection $updates = null
24 ) {
25 $this->storage = $storage;
26 $this->version = $version;
27 $this->installers = $installers ?? new InstallCollection();
28 $this->updates = $updates ?? new UpdateCollection();
29 }
30
31 protected function update_stored_version(Version $version): void
32 {
33 $this->storage->save((string)$version);
34 }
35
36 protected function get_stored_version(): Version
37 {
38 return new Version((string)$this->storage->get());
39 }
40
41 private function update_stored_version_to_current(): void
42 {
43 $this->update_stored_version($this->version);
44 }
45
46 abstract protected function is_new_install(): bool;
47
48 private function install(): void
49 {
50 foreach ($this->installers as $installer) {
51 $installer->install();
52 }
53
54 $this->update_stored_version_to_current();
55 }
56
57 private function update(): void
58 {
59 foreach ($this->updates as $update) {
60 if (! $update->needs_update($this->get_stored_version())) {
61 continue;
62 }
63
64 $update->apply_update();
65
66 $this->update_stored_version($update->get_version());
67 }
68
69 $this->update_stored_version_to_current();
70 }
71
72 public function run(bool $force_install = false): void
73 {
74 if ($force_install === true) {
75 $this->install();
76 }
77
78 if ($this->version->is_equal($this->get_stored_version())) {
79 return;
80 }
81
82 if ($this->is_new_install()) {
83 $this->install();
84 } else {
85 $this->update();
86 }
87 }
88
89 }
90