PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.19.4
GiveWP – Donation Plugin and Fundraising Platform v3.19.4
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 / DonationForms / Migrations / RemoveDuplicateMeta.php
give / src / DonationForms / Migrations Last commit date
CleanMultipleSlashesOnDB.php 2 years ago RemoveDuplicateMeta.php 2 years ago UpdateDonationLevelsSchema.php 2 years ago
RemoveDuplicateMeta.php
123 lines
1 <?php
2
3 namespace Give\DonationForms\Migrations;
4
5 use Give\Donations\ValueObjects\DonationMetaKeys;
6 use Give\Framework\Database\DB;
7 use Give\Framework\Migrations\Contracts\Migration;
8
9 /**
10 * Remove duplicate meta keys and set correct value for form earnings
11 *
12 * @since 3.3.0
13 */
14 class RemoveDuplicateMeta extends Migration
15 {
16 /**
17 * @inheritdoc
18 */
19 public static function id()
20 {
21 return 'donation-forms-remove-duplicate-meta';
22 }
23
24 /**
25 * @inheritdoc
26 */
27 public static function title()
28 {
29 return 'Remove duplicate meta';
30 }
31
32 /**
33 * @inheritdoc
34 */
35 public static function timestamp()
36 {
37 return strtotime('2023-06-12');
38 }
39
40 /**
41 * @since 3.3.0
42 */
43 public function run()
44 {
45 $posts = DB::table('posts')
46 ->select('ID')
47 ->where('post_type', 'give_forms')
48 ->getAll();
49
50 foreach ($posts as $post) {
51 $formEarnings = give_get_meta($post->ID, '_give_form_earnings');
52 $formSales = give_get_meta($post->ID, '_give_form_sales');
53
54 // Update meta with duplicate keys only
55 if (count($formEarnings) > 1) {
56 // Delete all meta
57 give_delete_meta($post->ID, '_give_form_earnings');
58
59 // Get earnings from donations
60 $earnings = $this->getEarningsFromDonations($post->ID);
61 give_update_meta($post->ID, '_give_form_earnings', $earnings);
62 }
63
64 if (count($formSales) > 1) {
65 // Delete all meta
66 give_delete_meta($post->ID, '_give_form_sales');
67
68 // Get sales count from donations
69 $sales = $this->getSalesCountFromDonations($post->ID);
70 give_update_meta($post->ID, '_give_form_sales', $sales);
71 }
72 }
73 }
74
75 /**
76 * Get earnings from donations by Form ID
77 *
78 * @param $formId
79 *
80 * @return float | int
81 */
82 private function getEarningsFromDonations($formId)
83 {
84 $donations = DB::table('posts')
85 ->attachMeta(
86 'give_donationmeta',
87 'ID',
88 'donation_id',
89 [DonationMetaKeys::FORM_ID, 'formId'],
90 [DonationMetaKeys::AMOUNT, 'amount'])
91 ->where('post_type', 'give_payment')
92 ->where('give_donationmeta_attach_meta_formId.meta_value', $formId)
93 ->getAll('ARRAY_A');
94
95 $amounts = array_column($donations, 'amount');
96
97 return array_sum($amounts);
98 }
99
100 /**
101 * Get sales count from donations by Form ID
102 *
103 * @param $formId
104 *
105 * @return int
106 */
107 private function getSalesCountFromDonations($formId): int
108 {
109 return DB::table('posts')
110 ->attachMeta(
111 'give_donationmeta',
112 'ID',
113 'donation_id',
114 [DonationMetaKeys::FORM_ID, 'formId']
115 )
116 ->where('post_type', 'give_payment')
117 ->where('post_status', 'publish')
118 ->where('give_donationmeta_attach_meta_formId.meta_value', $formId)
119 ->count('ID');
120 }
121
122 }
123