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