PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.14.2
GiveWP – Donation Plugin and Fundraising Platform v4.14.2
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 / Donations / Actions / LoadDonationAdminOptions.php
give / src / Donations / Actions Last commit date
GeneratePurchaseKey.php 4 years ago LoadDonationAdminOptions.php 8 months ago LoadDonationDetailsAssets.php 11 months ago LoadDonationsListTableAssets.php 8 months ago
LoadDonationAdminOptions.php
117 lines
1 <?php
2
3 namespace Give\Donations\Actions;
4
5 use Give\API\REST\V3\Routes\Donations\ValueObjects\DonationRoute;
6 use Give\Donations\ValueObjects\DonationStatus;
7 use Give\Helpers\IntlTelInput;
8 use Give\BetaFeatures\Facades\FeatureFlag;
9 use Give\Framework\Database\DB;
10 use Give\Framework\PaymentGateways\PaymentGateway;
11
12 /**
13 * The purpose of this action is to have a centralized place for localizing options used on many different places
14 * by donation scripts (list tables, blocks, etc.)
15 *
16 * @since 4.6.1 Rename to LoadDonationAdminOptions
17 * @since 4.6.0
18 */
19 class LoadDonationAdminOptions
20 {
21 public function __invoke()
22 {
23 wp_register_script('give-donation-options', false);
24 wp_localize_script('give-donation-options', 'GiveDonationOptions', $this->getDonationOptions());
25 wp_enqueue_script('give-donation-options');
26 }
27
28 /**
29 * Get all donation options for localization
30 *
31 * @since 4.7.0 removed donors from the options
32 * @since 4.6.0
33 */
34 private function getDonationOptions(): array
35 {
36 $isAdmin = is_admin();
37
38 return [
39 'isAdmin' => $isAdmin,
40 'adminUrl' => admin_url(),
41 'apiRoot' => rest_url(DonationRoute::NAMESPACE),
42 'apiNonce' => wp_create_nonce('wp_rest'),
43 'donationsAdminUrl' => admin_url('edit.php?post_type=give_forms&page=give-payment-history'),
44 'currency' => give_get_currency(),
45 'intlTelInputSettings' => IntlTelInput::getSettings(),
46 'nameTitlePrefixes' => give_get_option('title_prefixes', array_values(give_get_default_title_prefixes())),
47 'countries' => $this->decodeHtmlEntities(give_get_country_list()),
48 'states' => $this->getStatesData(),
49 'donationStatuses' => DonationStatus::labels(),
50 'isRecurringEnabled' => defined('GIVE_RECURRING_VERSION') ? GIVE_RECURRING_VERSION : null,
51 'admin' => $isAdmin ? [] : null,
52 'eventTicketsEnabled' => FeatureFlag::eventTickets(),
53 'isFeeRecoveryEnabled' => defined('GIVE_FEE_RECOVERY_VERSION'),
54 'mode' => give_is_test_mode() ? 'test' : 'live',
55 'gateways' => $this->getGateways(),
56 ];
57 }
58
59 /**
60 * Get states data with decoded HTML entities
61 *
62 * @since 4.6.0
63 */
64 private function getStatesData(): array
65 {
66 return [
67 'list' => $this->decodeHtmlEntities(give_states_list(), true),
68 'labels' => give_get_states_label(),
69 'noStatesCountries' => array_keys(give_no_states_country_list()),
70 'statesNotRequiredCountries' => array_keys(give_states_not_required_country_list()),
71 ];
72 }
73
74 /**
75 * Decode HTML entities from an array of strings or nested arrays
76 *
77 * @since 4.6.0
78 */
79 private function decodeHtmlEntities(array $data, bool $isNested = false): array
80 {
81 if ($isNested) {
82 return array_map(function($nestedData) {
83 return $this->decodeHtmlEntities($nestedData);
84 }, $data);
85 }
86
87 return array_map(function($item) {
88 return html_entity_decode($item, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, 'UTF-8');
89 }, $data);
90 }
91
92 /**
93 * Get gateways
94 *
95 * @since 4.6.0
96 */
97 private function getGateways(): array
98 {
99 $enabledGateways = array_keys(give_get_enabled_payment_gateways());
100
101 $gateways = array_map(static function ($gatewayClass) use ($enabledGateways) {
102 /** @var PaymentGateway $gateway */
103 $gateway = give($gatewayClass);
104
105 return [
106 'id' => $gateway::id(),
107 'enabled' => in_array($gateway::id(), $enabledGateways, true),
108 'label' => $gateway->getName(),
109 'supportsSubscriptions' => $gateway->supportsSubscriptions(),
110 'supportsRefund' => $gateway->supportsRefund(),
111 ];
112 }, give()->gateways->getPaymentGateways());
113
114 return array_values($gateways);
115 }
116 }
117