PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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 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 / PaymentGateways / Stripe / Admin / AccountManagerSettingField.php
give / src / PaymentGateways / Stripe / Admin Last commit date
AccountManagerSettingField.php 11 months ago CreditCardSettingField.php 1 year ago CustomizeAccountField.php 4 years ago
AccountManagerSettingField.php
680 lines
1 <?php
2
3 namespace Give\PaymentGateways\Stripe\Admin;
4
5 use Give\Framework\Http\ConnectServer\Client\ConnectClient;
6 use Give\PaymentGateways\Stripe\Repositories\AccountDetail;
7 use Give\PaymentGateways\Stripe\Repositories\Settings;
8 use Give_Admin_Settings;
9
10 use function add_query_arg;
11 use function do_action;
12 use function esc_attr;
13 use function esc_html;
14 use function esc_html__;
15 use function esc_html_e;
16 use function esc_url_raw;
17 use function get_site_url;
18 use function give;
19 use function give_has_upgrade_completed;
20 use function give_stripe_connection_type_name;
21 use function give_stripe_is_premium_active;
22
23 /**
24 * Class AccountManagerSettingField
25 *
26 * @package Give\PaymentGateways\Stripe\Admin
27 * @since 2.13.0
28 */
29 class AccountManagerSettingField
30 {
31
32 /**
33 * @var AccountDetail
34 */
35 private $accountDetailRepository;
36
37 /**
38 * @var array
39 */
40 private $stripeAccounts;
41
42 /**
43 * @var string
44 */
45 private $defaultStripeAccountSlug;
46 /**
47 * @var Settings
48 */
49 private $settings;
50
51 /**
52 * @since 2.25.0
53 *
54 * @var ConnectClient
55 */
56 private $connectClient;
57
58 /**
59 * AccountManagerSettingField constructor.
60 *
61 * @since 2.25.0 Use 'ConnectClient' class
62 * @since 2.13.0
63 *
64 * @param AccountDetail $accountDetailRepository
65 * @param Settings $settings
66 */
67 public function __construct(
68 AccountDetail $accountDetailRepository,
69 Settings $settings,
70 ConnectClient $connectClient
71 ) {
72 $this->accountDetailRepository = $accountDetailRepository;
73 $this->settings = $settings;
74 $this->connectClient = $connectClient;
75 }
76
77 /**
78 * @since 2.13.0
79 */
80 private function setUpProperties()
81 {
82 global $post;
83 $this->stripeAccounts = $this->settings->getAllStripeAccounts();
84 $this->defaultStripeAccountSlug = $this->isGlobalSettingPage() ?
85 $this->settings->getDefaultStripeAccountSlug() :
86 $this->settings->getDefaultStripeAccountSlugForDonationForm($post->ID);
87 }
88
89 /**
90 * Render Stripe account manager setting field.
91 *
92 * @since 2.13.0
93 *
94 * @param array $field
95 */
96 public function handle($field)
97 {
98 $this->setUpProperties();
99 $classes = ! empty($field['wrapper_class']) ? esc_attr($field['wrapper_class']) : ''
100 ?>
101 <div class="<?php
102 echo $classes; ?>">
103
104 <div id="give-stripe-account-manager-errors"></div>
105 <?php
106 $this->getIntroductionSectionMarkup(); ?>
107 <div class="give-stripe-account-manager-container">
108 <div class="main-heading">
109 <h2 class="give-stripe-setting-heading"><?php
110 esc_html_e('Connected Accounts', 'give'); ?></h2>
111 </div>
112 <?php
113 $this->getStripeAccountListSectionMarkup();
114 $this->getAddNewStripeAccountSectionMarkup();
115 ?>
116 </div>
117 <?php
118 $this->getDefaultStripeAccountNotice(); ?>
119 </div>
120 <?php
121 }
122
123 /**
124 * @since 2.13.0
125 */
126 private function getIntroductionSectionMarkup()
127 {
128 // Show introduction content only on global setting edit screen.
129 if ( ! $this->isGlobalSettingPage()) {
130 return;
131 }
132 ?>
133 <div id="give-stripe-account-manager-description">
134 <h2><?php
135 esc_html_e('Accept Donations with Stripe', 'give'); ?></h2>
136
137 <?php
138 if (give_stripe_is_premium_active()) : ?>
139 <div class="give-stripe-pro-badge">
140 <div class="give-tooltip" data-tooltip="
141 <?php
142 esc_html_e(
143 'You are using the Pro version of the GiveWP add-on, which includes additional connection options and premium support.',
144 'give'
145 );
146 ?>
147 ">
148 <span class="dashicons dashicons-yes"></span>
149 <?php
150 esc_html_e('Pro Version Active', 'give'); ?>
151 </div>
152 </div>
153 <?php
154 endif; ?>
155
156 <p class="give-stripe-subheading-description">
157 <?php
158 printf(
159 __('Connect to the Stripe payment gateway using this section. Multiple Stripe accounts can be connected simultaneously. All donation forms will use the "Default Account" unless configured otherwise. To specify a different Stripe account for a form, configure the settings within the "Stripe Account" tab on the individual form edit screen. An additional 2%% fee is applied to donations for free users (removed with any premium product license). Read our <a href="%s" target="_blank" rel="noopener noreferrer">Stripe documentation</a> for more information.', 'give'),
160 'https://docs.givewp.com/stripe-fees'
161 );
162 ?>
163 </p>
164 <hr style="margin: 25px 0; display: block" />
165 </div>
166 <?php
167 }
168
169 /**
170 * @since 2.13.0
171 */
172 private function getStripeAccountListSectionMarkup()
173 {
174 $this->getStripeAccountOnBoardingModalMarkup();
175 if ( ! $this->stripeAccounts || ( ! $this->isGlobalSettingPage() && 1 === count($this->stripeAccounts))) :
176 $this->getNoStripeAccountMarkup();
177
178 return;
179 endif;
180 ?>
181
182 <div class="give-stripe-account-manager-list">
183 <?php
184 foreach ($this->stripeAccounts as $stripeAccountDetails) {
185 $this->getStripeAccountMarkup($stripeAccountDetails);
186 }
187 ?>
188 </div>
189 <?php
190 }
191
192 /**
193 * @since 2.13.0
194 */
195 private function getAddNewStripeAccountSectionMarkup()
196 {
197 if ($this->canShowCompatibilityNotice()) {
198 $this->getCompatibilityNoticeMarkup();
199
200 return;
201 }
202 ?>
203 <div class="give-stripe-account-manager-add-section<?php
204 echo give_stripe_is_premium_active() ? ' give-settings-premium-active' : ''; ?>">
205
206 <div class="stripe-logo-with-circle">
207 <svg width="21" height="31" viewBox="0 0 21 31" fill="none" xmlns="http://www.w3.org/2000/svg">
208 <path fill-rule="evenodd" clip-rule="evenodd"
209 d="M8.41683 9.55871C8.41683 8.29941 9.4501 7.81507 11.1614 7.81507C13.6155 7.81507 16.7153 8.55773 19.1693 9.8816V2.29355C16.4892 1.22799 13.8415 0.808228 11.1614 0.808228C4.60666 0.808228 0.247559 4.23093 0.247559 9.94618C0.247559 18.8581 12.5176 17.4374 12.5176 21.2798C12.5176 22.7652 11.226 23.2495 9.4178 23.2495C6.73777 23.2495 3.31507 22.1517 0.602744 20.6663V28.3513C3.60568 29.6428 6.6409 30.1918 9.4178 30.1918C16.134 30.1918 20.7515 26.8659 20.7515 21.0861C20.7192 11.4638 8.41683 13.1751 8.41683 9.55871Z"
210 fill="#6772E5" />
211 </svg>
212 </div>
213 <h3 class="give-stripe-heading"><?php
214 esc_html_e('Add a New Stripe Account', 'give'); ?></h3>
215
216 <div class="give-setting-tab-body-gateways">
217
218 <?php
219
220 // Output Stripe Connect Button.
221 echo $this->getStripeConnectButtonMarkup();
222
223 // Check if premium is active.
224 if (give_stripe_is_premium_active()) {
225 /**
226 * This action hook will be used to load Manual API fields for premium addon.
227 *
228 * @since 2.7.0
229 *
230 * @param array $stripeAccounts All Stripe accounts.
231 *
232 */
233 do_action('give_stripe_premium_manual_api_fields', $this->stripeAccounts);
234 }
235 ?>
236 </div>
237 </div>
238 <?php
239 }
240
241 /**
242 * @since 2.13.0
243 *
244 * @param array $stripeAccount
245 */
246 private function getStripeAccountMarkup($stripeAccount)
247 {
248 $accountName = $stripeAccount['account_name'];
249 $accountEmail = $stripeAccount['account_email'];
250 $stripeAccountId = $stripeAccount['account_id'];
251 $stripeAccountSlug = $stripeAccount['account_slug'];
252
253 // Do not print global default Stripe account in donation form setting.
254 if ($this->isGlobalDefaultStripeAccount($stripeAccountSlug)) {
255 return;
256 }
257
258 $disconnectUrl = esc_url_raw(add_query_arg(
259 [
260 'account_type' => $stripeAccount['type'],
261 'action' => 'disconnect_stripe_account',
262 'account_slug' => $stripeAccountSlug,
263 ],
264 wp_nonce_url(admin_url('admin-ajax.php'), 'give_disconnect_connected_stripe_account_' . $stripeAccountSlug)
265 ));
266
267 $editStatementDescriptorUrl = esc_url_raw(add_query_arg(
268 [
269 'action' => 'edit_stripe_account_statement_descriptor',
270 'account-slug' => $stripeAccountSlug,
271 ],
272 admin_url('admin-ajax.php')
273 ));
274
275 $classes = $stripeAccountSlug === $this->defaultStripeAccountSlug ? ' give-stripe-boxshadow-option-wrap__selected' : '';
276 ?>
277 <div
278 id="give-stripe-<?php
279 echo $stripeAccountSlug; ?>"
280 class="give-stripe-account-manager-list-item give-stripe-boxshadow-option-wrap<?php
281 echo $classes; ?>"
282 >
283 <input type="hidden" name="stripe-account-slug" value="<?php
284 echo $stripeAccountSlug; ?>" readonly>
285 <input type="hidden" name="setting-page" value="<?php
286 echo $this->isGlobalSettingPage() ? 'global' : 'form'; ?>" readonly>
287 <?php
288 if ($stripeAccountSlug === $this->defaultStripeAccountSlug) : ?>
289 <div class="give-stripe-account-default-checkmark">
290 <svg width="33" height="33" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
291 <path
292 d="M32.375 16.1875C32.375 25.1276 25.1276 32.375 16.1875 32.375C7.24737 32.375 0 25.1276 0 16.1875C0 7.24737 7.24737 0 16.1875 0C25.1276 0 32.375 7.24737 32.375 16.1875ZM14.3151 24.7586L26.3252 12.7486C26.733 12.3407 26.733 11.6795 26.3252 11.2717L24.8483 9.79474C24.4404 9.38686 23.7792 9.38686 23.3713 9.79474L13.5766 19.5894L9.00371 15.0165C8.59589 14.6086 7.93462 14.6086 7.52673 15.0165L6.04982 16.4934C5.642 16.9012 5.642 17.5625 6.04982 17.9703L12.8381 24.7586C13.246 25.1665 13.9072 25.1665 14.3151 24.7586Z"
293 fill="#69B868" />
294 </svg>
295 </div>
296 <?php
297 endif; ?>
298
299 <div class="give-stripe-account-fieldset give-stripe-account-name">
300 <span class="give-stripe-label"><?php
301 esc_html_e('Account name:', 'give'); ?></span>
302 <span class="give-stripe-connect-data-field">
303 <?php
304 echo esc_html($accountName); ?>
305 </span>
306 </div>
307
308 <?php
309 if ( ! empty($accountEmail)) : ?>
310 <div class="give-stripe-account-fieldset give-stripe-account-email">
311 <span class="give-stripe-label"><?php
312 esc_html_e('Account email:', 'give'); ?></span>
313 <div class="give-stripe-connect-data-field">
314 <?php
315 echo esc_html($accountEmail); ?>
316 </div>
317 </div>
318 <?php
319 endif; ?>
320
321 <?php
322 if ( ! empty($stripeAccountId)) : ?>
323 <div class="give-stripe-account-fieldset give-stripe-account-id">
324 <span class="give-stripe-label"><?php
325 esc_html_e('Account ID:', 'give'); ?></span>
326 <div class="give-stripe-connect-data-field">
327 <?php
328 echo esc_html($stripeAccountId); ?>
329 </div>
330 </div>
331 <?php
332 endif; ?>
333
334 <div class="give-stripe-account-fieldset give-stripe-connection-method">
335 <span class="give-stripe-label">
336 <?php
337 esc_html_e('Connection Method:', 'give'); ?>
338 </span>
339 <div class="give-stripe-connect-data-field">
340 <?php
341 echo give_stripe_connection_type_name($stripeAccount['type']); ?>
342 </div>
343 </div>
344
345 <div class="give-stripe-account-fieldset give-stripe-statement-descriptor">
346 <span class="give-stripe-label">
347 <?php
348 esc_html_e('Statement Descriptor:', 'give'); ?>
349 <?php
350 echo sprintf(
351 '<a href="%s" target="_blank">%s</a>',
352 'https://stripe.com/docs/statement-descriptors#requirements',
353 Give()->tooltips->render_help([
354 'label' => esc_html__(
355 'This is the text that appears on your donor\'s bank statements. This is typically the name of your website or organization. Click on this icon to read more about Stripe statement text requirements.',
356 'give'
357 ),
358 'size' => 'medium',
359 ]
360 )
361 );
362 ?>
363 </span>
364 <div
365 class="give-stripe-connect-data-field"
366 data-action-url="<?php
367 echo $editStatementDescriptorUrl; ?>"
368 >
369 <?php
370 echo $stripeAccount['statement_descriptor']; ?>
371 <?php
372 if ($this->isGlobalSettingPage()): ?>
373 <span class="give-stripe-edit-statement-descriptor">
374 <a class="give-stripe-edit-statement-descriptor-btn" href="#">
375 <span class="dashicons dashicons-edit-page"></span>
376 <?php
377 esc_html_e('Edit', 'give'); ?>
378 </a>
379 </span>
380 <?php
381 endif; ?>
382 </div>
383 </div>
384
385 <?php
386 /**
387 * Filter fire.
388 *
389 * Developer can utilize this hook to add custom action to stripe account
390 *
391 * @since 2.13.3
392 */
393 $stripeAccountActionsHtml = apply_filters(
394 'give_stripe_manage_account_actions_html',
395 '',
396 $stripeAccount,
397 $this->stripeAccounts,
398 $this->defaultStripeAccountSlug
399 );
400
401 if ($stripeAccountActionsHtml) {
402 printf(
403 '<div class="give-stripe-account-fieldset give-stripe-account-edit">%s</div>',
404 $stripeAccountActionsHtml
405 );
406 }
407 ?>
408
409 <div class="give-stripe-account-fieldset">
410 <span class="give-stripe-label"><?php
411 esc_html_e('Connection Status:', 'give'); ?></span>
412 <div class="give-stripe-account-actions">
413 <span class="give-stripe-account-connected give-stripe-connect-data-field">
414 <?php
415 esc_html_e('Connected', 'give'); ?>
416 </span>
417 <?php
418 if (
419 $stripeAccountSlug !== $this->defaultStripeAccountSlug ||
420 1 === count($this->stripeAccounts)
421 ) :?>
422 <span class="give-stripe-account-disconnect">
423 <a class="give-stripe-disconnect-account-btn" href="<?php
424 echo $disconnectUrl; ?>">
425 <span class="dashicons dashicons-editor-unlink"></span>
426 <?php
427 esc_html_e('Disconnect', 'give'); ?>
428 </a>
429 </span>
430 <?php
431 endif; ?>
432 </div>
433 </div>
434
435 <?php
436 if ($stripeAccountSlug === $this->defaultStripeAccountSlug) : ?>
437 <div class="give-stripe-account-badge">
438 <?php
439 esc_html_e('Default Account', 'give'); ?>
440 </div>
441 <?php
442 else : ?>
443 <div class="give-stripe-account-default">
444 <a
445 data-account="<?php
446 echo $stripeAccountSlug; ?>"
447 class="give-stripe-account-set-default"
448 href="#"
449 ><?php
450 esc_html_e('Set as Default', 'give'); ?></a>
451 </div>
452 <?php
453 endif; ?>
454 </div>
455 <?php
456 }
457
458 /**
459 * @since 2.13.0
460 */
461 private function getStripeAccountOnBoardingModalMarkup()
462 {
463 global $post;
464
465 $site_url = get_site_url();
466 $redirectUrl = $this->isGlobalSettingPage() ?
467 admin_url('edit.php?post_type=give_forms&page=give-settings&tab=gateways&section=stripe-settings') :
468 admin_url("post.php?post=$post->ID&action=edit&give_tab=stripe_form_account_options");
469
470 $modal_title = sprintf(
471 '<strong>%1$s</strong>',
472 esc_html__(
473 'You are connected! Now this is important: Please configure your Stripe webhook to finalize the setup.',
474 'give'
475 )
476 );
477 $modal_first_detail = sprintf(
478 '%1$s %2$s',
479 esc_html__(
480 'In order for Stripe to function properly, you must add a new Stripe webhook endpoint. To do this please visit the <a href=\'https://dashboard.stripe.com/webhooks\' target=\'_blank\'>Webhooks Section of your Stripe Dashboard</a> and click the <strong>Add endpoint</strong> button and paste the following URL:',
481 'give'
482 ),
483 "<strong>{$site_url}?give-listener=stripe</strong>"
484 );
485 $modal_second_detail = esc_html__(
486 'Stripe webhooks are required so GiveWP can communicate properly with the payment gateway to confirm payment completion, renewals, and more.',
487 'give'
488 );
489 $can_display = ! empty($_GET['stripe_account']) ? '0' : '1';
490 ?>
491 <div
492 id="give-stripe-connected"
493 class="stripe-btn-disabled give-hidden"
494 data-status="connected"
495 data-title="<?php
496 echo $modal_title; ?>"
497 data-first-detail="<?php
498 echo $modal_first_detail; ?>"
499 data-second-detail="<?php
500 echo $modal_second_detail; ?>"
501 data-display="<?php
502 echo $can_display; ?>"
503 data-redirect-url="<?php
504 echo esc_url_raw($redirectUrl); ?>"
505 >
506 </div>
507 <?php
508 }
509
510 /**
511 * @since 2.13.0
512 */
513 private function getCompatibilityNoticeMarkup()
514 {
515 ?>
516 <div class="give-stripe-account-manager-add-section">
517 <?php
518 Give()->notices->print_admin_notices(
519 [
520 'description' => sprintf(
521 '%1$s <a href="%2$s">%3$s</a> %4$s',
522 esc_html__(
523 'Give 2.7.0 introduces the ability to connect a single site to multiple Stripe accounts. To use this feature, you need to complete database updates. ',
524 'give'
525 ),
526 esc_url(admin_url('edit.php?post_type=give_forms&page=give-updates')),
527 esc_html__('Click here', 'give'),
528 esc_html__('to complete your pending database updates.', 'give')
529 ),
530 'dismissible' => false,
531 ]
532 );
533 ?>
534 </div>
535 <?php
536 }
537
538 /**
539 * @since 2.13.0
540 */
541 public function getNoStripeAccountMarkup()
542 {
543 ?>
544 <div class="no-stripe-account-connected">
545 <div class="no-stripe-account-connected-inner">
546 <span class="dashicons dashicons-info"></span>
547 <h3 class="give-stripe-settings-heading">
548 <?php
549 echo $this->isGlobalSettingPage() ?
550 esc_html__('No Stripe Accounts Connected', 'give') :
551 esc_html__('Connect a New Stripe Account', 'give');
552 ?>
553 </h3>
554 <p id="give-stripe-connect-invite">
555 <?php
556 echo $this->isGlobalSettingPage() ?
557 esc_html__('Connect an account to get started!', 'give') :
558 esc_html__(
559 'Add a new account to customize the Stripe account used for this donation form.',
560 'give'
561 )
562 ?>
563 </p>
564 <?php
565 echo $this->getStripeConnectButtonMarkup(); ?>
566 </div>
567 </div>
568 <?php
569 }
570
571 /**
572 * @since 2.25.0 Use 'ConnectClient' class
573 * @since 2.13.0
574 * @return string
575 */
576 public function getStripeConnectButtonMarkup()
577 {
578 // Prepare Stripe Connect URL.
579 $link = add_query_arg(
580 [
581 'stripe_action' => 'connect',
582 'mode' => give_is_test_mode() ? 'test' : 'live',
583 'return_url' => ! $this->isGlobalSettingPage() ?
584 rawurlencode(
585 sprintf(
586 admin_url('post.php?post=%d&action=edit&give_tab=stripe_form_account_options'),
587 get_the_ID()
588 )
589 ) :
590 rawurlencode(
591 admin_url(
592 'edit.php?post_type=give_forms&page=give-settings&tab=gateways&section=stripe-settings'
593 )
594 ),
595 'website_url' => get_bloginfo('url'),
596 'give_stripe_connected' => '0',
597 ],
598 esc_url_raw($this->connectClient->getApiUrl('stripe/connect.php'))
599 );
600
601 $stripeSvgIcon = '<svg width="15" height="21" viewBox="0 0 15 21" fill="none" xmlns="http://www.w3.org/2000/svg">
602 <path d="M6.05469 6.55469C6.05469 5.69531 6.75781 5.34375 7.92969 5.34375C9.64844 5.34375 11.7969 5.85156 13.4766 6.78906V1.55469C11.6406 0.8125 9.80469 0.5 7.92969 0.5C3.4375 0.5 0.429688 2.88281 0.429688 6.82812C0.429688 13 8.86719 11.9844 8.86719 14.6406C8.86719 15.6953 7.96875 16.0078 6.75781 16.0078C4.88281 16.0078 2.5 15.2656 0.664062 14.25V19.25C2.5 20.0703 4.57031 20.5 6.75781 20.5391C11.3672 20.5391 14.5703 18.5469 14.5703 14.5234C14.5703 7.88281 6.05469 9.05469 6.05469 6.55469Z" fill="white"/>
603 </svg>
604 ';
605
606 return sprintf(
607 '<a href="%1$s" class="give-stripe-connect" title="%2$s"><span class="stripe-logo">%3$s</span><span>%2$s</span></a>',
608 esc_url($link),
609 esc_html__('Connect with Stripe', 'give'),
610 $stripeSvgIcon
611 );
612 }
613
614 /**
615 * @since 2.13.0
616 */
617 private function getDefaultStripeAccountNotice()
618 {
619 ?>
620 <div class="give-stripe-default-account-notice">
621 <span class="dashicons dashicons-info"></span>
622 <div class="give-stripe-default-account-notice__inner">
623 <p class="give-stripe-default-account-notice__bold"><strong>
624 <?php
625 echo $this->isGlobalSettingPage() ?
626 esc_html__('All payments go to the default account', 'give') :
627 esc_html__('Stripe donations process through the account set above', 'give');
628 ?>
629 </strong></p>
630 <p>
631 <?php
632 echo $this->isGlobalSettingPage() ?
633 esc_html__(
634 'You can set this globally (for all donation forms) or override the Stripe account per donation form.',
635 'give'
636 ) :
637 esc_html__('This overrides the global default account setting for this donation form.', 'give');
638 ?>
639 </p>
640 </div>
641 </div>
642 <?php
643 }
644
645 /**
646 * @return bool
647 */
648 private function canShowCompatibilityNotice()
649 {
650 return ! give_has_upgrade_completed('v270_store_stripe_account_for_donation');
651 }
652
653 /**
654 * @since 2.13.0
655 * @return bool
656 */
657 private function isGlobalSettingPage()
658 {
659 return Give_Admin_Settings::is_setting_page('gateways', 'stripe-settings');
660 }
661
662 /**
663 * @since 2.13.0
664 *
665 * @param string $accountSlug Stripe account slug
666 *
667 * @return bool
668 */
669 private function isGlobalDefaultStripeAccount($accountSlug)
670 {
671 $globalDefaultStripeAccountDetail = give_stripe_get_default_account();
672
673 if (empty($globalDefaultStripeAccountDetail)) {
674 return false;
675 }
676
677 return ! $this->isGlobalSettingPage() && $globalDefaultStripeAccountDetail['account_slug'] === $accountSlug;
678 }
679 }
680