PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.18.0
GiveWP – Donation Plugin and Fundraising Platform v3.18.0
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 / API / Endpoints / Migrations / RunMigration.php
give / src / API / Endpoints / Migrations Last commit date
Endpoint.php 4 years ago GetMigrations.php 4 years ago RunMigration.php 4 years ago
RunMigration.php
135 lines
1 <?php
2
3 namespace Give\API\Endpoints\Migrations;
4
5 use Exception;
6 use Give\Framework\Migrations\MigrationsRegister;
7 use Give\MigrationLog\MigrationLogFactory;
8 use Give\MigrationLog\MigrationLogStatus;
9 use WP_REST_Request;
10 use WP_REST_Response;
11
12 /**
13 * Class RunMigration
14 * @package Give\API\Endpoints\Migrations
15 *
16 * @since 2.10.0
17 */
18 class RunMigration extends Endpoint
19 {
20
21 /** @var string */
22 protected $endpoint = 'migrations/run-migration';
23
24 /**
25 * @var MigrationsRegister
26 */
27 private $migrationRegister;
28
29 /**
30 * @var MigrationLogFactory
31 */
32 private $migrationLogFactory;
33
34 /**
35 * RunMigration constructor.
36 *
37 * @param MigrationsRegister $migrationsRegister
38 * @param MigrationLogFactory $migrationLogFactory
39 */
40 public function __construct(
41 MigrationsRegister $migrationsRegister,
42 MigrationLogFactory $migrationLogFactory
43 ) {
44 $this->migrationRegister = $migrationsRegister;
45 $this->migrationLogFactory = $migrationLogFactory;
46 }
47
48 /**
49 * @inheritDoc
50 */
51 public function registerRoute()
52 {
53 register_rest_route(
54 'give-api/v2',
55 $this->endpoint,
56 [
57 [
58 'methods' => 'POST',
59 'callback' => [$this, 'handleRequest'],
60 'permission_callback' => [$this, 'permissionsCheck'],
61 'args' => [
62 'id' => [
63 'validate_callback' => function ($param) {
64 return ! empty(trim($param));
65 },
66 ],
67 ],
68 ],
69 'schema' => [$this, 'getSchema'],
70 ]
71 );
72 }
73
74 /**
75 * @return array
76 */
77 public function getSchema()
78 {
79 return [
80 '$schema' => 'http://json-schema.org/draft-04/schema#',
81 'title' => 'logs',
82 'type' => 'object',
83 'properties' => [
84 'id' => [
85 'type' => 'string',
86 'description' => esc_html__('Migration ID', 'give'),
87 ],
88 ],
89 ];
90 }
91
92 /**
93 * @param WP_REST_Request $request
94 *
95 * @return WP_REST_Response
96 */
97 public function handleRequest(WP_REST_Request $request)
98 {
99 global $wpdb;
100 $migrationId = $request->get_param('id');
101 $migrationLog = $this->migrationLogFactory->make($migrationId);
102
103 // Begin transaction
104 $wpdb->query('START TRANSACTION');
105
106 try {
107 $migrationClass = $this->migrationRegister->getMigration($migrationId);
108 $migration = give($migrationClass);
109 $migration->run();
110 // Save migration status
111 $migrationLog->setStatus(MigrationLogStatus::SUCCESS);
112 $migrationLog->setError(null);
113 $migrationLog->save();
114
115 $wpdb->query('COMMIT');
116
117 return new WP_REST_Response(['status' => true]);
118 } catch (Exception $exception) {
119 $wpdb->query('ROLLBACK');
120
121 $migrationLog->setStatus(MigrationLogStatus::FAILED);
122 $migrationLog->setError($exception);
123 $migrationLog->save();
124 }
125
126 return new WP_REST_Response(
127 [
128 'status' => false,
129 'message' => $exception->getMessage(),
130 ]
131 );
132 }
133
134 }
135