PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.15.0
GiveWP – Donation Plugin and Fundraising Platform v3.15.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 / Subscriptions / Migrations / AddPaymentModeToSubscriptionTable.php
give / src / Subscriptions / Migrations Last commit date
AddPaymentModeToSubscriptionTable.php 3 years ago CreateSubscriptionTables.php 4 years ago
AddPaymentModeToSubscriptionTable.php
118 lines
1 <?php
2
3 namespace Give\Subscriptions\Migrations;
4
5 use Give\Framework\Database\DB;
6 use Give\Framework\Database\Exceptions\DatabaseQueryException;
7 use Give\Framework\Migrations\Contracts\Migration;
8 use Give\Framework\Migrations\Exceptions\DatabaseMigrationException;
9 use Give_Updates;
10
11 /**
12 * @since 2.24.0
13 */
14 class AddPaymentModeToSubscriptionTable extends Migration
15 {
16 /**
17 * @inheritDoc
18 *
19 * @since 2.24.0
20 */
21 public static function title(): string
22 {
23 return 'Add payment mode column to subscription table';
24 }
25
26 /**
27 * @inheritDoc
28 *
29 * @since 2.24.0
30 */
31 public static function timestamp()
32 {
33 return strtotime('2022-11-30');
34 }
35
36 /**
37 * @inheritDoc
38 *
39 * @since 2.24.0
40 */
41 public static function id(): string
42 {
43 return 'add_paymentmode_to_subscription_table';
44 }
45
46 /**
47 * @inheritDoc
48 *
49 * @since 2.24.0
50 *
51 * @throws DatabaseMigrationException
52 */
53 public function run()
54 {
55 $this->addPaymentModeColumn();
56 $this->processPaymentModeForExistingSubscriptions();
57 }
58
59 /**
60 * Add payment mode column to subscription table.
61 *
62 * @since 2.24.0
63 *
64 * @return void
65 * @throws DatabaseMigrationException
66 */
67 private function addPaymentModeColumn()
68 {
69 global $wpdb;
70
71 $subscriptionTableName = "{$wpdb->prefix}give_subscriptions";
72
73 try {
74 maybe_add_column(
75 $subscriptionTableName,
76 'payment_mode',
77 "ALTER TABLE `$subscriptionTableName` ADD COLUMN `payment_mode` varchar(20) NOT NULL DEFAULT '' AFTER `parent_payment_id`"
78 );
79 } catch (DatabaseQueryException $exception) {
80 throw new DatabaseMigrationException('An error occurred adding the payment mode column to the subscription table',
81 0, $exception);
82 }
83 }
84
85 /**
86 * Process payment mode for existing subscriptions.
87 *
88 * @since 2.24.0
89 *
90 * @return void
91 * @throws DatabaseMigrationException
92 */
93 private function processPaymentModeForExistingSubscriptions()
94 {
95 global $wpdb;
96
97 $subscriptionTableName = "{$wpdb->prefix}give_subscriptions";
98 $donationMetaTableName = "{$wpdb->prefix}give_donationmeta";
99
100 try {
101 DB::query(
102 "
103 UPDATE
104 $subscriptionTableName subscription
105 LEFT JOIN $donationMetaTableName donationMeta ON subscription.parent_payment_id = donationMeta.donation_id
106 SET
107 subscription.payment_mode = donationMeta.meta_value
108 WHERE
109 donationMeta.meta_key = '_give_payment_mode'
110 "
111 );
112 } catch (DatabaseQueryException $exception) {
113 throw new DatabaseMigrationException('An error occurred processing the payment mode for existing subscriptions',
114 0, $exception);
115 }
116 }
117 }
118