PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.11.0
GiveWP – Donation Plugin and Fundraising Platform v3.11.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 / FormMigration / Commands / MigrationCommand.php
give / src / FormMigration / Commands Last commit date
MigrationCommand.php 2 years ago TransferCommand.php 2 years ago
MigrationCommand.php
96 lines
1 <?php
2
3 namespace Give\FormMigration\Commands;
4
5 use Give\DonationForms\Models\DonationForm as DonationFormV3;
6 use Give\DonationForms\V2\Models\DonationForm as DonationFormV2;
7 use Give\FormMigration\Concerns\Blocks\BlockDifference;
8 use Give\FormMigration\DataTransferObjects\FormMigrationPayload;
9 use Give\FormMigration\Pipeline;
10 use Give\Framework\Blocks\BlockModel;
11 use WP_CLI;
12
13 class MigrationCommand
14 {
15 /**
16 * Prints a greeting.
17 *
18 * ## OPTIONS
19 *
20 * <id>
21 * : A form ID to migrate
22 *
23 * [--step]
24 * : Whether to inspect each step
25 */
26 public function __invoke( $args, $assoc_args )
27 {
28 [$formIdV2] = $args;
29
30 $payload = FormMigrationPayload::fromFormV2(
31 DonationFormV2::find($formIdV2)
32 );
33
34 $pipeline = give(Pipeline::class);
35
36 if(\WP_CLI\Utils\get_flag_value($assoc_args, 'step')) {
37 $pipeline->beforeEach(function ($stepClass, $payload) {
38 WP_CLI::log('Processing ' . $stepClass);
39 });
40 $pipeline->afterEach([$this, 'afterEach']);
41 }
42
43 $pipeline
44 ->process($payload)
45 ->finally(function(FormMigrationPayload $payload) {
46 $payload->formV3->save();
47 WP_CLI::success( 'Migration Complete ' . $payload->formV3->id );
48 });
49 }
50
51 public function afterEach($stepClass, FormMigrationPayload $payload, $_payload)
52 {
53 WP_CLI::log('Processed ' . $stepClass);
54
55 foreach($payload->formV3->settings->toArray() as $key => $value) {
56 $previousValue = $_payload->formV3->settings->$key;
57 if($previousValue != $value) { // The check is loosely typed to support Enums
58 $value = is_array($value) ? '[Array]' : ( empty($value) ? '(empty)' : $value );
59 $previousValue = is_array($previousValue) ? '[Array]' : ( empty($previousValue) ? '(empty)' : $previousValue );
60 WP_CLI::log('');
61 WP_CLI::log('Form Setting: ' . $key);
62 WP_CLI::log(' ' . $previousValue . ' => ' . $value);
63 WP_CLI::log('');
64 }
65 }
66
67 (new BlockDifference($_payload->formV3->blocks))
68 ->skip('givewp/section')
69 ->onBlockAdded(function(BlockModel $block) {
70 WP_CLI::log('');
71 WP_CLI::log('Block Added: ' . $block->name);
72 WP_CLI::log(' ' . json_encode($block->getAttributes()));
73 WP_CLI::log('');
74 })
75 ->onBlockDifference(function(BlockModel $block, $differences) {
76 WP_CLI::log('');
77 WP_CLI::log('Block Updated: ' . $block->name);
78 foreach($differences as $key => $difference) {
79 WP_CLI::log(' ' . $key);
80 WP_CLI::log(' ' . ' ' . json_encode($difference['previous']) . ' => ' . json_encode($difference['current']));
81 }
82 WP_CLI::log('');
83 })
84 ->diff($payload->formV3->blocks);
85
86 fwrite( STDOUT, 'Continue?' . ' [enter] ' );
87 fgets( STDIN );
88 $this->clearOutput();
89 }
90
91 protected function clearOutput()
92 {
93 system('clear || cls'); // Clear screen with cross-platform.
94 }
95 }
96