PluginProbe
Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More / 2.4.0
Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More v2.4.0
2.4.1 2.4.0 2.3.4 2.3.3 2.3.2 2.3.1 2.3.0 2.2.2 2.2.1 2.2.0 2.1.2 2.1.1 trunk 0.0.1 0.0.2 0.0.3 0.0.4 0.0.5 0.0.6 0.0.7 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 All 68 releases
better-payment / includes / Assets.php

Assets.php in Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More 2.4.0, at includes/Assets.php

324 lines 17.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Better_Payment\Lite;
4
5 use Better_Payment\Lite\Classes\ProPaymentFormScripts;
6 use Better_Payment\Lite\Classes\ProUserDashboardAssets;
7 use Better_Payment\Lite\Traits\Helper as TraitsHelper;
8
9 /**
10 * Exit if accessed directly
11 */
12 if (!defined('ABSPATH')) {
13 exit;
14 }
15
16 /**
17 * Assets handler class
18 *
19 * @since 0.0.1
20 */
21 class Assets extends Controller
22 {
23 use TraitsHelper;
24
25 /**
26 * Guard flag — register_assets() must only build and register handles once per request.
27 *
28 * @var bool
29 */
30 private $registered = false;
31
32 /**
33 * Class constructor
34 *
35 * @since 0.0.1
36 */
37 public function __construct()
38 {
39 add_action('init', [$this, 'register_assets']);
40 add_action('enqueue_block_editor_assets', [$this, 'register_localize_script']);
41 add_action('wp_enqueue_scripts', [$this, 'register_assets']);
42 add_action('admin_enqueue_scripts', [$this, 'register_assets']);
43 add_action('elementor/editor/before_enqueue_scripts', [$this, 'register_assets']);
44 }
45
46 public function register_localize_script()
47 {
48 // Localize BetterPaymentLocalize for block editor
49 wp_localize_script('better-payment-block-localize', 'BetterPaymentLocalize', array(
50 'ajaxurl' => admin_url( 'admin-ajax.php' ),
51 'nonce' => wp_create_nonce( 'better_payment_block_nonce' ),
52 ));
53 }
54
55 /**
56 * All available scripts
57 *
58 * The Pro-feature copies (Classes\ProPaymentFormScripts, Classes\ProUserDashboardAssets)
59 * are always registered, but they are a dependency of `better-payment` and
60 * `better-payment-common-script` only while ProCompatibility::lite_copy_applies()
61 * says so, and nothing else enqueues them.
62 *
63 * @return array
64 * @since 0.0.1
65 */
66 public function get_scripts()
67 {
68 return [
69 'better-payment-block-localize' => [
70 'src' => file_exists( BETTER_PAYMENT_PATH . '/assets/js/block-localize.min.js' )
71 ? BETTER_PAYMENT_ASSETS . '/js/block-localize.min.js'
72 : BETTER_PAYMENT_ASSETS . '/js/block-localize.js',
73 'version' => BETTER_PAYMENT_VERSION,
74 'deps' => array(),
75 ],
76 'better-payment-vendor-bundle' => [
77 'src' => BETTER_PAYMENT_ASSETS . '/blocks/vendors/js/bundles.min.js',
78 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/blocks/vendors/js/bundles.min.js') ? filemtime(BETTER_PAYMENT_PATH . '/assets/blocks/vendors/js/bundles.min.js') : BETTER_PAYMENT_VERSION,
79 'deps' => array(),
80 ],
81 'better-payment-babel-bundle' => [
82 'src' => BETTER_PAYMENT_ASSETS . '/blocks/vendors/js/bundle.babel.min.js',
83 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/blocks/vendors/js/bundle.babel.min.js') ? filemtime(BETTER_PAYMENT_PATH . '/assets/blocks/vendors/js/bundle.babel.min.js') : BETTER_PAYMENT_VERSION,
84 'deps' => array(),
85 ],
86 'better-payment-controls' => [
87 'src' => BETTER_PAYMENT_ASSETS . '/blocks/controls/modules.min.js',
88 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/blocks/controls/modules.min.js') ? filemtime(BETTER_PAYMENT_PATH . '/assets/blocks/controls/modules.min.js') : BETTER_PAYMENT_VERSION,
89 'deps' => array_merge(
90 $this->get_controls_dependencies(),
91 ['wp-polyfill', 'better-payment-block-localize','better-payment-vendor-bundle', 'better-payment-babel-bundle']),
92 ],
93 'better-payment-controls-frontend' => [
94 'src' => BETTER_PAYMENT_ASSETS . '/blocks/controls/frontend.min.js',
95 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/blocks/controls/frontend.min.js') ? filemtime(BETTER_PAYMENT_PATH . '/assets/blocks/controls/frontend.min.js') : BETTER_PAYMENT_VERSION,
96 'deps' => []
97 ],
98 'better-payment-common-script' => [
99 'src' => BETTER_PAYMENT_ASSETS . '/js/common.min.js',
100 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/js/common.min.js') ? filemtime(BETTER_PAYMENT_PATH . '/assets/js/common.min.js') : BETTER_PAYMENT_VERSION,
101 'deps' => array_merge( ['jquery', 'wp-util'], ProUserDashboardAssets::script_depends() ),
102 ],
103 // Transitional copy of Pro's User Dashboard handlers (datepicker, date range modal, View All); see Classes\ProUserDashboardAssets.
104 ProUserDashboardAssets::SCRIPT_HANDLE => [
105 'src' => BETTER_PAYMENT_ASSETS . '/js/user-dashboard-pro.min.js',
106 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/js/user-dashboard-pro.min.js') ? filemtime(BETTER_PAYMENT_PATH . '/assets/js/user-dashboard-pro.min.js') : BETTER_PAYMENT_VERSION,
107 'deps' => ['jquery', 'jquery-ui-datepicker'],
108 ],
109 'better-payment-stripe' => [
110 'src' => 'https://js.stripe.com/v3/',
111 ],
112 'better-payment' => [
113 'src' => BETTER_PAYMENT_ASSETS . '/js/better-payment.min.js',
114 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/js/better-payment.min.js') ? filemtime(BETTER_PAYMENT_PATH . '/assets/js/better-payment.min.js') : BETTER_PAYMENT_VERSION,
115 'deps' => array_merge( ['jquery', 'better-payment-stripe', 'toastr-js'], ProPaymentFormScripts::script_depends() ),
116 ],
117 // Transitional copy of Pro's Payment Form quantity total (layouts 4 and 5); see Classes\ProPaymentFormScripts.
118 ProPaymentFormScripts::HANDLE => [
119 'src' => BETTER_PAYMENT_ASSETS . '/js/payment-form-pro-quantity.min.js',
120 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/js/payment-form-pro-quantity.min.js') ? filemtime(BETTER_PAYMENT_PATH . '/assets/js/payment-form-pro-quantity.min.js') : BETTER_PAYMENT_VERSION,
121 'deps' => ['jquery'],
122 ],
123 'bp-dashboard-pagination' => [
124 'src' => file_exists( BETTER_PAYMENT_PATH . '/assets/js/bp-dashboard-pagination.min.js' )
125 ? BETTER_PAYMENT_ASSETS . '/js/bp-dashboard-pagination.min.js'
126 : BETTER_PAYMENT_ASSETS . '/js/bp-dashboard-pagination.js',
127 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/js/bp-dashboard-pagination.min.js') ? filemtime(BETTER_PAYMENT_PATH . '/assets/js/bp-dashboard-pagination.min.js') : BETTER_PAYMENT_VERSION,
128 'deps' => [],
129 ],
130 'toastr-js' => [
131 'src' => BETTER_PAYMENT_ASSETS . '/vendor/toastr/js/toastr.min.js',
132 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/vendor/toastr/js/toastr.min.js') ? filemtime(BETTER_PAYMENT_PATH . '/assets/vendor/toastr/js/toastr.min.js') : BETTER_PAYMENT_VERSION,
133 'deps' => ['jquery']
134 ],
135 'bp-admin-settings' => [
136 'src' => BETTER_PAYMENT_ASSETS . '/js/admin.min.js',
137 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/js/admin.min.js') ? filemtime(BETTER_PAYMENT_PATH . '/assets/js/admin.min.js') : BETTER_PAYMENT_VERSION,
138 'deps' => ['jquery']
139 ],
140 'better-payment-script' => [
141 'src' => BETTER_PAYMENT_ASSETS . '/js/frontend.min.js',
142 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/js/frontend.min.js') ? filemtime(BETTER_PAYMENT_PATH . '/assets/js/frontend.min.js') : BETTER_PAYMENT_VERSION,
143 'deps' => ['jquery']
144 ],
145 'fundraising-campaign-script' => [
146 'src' => BETTER_PAYMENT_ASSETS . '/js/fundraising-campaign.min.js',
147 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/js/fundraising-campaign.min.js') ? filemtime(BETTER_PAYMENT_PATH . '/assets/js/fundraising-campaign.min.js') : BETTER_PAYMENT_VERSION,
148 'deps' => ['jquery']
149 ],
150 ];
151 }
152
153 /**
154 * All available styles
155 *
156 * @return array
157 * @since 0.0.1
158 */
159 public function get_styles()
160 {
161 return [
162 'better-payment-common-style' => [
163 'src' => BETTER_PAYMENT_ASSETS . '/css/common.min.css',
164 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/css/common.min.css') ? filemtime(BETTER_PAYMENT_PATH . '/assets/css/common.min.css') : BETTER_PAYMENT_VERSION,
165 ],
166 // Transitional copy of Pro's User Dashboard card styles; a dependency of the admin
167 // stylesheet only while it applies, so it prints between common and admin. See
168 // Classes\ProUserDashboardAssets.
169 ProUserDashboardAssets::STYLE_HANDLE => [
170 'src' => BETTER_PAYMENT_ASSETS . '/css/user-dashboard-pro.min.css',
171 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/css/user-dashboard-pro.min.css') ? filemtime(BETTER_PAYMENT_PATH . '/assets/css/user-dashboard-pro.min.css') : BETTER_PAYMENT_VERSION,
172 'deps' => ['better-payment-common-style'],
173 ],
174 'bp-dashboard-pagination-style' => [
175 'src' => file_exists( BETTER_PAYMENT_PATH . '/assets/css/bp-dashboard-pagination.min.css' )
176 ? BETTER_PAYMENT_ASSETS . '/css/bp-dashboard-pagination.min.css'
177 : BETTER_PAYMENT_ASSETS . '/css/bp-dashboard-pagination.css',
178 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/css/bp-dashboard-pagination.min.css') ? filemtime(BETTER_PAYMENT_PATH . '/assets/css/bp-dashboard-pagination.min.css') : BETTER_PAYMENT_VERSION,
179 ],
180 'better-payment-el' => [
181 'src' => BETTER_PAYMENT_ASSETS . '/css/better-payment-el.min.css',
182 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/css/better-payment-el.min.css') ? filemtime(BETTER_PAYMENT_PATH . '/assets/css/better-payment-el.min.css') : BETTER_PAYMENT_VERSION,
183 ],
184 'bp-icon-front' => [
185 'src' => BETTER_PAYMENT_ASSETS . '/icon/style.min.css',
186 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/icon/style.min.css') ? filemtime(BETTER_PAYMENT_PATH . '/assets/icon/style.min.css') : BETTER_PAYMENT_VERSION,
187 ],
188 'toastr-css' => [
189 'src' => BETTER_PAYMENT_ASSETS . '/vendor/toastr/css/toastr.min.css',
190 ],
191 'jquery-ui' => [
192 'src' => BETTER_PAYMENT_ASSETS . '/vendor/jquery-ui/css/jquery-ui.min.css',
193 ],
194 'bp-icon-admin' => [
195 'src' => BETTER_PAYMENT_ASSETS . '/icon/style.min.css',
196 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/icon/style.min.css') ? filemtime(BETTER_PAYMENT_PATH . '/assets/icon/style.min.css') : BETTER_PAYMENT_VERSION,
197 ],
198 'better-payment-style' => [
199 'src' => BETTER_PAYMENT_ASSETS . '/css/frontend.min.css',
200 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/css/frontend.min.css') ? filemtime(BETTER_PAYMENT_PATH . '/assets/css/frontend.min.css') : BETTER_PAYMENT_VERSION,
201 ],
202 'better-payment-admin-style' => [
203 'src' => BETTER_PAYMENT_ASSETS . '/css/admin.min.css',
204 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/css/admin.min.css') ? filemtime(BETTER_PAYMENT_PATH . '/assets/css/admin.min.css') : BETTER_PAYMENT_VERSION,
205 'deps' => ProUserDashboardAssets::style_depends(),
206 ],
207 'bp-font-awesome' => [
208 'src' => file_exists( BETTER_PAYMENT_PATH . '/assets/vendor/fontawesome/css/all.min.css' )
209 ? BETTER_PAYMENT_ASSETS . '/vendor/fontawesome/css/all.min.css'
210 : 'https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/css/all.min.css',
211 'version' => file_exists( BETTER_PAYMENT_PATH . '/assets/vendor/fontawesome/css/all.min.css' )
212 ? filemtime( BETTER_PAYMENT_PATH . '/assets/vendor/fontawesome/css/all.min.css' )
213 : '6',
214 ],
215 'better-payment-wc-subscriptions' => [
216 'src' => BETTER_PAYMENT_ASSETS . '/css/woocommerce-subscriptions.css',
217 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/css/woocommerce-subscriptions.css') ? filemtime(BETTER_PAYMENT_PATH . '/assets/css/woocommerce-subscriptions.css') : BETTER_PAYMENT_VERSION,
218 ],
219 'fundraising-campaign-style' => [
220 'src' => BETTER_PAYMENT_ASSETS . '/css/fundraising-campaign.min.css',
221 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/css/fundraising-campaign.min.css') ? filemtime(BETTER_PAYMENT_PATH . '/assets/css/fundraising-campaign.min.css') : BETTER_PAYMENT_VERSION,
222 ],
223 // The Pro Updates tab; loaded by Classes\ProFundraisingUpdateStyles for Pro releases that do not load their own.
224 'fundraising-campaign-updates-style' => [
225 'src' => BETTER_PAYMENT_ASSETS . '/css/fundraising-campaign-updates.min.css',
226 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/css/fundraising-campaign-updates.min.css') ? filemtime(BETTER_PAYMENT_PATH . '/assets/css/fundraising-campaign-updates.min.css') : BETTER_PAYMENT_VERSION,
227 'deps' => ['fundraising-campaign-style'],
228 ],
229 'better-payment-editor-style' => [
230 'src' => BETTER_PAYMENT_ASSETS . '/css/editor.min.css',
231 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/css/editor.min.css') ? filemtime(BETTER_PAYMENT_PATH . '/assets/css/editor.min.css') : BETTER_PAYMENT_VERSION,
232 'admin_enqueue' => true,
233 ],
234 'better-payment-controls-style' => [
235 'src' => BETTER_PAYMENT_ASSETS . '/blocks/controls/style.min.css',
236 'version' => file_exists(BETTER_PAYMENT_PATH . '/assets/blocks/controls/style.min.css') ? filemtime(BETTER_PAYMENT_PATH . '/assets/blocks/controls/style.min.css') : BETTER_PAYMENT_VERSION,
237 'admin_enqueue' => true,
238 ],
239 ];
240 }
241
242 /**
243 * Get controls dependencies from asset file
244 *
245 * @return array
246 * @since 0.0.1
247 */
248 private function get_controls_dependencies()
249 {
250 $asset_file = BETTER_PAYMENT_PATH . '/assets/blocks/controls/modules.min.asset.php';
251
252 if (file_exists($asset_file)) {
253 $asset = include $asset_file;
254 return isset($asset['dependencies']) ? $asset['dependencies'] : ['wp-blocks', 'wp-element', 'wp-components', 'wp-i18n', 'wp-block-editor', 'wp-data'];
255 }
256
257 return ['wp-blocks', 'wp-element', 'wp-components', 'wp-i18n', 'wp-block-editor', 'wp-data'];
258 }
259
260 /**
261 * Register scripts and styles
262 *
263 * @return void
264 * @since 0.0.1
265 */
266 public function register_assets()
267 {
268 if ( $this->registered ) {
269 return;
270 }
271 $this->registered = true;
272
273 $scripts = $this->get_scripts();
274 $styles = $this->get_styles();
275
276 foreach ($scripts as $handle => $script) {
277 $version = isset($script['version']) ? $script['version'] : false;
278 $deps = isset($script['deps']) ? $script['deps'] : false;
279
280 wp_register_script($handle, $script['src'], $deps, $version, true);
281 }
282
283 foreach ($styles as $handle => $style) {
284 $version = isset($style['version']) ? $style['version'] : false;
285 $deps = isset($style['deps']) ? $style['deps'] : false;
286 $admin_enqueue = isset($style['admin_enqueue']) ? $style['admin_enqueue'] : false;
287
288 wp_register_style($handle, $style['src'], $deps, $version);
289
290 if ($admin_enqueue && is_admin()) {
291 wp_enqueue_style($handle, $style['src'], $deps, $version);
292 }
293 }
294
295
296 wp_localize_script('better-payment', 'betterPayment', [
297 'ajax_url' => admin_url('admin-ajax.php'),
298 'nonce' => wp_create_nonce('better-payment'),
299 'confirm' => __('Are you sure?', 'better-payment'),
300 'error' => __('Something went wrong', 'better-payment'),
301 'custom_texts' => [
302 'redirecting' => __('Redirecting', 'better-payment'),
303 // 'field' => __('Field', 'better-payment'),
304 // 'required' => __('Required', 'better-payment'),
305 'field_is_required' => __('field is required', 'better-payment'),
306 'business_email_is_required' => __('Business Email is required', 'better-payment'),
307 'payment_amount_field_is_required' => __('Payment Amount field is required', 'better-payment'),
308 'minimum_amount_is_one' => __('Minimum amount is 1', 'better-payment'),
309 'something_went_wrong' => __('Something went wrong', 'better-payment'),
310 'paypal_payment_timeout' => __('Payment verification timed out. Please contact support if your payment was charged.', 'better-payment'),
311 ],
312 'currency_symbols' => $this->get_currency_symbols_list(),
313 ]);
314
315 if (is_admin() && function_exists('get_current_screen')) {
316 $screen = get_current_screen();
317 $hook = $screen && isset($screen->id) ? $screen->id : null;
318 if ($hook && $hook == 'elementor_page_elementor-element-manager') {
319 wp_enqueue_style('bp-icon-admin', BETTER_PAYMENT_ASSETS . '/icon/style.min.css', array(), BETTER_PAYMENT_VERSION);
320 }
321 }
322 }
323 }
324