PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.8.0
GiveWP – Donation Plugin and Fundraising Platform v2.8.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 / Views / Form / Templates / Sequoia / Actions.php
give / src / Views / Form / Templates / Sequoia Last commit date
assets 5 years ago sections 5 years ago views 6 years ago Actions.php 5 years ago Sequoia.php 5 years ago optionConfig.php 5 years ago
Actions.php
313 lines
1 <?php
2
3 namespace Give\Views\Form\Templates\Sequoia;
4
5 use Give_Donate_Form;
6 use Give\Helpers\Form\Template as FormTemplateUtils;
7
8 /**
9 * Class Actions
10 *
11 * @since 2.7.0
12 * @package Give\Views\Form\Templates\Sequoia
13 */
14 class Actions {
15
16 protected $templateOptions;
17
18 /**
19 * Initialize
20 *
21 * @since 2.7.0
22 */
23 public function init() {
24 // Get Template options
25 $this->templateOptions = FormTemplateUtils::getOptions();
26
27 // Set zero number of decimal.
28 add_filter( 'give_get_currency_formatting_settings', [ $this, 'setupZeroNumberOfDecimalInCurrencyFormattingSetting' ], 1 );
29 add_filter( 'give_get_option_number_decimals', [ $this, 'setupZeroNumberOfDecimal' ], 1 );
30
31 // Handle personal section html template.
32 add_action( 'wp_ajax_give_cancel_login', [ $this, 'cancelLoginAjaxHanleder' ], 9 );
33 add_action( 'wp_ajax_nopriv_give_cancel_login', [ $this, 'cancelLoginAjaxHanleder' ], 9 );
34 add_action( 'wp_ajax_nopriv_give_checkout_register', [ $this, 'cancelLoginAjaxHanleder' ], 9 );
35
36 // Handle common hooks.
37 add_action( 'give_donation_form', [ $this, 'loadCommonHooks' ], 9, 2 );
38
39 // Setup hooks.
40 add_action( 'give_pre_form_output', [ $this, 'loadHooks' ], 1, 3 );
41
42 // Setup Stripe font Styles
43 add_filter( 'give_stripe_get_element_font_styles', [ $this, 'setupStripeFontStyles' ], 1 );
44
45 // Setup Stripe base styles
46 add_filter( 'give_stripe_get_element_base_styles', [ $this, 'setupStripeBaseStyles' ], 1 );
47
48 }
49
50 /** Set Stripe base styles consistent with Sequoia form template
51 *
52 * As per design requirement, we want to format Stripe elements to use Montserrat, with the same styling options as other text inputs.
53 *
54 * @since 2.7.0
55 * @param object $styles
56 * @return object
57 */
58 public function setupStripeBaseStyles( $styles ) {
59 $styles = '{
60 "fontFamily": "Montserrat",
61 "color": "#8d8e8e",
62 "fontWeight": 400,
63 "fontSize": "14px",
64 "::placeholder": {
65 "color": "#8d8e8e"
66 },
67 ":-webkit-autofill": {
68 "color": "#e39f48"
69 }
70 }';
71 return json_decode( $styles );
72 }
73
74 /** Set Stripe Font styles consistent with Sequoia form template
75 *
76 * As per design requirement, we want to format Stripe elements to use Montserrat, with the same styling options as other text inputs.
77 *
78 * @since 2.7.0
79 * @param array $fontStyles
80 * @return array
81 */
82 public function setupStripeFontStyles( $fontStyles ) {
83 return [
84 'cssSrc' => 'https://fonts.googleapis.com/css2?family=Montserrat&display=swap',
85 ];
86 }
87
88 /**
89 * Set zero as number of decimals in currency formatting setting.
90 *
91 * As per design requirement we want to format donation amount with zero decimal whether or not number of decimal admin setting set to zero.
92 *
93 * @since 2.7.0
94 * @param array $currencyFormattingSettings
95 * @return array
96 */
97 public function setupZeroNumberOfDecimalInCurrencyFormattingSetting( $currencyFormattingSettings ) {
98 $currencyFormattingSettings['number_decimals'] = 0;
99 return $currencyFormattingSettings;
100 }
101
102
103 /**
104 * Return zero as number of decimals setting value or currency formatting value.
105 *
106 * As per design requirement we want to format donation amount with zero decimal whether or not number of decimal admin setting set to zero.
107 *
108 * @since 2.7.0
109 * @return int|array
110 */
111 public function setupZeroNumberOfDecimal() {
112 return 0;
113 }
114
115 /**
116 * Handle cancel login and checkout register ajax request.
117 *
118 * @since 2.7.0
119 * @return void
120 */
121 public function cancelLoginAjaxHanleder() {
122 // add_action( 'give_donation_form_before_personal_info', [ $this, 'getIntroductionSectionTextSubSection' ] );
123 }
124
125 /**
126 * Setup common hooks
127 *
128 * @param int $formId
129 * @param array $args
130 */
131 public function loadCommonHooks( $formId, $args ) {
132 remove_action( 'give_donation_form_register_login_fields', 'give_show_register_login_fields' );
133 }
134
135 /**
136 * Setup hooks
137 *
138 * @param int $formId
139 * @param array $args
140 * @param Give_Donate_Form $form
141 */
142 public function loadHooks( $formId, $args, $form ) {
143 /**
144 * Add hooks
145 */
146 add_action( 'give_pre_form', [ $this, 'getNavigator' ], 0, 3 );
147 add_action( 'give_post_form', [ $this, 'getFooterSection' ], 99998, 0 );
148 add_action( 'give_donation_form_top', [ $this, 'getIntroductionSection' ], 0, 3 );
149 add_action( 'give_donation_form_top', [ $this, 'getStartWrapperHTMLForAmountSection' ], 0 );
150 add_action( 'give_donation_form_top', [ $this, 'getCloseWrapperHTMLForAmountSection' ], 99998 );
151 add_action( 'give_payment_mode_top', 'give_show_register_login_fields' );
152 add_action( 'give_payment_mode_top', [ $this, 'getStartWrapperHTMLForPaymentSection' ], 0 );
153 add_action( 'give_donation_form_after_submit', [ $this, 'getCloseWrapperHTMLForPaymentSection' ], 999 );
154
155 /**
156 * Remove actions
157 */
158 // Remove goal.
159 remove_action( 'give_pre_form', 'give_show_goal_progress', 10 );
160
161 // Remove intermediate continue button which appear when display style set to other then onpage.
162 remove_action( 'give_after_donation_levels', 'give_display_checkout_button', 10 );
163
164 // Hide title.
165 add_filter( 'give_form_title', '__return_empty_string' );
166
167 // Append "Donate with " to gateway labels
168 add_filter( 'give_enabled_payment_gateways', [ $this, 'modifyGatewayLabels' ] );
169
170 }
171
172 /**
173 * Add form navigator / header
174 *
175 * @since 2.7.0
176 *
177 * @param $formId
178 * @param $args
179 * @param $form
180 */
181 public function getNavigator( $formId, $args, $form ) {
182 include 'sections/form-navigator.php';
183 }
184
185 /**
186 * Add introduction form section
187 *
188 * @since 2.7.0
189 *
190 * @param $formId
191 * @param $args
192 * @param $form
193 */
194 public function getIntroductionSection( $formId, $args, $form ) {
195 include 'sections/introduction.php';
196 }
197
198 /**
199 * Add form footer
200 *
201 * @since 2.7.0
202 */
203 public function getFooterSection() {
204 include 'sections/footer.php';
205 }
206
207 /**
208 * Add checkout button
209 *
210 * @since 2.7.0
211 */
212 public function getCheckoutButton() {
213
214 $label = isset( $this->templateOptions['payment_information']['checkout_label'] ) ? $this->templateOptions['payment_information']['checkout_label'] : __( 'Donate Now', 'give' );
215
216 return sprintf(
217 '<div class="give-submit-button-wrap give-clearfix">
218 <input type="submit" class="give-submit give-btn" id="give-purchase-button" name="give-purchase" value="%1$s" data-before-validation-label="Donate Now">
219 <span class="give-loading-animation"></span>
220 </div>',
221 $label
222 );
223 }
224
225 /**
226 * Add wrapper and introduction text to payment information section
227 *
228 * @since 2.7.0
229 *
230 * @param int $formId
231 */
232 public function getStartWrapperHTMLForPaymentSection( $formId ) {
233 $headline = isset( $this->templateOptions['payment_information']['headline'] ) ? $this->templateOptions['payment_information']['headline'] : __( "Who's giving today?", 'give' );
234 $description = isset( $this->templateOptions['payment_information']['description'] ) ? $this->templateOptions['payment_information']['description'] : __( 'We’ll never share this information with anyone.', 'give' );
235
236 printf(
237 '<div class="give-section payment"><div class="heading">%1$s</div><div class="subheading">%2$s</div>',
238 $headline,
239 $description
240 );
241 }
242
243 /**
244 * Close wrapper for payment information section
245 *
246 * @since 2.7.0
247 */
248 public function getCloseWrapperHTMLForPaymentSection() {
249 echo '</div>';
250 }
251
252 /**
253 * Start choose amount section
254 *
255 * @since 2.7.0
256 */
257 public function getStartWrapperHTMLForAmountSection() {
258 $content = isset( $this->templateOptions['payment_amount']['content'] ) && !empty($this->templateOptions['payment_amount']['content']) ? $this->templateOptions['payment_amount']['content'] : sprintf( __( 'How much would you like to donate? As a contributor to %s we make sure your goes directly to supporting our cause. Thank you for your generosity!', 'give' ), get_bloginfo('sitename') );
259 $label = ! empty( $this->templateOptions['introduction']['donate_label'] ) ? $this->templateOptions['introduction']['donate_label'] : __( 'Donate Now', 'give' );
260 $arrow = is_rtl() ? 'left' : 'right';
261 printf(
262 '<button class="give-btn advance-btn">%1$s<i class="fas fa-chevron-%2$s"></i></button></div>',
263 $label,
264 $arrow
265 );
266
267 if ( ! empty( $content ) ) {
268 printf(
269 '<div class="give-section choose-amount"><p class="content">%1$s</p>',
270 $content
271 );
272 } else {
273 echo "<div class='give-section choose-amount'>";
274 }
275 }
276
277 /**
278 * Close choose amount section
279 *
280 * @since 2.7.0
281 */
282 public function getCloseWrapperHTMLForAmountSection() {
283 $label = isset( $this->templateOptions['payment_amount']['next_label'] ) ? $this->templateOptions['payment_amount']['next_label'] : __( 'Continue', 'give' );
284 $arrow = is_rtl() ? 'left' : 'right';
285
286 printf(
287 '<button class="give-btn advance-btn">%1$s<i class="fas fa-chevron-%2$s"></i></button></div>',
288 $label,
289 $arrow
290 );
291 }
292
293 /**
294 * Append gateway labels with "Donate with "
295 *
296 * Modify gateways array returned give_get_enabled_payment_gateways, before printing
297 *
298 * @param array $gateways Array of enabled gateways
299 *
300 * @return array $gateways Array of modified enabled gateways
301 */
302 public function modifyGatewayLabels( array $gateways ) {
303 foreach ( $gateways as $key => $value ) {
304 $gateways[ $key ]['checkout_label'] = sprintf(
305 __( 'Donate with %1$s', 'give' ),
306 $gateways[ $key ]['checkout_label']
307 );
308 }
309 return $gateways;
310 }
311
312 }
313