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