PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.16.5
GiveWP – Donation Plugin and Fundraising Platform v3.16.5
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 / LegacySubscriptions / includes / give-recurring-helpers.php
give / src / LegacySubscriptions / includes Last commit date
give-recurring-cache.php 4 years ago give-recurring-cron.php 4 years ago give-recurring-db-subscription-meta.php 4 years ago give-recurring-helpers.php 4 years ago give-recurring-subscriber.php 3 years ago give-subscription.php 3 years ago give-subscriptions-api.php 4 years ago give-subscriptions-db.php 3 years ago
give-recurring-helpers.php
197 lines
1 <?php
2 /**
3 * Give Recurring Helper Functions
4 *
5 * @package Give
6 * @copyright Copyright (c) 2016, GiveWP
7 * @license https://opensource.org/licenses/gpl-license GNU Public License
8 * @since 1.0
9 */
10
11 /**
12 * Is the donation recurring.
13 *
14 * Determines if a donation is a recurring donation; should be used only at time of making the donation.
15 * Use Give_Recurring_Subscriber->has_subscription() to determine after subscription is made if it is in fact
16 * recurring.
17 *
18 * @param array $payment_meta
19 *
20 * @return bool
21 * @since 2.19.0 - this is copied over from give_recurring()->is_donation_recurring
22 * @access public
23 *
24 */
25 function give_recurring_is_donation_recurring($payment_meta)
26 {
27 // Ensure we have proper vars set
28 if (isset($payment_meta['post_data'])) {
29 $form_id = isset($payment_meta['post_data']['give-form-id']) ? $payment_meta['post_data']['give-form-id'] : 0;
30 $price_id = isset($payment_meta['post_data']['give-price-id']) ? $payment_meta['post_data']['give-price-id'] : 0;
31 } else {
32 // fallback
33 $form_id = isset($payment_meta['form_id']) ? $payment_meta['form_id'] : 0;
34 $price_id = isset($payment_meta['price_id']) ? $payment_meta['price_id'] : 0;
35 }
36
37 // Check for donor's choice option
38 $user_choice = isset($payment_meta['post_data']['give-recurring-period']) ? $payment_meta['post_data']['give-recurring-period'] : '';
39 $user_custom_amount = isset($payment_meta['post_data']['give-price-id']) ? $payment_meta['post_data']['give-price-id'] : '';
40 $recurring_enabled = give_get_meta($form_id, '_give_recurring', true);
41 $custom_amount = give_get_meta($form_id, '_give_custom_amount', true);
42 $custom_amount_recurring = give_get_meta($form_id, '_give_recurring_custom_amount_period', true, 'month');
43
44 // If not empty this is a recurring donation (checkbox is checked)
45 if (!empty($user_choice)) {
46 return true;
47 }
48
49 if ((empty($user_choice) && 'yes_donor' === $recurring_enabled) ||
50 (
51 empty($user_choice) &&
52 'yes_admin' === $recurring_enabled &&
53 'once' === $custom_amount_recurring &&
54 'custom' === $user_custom_amount
55 )) {
56 // User only wants to give once
57 return false;
58 }
59
60 // Admin choice: check fields
61 if (give_has_variable_prices($form_id) || ('yes_admin' === $recurring_enabled && give_is_setting_enabled(
62 $custom_amount
63 ))) {
64 // get default selected price ID
65 return give_recurring_is_recurring($form_id, $price_id);
66 }
67
68 // Set level
69 return give_recurring_is_recurring($form_id);
70 }
71
72 /**
73 * Is Donation Form Recurring?
74 *
75 * Check if a donation form is recurring.
76 *
77 * @param int $form_id The donation form ID.
78 * @param int $level_id The multi-level ID.
79 *
80 * @return bool
81 * @since 2.19.0 - this is copied over from give_recurring()->is_recurring
82 * @since 1.0
83 * @access public
84 * @static
85 *
86 */
87 function give_recurring_is_recurring($form_id, $level_id = 0)
88 {
89 $is_recurring = false;
90 $levels = maybe_unserialize(give_get_meta($form_id, '_give_donation_levels', true));
91 $recurring_option = give_get_meta($form_id, '_give_recurring', true);
92 $period = give_recurring_get_period($form_id, $level_id);
93
94 // If it's multi level with admin choice with admin does not choice recurring for that level.
95 if (empty($period)) {
96 return false;
97 }
98
99 /**
100 * Check multi-level forms whether any level is recurring
101 *
102 * Conditions:
103 * a. Form has variable price
104 * b. The form has a recurring option enabled.
105 */
106 if (
107 give_has_variable_prices($form_id)
108 && (empty($recurring_option) || 'no' !== $recurring_option)
109 ) {
110 switch ($recurring_option) {
111 // Is this a multi-level donor's choice?
112 case 'yes_donor':
113 return true;
114 break;
115
116 case 'yes_admin':
117 if ('custom' === $level_id) {
118 return true;
119 } else {
120 // Loop through levels and see if a level is recurring.
121 foreach ($levels as $level) {
122 // Is price recurring?
123 $level_recurring = (isset($level['_give_recurring']) && $level['_give_recurring'] == 'yes');
124
125 // check that this price is indeed recurring:
126 if ($level_id == $level['_give_id']['level_id'] && $level_recurring && false !== $period) {
127 $is_recurring = true;
128 } elseif (empty($level_id) && $level_recurring) {
129 // Checking for ANY recurring level - empty $level_id param.
130 $is_recurring = true;
131 }
132 }
133 }
134 break;
135 }
136 } elseif (!empty($recurring_option) && 'no' !== $recurring_option) {
137 // Single level donation form.
138 $is_recurring = true;
139 }
140
141 return $is_recurring;
142 }
143
144 /**
145 * Get Period.
146 *
147 * Get the time period for a variable priced donation.
148 *
149 * @param $form_id
150 * @param $price_id
151 *
152 * @return bool|string
153 * @since 2.19.0 - this is copied over from give_recurring()->get_period
154 * @access public
155 * @static
156 *
157 */
158 function give_recurring_get_period($form_id, $price_id = 0)
159 {
160 $recurring_option = give_get_meta($form_id, '_give_recurring', true);
161
162 // Is this a variable price form & admins choice?
163 if (give_has_variable_prices($form_id) && 'yes_admin' === $recurring_option) {
164 if ('custom' === $price_id) {
165 return give_get_meta($form_id, '_give_recurring_custom_amount_period', true, 'month');
166 } else {
167 $levels = give_get_meta($form_id, '_give_donation_levels', true);
168
169 foreach ($levels as $price) {
170 // Check that this indeed the recurring price.
171 if ($price_id == $price['_give_id']['level_id']
172 && isset($price['_give_recurring'])
173 && 'yes' === $price['_give_recurring']
174 && isset($price['_give_period'])
175 ) {
176 return isset($price['_give_period']) ? $price['_give_period'] : 'month';
177 }
178 }
179 }
180 } else {
181 $recurring_period = give_get_meta($form_id, '_give_period_functionality', true, 'admin_choice');
182
183 // This is either a Donor's Choice multi-level or set donation form.
184 $period = give_get_meta($form_id, '_give_period', true);
185
186 if ('donors_choice' === $recurring_period) {
187 $period = give_get_meta($form_id, '_give_period_default_donor_choice', true, 'month');
188 }
189
190 if ($period) {
191 return $period;
192 }
193 }
194
195 return false;
196 }
197