PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.19.4
GiveWP – Donation Plugin and Fundraising Platform v3.19.4
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 1 year ago
ManualMigration.php
154 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 3.19.0 sanitize params
40 * @since 2.9.2
41 */
42 public function __invoke()
43 {
44 if ( ! empty($_GET['give-run-migration'])) {
45 $migrationToRun = give_clean($_GET['give-run-migration']);
46 }
47
48 if ( ! empty($_GET['give-clear-update'])) {
49 $migrationToClear = give_clean($_GET['give-clear-update']);
50 }
51
52 $hasMigration = isset($migrationToRun) || isset($migrationToClear);
53
54 if ($hasMigration && ! current_user_can('manage_options')) {
55 give()->notices->register_notice(
56 [
57 'id' => 'invalid-migration-permissions',
58 'description' => 'You do not have the permissions to manually run or clear migrations',
59 ]
60 );
61
62 return;
63 }
64
65 if (isset($migrationToRun)) {
66 $this->runMigration($migrationToRun);
67 }
68
69 if (isset($migrationToClear)) {
70 $this->clearMigration($migrationToClear);
71 }
72 }
73
74 /**
75 * Runs the given automatic migration
76 *
77 * @since 2.9.2
78 *
79 * @param string $migrationId
80 */
81 private function runMigration($migrationId)
82 {
83 if ( ! $this->migrationsRegister->hasMigration($migrationId)) {
84 give()->notices->register_notice(
85 [
86 'id' => 'invalid-migration-id',
87 'description' => "There is no migration with the ID: {$migrationId}",
88 ]
89 );
90
91 return;
92 }
93
94 /** @var Migration $migration */
95 $migration = give($this->migrationsRegister->getMigration($migrationId));
96
97 /** @var ManuallyRunMigration $manualRunner */
98 $manualRunner = give(ManuallyRunMigration::class);
99
100 try {
101 $manualRunner($migration);
102
103 give()->notices->register_notice(
104 [
105 'id' => 'automatic-migration-run',
106 'type' => 'success',
107 'description' => "The {$migrationId} migration was manually triggered",
108 ]
109 );
110 } catch (Exception $exception) {
111 give()->notices->register_notice(
112 [
113 'id' => 'automatic-migration-run-failure',
114 'description' => "The manually triggered {$migrationId} migration ran but failed",
115 ]
116 );
117 }
118 }
119
120 /**
121 * Clears the manual migration so it may be run again
122 *
123 * @since 2.9.2
124 *
125 * @param string $migrationToClear
126 */
127 private function clearMigration($migrationToClear)
128 {
129 /** @var ClearCompletedUpgrade $clearUpgrade */
130 $clearUpgrade = give(ClearCompletedUpgrade::class);
131
132 try {
133 $clearUpgrade($migrationToClear);
134 } catch (Exception $exception) {
135 give()->notices->register_notice(
136 [
137 'id' => 'clear-migration-failed',
138 'description' => "Unable to reset migration. Error: {$exception->getMessage()}",
139 ]
140 );
141
142 return;
143 }
144
145 give()->notices->register_notice(
146 [
147 'id' => 'automatic-migration-cleared',
148 'type' => 'success',
149 'description' => "The {$migrationToClear} update was cleared and may be run again.",
150 ]
151 );
152 }
153 }
154