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