PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.16.8.1
GiveWP – Donation Plugin and Fundraising Platform v4.16.8.1
4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.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 All 254 releases
give / src / FormMigration / ServiceProvider.php

ServiceProvider.php in GiveWP – Donation Plugin and Fundraising Platform 4.16.8.1, at src/FormMigration/ServiceProvider.php

147 lines 5.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Give\FormMigration;
4
5 use Give\DonationForms\V2\Models\DonationForm as DonationFormV2;
6 use Give\FormMigration\Commands\MigrationCommand;
7 use Give\FormMigration\Commands\TransferCommand;
8 use Give\FormMigration\Controllers\MigrationController;
9 use Give\FormMigration\Controllers\TransferController;
10 use Give\FormMigration\DataTransferObjects\TransferOptions;
11 use Give\Framework\Permissions\Facades\UserPermissions;
12 use Give\ServiceProviders\ServiceProvider as ServiceProviderInterface;
13 use WP_CLI;
14 use WP_REST_Request;
15 use WP_REST_Server;
16
17 /**
18 * @since 3.0.0
19 */
20 class ServiceProvider implements ServiceProviderInterface
21 {
22 /**
23 * @inheritDoc
24 */
25 public function register()
26 {
27 give()->singleton(Pipeline::class, function () {
28 return new Pipeline([
29 Steps\MigrateMeta::class,
30 Steps\FormTitle::class,
31 Steps\FormTemplate\ClassicTemplateSettings::class,
32 Steps\FormTemplate\SequoiaTemplateSettings::class,
33 Steps\FormTemplate\LegacyTemplateSettings::class,
34 Steps\DonationOptions::class,
35 Steps\RecurringDonationOptions::class,
36 Steps\FormFields::class,
37 Steps\FormFields\LoginRegistration::class,
38 Steps\FormFields\CompanyDonations::class,
39 Steps\DonationGoal::class,
40 Steps\TermsAndConditions::class,
41 Steps\FormTaxonomies::class,
42 Steps\FormGrid::class,
43 Steps\FormFieldManager::class,
44 Steps\OfflineDonations::class,
45 Steps\PaymentGateways::class,
46 Steps\EmailSettings::class,
47 Steps\FormMeta::class,
48 Steps\PdfSettings::class,
49 Steps\FeeRecovery::class,
50 Steps\ConstantContact::class,
51 Steps\PerFormGateways::class,
52 Steps\Mailchimp::class,
53 Steps\FundsAndDesignations::class,
54 Steps\GiftAid::class,
55 Steps\FormFeaturedImage::class,
56 Steps\FormExcerpt::class,
57 Steps\ConvertKit::class,
58 Steps\ActiveCampaign::class,
59 Steps\DoubleTheDonation::class,
60 Steps\CurrencySwitcher::class,
61 Steps\RazorpayPerFormSettings::class,
62 ]);
63 });
64 }
65
66 /**
67 * @inheritDoc
68 */
69 public function boot()
70 {
71 $this->registerRoutes();
72 $this->registerCommands();
73 }
74
75 protected function registerRoutes()
76 {
77 add_action('rest_api_init', function () {
78 // give-api/v2/admin/forms/migrate
79 register_rest_route('give-api/v2', 'admin/forms/migrate/(?P<id>\d+)', [
80 'methods' => WP_REST_Server::CREATABLE,
81 'callback' => function (WP_REST_Request $request) {
82 return (new MigrationController($request))(
83 DonationFormV2::find($request->get_param('id'))
84 );
85 },
86 'permission_callback' => function () {
87 return UserPermissions::donationForms()->canEdit();
88 },
89 'args' => [
90 'id' => [
91 'type' => 'integer',
92 'sanitize_callback' => 'absint',
93 'description' => __('The ID of the form (v2) to migrate to v3.', 'give'),
94 ],
95 ],
96 ]);
97
98 // give-api/v2/admin/forms/transfer
99 register_rest_route('give-api/v2', 'admin/forms/transfer', [
100 'methods' => WP_REST_Server::CREATABLE,
101 'callback' => function (WP_REST_Request $request) {
102 return (new TransferController($request))(
103 DonationFormV2::find($request->get_param('formId')),
104 TransferOptions::fromRequest($request)
105 );
106 },
107 'permission_callback' => function () {
108 return UserPermissions::donationForms()->canEdit();
109 },
110 'args' => [
111 'formId' => [
112 'type' => 'integer',
113 'sanitize_callback' => function ($value) {
114 return intval($value);
115 // return array_map('intval', explode(',', $value));
116 },
117 'description' => __('The ID of the form (v3) to transfer donations (from v2).', 'give'),
118 ],
119 'changeUrl' => [
120 'type' => 'boolean',
121 'required' => false,
122 'default' => true,
123 ],
124 'delete' => [
125 'type' => 'boolean',
126 'required' => true,
127 ],
128 'redirect' => [
129 'type' => 'boolean',
130 'required' => false,
131 'default' => true,
132 ],
133 ],
134 ]);
135 }, 9);
136 }
137
138 protected function registerCommands()
139 {
140 if (defined('WP_CLI') && WP_CLI) {
141 error_reporting(E_ALL & ~E_DEPRECATED);
142 WP_CLI::add_command('givewp form:migrate', MigrationCommand::class);
143 WP_CLI::add_command('givewp form:transfer', TransferCommand::class);
144 }
145 }
146 }
147