PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.27.2
GiveWP – Donation Plugin and Fundraising Platform v2.27.2
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Framework / Migrations / Controllers / ManualMigration.php
give / src / Framework / Migrations / Controllers Last commit date
ManualMigration.php 4 years ago
ManualMigration.php
153 lines
1 <?php
2
3 namespace Give\Framework\Migrations\Controllers;
4
5 use Exception;
6 use Give\Framework\Migrations\Actions\ClearCompletedUpgrade;
7 use Give\Framework\Migrations\Actions\ManuallyRunMigration;
8 use Give\Framework\Migrations\Contracts\Migration;
9 use Give\Framework\Migrations\MigrationsRegister;
10
11 /**
12 * Class ManualMigration
13 *
14 * Handles and admin request to manually trigger migrations
15 *
16 * @since 2.9.2
17 */
18 class ManualMigration
19 {
20 /**
21 * @var MigrationsRegister
22 */
23 private $migrationsRegister;
24
25 /**
26 * ManualMigration constructor.
27 *
28 * @since 2.9.2
29 *
30 * @param MigrationsRegister $migrationsRegister
31 *
32 */
33 public function __construct(MigrationsRegister $migrationsRegister)
34 {
35 $this->migrationsRegister = $migrationsRegister;
36 }
37
38 /**
39 * @since 2.9.2
40 */
41 public function __invoke()
42 {
43 if ( ! empty($_GET['give-run-migration'])) {
44 $migrationToRun = $_GET['give-run-migration'];
45 }
46
47 if ( ! empty($_GET['give-clear-update'])) {
48 $migrationToClear = $_GET['give-clear-update'];
49 }
50
51 $hasMigration = isset($migrationToRun) || isset($migrationToClear);
52
53 if ($hasMigration && ! current_user_can('manage_options')) {
54 give()->notices->register_notice(
55 [
56 'id' => 'invalid-migration-permissions',
57 'description' => 'You do not have the permissions to manually run or clear migrations',
58 ]
59 );
60
61 return;
62 }
63
64 if (isset($migrationToRun)) {
65 $this->runMigration($migrationToRun);
66 }
67
68 if (isset($migrationToClear)) {
69 $this->clearMigration($migrationToClear);
70 }
71 }
72
73 /**
74 * Runs the given automatic migration
75 *
76 * @since 2.9.2
77 *
78 * @param string $migrationId
79 */
80 private function runMigration($migrationId)
81 {
82 if ( ! $this->migrationsRegister->hasMigration($migrationId)) {
83 give()->notices->register_notice(
84 [
85 'id' => 'invalid-migration-id',
86 'description' => "There is no migration with the ID: {$migrationId}",
87 ]
88 );
89
90 return;
91 }
92
93 /** @var Migration $migration */
94 $migration = give($this->migrationsRegister->getMigration($migrationId));
95
96 /** @var ManuallyRunMigration $manualRunner */
97 $manualRunner = give(ManuallyRunMigration::class);
98
99 try {
100 $manualRunner($migration);
101
102 give()->notices->register_notice(
103 [
104 'id' => 'automatic-migration-run',
105 'type' => 'success',
106 'description' => "The {$migrationId} migration was manually triggered",
107 ]
108 );
109 } catch (Exception $exception) {
110 give()->notices->register_notice(
111 [
112 'id' => 'automatic-migration-run-failure',
113 'description' => "The manually triggered {$migrationId} migration ran but failed",
114 ]
115 );
116 }
117 }
118
119 /**
120 * Clears the manual migration so it may be run again
121 *
122 * @since 2.9.2
123 *
124 * @param string $migrationToClear
125 */
126 private function clearMigration($migrationToClear)
127 {
128 /** @var ClearCompletedUpgrade $clearUpgrade */
129 $clearUpgrade = give(ClearCompletedUpgrade::class);
130
131 try {
132 $clearUpgrade($migrationToClear);
133 } catch (Exception $exception) {
134 give()->notices->register_notice(
135 [
136 'id' => 'clear-migration-failed',
137 'description' => "Unable to reset migration. Error: {$exception->getMessage()}",
138 ]
139 );
140
141 return;
142 }
143
144 give()->notices->register_notice(
145 [
146 'id' => 'automatic-migration-cleared',
147 'type' => 'success',
148 'description' => "The {$migrationToClear} update was cleared and may be run again.",
149 ]
150 );
151 }
152 }
153