Passed
Push — master ( 17dbd8...fc5da4 )
by Brian
06:03
created
includes/gateways/class-getpaid-bank-transfer-gateway.php 1 patch
Indentation   +244 added lines, -244 removed lines patch added patch discarded remove patch
@@ -13,47 +13,47 @@  discard block
 block discarded – undo
13 13
 class GetPaid_Bank_Transfer_Gateway extends GetPaid_Payment_Gateway {
14 14
 
15 15
     /**
16
-	 * Payment method id.
17
-	 *
18
-	 * @var string
19
-	 */
16
+     * Payment method id.
17
+     *
18
+     * @var string
19
+     */
20 20
     public $id = 'bank_transfer';
21 21
 
22
-	/**
23
-	 * An array of features that this gateway supports.
24
-	 *
25
-	 * @var array
26
-	 */
27
-	protected $supports = array(
28
-		'subscription',
29
-		'addons',
30
-		'single_subscription_group',
31
-		'multiple_subscription_groups',
32
-		'subscription_date_change',
33
-		'subscription_bill_times_change',
34
-	);
22
+    /**
23
+     * An array of features that this gateway supports.
24
+     *
25
+     * @var array
26
+     */
27
+    protected $supports = array(
28
+        'subscription',
29
+        'addons',
30
+        'single_subscription_group',
31
+        'multiple_subscription_groups',
32
+        'subscription_date_change',
33
+        'subscription_bill_times_change',
34
+    );
35
+
36
+    /**
37
+     * Payment method order.
38
+     *
39
+     * @var int
40
+     */
41
+    public $order = 8;
35 42
 
36 43
     /**
37
-	 * Payment method order.
38
-	 *
39
-	 * @var int
40
-	 */
41
-	public $order = 8;
42
-
43
-	/**
44
-	 * Bank transfer instructions.
45
-	 */
46
-	public $instructions;
47
-
48
-	/**
49
-	 * Locale array.
50
-	 */
51
-	public $locale;
44
+     * Bank transfer instructions.
45
+     */
46
+    public $instructions;
52 47
 
53 48
     /**
54
-	 * Class constructor.
55
-	 */
56
-	public function __construct() {
49
+     * Locale array.
50
+     */
51
+    public $locale;
52
+
53
+    /**
54
+     * Class constructor.
55
+     */
56
+    public function __construct() {
57 57
         parent::__construct();
58 58
 
59 59
         $this->title                = __( 'Direct bank transfer', 'invoicing' );
@@ -61,24 +61,24 @@  discard block
 block discarded – undo
61 61
         $this->checkout_button_text = __( 'Proceed', 'invoicing' );
62 62
         $this->instructions         = apply_filters( 'wpinv_bank_instructions', $this->get_option( 'info' ) );
63 63
 
64
-		add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) );
65
-		add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 );
66
-		add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 );
67
-		add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 );
68
-		add_action( 'getpaid_should_renew_subscription', array( $this, 'maybe_renew_subscription' ) );
69
-		add_action( 'getpaid_invoice_status_publish', array( $this, 'invoice_paid' ), 20 );
64
+        add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) );
65
+        add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 );
66
+        add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 );
67
+        add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 );
68
+        add_action( 'getpaid_should_renew_subscription', array( $this, 'maybe_renew_subscription' ) );
69
+        add_action( 'getpaid_invoice_status_publish', array( $this, 'invoice_paid' ), 20 );
70 70
 
71 71
     }
72 72
 
73 73
     /**
74
-	 * Process Payment.
75
-	 *
76
-	 * @param WPInv_Invoice $invoice Invoice.
77
-	 * @param array $submission_data Posted checkout fields.
78
-	 * @param GetPaid_Payment_Form_Submission $submission Checkout submission.
79
-	 * @return array
80
-	 */
81
-	public function process_payment( $invoice, $submission_data, $submission ) {
74
+     * Process Payment.
75
+     *
76
+     * @param WPInv_Invoice $invoice Invoice.
77
+     * @param array $submission_data Posted checkout fields.
78
+     * @param GetPaid_Payment_Form_Submission $submission Checkout submission.
79
+     * @return array
80
+     */
81
+    public function process_payment( $invoice, $submission_data, $submission ) {
82 82
 
83 83
         // Add a transaction id.
84 84
         $invoice->set_transaction_id( $invoice->generate_key( 'bt_' ) );
@@ -99,66 +99,66 @@  discard block
 block discarded – undo
99 99
     }
100 100
 
101 101
     /**
102
-	 * Output for the order received page.
103
-	 *
104
-	 * @param WPInv_Invoice $invoice Invoice.
105
-	 */
106
-	public function thankyou_page( $invoice ) {
102
+     * Output for the order received page.
103
+     *
104
+     * @param WPInv_Invoice $invoice Invoice.
105
+     */
106
+    public function thankyou_page( $invoice ) {
107 107
 
108 108
         if ( 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) {
109 109
 
110
-			echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL;
110
+            echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL;
111 111
 
112 112
             if ( ! empty( $this->instructions ) ) {
113 113
                 echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) );
114
-			}
114
+            }
115 115
 
116
-			$this->bank_details( $invoice );
116
+            $this->bank_details( $invoice );
117 117
 
118
-			echo '</div>';
118
+            echo '</div>';
119 119
 
120 120
         }
121 121
 
122
-	}
122
+    }
123 123
 
124 124
     /**
125
-	 * Add content to the WPI emails.
126
-	 *
127
-	 * @param WPInv_Invoice $invoice Invoice.
128
-	 * @param string     $email_type Email format: plain text or HTML.
129
-	 * @param bool     $sent_to_admin Sent to admin.
130
-	 */
131
-	public function email_instructions( $invoice, $email_type, $sent_to_admin ) {
125
+     * Add content to the WPI emails.
126
+     *
127
+     * @param WPInv_Invoice $invoice Invoice.
128
+     * @param string     $email_type Email format: plain text or HTML.
129
+     * @param bool     $sent_to_admin Sent to admin.
130
+     */
131
+    public function email_instructions( $invoice, $email_type, $sent_to_admin ) {
132 132
 
133
-		if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) {
133
+        if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) {
134 134
 
135
-			echo '<div class="wpi-email-row getpaid-bank-transfer-details">';
135
+            echo '<div class="wpi-email-row getpaid-bank-transfer-details">';
136 136
 
137
-			if ( $this->instructions ) {
138
-				echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL );
137
+            if ( $this->instructions ) {
138
+                echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL );
139 139
             }
140 140
 
141
-			$this->bank_details( $invoice );
141
+            $this->bank_details( $invoice );
142 142
 
143
-			echo '</div>';
143
+            echo '</div>';
144 144
 
145
-		}
145
+        }
146 146
 
147 147
     }
148 148
 
149 149
     /**
150
-	 * Get bank details and place into a list format.
151
-	 *
152
-	 * @param WPInv_Invoice $invoice Invoice.
153
-	 */
154
-	protected function bank_details( $invoice ) {
150
+     * Get bank details and place into a list format.
151
+     *
152
+     * @param WPInv_Invoice $invoice Invoice.
153
+     */
154
+    protected function bank_details( $invoice ) {
155 155
 
156
-		// Get the invoice country and country $locale.
157
-		$country = $invoice->get_country();
158
-		$locale  = $this->get_country_locale();
156
+        // Get the invoice country and country $locale.
157
+        $country = $invoice->get_country();
158
+        $locale  = $this->get_country_locale();
159 159
 
160
-		// Get sortcode label in the $locale array and use appropriate one.
161
-		$sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
160
+        // Get sortcode label in the $locale array and use appropriate one.
161
+        $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
162 162
 
163 163
         $bank_fields = array(
164 164
             'ac_name'   => __( 'Account Name', 'invoicing' ),
@@ -177,11 +177,11 @@  discard block
 block discarded – undo
177 177
 
178 178
             if ( ! empty( $value ) ) {
179 179
                 $bank_info[ $field ] = array(
180
-					'label' => $label,
181
-					'value' => $value,
182
-				);
180
+                    'label' => $label,
181
+                    'value' => $value,
182
+                );
183 183
             }
184
-		}
184
+        }
185 185
 
186 186
         $bank_info = apply_filters( 'wpinv_bank_info', $bank_info, $invoice );
187 187
 
@@ -189,139 +189,139 @@  discard block
 block discarded – undo
189 189
             return;
190 190
         }
191 191
 
192
-		echo '<h3 class="getpaid-bank-transfer-title"> ' . esc_html( apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ), $invoice ) ) . '</h3>' . PHP_EOL;
192
+        echo '<h3 class="getpaid-bank-transfer-title"> ' . esc_html( apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ), $invoice ) ) . '</h3>' . PHP_EOL;
193
+
194
+        echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL;
195
+
196
+        foreach ( $bank_info as $key => $data ) {
197
+            echo "<tr class='getpaid-bank-transfer-" . esc_attr( $key ) . "'><th class='font-weight-bold'>" . wp_kses_post( $data['label'] ) . "</th><td class='w-75'>" . wp_kses_post( wptexturize( $data['value'] ) ) . '</td></tr>' . PHP_EOL;
198
+        }
199
+
200
+        echo '</table>';
201
+
202
+    }
193 203
 
194
-		echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL;
204
+    /**
205
+     * Get country locale if localized.
206
+     *
207
+     * @return array
208
+     */
209
+    public function get_country_locale() {
210
+
211
+        if ( empty( $this->locale ) ) {
212
+
213
+            // Locale information to be used - only those that are not 'Sort Code'.
214
+            $this->locale = apply_filters(
215
+                'getpaid_get_bank_transfer_locale',
216
+                array(
217
+                    'AU' => array(
218
+                        'sortcode' => array(
219
+                            'label' => __( 'BSB', 'invoicing' ),
220
+                        ),
221
+                    ),
222
+                    'CA' => array(
223
+                        'sortcode' => array(
224
+                            'label' => __( 'Bank transit number', 'invoicing' ),
225
+                        ),
226
+                    ),
227
+                    'IN' => array(
228
+                        'sortcode' => array(
229
+                            'label' => __( 'IFSC', 'invoicing' ),
230
+                        ),
231
+                    ),
232
+                    'IT' => array(
233
+                        'sortcode' => array(
234
+                            'label' => __( 'Branch sort', 'invoicing' ),
235
+                        ),
236
+                    ),
237
+                    'NZ' => array(
238
+                        'sortcode' => array(
239
+                            'label' => __( 'Bank code', 'invoicing' ),
240
+                        ),
241
+                    ),
242
+                    'SE' => array(
243
+                        'sortcode' => array(
244
+                            'label' => __( 'Bank code', 'invoicing' ),
245
+                        ),
246
+                    ),
247
+                    'US' => array(
248
+                        'sortcode' => array(
249
+                            'label' => __( 'Routing number', 'invoicing' ),
250
+                        ),
251
+                    ),
252
+                    'ZA' => array(
253
+                        'sortcode' => array(
254
+                            'label' => __( 'Branch code', 'invoicing' ),
255
+                        ),
256
+                    ),
257
+                )
258
+            );
195 259
 
196
-		foreach ( $bank_info as $key => $data ) {
197
-			echo "<tr class='getpaid-bank-transfer-" . esc_attr( $key ) . "'><th class='font-weight-bold'>" . wp_kses_post( $data['label'] ) . "</th><td class='w-75'>" . wp_kses_post( wptexturize( $data['value'] ) ) . '</td></tr>' . PHP_EOL;
198
-		}
260
+        }
199 261
 
200
-		echo '</table>';
262
+        return $this->locale;
201 263
 
202 264
     }
203 265
 
204 266
     /**
205
-	 * Get country locale if localized.
206
-	 *
207
-	 * @return array
208
-	 */
209
-	public function get_country_locale() {
210
-
211
-		if ( empty( $this->locale ) ) {
212
-
213
-			// Locale information to be used - only those that are not 'Sort Code'.
214
-			$this->locale = apply_filters(
215
-				'getpaid_get_bank_transfer_locale',
216
-				array(
217
-					'AU' => array(
218
-						'sortcode' => array(
219
-							'label' => __( 'BSB', 'invoicing' ),
220
-						),
221
-					),
222
-					'CA' => array(
223
-						'sortcode' => array(
224
-							'label' => __( 'Bank transit number', 'invoicing' ),
225
-						),
226
-					),
227
-					'IN' => array(
228
-						'sortcode' => array(
229
-							'label' => __( 'IFSC', 'invoicing' ),
230
-						),
231
-					),
232
-					'IT' => array(
233
-						'sortcode' => array(
234
-							'label' => __( 'Branch sort', 'invoicing' ),
235
-						),
236
-					),
237
-					'NZ' => array(
238
-						'sortcode' => array(
239
-							'label' => __( 'Bank code', 'invoicing' ),
240
-						),
241
-					),
242
-					'SE' => array(
243
-						'sortcode' => array(
244
-							'label' => __( 'Bank code', 'invoicing' ),
245
-						),
246
-					),
247
-					'US' => array(
248
-						'sortcode' => array(
249
-							'label' => __( 'Routing number', 'invoicing' ),
250
-						),
251
-					),
252
-					'ZA' => array(
253
-						'sortcode' => array(
254
-							'label' => __( 'Branch code', 'invoicing' ),
255
-						),
256
-					),
257
-				)
258
-			);
259
-
260
-		}
261
-
262
-		return $this->locale;
263
-
264
-	}
265
-
266
-	/**
267
-	 * Filters the gateway settings.
268
-	 *
269
-	 * @param array $admin_settings
270
-	 */
271
-	public function admin_settings( $admin_settings ) {
267
+     * Filters the gateway settings.
268
+     *
269
+     * @param array $admin_settings
270
+     */
271
+    public function admin_settings( $admin_settings ) {
272 272
 
273 273
         $admin_settings['bank_transfer_desc']['std']    = __( "Make your payment directly into our bank account. Please use your Invoice Number as the payment reference. Your invoice won't be processed until the funds have cleared in our account.", 'invoicing' );
274
-		$admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' );
274
+        $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' );
275 275
 
276
-		$locale  = $this->get_country_locale();
276
+        $locale  = $this->get_country_locale();
277 277
 
278
-		// Get sortcode label in the $locale array and use appropriate one.
279
-		$country  = wpinv_default_billing_country();
280
-		$sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
278
+        // Get sortcode label in the $locale array and use appropriate one.
279
+        $country  = wpinv_default_billing_country();
280
+        $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
281 281
 
282
-		$admin_settings['bank_transfer_ac_name'] = array(
282
+        $admin_settings['bank_transfer_ac_name'] = array(
283 283
             'type' => 'text',
284 284
             'id'   => 'bank_transfer_ac_name',
285 285
             'name' => __( 'Account Name', 'invoicing' ),
286
-		);
286
+        );
287 287
 
288
-		$admin_settings['bank_transfer_ac_no'] = array(
288
+        $admin_settings['bank_transfer_ac_no'] = array(
289 289
             'type' => 'text',
290 290
             'id'   => 'bank_transfer_ac_no',
291 291
             'name' => __( 'Account Number', 'invoicing' ),
292
-		);
292
+        );
293 293
 
294
-		$admin_settings['bank_transfer_bank_name'] = array(
294
+        $admin_settings['bank_transfer_bank_name'] = array(
295 295
             'type' => 'text',
296 296
             'id'   => 'bank_transfer_bank_name',
297 297
             'name' => __( 'Bank Name', 'invoicing' ),
298
-		);
298
+        );
299 299
 
300
-		$admin_settings['bank_transfer_ifsc'] = array(
300
+        $admin_settings['bank_transfer_ifsc'] = array(
301 301
             'type' => 'text',
302 302
             'id'   => 'bank_transfer_ifsc',
303 303
             'name' => __( 'IFSC Code', 'invoicing' ),
304
-		);
304
+        );
305 305
 
306
-		$admin_settings['bank_transfer_iban'] = array(
306
+        $admin_settings['bank_transfer_iban'] = array(
307 307
             'type' => 'text',
308 308
             'id'   => 'bank_transfer_iban',
309 309
             'name' => __( 'IBAN', 'invoicing' ),
310
-		);
310
+        );
311 311
 
312
-		$admin_settings['bank_transfer_bic'] = array(
312
+        $admin_settings['bank_transfer_bic'] = array(
313 313
             'type' => 'text',
314 314
             'id'   => 'bank_transfer_bic',
315 315
             'name' => __( 'BIC/Swift Code', 'invoicing' ),
316
-		);
316
+        );
317 317
 
318
-		$admin_settings['bank_transfer_sort_code'] = array(
319
-			'type' => 'text',
320
-			'id'   => 'bank_transfer_sort_code',
321
-			'name' => $sortcode,
322
-		);
318
+        $admin_settings['bank_transfer_sort_code'] = array(
319
+            'type' => 'text',
320
+            'id'   => 'bank_transfer_sort_code',
321
+            'name' => $sortcode,
322
+        );
323 323
 
324
-		$admin_settings['bank_transfer_info'] = array(
324
+        $admin_settings['bank_transfer_info'] = array(
325 325
             'id'   => 'bank_transfer_info',
326 326
             'name' => __( 'Instructions', 'invoicing' ),
327 327
             'desc' => __( 'Instructions that will be added to the thank you page and emails.', 'invoicing' ),
@@ -331,17 +331,17 @@  discard block
 block discarded – undo
331 331
             'rows' => 5,
332 332
         );
333 333
 
334
-		return $admin_settings;
335
-	}
334
+        return $admin_settings;
335
+    }
336 336
 
337
-	/**
338
-	 * Processes invoice addons.
339
-	 *
340
-	 * @param WPInv_Invoice $invoice
341
-	 * @param GetPaid_Form_Item[] $items
342
-	 * @return WPInv_Invoice
343
-	 */
344
-	public function process_addons( $invoice, $items ) {
337
+    /**
338
+     * Processes invoice addons.
339
+     *
340
+     * @param WPInv_Invoice $invoice
341
+     * @param GetPaid_Form_Item[] $items
342
+     * @return WPInv_Invoice
343
+     */
344
+    public function process_addons( $invoice, $items ) {
345 345
 
346 346
         foreach ( $items as $item ) {
347 347
             $invoice->add_item( $item );
@@ -349,67 +349,67 @@  discard block
 block discarded – undo
349 349
 
350 350
         $invoice->recalculate_total();
351 351
         $invoice->save();
352
-	}
352
+    }
353 353
 
354
-	/**
355
-	 * (Maybe) renews a bank transfer subscription profile.
356
-	 *
357
-	 *
354
+    /**
355
+     * (Maybe) renews a bank transfer subscription profile.
356
+     *
357
+     *
358 358
      * @param WPInv_Subscription $subscription
359
-	 */
360
-	public function maybe_renew_subscription( $subscription ) {
359
+     */
360
+    public function maybe_renew_subscription( $subscription ) {
361 361
 
362 362
         // Ensure its our subscription && it's active.
363 363
         if ( $this->id === $subscription->get_gateway() && $subscription->has_status( 'active trialling' ) ) {
364
-			$subscription->create_payment();
364
+            $subscription->create_payment();
365 365
         }
366 366
 
367 367
     }
368 368
 
369
-	/**
370
-	 * Process a bank transfer payment.
371
-	 *
372
-	 *
369
+    /**
370
+     * Process a bank transfer payment.
371
+     *
372
+     *
373 373
      * @param WPInv_Invoice $invoice
374
-	 */
375
-	public function invoice_paid( $invoice ) {
376
-
377
-		// Abort if not paid by bank transfer.
378
-		if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) {
379
-			return;
380
-		}
381
-
382
-		// Is it a parent payment?
383
-		if ( 0 == $invoice->get_parent_id() ) {
384
-
385
-			// (Maybe) activate subscriptions.
386
-			$subscriptions = getpaid_get_invoice_subscriptions( $invoice );
387
-
388
-			if ( ! empty( $subscriptions ) ) {
389
-				$subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions );
390
-
391
-				foreach ( $subscriptions as $subscription ) {
392
-					if ( $subscription->exists() ) {
393
-						$duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() );
394
-						$expiry   = gmdate( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) );
395
-
396
-						$subscription->set_next_renewal_date( $expiry );
397
-						$subscription->set_date_created( current_time( 'mysql' ) );
398
-						$subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() );
399
-						$subscription->activate();
400
-					}
401
-				}
402
-			}
403
-		} else {
404
-
405
-			$subscription = getpaid_get_subscription( $invoice->get_subscription_id() );
406
-
407
-			// Renew the subscription.
408
-			if ( $subscription && $subscription->exists() ) {
409
-				$subscription->add_payment( array(), $invoice );
410
-				$subscription->renew( strtotime( $invoice->get_date_created() ) );
411
-			}
412
-		}
374
+     */
375
+    public function invoice_paid( $invoice ) {
376
+
377
+        // Abort if not paid by bank transfer.
378
+        if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) {
379
+            return;
380
+        }
381
+
382
+        // Is it a parent payment?
383
+        if ( 0 == $invoice->get_parent_id() ) {
384
+
385
+            // (Maybe) activate subscriptions.
386
+            $subscriptions = getpaid_get_invoice_subscriptions( $invoice );
387
+
388
+            if ( ! empty( $subscriptions ) ) {
389
+                $subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions );
390
+
391
+                foreach ( $subscriptions as $subscription ) {
392
+                    if ( $subscription->exists() ) {
393
+                        $duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() );
394
+                        $expiry   = gmdate( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) );
395
+
396
+                        $subscription->set_next_renewal_date( $expiry );
397
+                        $subscription->set_date_created( current_time( 'mysql' ) );
398
+                        $subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() );
399
+                        $subscription->activate();
400
+                    }
401
+                }
402
+            }
403
+        } else {
404
+
405
+            $subscription = getpaid_get_subscription( $invoice->get_subscription_id() );
406
+
407
+            // Renew the subscription.
408
+            if ( $subscription && $subscription->exists() ) {
409
+                $subscription->add_payment( array(), $invoice );
410
+                $subscription->renew( strtotime( $invoice->get_date_created() ) );
411
+            }
412
+        }
413 413
 
414 414
     }
415 415
 
Please login to merge, or discard this patch.
vendor/ayecode/wp-ayecode-ui/includes/inc/bs-conversion.php 1 patch
Indentation   +53 added lines, -53 removed lines patch added patch discarded remove patch
@@ -14,64 +14,64 @@
 block discarded – undo
14 14
  * @return array|mixed|string|string[]
15 15
  */
16 16
 function aui_bs_convert_sd_output( $output, $instance = '', $args = '', $sd = '' ) {
17
-	global $aui_bs5;
17
+    global $aui_bs5;
18 18
 
19
-	if ( $aui_bs5 ) {
19
+    if ( $aui_bs5 ) {
20 20
 
21
-		$convert = array(
22
-			'ml-'                   => 'ms-',
23
-			'mr-'                   => 'me-',
24
-			'pl-'                   => 'ps-',
25
-			'pr-'                   => 'pe-',
26
-			' form-row'              => ' row',
27
-			' embed-responsive-item' => '',
28
-			' embed-responsive' => ' ratio',
29
-			'-1by1'    => '-1x1',
30
-			'-4by3'    => '-4x3',
31
-			'-16by9'    => '-16x9',
32
-			'-21by9'    => '-21x9',
33
-			'geodir-lightbox-image' => 'aui-lightbox-image',
34
-			' badge-'   => ' text-bg-',
35
-			'form-group'   => 'mb-3',
36
-			'custom-select'   => 'form-select',
37
-			'float-left'   => 'float-start',
38
-			'float-right'   => 'float-end',
39
-			'text-left'    => 'text-start',
40
-			'text-sm-left'    => 'text-sm-start',
41
-			'text-md-left'    => 'text-md-start',
42
-			'text-lg-left'    => 'text-lg-start',
43
-			'text-right'    => 'text-end',
44
-			'text-sm-right'    => 'text-sm-end',
45
-			'text-md-right'    => 'text-md-end',
46
-			'text-lg-right'    => 'text-lg-end',
47
-			'border-right'    => 'border-end',
48
-			'border-left'    => 'border-start',
49
-			'font-weight-'  => 'fw-',
50
-			'btn-block'     => 'w-100',
51
-			'rounded-left'  => 'rounded-start',
52
-			'rounded-right'  => 'rounded-end',
53
-			'font-italic' => 'fst-italic',
21
+        $convert = array(
22
+            'ml-'                   => 'ms-',
23
+            'mr-'                   => 'me-',
24
+            'pl-'                   => 'ps-',
25
+            'pr-'                   => 'pe-',
26
+            ' form-row'              => ' row',
27
+            ' embed-responsive-item' => '',
28
+            ' embed-responsive' => ' ratio',
29
+            '-1by1'    => '-1x1',
30
+            '-4by3'    => '-4x3',
31
+            '-16by9'    => '-16x9',
32
+            '-21by9'    => '-21x9',
33
+            'geodir-lightbox-image' => 'aui-lightbox-image',
34
+            ' badge-'   => ' text-bg-',
35
+            'form-group'   => 'mb-3',
36
+            'custom-select'   => 'form-select',
37
+            'float-left'   => 'float-start',
38
+            'float-right'   => 'float-end',
39
+            'text-left'    => 'text-start',
40
+            'text-sm-left'    => 'text-sm-start',
41
+            'text-md-left'    => 'text-md-start',
42
+            'text-lg-left'    => 'text-lg-start',
43
+            'text-right'    => 'text-end',
44
+            'text-sm-right'    => 'text-sm-end',
45
+            'text-md-right'    => 'text-md-end',
46
+            'text-lg-right'    => 'text-lg-end',
47
+            'border-right'    => 'border-end',
48
+            'border-left'    => 'border-start',
49
+            'font-weight-'  => 'fw-',
50
+            'btn-block'     => 'w-100',
51
+            'rounded-left'  => 'rounded-start',
52
+            'rounded-right'  => 'rounded-end',
53
+            'font-italic' => 'fst-italic',
54 54
 
55 55
 //			'custom-control custom-checkbox'    => 'form-check',
56
-			// data
57
-			' data-toggle=' => ' data-bs-toggle=',
58
-			'data-ride=' => 'data-bs-ride=',
59
-			'data-controlnav=' => 'data-bs-controlnav=',
60
-			'data-slide='   => 'data-bs-slide=',
61
-			'data-slide-to=' => 'data-bs-slide-to=',
62
-			'data-target='  => 'data-bs-target=',
63
-			'data-dismiss="modal"'  => 'data-bs-dismiss="modal"',
64
-			'class="close"' => 'class="btn-close"',
65
-			'<span aria-hidden="true">&times;</span>' => '',
66
-		);
67
-		$output  = str_replace(
68
-			array_keys( $convert ),
69
-			array_values( $convert ),
70
-			$output
71
-		);
72
-	}
56
+            // data
57
+            ' data-toggle=' => ' data-bs-toggle=',
58
+            'data-ride=' => 'data-bs-ride=',
59
+            'data-controlnav=' => 'data-bs-controlnav=',
60
+            'data-slide='   => 'data-bs-slide=',
61
+            'data-slide-to=' => 'data-bs-slide-to=',
62
+            'data-target='  => 'data-bs-target=',
63
+            'data-dismiss="modal"'  => 'data-bs-dismiss="modal"',
64
+            'class="close"' => 'class="btn-close"',
65
+            '<span aria-hidden="true">&times;</span>' => '',
66
+        );
67
+        $output  = str_replace(
68
+            array_keys( $convert ),
69
+            array_values( $convert ),
70
+            $output
71
+        );
72
+    }
73 73
 
74
-	return $output;
74
+    return $output;
75 75
 }
76 76
 
77 77
 add_filter( 'wp_super_duper_widget_output', 'aui_bs_convert_sd_output', 10, 4 ); //$output, $instance, $args, $this
Please login to merge, or discard this patch.
vendor/ayecode/wp-super-duper/wp-super-duper.php 1 patch
Indentation   +2298 added lines, -2298 removed lines patch added patch discarded remove patch
@@ -1,60 +1,60 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 if ( ! defined( 'ABSPATH' ) ) {
3
-	exit;
3
+    exit;
4 4
 }
5 5
 
6 6
 if ( ! class_exists( 'WP_Super_Duper' ) ) {
7 7
 
8
-	define( 'SUPER_DUPER_VER', '1.1.27' );
9
-
10
-	/**
11
-	 * A Class to be able to create a Widget, Shortcode or Block to be able to output content for WordPress.
12
-	 *
13
-	 * Should not be called direct but extended instead.
14
-	 *
15
-	 * Class WP_Super_Duper
16
-	 * @since 1.0.16 change log moved to file change-log.txt - CHANGED
17
-	 * @ver 1.1.1
18
-	 */
19
-	class WP_Super_Duper extends WP_Widget {
20
-
21
-		public $version = SUPER_DUPER_VER;
22
-		public $font_awesome_icon_version = "5.11.2";
23
-		public $block_code;
24
-		public $options;
25
-		public $base_id;
26
-		public $settings_hash;
27
-		public $arguments = array();
28
-		public $instance = array();
29
-		private $class_name;
30
-
31
-		/**
32
-		 * The relative url to the current folder.
33
-		 *
34
-		 * @var string
35
-		 */
36
-		public $url = '';
37
-
38
-		/**
39
-		 * Take the array options and use them to build.
40
-		 */
41
-		public function __construct( $options ) {
42
-			global $sd_widgets;
43
-
44
-			$sd_widgets[ $options['base_id'] ] = array(
45
-				'name'       => $options['name'],
46
-				'class_name' => $options['class_name'],
47
-				'output_types' => !empty($options['output_types']) ? $options['output_types'] : array()
48
-			);
49
-			$this->base_id                     = $options['base_id'];
50
-			// lets filter the options before we do anything
51
-			$options       = apply_filters( "wp_super_duper_options", $options );
52
-			$options       = apply_filters( "wp_super_duper_options_{$this->base_id}", $options );
53
-			$options       = $this->add_name_from_key( $options );
54
-			$this->options = $options;
55
-
56
-			$this->base_id   = $options['base_id'];
57
-			$this->arguments = isset( $options['arguments'] ) ? $options['arguments'] : array();
8
+    define( 'SUPER_DUPER_VER', '1.1.27' );
9
+
10
+    /**
11
+     * A Class to be able to create a Widget, Shortcode or Block to be able to output content for WordPress.
12
+     *
13
+     * Should not be called direct but extended instead.
14
+     *
15
+     * Class WP_Super_Duper
16
+     * @since 1.0.16 change log moved to file change-log.txt - CHANGED
17
+     * @ver 1.1.1
18
+     */
19
+    class WP_Super_Duper extends WP_Widget {
20
+
21
+        public $version = SUPER_DUPER_VER;
22
+        public $font_awesome_icon_version = "5.11.2";
23
+        public $block_code;
24
+        public $options;
25
+        public $base_id;
26
+        public $settings_hash;
27
+        public $arguments = array();
28
+        public $instance = array();
29
+        private $class_name;
30
+
31
+        /**
32
+         * The relative url to the current folder.
33
+         *
34
+         * @var string
35
+         */
36
+        public $url = '';
37
+
38
+        /**
39
+         * Take the array options and use them to build.
40
+         */
41
+        public function __construct( $options ) {
42
+            global $sd_widgets;
43
+
44
+            $sd_widgets[ $options['base_id'] ] = array(
45
+                'name'       => $options['name'],
46
+                'class_name' => $options['class_name'],
47
+                'output_types' => !empty($options['output_types']) ? $options['output_types'] : array()
48
+            );
49
+            $this->base_id                     = $options['base_id'];
50
+            // lets filter the options before we do anything
51
+            $options       = apply_filters( "wp_super_duper_options", $options );
52
+            $options       = apply_filters( "wp_super_duper_options_{$this->base_id}", $options );
53
+            $options       = $this->add_name_from_key( $options );
54
+            $this->options = $options;
55
+
56
+            $this->base_id   = $options['base_id'];
57
+            $this->arguments = isset( $options['arguments'] ) ? $options['arguments'] : array();
58 58
 
59 59
             // nested blocks can't work as a widget
60 60
             if(!empty($this->options['nested-block'])){
@@ -65,235 +65,235 @@  discard block
 block discarded – undo
65 65
                 }
66 66
             }
67 67
 
68
-			// init parent
69
-			if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){
68
+            // init parent
69
+            if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){
70 70
                 parent::__construct( $options['base_id'], $options['name'], $options['widget_ops'] );
71
-			}
71
+            }
72 72
 
73 73
 
74
-			if ( isset( $options['class_name'] ) ) {
75
-				// register widget
76
-				$this->class_name = $options['class_name'];
74
+            if ( isset( $options['class_name'] ) ) {
75
+                // register widget
76
+                $this->class_name = $options['class_name'];
77 77
 
78
-				// register shortcode, this needs to be done even for blocks and widgets
78
+                // register shortcode, this needs to be done even for blocks and widgets
79 79
                 $this->register_shortcode();
80 80
 
81 81
 
82
-				// Fusion Builder (avada) support
83
-				if ( function_exists( 'fusion_builder_map' ) ) {
84
-					add_action( 'init', array( $this, 'register_fusion_element' ) );
85
-				}
82
+                // Fusion Builder (avada) support
83
+                if ( function_exists( 'fusion_builder_map' ) ) {
84
+                    add_action( 'init', array( $this, 'register_fusion_element' ) );
85
+                }
86 86
 
87
-				// register block
88
-				if(empty($this->options['output_types']) || in_array('block',$this->options['output_types'])){
89
-				    add_action( 'admin_enqueue_scripts', array( $this, 'register_block' ) );
87
+                // register block
88
+                if(empty($this->options['output_types']) || in_array('block',$this->options['output_types'])){
89
+                    add_action( 'admin_enqueue_scripts', array( $this, 'register_block' ) );
90 90
                 }
91
-			}
91
+            }
92 92
 
93
-			// add the CSS and JS we need ONCE
94
-			global $sd_widget_scripts;
93
+            // add the CSS and JS we need ONCE
94
+            global $sd_widget_scripts;
95 95
 
96
-			if ( ! $sd_widget_scripts ) {
97
-				wp_add_inline_script( 'admin-widgets', $this->widget_js() );
98
-				wp_add_inline_script( 'customize-controls', $this->widget_js() );
99
-				wp_add_inline_style( 'widgets', $this->widget_css() );
96
+            if ( ! $sd_widget_scripts ) {
97
+                wp_add_inline_script( 'admin-widgets', $this->widget_js() );
98
+                wp_add_inline_script( 'customize-controls', $this->widget_js() );
99
+                wp_add_inline_style( 'widgets', $this->widget_css() );
100 100
 
101
-				// maybe add elementor editor styles
102
-				add_action( 'elementor/editor/after_enqueue_styles', array( $this, 'elementor_editor_styles' ) );
101
+                // maybe add elementor editor styles
102
+                add_action( 'elementor/editor/after_enqueue_styles', array( $this, 'elementor_editor_styles' ) );
103 103
 
104
-				$sd_widget_scripts = true;
104
+                $sd_widget_scripts = true;
105 105
 
106
-				// add shortcode insert button once
107
-				add_action( 'media_buttons', array( $this, 'shortcode_insert_button' ) );
108
-				// generatepress theme sections compatibility
109
-				if ( function_exists( 'generate_sections_sections_metabox' ) ) {
110
-					add_action( 'generate_sections_metabox', array( $this, 'shortcode_insert_button_script' ) );
111
-				}
112
-				/* Load script on Divi theme builder page */
113
-				if ( function_exists( 'et_builder_is_tb_admin_screen' ) && et_builder_is_tb_admin_screen() ) {
114
-					add_thickbox();
115
-					add_action( 'admin_footer', array( $this, 'shortcode_insert_button_script' ) );
116
-				}
106
+                // add shortcode insert button once
107
+                add_action( 'media_buttons', array( $this, 'shortcode_insert_button' ) );
108
+                // generatepress theme sections compatibility
109
+                if ( function_exists( 'generate_sections_sections_metabox' ) ) {
110
+                    add_action( 'generate_sections_metabox', array( $this, 'shortcode_insert_button_script' ) );
111
+                }
112
+                /* Load script on Divi theme builder page */
113
+                if ( function_exists( 'et_builder_is_tb_admin_screen' ) && et_builder_is_tb_admin_screen() ) {
114
+                    add_thickbox();
115
+                    add_action( 'admin_footer', array( $this, 'shortcode_insert_button_script' ) );
116
+                }
117 117
 
118
-				if ( $this->is_preview() ) {
119
-					add_action( 'wp_footer', array( $this, 'shortcode_insert_button_script' ) );
120
-					// this makes the insert button work for elementor
121
-					add_action( 'elementor/editor/after_enqueue_scripts', array(
122
-						$this,
123
-						'shortcode_insert_button_script'
124
-					) ); // for elementor
125
-				}
126
-				// this makes the insert button work for cornerstone
127
-				add_action( 'wp_print_footer_scripts', array( __CLASS__, 'maybe_cornerstone_builder' ) );
118
+                if ( $this->is_preview() ) {
119
+                    add_action( 'wp_footer', array( $this, 'shortcode_insert_button_script' ) );
120
+                    // this makes the insert button work for elementor
121
+                    add_action( 'elementor/editor/after_enqueue_scripts', array(
122
+                        $this,
123
+                        'shortcode_insert_button_script'
124
+                    ) ); // for elementor
125
+                }
126
+                // this makes the insert button work for cornerstone
127
+                add_action( 'wp_print_footer_scripts', array( __CLASS__, 'maybe_cornerstone_builder' ) );
128 128
 
129
-				add_action( 'wp_ajax_super_duper_get_widget_settings', array( __CLASS__, 'get_widget_settings' ) );
130
-				add_action( 'wp_ajax_super_duper_get_picker', array( __CLASS__, 'get_picker' ) );
129
+                add_action( 'wp_ajax_super_duper_get_widget_settings', array( __CLASS__, 'get_widget_settings' ) );
130
+                add_action( 'wp_ajax_super_duper_get_picker', array( __CLASS__, 'get_picker' ) );
131 131
 
132
-				// add generator text to head
133
-				add_action( 'admin_head', array( $this, 'generator' ) );
134
-				add_action( 'wp_head', array( $this, 'generator' ) );
135
-			}
132
+                // add generator text to head
133
+                add_action( 'admin_head', array( $this, 'generator' ) );
134
+                add_action( 'wp_head', array( $this, 'generator' ) );
135
+            }
136 136
 
137
-			do_action( 'wp_super_duper_widget_init', $options, $this );
138
-		}
137
+            do_action( 'wp_super_duper_widget_init', $options, $this );
138
+        }
139 139
 
140 140
         /**
141 141
          * The register widget function
142 142
          * @return void
143 143
          */
144
-		public function _register() {
144
+        public function _register() {
145 145
             if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){
146 146
                 parent::_register();
147
-			}
148
-		}
147
+            }
148
+        }
149 149
 
150
-		/**
151
-		 * Add our widget CSS to elementor editor.
152
-		 */
153
-		public function elementor_editor_styles() {
154
-			wp_add_inline_style( 'elementor-editor', $this->widget_css( false ) );
155
-		}
150
+        /**
151
+         * Add our widget CSS to elementor editor.
152
+         */
153
+        public function elementor_editor_styles() {
154
+            wp_add_inline_style( 'elementor-editor', $this->widget_css( false ) );
155
+        }
156 156
 
157
-		public function register_fusion_element() {
157
+        public function register_fusion_element() {
158 158
 
159
-			$options = $this->options;
159
+            $options = $this->options;
160 160
 
161
-			if ( $this->base_id ) {
161
+            if ( $this->base_id ) {
162 162
 
163
-				$params = $this->get_fusion_params();
163
+                $params = $this->get_fusion_params();
164 164
 
165
-				$args = array(
166
-					'name'            => $options['name'],
167
-					'shortcode'       => $this->base_id,
168
-					'icon'            => $options['block-icon'] ? $options['block-icon'] : 'far fa-square',
169
-					'allow_generator' => true,
170
-				);
165
+                $args = array(
166
+                    'name'            => $options['name'],
167
+                    'shortcode'       => $this->base_id,
168
+                    'icon'            => $options['block-icon'] ? $options['block-icon'] : 'far fa-square',
169
+                    'allow_generator' => true,
170
+                );
171 171
 
172
-				if ( ! empty( $params ) ) {
173
-					$args['params'] = $params;
174
-				}
172
+                if ( ! empty( $params ) ) {
173
+                    $args['params'] = $params;
174
+                }
175 175
 
176
-				fusion_builder_map( $args );
177
-			}
176
+                fusion_builder_map( $args );
177
+            }
178 178
 
179
-		}
179
+        }
180 180
 
181
-		public function get_fusion_params() {
182
-			$params    = array();
183
-			$arguments = $this->get_arguments();
184
-
185
-			if ( ! empty( $arguments ) ) {
186
-				foreach ( $arguments as $key => $val ) {
187
-					$param = array();
188
-					// type
189
-					$param['type'] = str_replace(
190
-						array(
191
-							"text",
192
-							"number",
193
-							"email",
194
-							"color",
195
-							"checkbox"
196
-						),
197
-						array(
198
-							"textfield",
199
-							"textfield",
200
-							"textfield",
201
-							"colorpicker",
202
-							"select",
203
-
204
-						),
205
-						$val['type'] );
206
-
207
-					// multiselect
208
-					if ( $val['type'] == 'multiselect' || ( ( $param['type'] == 'select' || $val['type'] == 'select' ) && ! empty( $val['multiple'] ) ) ) {
209
-						$param['type']     = 'multiple_select';
210
-						$param['multiple'] = true;
211
-					}
181
+        public function get_fusion_params() {
182
+            $params    = array();
183
+            $arguments = $this->get_arguments();
184
+
185
+            if ( ! empty( $arguments ) ) {
186
+                foreach ( $arguments as $key => $val ) {
187
+                    $param = array();
188
+                    // type
189
+                    $param['type'] = str_replace(
190
+                        array(
191
+                            "text",
192
+                            "number",
193
+                            "email",
194
+                            "color",
195
+                            "checkbox"
196
+                        ),
197
+                        array(
198
+                            "textfield",
199
+                            "textfield",
200
+                            "textfield",
201
+                            "colorpicker",
202
+                            "select",
212 203
 
213
-					// heading
214
-					$param['heading'] = isset( $val['title'] ) ? $val['title'] : '';
204
+                        ),
205
+                        $val['type'] );
215 206
 
216
-					// description
217
-					$param['description'] = isset( $val['desc'] ) ? $val['desc'] : '';
207
+                    // multiselect
208
+                    if ( $val['type'] == 'multiselect' || ( ( $param['type'] == 'select' || $val['type'] == 'select' ) && ! empty( $val['multiple'] ) ) ) {
209
+                        $param['type']     = 'multiple_select';
210
+                        $param['multiple'] = true;
211
+                    }
218 212
 
219
-					// param_name
220
-					$param['param_name'] = $key;
213
+                    // heading
214
+                    $param['heading'] = isset( $val['title'] ) ? $val['title'] : '';
221 215
 
222
-					// Default
223
-					$param['default'] = isset( $val['default'] ) ? $val['default'] : '';
216
+                    // description
217
+                    $param['description'] = isset( $val['desc'] ) ? $val['desc'] : '';
224 218
 
225
-					// Group
226
-					if ( isset( $val['group'] ) ) {
227
-						$param['group'] = $val['group'];
228
-					}
219
+                    // param_name
220
+                    $param['param_name'] = $key;
229 221
 
230
-					// value
231
-					if ( $val['type'] == 'checkbox' ) {
232
-						if ( isset( $val['default'] ) && $val['default'] == '0' ) {
233
-							unset( $param['default'] );
234
-						}
235
-						$param['value'] = array( '0' => __( "No" ), '1' => __( "Yes" ) );
236
-					} elseif ( $param['type'] == 'select' || $param['type'] == 'multiple_select' ) {
237
-						$param['value'] = isset( $val['options'] ) ? $val['options'] : array();
238
-					} else {
239
-						$param['value'] = isset( $val['default'] ) ? $val['default'] : '';
240
-					}
222
+                    // Default
223
+                    $param['default'] = isset( $val['default'] ) ? $val['default'] : '';
241 224
 
242
-					// setup the param
243
-					$params[] = $param;
225
+                    // Group
226
+                    if ( isset( $val['group'] ) ) {
227
+                        $param['group'] = $val['group'];
228
+                    }
244 229
 
245
-				}
246
-			}
230
+                    // value
231
+                    if ( $val['type'] == 'checkbox' ) {
232
+                        if ( isset( $val['default'] ) && $val['default'] == '0' ) {
233
+                            unset( $param['default'] );
234
+                        }
235
+                        $param['value'] = array( '0' => __( "No" ), '1' => __( "Yes" ) );
236
+                    } elseif ( $param['type'] == 'select' || $param['type'] == 'multiple_select' ) {
237
+                        $param['value'] = isset( $val['options'] ) ? $val['options'] : array();
238
+                    } else {
239
+                        $param['value'] = isset( $val['default'] ) ? $val['default'] : '';
240
+                    }
247 241
 
242
+                    // setup the param
243
+                    $params[] = $param;
248 244
 
249
-			return $params;
250
-		}
245
+                }
246
+            }
251 247
 
252
-		/**
253
-		 * Maybe insert the shortcode inserter button in the footer if we are in the cornerstone builder
254
-		 */
255
-		public static function maybe_cornerstone_builder() {
256
-			if ( did_action( 'cornerstone_before_boot_app' ) ) {
257
-				self::shortcode_insert_button_script();
258
-			}
259
-		}
260 248
 
261
-		/**
262
-		 * A function to ge the shortcode builder picker html.
263
-		 *
264
-		 * @param string $editor_id
265
-		 *
266
-		 * @return string
267
-		 */
268
-		public static function get_picker( $editor_id = '' ) {
269
-
270
-			ob_start();
271
-			if ( isset( $_POST['editor_id'] ) ) {
272
-				$editor_id = esc_attr( $_POST['editor_id'] );
273
-			} elseif ( isset( $_REQUEST['et_fb'] ) ) {
274
-				$editor_id = 'main_content_content_vb_tiny_mce';
275
-			}
249
+            return $params;
250
+        }
251
+
252
+        /**
253
+         * Maybe insert the shortcode inserter button in the footer if we are in the cornerstone builder
254
+         */
255
+        public static function maybe_cornerstone_builder() {
256
+            if ( did_action( 'cornerstone_before_boot_app' ) ) {
257
+                self::shortcode_insert_button_script();
258
+            }
259
+        }
260
+
261
+        /**
262
+         * A function to ge the shortcode builder picker html.
263
+         *
264
+         * @param string $editor_id
265
+         *
266
+         * @return string
267
+         */
268
+        public static function get_picker( $editor_id = '' ) {
269
+
270
+            ob_start();
271
+            if ( isset( $_POST['editor_id'] ) ) {
272
+                $editor_id = esc_attr( $_POST['editor_id'] );
273
+            } elseif ( isset( $_REQUEST['et_fb'] ) ) {
274
+                $editor_id = 'main_content_content_vb_tiny_mce';
275
+            }
276 276
 
277
-			global $sd_widgets;
277
+            global $sd_widgets;
278 278
 
279 279
 //			print_r($sd_widgets);exit;
280
-			?>
280
+            ?>
281 281
 
282 282
 			<div class="sd-shortcode-left-wrap">
283 283
 				<?php
284
-				ksort( $sd_widgets );
285
-				//				print_r($sd_widgets);exit;
286
-				if ( ! empty( $sd_widgets ) ) {
287
-					echo '<select class="widefat" onchange="sd_get_shortcode_options(this);">';
288
-					echo "<option>" . __( 'Select shortcode' ) . "</option>";
289
-					foreach ( $sd_widgets as $shortcode => $class ) {
290
-						if(!empty($class['output_types']) && !in_array('shortcode', $class['output_types'])){ continue; }
291
-						echo "<option value='" . esc_attr( $shortcode ) . "'>" . esc_attr( $shortcode ) . " (" . esc_attr( $class['name'] ) . ")</option>";
292
-					}
293
-					echo "</select>";
284
+                ksort( $sd_widgets );
285
+                //				print_r($sd_widgets);exit;
286
+                if ( ! empty( $sd_widgets ) ) {
287
+                    echo '<select class="widefat" onchange="sd_get_shortcode_options(this);">';
288
+                    echo "<option>" . __( 'Select shortcode' ) . "</option>";
289
+                    foreach ( $sd_widgets as $shortcode => $class ) {
290
+                        if(!empty($class['output_types']) && !in_array('shortcode', $class['output_types'])){ continue; }
291
+                        echo "<option value='" . esc_attr( $shortcode ) . "'>" . esc_attr( $shortcode ) . " (" . esc_attr( $class['name'] ) . ")</option>";
292
+                    }
293
+                    echo "</select>";
294 294
 
295
-				}
296
-				?>
295
+                }
296
+                ?>
297 297
 				<div class="sd-shortcode-settings"></div>
298 298
 
299 299
 			</div>
@@ -304,8 +304,8 @@  discard block
 block discarded – undo
304 304
 					<?php if ( $editor_id != '' ) { ?>
305 305
 						<button class="button sd-insert-shortcode-button"
306 306
 						        onclick="sd_insert_shortcode(<?php if ( ! empty( $editor_id ) ) {
307
-							        echo "'" . $editor_id . "'";
308
-						        } ?>)"><?php _e( 'Insert shortcode' ); ?></button>
307
+                                    echo "'" . $editor_id . "'";
308
+                                } ?>)"><?php _e( 'Insert shortcode' ); ?></button>
309 309
 					<?php } ?>
310 310
 					<button class="button"
311 311
 					        onclick="sd_copy_to_clipboard()"><?php _e( 'Copy shortcode' ); ?></button>
@@ -313,150 +313,150 @@  discard block
 block discarded – undo
313 313
 			</div>
314 314
 			<?php
315 315
 
316
-			$html = ob_get_clean();
316
+            $html = ob_get_clean();
317 317
 
318
-			if ( wp_doing_ajax() ) {
319
-				echo $html;
320
-				$should_die = true;
318
+            if ( wp_doing_ajax() ) {
319
+                echo $html;
320
+                $should_die = true;
321 321
 
322
-				// some builder get the editor via ajax so we should not die on those occasions
323
-				$dont_die = array(
324
-					'parent_tag',// WP Bakery
325
-					'avia_request' // enfold
326
-				);
322
+                // some builder get the editor via ajax so we should not die on those occasions
323
+                $dont_die = array(
324
+                    'parent_tag',// WP Bakery
325
+                    'avia_request' // enfold
326
+                );
327 327
 
328
-				foreach ( $dont_die as $request ) {
329
-					if ( isset( $_REQUEST[ $request ] ) ) {
330
-						$should_die = false;
331
-					}
332
-				}
328
+                foreach ( $dont_die as $request ) {
329
+                    if ( isset( $_REQUEST[ $request ] ) ) {
330
+                        $should_die = false;
331
+                    }
332
+                }
333 333
 
334
-				if ( $should_die ) {
335
-					wp_die();
336
-				}
334
+                if ( $should_die ) {
335
+                    wp_die();
336
+                }
337 337
 
338
-			} else {
339
-				return $html;
340
-			}
338
+            } else {
339
+                return $html;
340
+            }
341 341
 
342
-			return '';
342
+            return '';
343 343
 
344
-		}
344
+        }
345 345
 
346
-		/**
347
-		 * Output the version in the header.
348
-		 */
349
-		public function generator() {
350
-			$file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) );
351
-			$plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) );
352
-
353
-			// Find source plugin/theme of SD
354
-			$source = array();
355
-			if ( strpos( $file, $plugins_dir ) !== false ) {
356
-				$source = explode( "/", plugin_basename( $file ) );
357
-			} else if ( function_exists( 'get_theme_root' ) ) {
358
-				$themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) );
359
-
360
-				if ( strpos( $file, $themes_dir ) !== false ) {
361
-					$source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) );
362
-				}
363
-			}
346
+        /**
347
+         * Output the version in the header.
348
+         */
349
+        public function generator() {
350
+            $file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) );
351
+            $plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) );
352
+
353
+            // Find source plugin/theme of SD
354
+            $source = array();
355
+            if ( strpos( $file, $plugins_dir ) !== false ) {
356
+                $source = explode( "/", plugin_basename( $file ) );
357
+            } else if ( function_exists( 'get_theme_root' ) ) {
358
+                $themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) );
359
+
360
+                if ( strpos( $file, $themes_dir ) !== false ) {
361
+                    $source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) );
362
+                }
363
+            }
364 364
 
365
-			echo '<meta name="generator" content="WP Super Duper v' . $this->version . '"' . ( ! empty( $source[0] ) ? ' data-sd-source="' . esc_attr( $source[0] ) . '"' : '' ) . ' />';
366
-		}
365
+            echo '<meta name="generator" content="WP Super Duper v' . $this->version . '"' . ( ! empty( $source[0] ) ? ' data-sd-source="' . esc_attr( $source[0] ) . '"' : '' ) . ' />';
366
+        }
367 367
 
368
-		/**
369
-		 * Get widget settings.
370
-		 *
371
-		 * @since 1.0.0
372
-		 */
373
-		public static function get_widget_settings() {
374
-			global $sd_widgets;
375
-
376
-			$shortcode = isset( $_REQUEST['shortcode'] ) && $_REQUEST['shortcode'] ? sanitize_title_with_dashes( $_REQUEST['shortcode'] ) : '';
377
-			if ( ! $shortcode ) {
378
-				wp_die();
379
-			}
380
-			$widget_args = isset( $sd_widgets[ $shortcode ] ) ? $sd_widgets[ $shortcode ] : '';
381
-			if ( ! $widget_args ) {
382
-				wp_die();
383
-			}
384
-			$class_name = isset( $widget_args['class_name'] ) && $widget_args['class_name'] ? $widget_args['class_name'] : '';
385
-			if ( ! $class_name ) {
386
-				wp_die();
387
-			}
368
+        /**
369
+         * Get widget settings.
370
+         *
371
+         * @since 1.0.0
372
+         */
373
+        public static function get_widget_settings() {
374
+            global $sd_widgets;
375
+
376
+            $shortcode = isset( $_REQUEST['shortcode'] ) && $_REQUEST['shortcode'] ? sanitize_title_with_dashes( $_REQUEST['shortcode'] ) : '';
377
+            if ( ! $shortcode ) {
378
+                wp_die();
379
+            }
380
+            $widget_args = isset( $sd_widgets[ $shortcode ] ) ? $sd_widgets[ $shortcode ] : '';
381
+            if ( ! $widget_args ) {
382
+                wp_die();
383
+            }
384
+            $class_name = isset( $widget_args['class_name'] ) && $widget_args['class_name'] ? $widget_args['class_name'] : '';
385
+            if ( ! $class_name ) {
386
+                wp_die();
387
+            }
388 388
 
389
-			// invoke an instance method
390
-			$widget = new $class_name;
389
+            // invoke an instance method
390
+            $widget = new $class_name;
391 391
 
392
-			ob_start();
393
-			$widget->form( array() );
394
-			$form = ob_get_clean();
395
-			echo "<form id='$shortcode'>" . $form . "<div class=\"widget-control-save\"></div></form>";
396
-			echo "<style>" . $widget->widget_css() . "</style>";
397
-			echo "<script>" . $widget->widget_js() . "</script>";
398
-			?>
392
+            ob_start();
393
+            $widget->form( array() );
394
+            $form = ob_get_clean();
395
+            echo "<form id='$shortcode'>" . $form . "<div class=\"widget-control-save\"></div></form>";
396
+            echo "<style>" . $widget->widget_css() . "</style>";
397
+            echo "<script>" . $widget->widget_js() . "</script>";
398
+            ?>
399 399
 			<?php
400
-			wp_die();
401
-		}
400
+            wp_die();
401
+        }
402 402
 
403
-		/**
404
-		 * Insert shortcode builder button to classic editor (not inside Gutenberg, not needed).
405
-		 *
406
-		 * @param string $editor_id Optional. Shortcode editor id. Default null.
407
-		 * @param string $insert_shortcode_function Optional. Insert shortcode function. Default null.
408
-		 *
409
-		 *@since 1.0.0
410
-		 *
411
-		 */
412
-		public static function shortcode_insert_button( $editor_id = '', $insert_shortcode_function = '' ) {
413
-			global $sd_widgets, $shortcode_insert_button_once;
414
-			if ( $shortcode_insert_button_once ) {
415
-				return;
416
-			}
417
-			add_thickbox();
403
+        /**
404
+         * Insert shortcode builder button to classic editor (not inside Gutenberg, not needed).
405
+         *
406
+         * @param string $editor_id Optional. Shortcode editor id. Default null.
407
+         * @param string $insert_shortcode_function Optional. Insert shortcode function. Default null.
408
+         *
409
+         *@since 1.0.0
410
+         *
411
+         */
412
+        public static function shortcode_insert_button( $editor_id = '', $insert_shortcode_function = '' ) {
413
+            global $sd_widgets, $shortcode_insert_button_once;
414
+            if ( $shortcode_insert_button_once ) {
415
+                return;
416
+            }
417
+            add_thickbox();
418 418
 
419 419
 
420
-			/**
421
-			 * Cornerstone makes us play dirty tricks :/
422
-			 * All media_buttons are removed via JS unless they are two specific id's so we wrap our content in this ID so it is not removed.
423
-			 */
424
-			if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
425
-				echo '<span id="insert-media-button">';
426
-			}
420
+            /**
421
+             * Cornerstone makes us play dirty tricks :/
422
+             * All media_buttons are removed via JS unless they are two specific id's so we wrap our content in this ID so it is not removed.
423
+             */
424
+            if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
425
+                echo '<span id="insert-media-button">';
426
+            }
427 427
 
428
-			echo self::shortcode_button( 'this', 'true' );
428
+            echo self::shortcode_button( 'this', 'true' );
429 429
 
430
-			// see opening note
431
-			if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
432
-				echo '</span>'; // end #insert-media-button
433
-			}
430
+            // see opening note
431
+            if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
432
+                echo '</span>'; // end #insert-media-button
433
+            }
434 434
 
435
-			// Add separate script for generatepress theme sections
436
-			if ( function_exists( 'generate_sections_sections_metabox' ) && did_action( 'generate_sections_metabox' ) ) {
437
-			} else {
438
-				self::shortcode_insert_button_script( $editor_id, $insert_shortcode_function );
439
-			}
435
+            // Add separate script for generatepress theme sections
436
+            if ( function_exists( 'generate_sections_sections_metabox' ) && did_action( 'generate_sections_metabox' ) ) {
437
+            } else {
438
+                self::shortcode_insert_button_script( $editor_id, $insert_shortcode_function );
439
+            }
440 440
 
441
-			$shortcode_insert_button_once = true;
442
-		}
441
+            $shortcode_insert_button_once = true;
442
+        }
443 443
 
444
-		/**
445
-		 * Gets the shortcode insert button html.
446
-		 *
447
-		 * @param string $id
448
-		 * @param string $search_for_id
449
-		 *
450
-		 * @return mixed
451
-		 */
452
-		public static function shortcode_button( $id = '', $search_for_id = '' ) {
453
-			ob_start();
454
-			?>
444
+        /**
445
+         * Gets the shortcode insert button html.
446
+         *
447
+         * @param string $id
448
+         * @param string $search_for_id
449
+         *
450
+         * @return mixed
451
+         */
452
+        public static function shortcode_button( $id = '', $search_for_id = '' ) {
453
+            ob_start();
454
+            ?>
455 455
 			<span class="sd-lable-shortcode-inserter">
456 456
 				<a onclick="sd_ajax_get_picker(<?php echo $id;
457
-				if ( $search_for_id ) {
458
-					echo "," . $search_for_id;
459
-				} ?>);" href="#TB_inline?width=100%&height=550&inlineId=super-duper-content-ajaxed"
457
+                if ( $search_for_id ) {
458
+                    echo "," . $search_for_id;
459
+                } ?>);" href="#TB_inline?width=100%&height=550&inlineId=super-duper-content-ajaxed"
460 460
 				   class="thickbox button super-duper-content-open" title="Add Shortcode">
461 461
 					<span style="vertical-align: middle;line-height: 18px;font-size: 20px;"
462 462
 					      class="dashicons dashicons-screenoptions"></span>
@@ -467,21 +467,21 @@  discard block
 block discarded – undo
467 467
 			</span>
468 468
 
469 469
 			<?php
470
-			$html = ob_get_clean();
470
+            $html = ob_get_clean();
471 471
 
472
-			// remove line breaks so we can use it in js
473
-			return preg_replace( "/\r|\n/", "", trim( $html ) );
474
-		}
472
+            // remove line breaks so we can use it in js
473
+            return preg_replace( "/\r|\n/", "", trim( $html ) );
474
+        }
475 475
 
476
-		/**
477
-		 * Makes SD work with the siteOrigin page builder.
478
-		 *
479
-		 * @return mixed
480
-		 *@since 1.0.6
481
-		 */
482
-		public static function siteorigin_js() {
483
-			ob_start();
484
-			?>
476
+        /**
477
+         * Makes SD work with the siteOrigin page builder.
478
+         *
479
+         * @return mixed
480
+         *@since 1.0.6
481
+         */
482
+        public static function siteorigin_js() {
483
+            ob_start();
484
+            ?>
485 485
 			<script>
486 486
 				/**
487 487
 				 * Check a form to see what items should be shown or hidden.
@@ -557,29 +557,29 @@  discard block
 block discarded – undo
557 557
 				});
558 558
 			</script>
559 559
 			<?php
560
-			$output = ob_get_clean();
560
+            $output = ob_get_clean();
561 561
 
562
-			/*
562
+            /*
563 563
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
564 564
 			 */
565 565
 
566
-			return str_replace( array(
567
-				'<script>',
568
-				'</script>'
569
-			), '', $output );
570
-		}
566
+            return str_replace( array(
567
+                '<script>',
568
+                '</script>'
569
+            ), '', $output );
570
+        }
571 571
 
572
-		/**
573
-		 * Output the JS and CSS for the shortcode insert button.
574
-		 *
575
-		 * @param string $editor_id
576
-		 * @param string $insert_shortcode_function
577
-		 *
578
-		 *@since 1.0.6
579
-		 *
580
-		 */
581
-		public static function shortcode_insert_button_script( $editor_id = '', $insert_shortcode_function = '' ) {
582
-			?>
572
+        /**
573
+         * Output the JS and CSS for the shortcode insert button.
574
+         *
575
+         * @param string $editor_id
576
+         * @param string $insert_shortcode_function
577
+         *
578
+         *@since 1.0.6
579
+         *
580
+         */
581
+        public static function shortcode_insert_button_script( $editor_id = '', $insert_shortcode_function = '' ) {
582
+            ?>
583 583
 			<style>
584 584
 				.sd-shortcode-left-wrap {
585 585
 					float: left;
@@ -707,35 +707,35 @@  discard block
 block discarded – undo
707 707
 				<?php } ?>
708 708
 			</style>
709 709
 			<?php
710
-			if ( class_exists( 'SiteOrigin_Panels' ) ) {
711
-				echo "<script>" . self::siteorigin_js() . "</script>";
712
-			}
713
-			?>
710
+            if ( class_exists( 'SiteOrigin_Panels' ) ) {
711
+                echo "<script>" . self::siteorigin_js() . "</script>";
712
+            }
713
+            ?>
714 714
 			<script>
715 715
 				<?php
716
-				if(! empty( $insert_shortcode_function )){
717
-					echo $insert_shortcode_function;
718
-				}else{
716
+                if(! empty( $insert_shortcode_function )){
717
+                    echo $insert_shortcode_function;
718
+                }else{
719 719
 
720
-				/**
721
-				 * Function for super duper insert shortcode.
722
-				 *
723
-				 * @since 1.0.0
724
-				 */
725
-				?>
720
+                /**
721
+                 * Function for super duper insert shortcode.
722
+                 *
723
+                 * @since 1.0.0
724
+                 */
725
+                ?>
726 726
 				function sd_insert_shortcode($editor_id) {
727 727
 					$shortcode = jQuery('#TB_ajaxContent #sd-shortcode-output').val();
728 728
 					if ($shortcode) {
729 729
 						if (!$editor_id) {
730 730
 							<?php
731
-							if ( isset( $_REQUEST['et_fb'] ) ) {
732
-								echo '$editor_id = "#main_content_content_vb_tiny_mce";';
733
-							} elseif ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) {
734
-								echo '$editor_id = "#elementor-controls .wp-editor-container textarea";';
735
-							} else {
736
-								echo '$editor_id = "#wp-content-editor-container textarea";';
737
-							}
738
-							?>
731
+                            if ( isset( $_REQUEST['et_fb'] ) ) {
732
+                                echo '$editor_id = "#main_content_content_vb_tiny_mce";';
733
+                            } elseif ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) {
734
+                                echo '$editor_id = "#elementor-controls .wp-editor-container textarea";';
735
+                            } else {
736
+                                echo '$editor_id = "#wp-content-editor-container textarea";';
737
+                            }
738
+                            ?>
739 739
 						} else {
740 740
 							$editor_id = '#' + $editor_id;
741 741
 						}
@@ -1049,18 +1049,18 @@  discard block
 block discarded – undo
1049 1049
 				}
1050 1050
 			</script>
1051 1051
 			<?php
1052
-		}
1052
+        }
1053 1053
 
1054
-		/**
1055
-		 * Gets some CSS for the widgets screen.
1056
-		 *
1057
-		 * @param bool $advanced If we should include advanced CSS.
1058
-		 *
1059
-		 * @return mixed
1060
-		 */
1061
-		public function widget_css( $advanced = true ) {
1062
-			ob_start();
1063
-			?>
1054
+        /**
1055
+         * Gets some CSS for the widgets screen.
1056
+         *
1057
+         * @param bool $advanced If we should include advanced CSS.
1058
+         *
1059
+         * @return mixed
1060
+         */
1061
+        public function widget_css( $advanced = true ) {
1062
+            ob_start();
1063
+            ?>
1064 1064
 			<style>
1065 1065
 				<?php if( $advanced ){ ?>
1066 1066
 				.sd-advanced-setting {
@@ -1098,26 +1098,26 @@  discard block
 block discarded – undo
1098 1098
 				}
1099 1099
 			</style>
1100 1100
 			<?php
1101
-			$output = ob_get_clean();
1101
+            $output = ob_get_clean();
1102 1102
 
1103
-			/*
1103
+            /*
1104 1104
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
1105 1105
 			 */
1106 1106
 
1107
-			return str_replace( array(
1108
-				'<style>',
1109
-				'</style>'
1110
-			), '', $output );
1111
-		}
1107
+            return str_replace( array(
1108
+                '<style>',
1109
+                '</style>'
1110
+            ), '', $output );
1111
+        }
1112 1112
 
1113
-		/**
1114
-		 * Gets some JS for the widgets screen.
1115
-		 *
1116
-		 * @return mixed
1117
-		 */
1118
-		public function widget_js() {
1119
-			ob_start();
1120
-			?>
1113
+        /**
1114
+         * Gets some JS for the widgets screen.
1115
+         *
1116
+         * @return mixed
1117
+         */
1118
+        public function widget_js() {
1119
+            ob_start();
1120
+            ?>
1121 1121
 			<script>
1122 1122
 
1123 1123
 				/**
@@ -1268,515 +1268,515 @@  discard block
 block discarded – undo
1268 1268
 				<?php do_action( 'wp_super_duper_widget_js', $this ); ?>
1269 1269
 			</script>
1270 1270
 			<?php
1271
-			$output = ob_get_clean();
1271
+            $output = ob_get_clean();
1272 1272
 
1273
-			/*
1273
+            /*
1274 1274
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
1275 1275
 			 */
1276 1276
 
1277
-			return str_replace( array(
1278
-				'<script>',
1279
-				'</script>'
1280
-			), '', $output );
1281
-		}
1277
+            return str_replace( array(
1278
+                '<script>',
1279
+                '</script>'
1280
+            ), '', $output );
1281
+        }
1282 1282
 
1283 1283
 
1284
-		/**
1285
-		 * Set the name from the argument key.
1286
-		 *
1287
-		 * @param $options
1288
-		 *
1289
-		 * @return mixed
1290
-		 */
1291
-		private function add_name_from_key( $options, $arguments = false ) {
1292
-			if ( ! empty( $options['arguments'] ) ) {
1293
-				foreach ( $options['arguments'] as $key => $val ) {
1294
-					$options['arguments'][ $key ]['name'] = $key;
1295
-				}
1296
-			} elseif ( $arguments && is_array( $options ) && ! empty( $options ) ) {
1297
-				foreach ( $options as $key => $val ) {
1298
-					$options[ $key ]['name'] = $key;
1299
-				}
1300
-			}
1284
+        /**
1285
+         * Set the name from the argument key.
1286
+         *
1287
+         * @param $options
1288
+         *
1289
+         * @return mixed
1290
+         */
1291
+        private function add_name_from_key( $options, $arguments = false ) {
1292
+            if ( ! empty( $options['arguments'] ) ) {
1293
+                foreach ( $options['arguments'] as $key => $val ) {
1294
+                    $options['arguments'][ $key ]['name'] = $key;
1295
+                }
1296
+            } elseif ( $arguments && is_array( $options ) && ! empty( $options ) ) {
1297
+                foreach ( $options as $key => $val ) {
1298
+                    $options[ $key ]['name'] = $key;
1299
+                }
1300
+            }
1301 1301
 
1302
-			return $options;
1303
-		}
1302
+            return $options;
1303
+        }
1304 1304
 
1305
-		/**
1306
-		 * Register the parent shortcode.
1307
-		 *
1308
-		 * @since 1.0.0
1309
-		 */
1310
-		public function register_shortcode() {
1311
-			add_shortcode( $this->base_id, array( $this, 'shortcode_output' ) );
1312
-			add_action( 'wp_ajax_super_duper_output_shortcode', array( $this, 'render_shortcode' ) );
1313
-		}
1305
+        /**
1306
+         * Register the parent shortcode.
1307
+         *
1308
+         * @since 1.0.0
1309
+         */
1310
+        public function register_shortcode() {
1311
+            add_shortcode( $this->base_id, array( $this, 'shortcode_output' ) );
1312
+            add_action( 'wp_ajax_super_duper_output_shortcode', array( $this, 'render_shortcode' ) );
1313
+        }
1314 1314
 
1315
-		/**
1316
-		 * Render the shortcode via ajax so we can return it to Gutenberg.
1317
-		 *
1318
-		 * @since 1.0.0
1319
-		 */
1320
-		public function render_shortcode() {
1321
-			check_ajax_referer( 'super_duper_output_shortcode', '_ajax_nonce', true );
1322
-			if ( ! current_user_can( 'manage_options' ) ) {
1323
-				wp_die();
1324
-			}
1315
+        /**
1316
+         * Render the shortcode via ajax so we can return it to Gutenberg.
1317
+         *
1318
+         * @since 1.0.0
1319
+         */
1320
+        public function render_shortcode() {
1321
+            check_ajax_referer( 'super_duper_output_shortcode', '_ajax_nonce', true );
1322
+            if ( ! current_user_can( 'manage_options' ) ) {
1323
+                wp_die();
1324
+            }
1325 1325
 
1326
-			// we might need the $post value here so lets set it.
1327
-			if ( isset( $_POST['post_id'] ) && $_POST['post_id'] ) {
1328
-				$post_obj = get_post( absint( $_POST['post_id'] ) );
1329
-				if ( ! empty( $post_obj ) && empty( $post ) ) {
1330
-					global $post;
1331
-					$post = $post_obj;
1332
-				}
1333
-			}
1326
+            // we might need the $post value here so lets set it.
1327
+            if ( isset( $_POST['post_id'] ) && $_POST['post_id'] ) {
1328
+                $post_obj = get_post( absint( $_POST['post_id'] ) );
1329
+                if ( ! empty( $post_obj ) && empty( $post ) ) {
1330
+                    global $post;
1331
+                    $post = $post_obj;
1332
+                }
1333
+            }
1334 1334
 
1335
-			if ( isset( $_POST['shortcode'] ) && $_POST['shortcode'] ) {
1336
-				$is_preview = $this->is_preview();
1337
-				$shortcode_name   = sanitize_title_with_dashes( $_POST['shortcode'] );
1338
-				$attributes_array = isset( $_POST['attributes'] ) && $_POST['attributes'] ? $_POST['attributes'] : array();
1339
-				$attributes       = '';
1340
-				if ( ! empty( $attributes_array ) ) {
1341
-					foreach ( $attributes_array as $key => $value ) {
1342
-						if ( is_array( $value ) ) {
1343
-							$value = implode( ",", $value );
1344
-						}
1335
+            if ( isset( $_POST['shortcode'] ) && $_POST['shortcode'] ) {
1336
+                $is_preview = $this->is_preview();
1337
+                $shortcode_name   = sanitize_title_with_dashes( $_POST['shortcode'] );
1338
+                $attributes_array = isset( $_POST['attributes'] ) && $_POST['attributes'] ? $_POST['attributes'] : array();
1339
+                $attributes       = '';
1340
+                if ( ! empty( $attributes_array ) ) {
1341
+                    foreach ( $attributes_array as $key => $value ) {
1342
+                        if ( is_array( $value ) ) {
1343
+                            $value = implode( ",", $value );
1344
+                        }
1345 1345
 
1346
-						if ( ! empty( $value ) ) {
1347
-							$value = wp_unslash( $value );
1346
+                        if ( ! empty( $value ) ) {
1347
+                            $value = wp_unslash( $value );
1348 1348
 
1349
-							// Encode [ and ].
1350
-							if ( $is_preview ) {
1351
-								$value = $this->encode_shortcodes( $value );
1352
-							}
1353
-						}
1354
-						$attributes .= " " . sanitize_title_with_dashes( $key ) . "='" . esc_attr( $value ) . "' ";
1355
-					}
1356
-				}
1349
+                            // Encode [ and ].
1350
+                            if ( $is_preview ) {
1351
+                                $value = $this->encode_shortcodes( $value );
1352
+                            }
1353
+                        }
1354
+                        $attributes .= " " . sanitize_title_with_dashes( $key ) . "='" . esc_attr( $value ) . "' ";
1355
+                    }
1356
+                }
1357 1357
 
1358
-				$shortcode = "[" . $shortcode_name . " " . $attributes . "]";
1358
+                $shortcode = "[" . $shortcode_name . " " . $attributes . "]";
1359 1359
 
1360
-				$content = do_shortcode( $shortcode );
1360
+                $content = do_shortcode( $shortcode );
1361 1361
 
1362
-				// Decode [ and ].
1363
-				if ( ! empty( $content ) && $is_preview ) {
1364
-					$content = $this->decode_shortcodes( $content );
1365
-				}
1362
+                // Decode [ and ].
1363
+                if ( ! empty( $content ) && $is_preview ) {
1364
+                    $content = $this->decode_shortcodes( $content );
1365
+                }
1366 1366
 
1367
-				echo $content;
1368
-			}
1369
-			wp_die();
1370
-		}
1367
+                echo $content;
1368
+            }
1369
+            wp_die();
1370
+        }
1371 1371
 
1372
-		/**
1373
-		 * Output the shortcode.
1374
-		 *
1375
-		 * @param array $args
1376
-		 * @param string $content
1377
-		 *
1378
-		 * @return string
1379
-		 */
1380
-		public function shortcode_output( $args = array(), $content = '' ) {
1381
-			$_instance = $args;
1382
-
1383
-			$args = $this->argument_values( $args );
1384
-
1385
-			// add extra argument so we know its a output to gutenberg
1386
-			//$args
1387
-			$args = $this->string_to_bool( $args );
1388
-
1389
-			// if we have a enclosed shortcode we add it to the special `html` argument
1390
-			if ( ! empty( $content ) ) {
1391
-				$args['html'] = $content;
1392
-			}
1372
+        /**
1373
+         * Output the shortcode.
1374
+         *
1375
+         * @param array $args
1376
+         * @param string $content
1377
+         *
1378
+         * @return string
1379
+         */
1380
+        public function shortcode_output( $args = array(), $content = '' ) {
1381
+            $_instance = $args;
1393 1382
 
1394
-			if ( ! $this->is_preview() ) {
1395
-				/**
1396
-				 * Filters the settings for a particular widget args.
1397
-				 *
1398
-				 * @param array          $args      The current widget instance's settings.
1399
-				 * @param WP_Super_Duper $widget    The current widget settings.
1400
-				 * @param array          $_instance An array of default widget arguments.
1401
-				 *
1402
-				 *@since 1.0.28
1403
-				 *
1404
-				 */
1405
-				$args = apply_filters( 'wp_super_duper_widget_display_callback', $args, $this, $_instance );
1383
+            $args = $this->argument_values( $args );
1406 1384
 
1407
-				if ( ! is_array( $args ) ) {
1408
-					return $args;
1409
-				}
1410
-			}
1385
+            // add extra argument so we know its a output to gutenberg
1386
+            //$args
1387
+            $args = $this->string_to_bool( $args );
1411 1388
 
1412
-			$class = isset( $this->options['widget_ops']['classname'] ) ? esc_attr( $this->options['widget_ops']['classname'] ) : '';
1413
-			$class .= " sdel-".$this->get_instance_hash();
1389
+            // if we have a enclosed shortcode we add it to the special `html` argument
1390
+            if ( ! empty( $content ) ) {
1391
+                $args['html'] = $content;
1392
+            }
1414 1393
 
1415
-			$class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
1416
-			$class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
1394
+            if ( ! $this->is_preview() ) {
1395
+                /**
1396
+                 * Filters the settings for a particular widget args.
1397
+                 *
1398
+                 * @param array          $args      The current widget instance's settings.
1399
+                 * @param WP_Super_Duper $widget    The current widget settings.
1400
+                 * @param array          $_instance An array of default widget arguments.
1401
+                 *
1402
+                 *@since 1.0.28
1403
+                 *
1404
+                 */
1405
+                $args = apply_filters( 'wp_super_duper_widget_display_callback', $args, $this, $_instance );
1406
+
1407
+                if ( ! is_array( $args ) ) {
1408
+                    return $args;
1409
+                }
1410
+            }
1417 1411
 
1418
-			$attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
1419
-			$attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
1412
+            $class = isset( $this->options['widget_ops']['classname'] ) ? esc_attr( $this->options['widget_ops']['classname'] ) : '';
1413
+            $class .= " sdel-".$this->get_instance_hash();
1420 1414
 
1421
-			$shortcode_args = array();
1422
-			$output         = '';
1423
-			$no_wrap        = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
1424
-			if ( isset( $args['no_wrap'] ) && $args['no_wrap'] ) {
1425
-				$no_wrap = true;
1426
-			}
1427
-			$main_content = $this->output( $args, $shortcode_args, $content );
1428
-			if ( $main_content && ! $no_wrap ) {
1429
-				// wrap the shortcode in a div with the same class as the widget
1430
-				$output .= '<div class="' . $class . '" ' . $attrs . '>';
1431
-				if ( ! empty( $args['title'] ) ) {
1432
-					// if its a shortcode and there is a title try to grab the title wrappers
1433
-					$shortcode_args = array( 'before_title' => '', 'after_title' => '' );
1434
-					if ( empty( $instance ) ) {
1435
-						global $wp_registered_sidebars;
1436
-						if ( ! empty( $wp_registered_sidebars ) ) {
1437
-							foreach ( $wp_registered_sidebars as $sidebar ) {
1438
-								if ( ! empty( $sidebar['before_title'] ) ) {
1439
-									$shortcode_args['before_title'] = $sidebar['before_title'];
1440
-									$shortcode_args['after_title']  = $sidebar['after_title'];
1441
-									break;
1442
-								}
1443
-							}
1444
-						}
1445
-					}
1446
-					$output .= $this->output_title( $shortcode_args, $args );
1447
-				}
1448
-				$output .= $main_content;
1449
-				$output .= '</div>';
1450
-			} elseif ( $main_content && $no_wrap ) {
1451
-				$output .= $main_content;
1452
-			}
1415
+            $class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
1416
+            $class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
1453 1417
 
1454
-			// if preview show a placeholder if empty
1455
-			if ( $this->is_preview() && $output == '' ) {
1456
-				$output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
1457
-			}
1418
+            $attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
1419
+            $attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
1458 1420
 
1459
-			return apply_filters( 'wp_super_duper_widget_output', $output, $args, $shortcode_args, $this );
1460
-		}
1421
+            $shortcode_args = array();
1422
+            $output         = '';
1423
+            $no_wrap        = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
1424
+            if ( isset( $args['no_wrap'] ) && $args['no_wrap'] ) {
1425
+                $no_wrap = true;
1426
+            }
1427
+            $main_content = $this->output( $args, $shortcode_args, $content );
1428
+            if ( $main_content && ! $no_wrap ) {
1429
+                // wrap the shortcode in a div with the same class as the widget
1430
+                $output .= '<div class="' . $class . '" ' . $attrs . '>';
1431
+                if ( ! empty( $args['title'] ) ) {
1432
+                    // if its a shortcode and there is a title try to grab the title wrappers
1433
+                    $shortcode_args = array( 'before_title' => '', 'after_title' => '' );
1434
+                    if ( empty( $instance ) ) {
1435
+                        global $wp_registered_sidebars;
1436
+                        if ( ! empty( $wp_registered_sidebars ) ) {
1437
+                            foreach ( $wp_registered_sidebars as $sidebar ) {
1438
+                                if ( ! empty( $sidebar['before_title'] ) ) {
1439
+                                    $shortcode_args['before_title'] = $sidebar['before_title'];
1440
+                                    $shortcode_args['after_title']  = $sidebar['after_title'];
1441
+                                    break;
1442
+                                }
1443
+                            }
1444
+                        }
1445
+                    }
1446
+                    $output .= $this->output_title( $shortcode_args, $args );
1447
+                }
1448
+                $output .= $main_content;
1449
+                $output .= '</div>';
1450
+            } elseif ( $main_content && $no_wrap ) {
1451
+                $output .= $main_content;
1452
+            }
1461 1453
 
1462
-		/**
1463
-		 * Placeholder text to show if output is empty and we are on a preview/builder page.
1464
-		 *
1465
-		 * @param string $name
1466
-		 *
1467
-		 * @return string
1468
-		 */
1469
-		public function preview_placeholder_text( $name = '' ) {
1470
-			return "<div style='background:#0185ba33;padding: 10px;border: 4px #ccc dashed;'>" . sprintf( __( 'Placeholder for: %s' ), $name ) . "</div>";
1471
-		}
1454
+            // if preview show a placeholder if empty
1455
+            if ( $this->is_preview() && $output == '' ) {
1456
+                $output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
1457
+            }
1472 1458
 
1473
-		/**
1474
-		 * Sometimes booleans values can be turned to strings, so we fix that.
1475
-		 *
1476
-		 * @param $options
1477
-		 *
1478
-		 * @return mixed
1479
-		 */
1480
-		public function string_to_bool( $options ) {
1481
-			// convert bool strings to booleans
1482
-			foreach ( $options as $key => $val ) {
1483
-				if ( $val == 'false' ) {
1484
-					$options[ $key ] = false;
1485
-				} elseif ( $val == 'true' ) {
1486
-					$options[ $key ] = true;
1487
-				}
1488
-			}
1459
+            return apply_filters( 'wp_super_duper_widget_output', $output, $args, $shortcode_args, $this );
1460
+        }
1489 1461
 
1490
-			return $options;
1491
-		}
1462
+        /**
1463
+         * Placeholder text to show if output is empty and we are on a preview/builder page.
1464
+         *
1465
+         * @param string $name
1466
+         *
1467
+         * @return string
1468
+         */
1469
+        public function preview_placeholder_text( $name = '' ) {
1470
+            return "<div style='background:#0185ba33;padding: 10px;border: 4px #ccc dashed;'>" . sprintf( __( 'Placeholder for: %s' ), $name ) . "</div>";
1471
+        }
1492 1472
 
1493
-		/**
1494
-		 * Get the argument values that are also filterable.
1495
-		 *
1496
-		 * @param $instance
1497
-		 *
1498
-		 * @return array
1499
-		 *@since 1.0.12 Don't set checkbox default value if the value is empty.
1500
-		 *
1501
-		 */
1502
-		public function argument_values( $instance ) {
1503
-			$argument_values = array();
1504
-
1505
-			// set widget instance
1506
-			$this->instance = $instance;
1507
-
1508
-			if ( empty( $this->arguments ) ) {
1509
-				$this->arguments = $this->get_arguments();
1510
-			}
1473
+        /**
1474
+         * Sometimes booleans values can be turned to strings, so we fix that.
1475
+         *
1476
+         * @param $options
1477
+         *
1478
+         * @return mixed
1479
+         */
1480
+        public function string_to_bool( $options ) {
1481
+            // convert bool strings to booleans
1482
+            foreach ( $options as $key => $val ) {
1483
+                if ( $val == 'false' ) {
1484
+                    $options[ $key ] = false;
1485
+                } elseif ( $val == 'true' ) {
1486
+                    $options[ $key ] = true;
1487
+                }
1488
+            }
1511 1489
 
1512
-			if ( ! empty( $this->arguments ) ) {
1513
-				foreach ( $this->arguments as $key => $args ) {
1514
-					// set the input name from the key
1515
-					$args['name'] = $key;
1516
-					//
1517
-					$argument_values[ $key ] = isset( $instance[ $key ] ) ? $instance[ $key ] : '';
1518
-					if ( $args['type'] == 'checkbox' && $argument_values[ $key ] == '' ) {
1519
-						// don't set default for an empty checkbox
1520
-					} elseif ( $argument_values[ $key ] == '' && isset( $args['default'] ) ) {
1521
-						$argument_values[ $key ] = $args['default'];
1522
-					}
1523
-				}
1524
-			}
1490
+            return $options;
1491
+        }
1525 1492
 
1526
-			return $argument_values;
1527
-		}
1493
+        /**
1494
+         * Get the argument values that are also filterable.
1495
+         *
1496
+         * @param $instance
1497
+         *
1498
+         * @return array
1499
+         *@since 1.0.12 Don't set checkbox default value if the value is empty.
1500
+         *
1501
+         */
1502
+        public function argument_values( $instance ) {
1503
+            $argument_values = array();
1528 1504
 
1529
-		/**
1530
-		 * Set arguments in super duper.
1531
-		 *
1532
-		 * @return array Set arguments.
1533
-		 *@since 1.0.0
1534
-		 *
1535
-		 */
1536
-		public function set_arguments() {
1537
-			return $this->arguments;
1538
-		}
1505
+            // set widget instance
1506
+            $this->instance = $instance;
1539 1507
 
1540
-		/**
1541
-		 * Get arguments in super duper.
1542
-		 *
1543
-		 * @return array Get arguments.
1544
-		 *@since 1.0.0
1545
-		 *
1546
-		 */
1547
-		public function get_arguments() {
1548
-			if ( empty( $this->arguments ) ) {
1549
-				$this->arguments = $this->set_arguments();
1550
-			}
1508
+            if ( empty( $this->arguments ) ) {
1509
+                $this->arguments = $this->get_arguments();
1510
+            }
1551 1511
 
1552
-			$this->arguments = apply_filters( 'wp_super_duper_arguments', $this->arguments, $this->options, $this->instance );
1553
-			$this->arguments = $this->add_name_from_key( $this->arguments, true );
1512
+            if ( ! empty( $this->arguments ) ) {
1513
+                foreach ( $this->arguments as $key => $args ) {
1514
+                    // set the input name from the key
1515
+                    $args['name'] = $key;
1516
+                    //
1517
+                    $argument_values[ $key ] = isset( $instance[ $key ] ) ? $instance[ $key ] : '';
1518
+                    if ( $args['type'] == 'checkbox' && $argument_values[ $key ] == '' ) {
1519
+                        // don't set default for an empty checkbox
1520
+                    } elseif ( $argument_values[ $key ] == '' && isset( $args['default'] ) ) {
1521
+                        $argument_values[ $key ] = $args['default'];
1522
+                    }
1523
+                }
1524
+            }
1554 1525
 
1555
-			return $this->arguments;
1556
-		}
1526
+            return $argument_values;
1527
+        }
1557 1528
 
1558
-		/**
1559
-		 * This is the main output class for all 3 items, widget, shortcode and block, it is extended in the calling class.
1560
-		 *
1561
-		 * @param array $args
1562
-		 * @param array $widget_args
1563
-		 * @param string $content
1564
-		 */
1565
-		public function output( $args = array(), $widget_args = array(), $content = '' ) {
1529
+        /**
1530
+         * Set arguments in super duper.
1531
+         *
1532
+         * @return array Set arguments.
1533
+         *@since 1.0.0
1534
+         *
1535
+         */
1536
+        public function set_arguments() {
1537
+            return $this->arguments;
1538
+        }
1566 1539
 
1567
-		}
1540
+        /**
1541
+         * Get arguments in super duper.
1542
+         *
1543
+         * @return array Get arguments.
1544
+         *@since 1.0.0
1545
+         *
1546
+         */
1547
+        public function get_arguments() {
1548
+            if ( empty( $this->arguments ) ) {
1549
+                $this->arguments = $this->set_arguments();
1550
+            }
1568 1551
 
1569
-		/**
1570
-		 * Add the dynamic block code inline when the wp-block in enqueued.
1571
-		 */
1572
-		public function register_block() {
1573
-			wp_add_inline_script( 'wp-blocks', $this->block() );
1574
-			if ( class_exists( 'SiteOrigin_Panels' ) ) {
1575
-				wp_add_inline_script( 'wp-blocks', $this->siteorigin_js() );
1576
-			}
1577
-		}
1552
+            $this->arguments = apply_filters( 'wp_super_duper_arguments', $this->arguments, $this->options, $this->instance );
1553
+            $this->arguments = $this->add_name_from_key( $this->arguments, true );
1578 1554
 
1579
-		/**
1580
-		 * Check if we need to show advanced options.
1581
-		 *
1582
-		 * @return bool
1583
-		 */
1584
-		public function block_show_advanced() {
1585
-
1586
-			$show      = false;
1587
-			$arguments = $this->get_arguments();
1588
-
1589
-			if ( ! empty( $arguments ) ) {
1590
-				foreach ( $arguments as $argument ) {
1591
-					if ( isset( $argument['advanced'] ) && $argument['advanced'] ) {
1592
-						$show = true;
1593
-						break; // no need to continue if we know we have it
1594
-					}
1595
-				}
1596
-			}
1555
+            return $this->arguments;
1556
+        }
1597 1557
 
1598
-			return $show;
1599
-		}
1558
+        /**
1559
+         * This is the main output class for all 3 items, widget, shortcode and block, it is extended in the calling class.
1560
+         *
1561
+         * @param array $args
1562
+         * @param array $widget_args
1563
+         * @param string $content
1564
+         */
1565
+        public function output( $args = array(), $widget_args = array(), $content = '' ) {
1600 1566
 
1601
-		/**
1602
-		 * Get the url path to the current folder.
1603
-		 *
1604
-		 * @return string
1605
-		 */
1606
-		public function get_url() {
1607
-			$url = $this->url;
1608
-
1609
-			if ( ! $url ) {
1610
-				$content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) );
1611
-				$content_url = untrailingslashit( WP_CONTENT_URL );
1612
-
1613
-				// Replace http:// to https://.
1614
-				if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) {
1615
-					$content_url = str_replace( 'http://', 'https://', $content_url );
1616
-				}
1567
+        }
1617 1568
 
1618
-				// Check if we are inside a plugin
1619
-				$file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) );
1620
-				$url = str_replace( $content_dir, $content_url, $file_dir );
1621
-				$url = trailingslashit( $url );
1622
-				$this->url = $url;
1623
-			}
1569
+        /**
1570
+         * Add the dynamic block code inline when the wp-block in enqueued.
1571
+         */
1572
+        public function register_block() {
1573
+            wp_add_inline_script( 'wp-blocks', $this->block() );
1574
+            if ( class_exists( 'SiteOrigin_Panels' ) ) {
1575
+                wp_add_inline_script( 'wp-blocks', $this->siteorigin_js() );
1576
+            }
1577
+        }
1624 1578
 
1625
-			return $url;
1626
-		}
1579
+        /**
1580
+         * Check if we need to show advanced options.
1581
+         *
1582
+         * @return bool
1583
+         */
1584
+        public function block_show_advanced() {
1627 1585
 
1628
-		/**
1629
-		 * Get the url path to the current folder.
1630
-		 *
1631
-		 * @return string
1632
-		 */
1633
-		public function get_url_old() {
1586
+            $show      = false;
1587
+            $arguments = $this->get_arguments();
1634 1588
 
1635
-			$url = $this->url;
1589
+            if ( ! empty( $arguments ) ) {
1590
+                foreach ( $arguments as $argument ) {
1591
+                    if ( isset( $argument['advanced'] ) && $argument['advanced'] ) {
1592
+                        $show = true;
1593
+                        break; // no need to continue if we know we have it
1594
+                    }
1595
+                }
1596
+            }
1636 1597
 
1637
-			if ( ! $url ) {
1638
-				// check if we are inside a plugin
1639
-				$file_dir = str_replace( "/includes", "", dirname( __FILE__ ) );
1598
+            return $show;
1599
+        }
1640 1600
 
1641
-				$dir_parts = explode( "/wp-content/", $file_dir );
1642
-				$url_parts = explode( "/wp-content/", plugins_url() );
1601
+        /**
1602
+         * Get the url path to the current folder.
1603
+         *
1604
+         * @return string
1605
+         */
1606
+        public function get_url() {
1607
+            $url = $this->url;
1643 1608
 
1644
-				if ( ! empty( $url_parts[0] ) && ! empty( $dir_parts[1] ) ) {
1645
-					$url       = trailingslashit( $url_parts[0] . "/wp-content/" . $dir_parts[1] );
1646
-					$this->url = $url;
1647
-				}
1648
-			}
1609
+            if ( ! $url ) {
1610
+                $content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) );
1611
+                $content_url = untrailingslashit( WP_CONTENT_URL );
1649 1612
 
1613
+                // Replace http:// to https://.
1614
+                if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) {
1615
+                    $content_url = str_replace( 'http://', 'https://', $content_url );
1616
+                }
1650 1617
 
1651
-			return $url;
1652
-		}
1618
+                // Check if we are inside a plugin
1619
+                $file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) );
1620
+                $url = str_replace( $content_dir, $content_url, $file_dir );
1621
+                $url = trailingslashit( $url );
1622
+                $this->url = $url;
1623
+            }
1653 1624
 
1654
-		/**
1655
-		 * Generate the block icon.
1656
-		 *
1657
-		 * Enables the use of Font Awesome icons.
1658
-		 *
1659
-		 * @note xlink:href is actually deprecated but href is not supported by all so we use both.
1660
-		 *
1661
-		 * @param $icon
1662
-		 *
1663
-		 * @return string
1664
-		 *@since 1.1.0
1665
-		 */
1666
-		public function get_block_icon( $icon ) {
1667
-
1668
-			// check if we have a Font Awesome icon
1669
-			$fa_type = '';
1670
-			if ( substr( $icon, 0, 7 ) === "fas fa-" ) {
1671
-				$fa_type = 'solid';
1672
-			} elseif ( substr( $icon, 0, 7 ) === "far fa-" ) {
1673
-				$fa_type = 'regular';
1674
-			} elseif ( substr( $icon, 0, 7 ) === "fab fa-" ) {
1675
-				$fa_type = 'brands';
1676
-			} else {
1677
-				$icon = "'" . $icon . "'";
1678
-			}
1625
+            return $url;
1626
+        }
1679 1627
 
1680
-			// set the icon if we found one
1681
-			if ( $fa_type ) {
1682
-				$fa_icon = str_replace( array( "fas fa-", "far fa-", "fab fa-" ), "", $icon );
1683
-				$icon    = "el('svg',{width: 20, height: 20, viewBox: '0 0 20 20'},el('use', {'xlink:href': '" . $this->get_url() . "icons/" . $fa_type . ".svg#" . $fa_icon . "','href': '" . $this->get_url() . "icons/" . $fa_type . ".svg#" . $fa_icon . "'}))";
1684
-			}
1628
+        /**
1629
+         * Get the url path to the current folder.
1630
+         *
1631
+         * @return string
1632
+         */
1633
+        public function get_url_old() {
1685 1634
 
1686
-			return $icon;
1687
-		}
1635
+            $url = $this->url;
1636
+
1637
+            if ( ! $url ) {
1638
+                // check if we are inside a plugin
1639
+                $file_dir = str_replace( "/includes", "", dirname( __FILE__ ) );
1640
+
1641
+                $dir_parts = explode( "/wp-content/", $file_dir );
1642
+                $url_parts = explode( "/wp-content/", plugins_url() );
1643
+
1644
+                if ( ! empty( $url_parts[0] ) && ! empty( $dir_parts[1] ) ) {
1645
+                    $url       = trailingslashit( $url_parts[0] . "/wp-content/" . $dir_parts[1] );
1646
+                    $this->url = $url;
1647
+                }
1648
+            }
1649
+
1650
+
1651
+            return $url;
1652
+        }
1653
+
1654
+        /**
1655
+         * Generate the block icon.
1656
+         *
1657
+         * Enables the use of Font Awesome icons.
1658
+         *
1659
+         * @note xlink:href is actually deprecated but href is not supported by all so we use both.
1660
+         *
1661
+         * @param $icon
1662
+         *
1663
+         * @return string
1664
+         *@since 1.1.0
1665
+         */
1666
+        public function get_block_icon( $icon ) {
1667
+
1668
+            // check if we have a Font Awesome icon
1669
+            $fa_type = '';
1670
+            if ( substr( $icon, 0, 7 ) === "fas fa-" ) {
1671
+                $fa_type = 'solid';
1672
+            } elseif ( substr( $icon, 0, 7 ) === "far fa-" ) {
1673
+                $fa_type = 'regular';
1674
+            } elseif ( substr( $icon, 0, 7 ) === "fab fa-" ) {
1675
+                $fa_type = 'brands';
1676
+            } else {
1677
+                $icon = "'" . $icon . "'";
1678
+            }
1679
+
1680
+            // set the icon if we found one
1681
+            if ( $fa_type ) {
1682
+                $fa_icon = str_replace( array( "fas fa-", "far fa-", "fab fa-" ), "", $icon );
1683
+                $icon    = "el('svg',{width: 20, height: 20, viewBox: '0 0 20 20'},el('use', {'xlink:href': '" . $this->get_url() . "icons/" . $fa_type . ".svg#" . $fa_icon . "','href': '" . $this->get_url() . "icons/" . $fa_type . ".svg#" . $fa_icon . "'}))";
1684
+            }
1685
+
1686
+            return $icon;
1687
+        }
1688 1688
 
1689
-		public function group_arguments( $arguments ) {
1689
+        public function group_arguments( $arguments ) {
1690 1690
 //			echo '###';print_r($arguments);
1691
-			if ( ! empty( $arguments ) ) {
1692
-				$temp_arguments = array();
1693
-				$general        = __( "General" );
1694
-				$add_sections   = false;
1695
-				foreach ( $arguments as $key => $args ) {
1696
-					if ( isset( $args['group'] ) ) {
1697
-						$temp_arguments[ $args['group'] ][ $key ] = $args;
1698
-						$add_sections                             = true;
1699
-					} else {
1700
-						$temp_arguments[ $general ][ $key ] = $args;
1701
-					}
1702
-				}
1691
+            if ( ! empty( $arguments ) ) {
1692
+                $temp_arguments = array();
1693
+                $general        = __( "General" );
1694
+                $add_sections   = false;
1695
+                foreach ( $arguments as $key => $args ) {
1696
+                    if ( isset( $args['group'] ) ) {
1697
+                        $temp_arguments[ $args['group'] ][ $key ] = $args;
1698
+                        $add_sections                             = true;
1699
+                    } else {
1700
+                        $temp_arguments[ $general ][ $key ] = $args;
1701
+                    }
1702
+                }
1703 1703
 
1704
-				// only add sections if more than one
1705
-				if ( $add_sections ) {
1706
-					$arguments = $temp_arguments;
1707
-				}
1708
-			}
1704
+                // only add sections if more than one
1705
+                if ( $add_sections ) {
1706
+                    $arguments = $temp_arguments;
1707
+                }
1708
+            }
1709 1709
 
1710 1710
 //			echo '###';print_r($arguments);
1711
-			return $arguments;
1712
-		}
1711
+            return $arguments;
1712
+        }
1713 1713
 
1714
-		/**
1715
-		 * Parse used group tabs.
1716
-		 *
1717
-		 * @since 1.1.17
1718
-		 */
1719
-		public function group_block_tabs( $tabs, $arguments ) {
1720
-			if ( ! empty( $tabs ) && ! empty( $arguments ) ) {
1721
-				$has_sections = false;
1722
-
1723
-				foreach ( $this->arguments as $key => $args ) {
1724
-					if ( isset( $args['group'] ) ) {
1725
-						$has_sections = true;
1726
-						break;
1727
-					}
1728
-				}
1714
+        /**
1715
+         * Parse used group tabs.
1716
+         *
1717
+         * @since 1.1.17
1718
+         */
1719
+        public function group_block_tabs( $tabs, $arguments ) {
1720
+            if ( ! empty( $tabs ) && ! empty( $arguments ) ) {
1721
+                $has_sections = false;
1722
+
1723
+                foreach ( $this->arguments as $key => $args ) {
1724
+                    if ( isset( $args['group'] ) ) {
1725
+                        $has_sections = true;
1726
+                        break;
1727
+                    }
1728
+                }
1729 1729
 
1730
-				if ( ! $has_sections ) {
1731
-					return $tabs;
1732
-				}
1730
+                if ( ! $has_sections ) {
1731
+                    return $tabs;
1732
+                }
1733 1733
 
1734
-				$new_tabs = array();
1734
+                $new_tabs = array();
1735 1735
 
1736
-				foreach ( $tabs as $tab_key => $tab ) {
1737
-					$new_groups = array();
1736
+                foreach ( $tabs as $tab_key => $tab ) {
1737
+                    $new_groups = array();
1738 1738
 
1739
-					if ( ! empty( $tab['groups'] ) && is_array( $tab['groups'] ) ) {
1740
-						foreach ( $tab['groups'] as $group ) {
1741
-							if ( isset( $arguments[ $group ] ) ) {
1742
-								$new_groups[] = $group;
1743
-							}
1744
-						}
1745
-					}
1739
+                    if ( ! empty( $tab['groups'] ) && is_array( $tab['groups'] ) ) {
1740
+                        foreach ( $tab['groups'] as $group ) {
1741
+                            if ( isset( $arguments[ $group ] ) ) {
1742
+                                $new_groups[] = $group;
1743
+                            }
1744
+                        }
1745
+                    }
1746 1746
 
1747
-					if ( ! empty( $new_groups ) ) {
1748
-						$tab['groups'] = $new_groups;
1747
+                    if ( ! empty( $new_groups ) ) {
1748
+                        $tab['groups'] = $new_groups;
1749 1749
 
1750
-						$new_tabs[ $tab_key ] = $tab;
1751
-					}
1752
-				}
1750
+                        $new_tabs[ $tab_key ] = $tab;
1751
+                    }
1752
+                }
1753 1753
 
1754
-				$tabs = $new_tabs;
1755
-			}
1754
+                $tabs = $new_tabs;
1755
+            }
1756 1756
 
1757
-			return $tabs;
1758
-		}
1757
+            return $tabs;
1758
+        }
1759
+
1760
+        /**
1761
+         * Output the JS for building the dynamic Guntenberg block.
1762
+         *
1763
+         * @return mixed
1764
+         *@since 1.0.9 Save numbers as numbers and not strings.
1765
+         * @since 1.1.0 Font Awesome classes can be used for icons.
1766
+         * @since 1.0.4 Added block_wrap property which will set the block wrapping output element ie: div, span, p or empty for no wrap.
1767
+         */
1768
+        public function block() {
1769
+            global $sd_is_js_functions_loaded, $aui_bs5;
1770
+
1771
+            $show_advanced = $this->block_show_advanced();
1759 1772
 
1760
-		/**
1761
-		 * Output the JS for building the dynamic Guntenberg block.
1762
-		 *
1763
-		 * @return mixed
1764
-		 *@since 1.0.9 Save numbers as numbers and not strings.
1765
-		 * @since 1.1.0 Font Awesome classes can be used for icons.
1766
-		 * @since 1.0.4 Added block_wrap property which will set the block wrapping output element ie: div, span, p or empty for no wrap.
1767
-		 */
1768
-		public function block() {
1769
-			global $sd_is_js_functions_loaded, $aui_bs5;
1770
-
1771
-			$show_advanced = $this->block_show_advanced();
1772
-
1773
-			ob_start();
1774
-			?>
1773
+            ob_start();
1774
+            ?>
1775 1775
 			<script>
1776 1776
 			<?php
1777
-			if ( ! $sd_is_js_functions_loaded ) {
1778
-				$sd_is_js_functions_loaded = true;
1779
-			?>
1777
+            if ( ! $sd_is_js_functions_loaded ) {
1778
+                $sd_is_js_functions_loaded = true;
1779
+            ?>
1780 1780
 function sd_show_view_options($this){
1781 1781
 	if(jQuery($this).html().length){
1782 1782
 		jQuery($this).html('');
@@ -2224,8 +2224,8 @@  discard block
 block discarded – undo
2224 2224
                 $classes = [];
2225 2225
 
2226 2226
 				<?php
2227
-				if($aui_bs5){
2228
-					?>
2227
+                if($aui_bs5){
2228
+                    ?>
2229 2229
 				$aui_bs5 = true;
2230 2230
 				$p_ml = 'ms-';
2231 2231
 				$p_mr = 'me-';
@@ -2233,8 +2233,8 @@  discard block
 block discarded – undo
2233 2233
 				$p_pl = 'ps-';
2234 2234
 				$p_pr = 'pe-';
2235 2235
 					<?php
2236
-				}else{
2237
-						?>
2236
+                }else{
2237
+                        ?>
2238 2238
 				$aui_bs5 = false;
2239 2239
 				$p_ml = 'ml-';
2240 2240
 				$p_mr = 'mr-';
@@ -2242,8 +2242,8 @@  discard block
 block discarded – undo
2242 2242
 				$p_pl = 'pl-';
2243 2243
 				$p_pr = 'pr-';
2244 2244
 					<?php
2245
-				}
2246
-				?>
2245
+                }
2246
+                ?>
2247 2247
 
2248 2248
                 // margins
2249 2249
 	            if ( $args['mt'] !== undefined && $args['mt'] !== '' ) { $classes.push( "mt-" + $args['mt'] );  $mt = $args['mt']; }else{$mt = null;}
@@ -2426,10 +2426,10 @@  discard block
 block discarded – undo
2426 2426
 
2427 2427
             }
2428 2428
 
2429
-			if(method_exists($this,'block_global_js')){
2430
-					echo $this->block_global_js();
2431
-			}
2432
-			?>
2429
+            if(method_exists($this,'block_global_js')){
2430
+                    echo $this->block_global_js();
2431
+            }
2432
+            ?>
2433 2433
 
2434 2434
 jQuery(function() {
2435 2435
 
@@ -2479,14 +2479,14 @@  discard block
 block discarded – undo
2479 2479
 						icon: <?php echo $this->get_block_icon( $this->options['block-icon'] );?>,//'<?php echo isset( $this->options['block-icon'] ) ? esc_attr( $this->options['block-icon'] ) : 'shield-alt';?>', // Block icon from Dashicons → https://developer.wordpress.org/resource/dashicons/.
2480 2480
 						supports: {
2481 2481
 							<?php
2482
-							if ( isset( $this->options['block-supports'] ) ) {
2483
-								echo $this->array_to_attributes( $this->options['block-supports'] );
2484
-							}
2485
-							?>
2482
+                            if ( isset( $this->options['block-supports'] ) ) {
2483
+                                echo $this->array_to_attributes( $this->options['block-supports'] );
2484
+                            }
2485
+                            ?>
2486 2486
 						},
2487 2487
 						<?php
2488
-						if ( isset( $this->options['block-label'] ) ) {
2489
-						?>
2488
+                        if ( isset( $this->options['block-label'] ) ) {
2489
+                        ?>
2490 2490
 						__experimentalLabel( attributes, { context } ) {
2491 2491
                             return <?php echo $this->options['block-label']; ?>;
2492 2492
                         },
@@ -2495,7 +2495,7 @@  discard block
 block discarded – undo
2495 2495
                         ?>
2496 2496
 						category: '<?php echo isset( $this->options['block-category'] ) ? esc_attr( $this->options['block-category'] ) : 'common';?>', // Block category — Group blocks together based on common traits E.g. common, formatting, layout widgets, embed.
2497 2497
 						<?php if ( isset( $this->options['block-keywords'] ) ) {
2498
-						echo "keywords : " . $this->options['block-keywords'] . ",";
2498
+                        echo "keywords : " . $this->options['block-keywords'] . ",";
2499 2499
 
2500 2500
 //						// block hover preview.
2501 2501
 //						$example_args = array();
@@ -2520,86 +2520,86 @@  discard block
 block discarded – undo
2520 2520
 
2521 2521
                         }
2522 2522
 
2523
-						// maybe set no_wrap
2524
-						$no_wrap = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
2525
-						if ( isset( $this->arguments['no_wrap'] ) && $this->arguments['no_wrap'] ) {
2526
-							$no_wrap = true;
2527
-						}
2528
-						if ( $no_wrap ) {
2529
-							$this->options['block-wrap'] = '';
2530
-						}
2523
+                        // maybe set no_wrap
2524
+                        $no_wrap = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
2525
+                        if ( isset( $this->arguments['no_wrap'] ) && $this->arguments['no_wrap'] ) {
2526
+                            $no_wrap = true;
2527
+                        }
2528
+                        if ( $no_wrap ) {
2529
+                            $this->options['block-wrap'] = '';
2530
+                        }
2531 2531
 
2532
-						// maybe load the drag/drop functions.
2533
-						$img_drag_drop = false;
2532
+                        // maybe load the drag/drop functions.
2533
+                        $img_drag_drop = false;
2534 2534
 
2535
-						$show_alignment = false;
2536
-						// align feature
2537
-						/*echo "supports: {";
2535
+                        $show_alignment = false;
2536
+                        // align feature
2537
+                        /*echo "supports: {";
2538 2538
 						echo "	align: true,";
2539 2539
 						echo "  html: false";
2540 2540
 						echo "},";*/
2541 2541
 
2542
-						if ( ! empty( $this->arguments ) ) {
2543
-							echo "attributes : {";
2542
+                        if ( ! empty( $this->arguments ) ) {
2543
+                            echo "attributes : {";
2544 2544
 
2545
-							if ( $show_advanced ) {
2546
-								echo "show_advanced: {";
2547
-								echo "	type: 'boolean',";
2548
-								echo "  default: false,";
2549
-								echo "},";
2550
-							}
2545
+                            if ( $show_advanced ) {
2546
+                                echo "show_advanced: {";
2547
+                                echo "	type: 'boolean',";
2548
+                                echo "  default: false,";
2549
+                                echo "},";
2550
+                            }
2551 2551
 
2552
-							// block wrap element
2553
-							if ( ! empty( $this->options['block-wrap'] ) ) { //@todo we should validate this?
2554
-								echo "block_wrap: {";
2555
-								echo "	type: 'string',";
2556
-								echo "  default: '" . esc_attr( $this->options['block-wrap'] ) . "',";
2557
-								echo "},";
2558
-							}
2552
+                            // block wrap element
2553
+                            if ( ! empty( $this->options['block-wrap'] ) ) { //@todo we should validate this?
2554
+                                echo "block_wrap: {";
2555
+                                echo "	type: 'string',";
2556
+                                echo "  default: '" . esc_attr( $this->options['block-wrap'] ) . "',";
2557
+                                echo "},";
2558
+                            }
2559 2559
 
2560 2560
 
2561 2561
 
2562
-							foreach ( $this->arguments as $key => $args ) {
2562
+                            foreach ( $this->arguments as $key => $args ) {
2563 2563
 
2564
-								if( $args['type'] == 'image' ||  $args['type'] == 'images' ){
2565
-									$img_drag_drop = true;
2566
-								}
2564
+                                if( $args['type'] == 'image' ||  $args['type'] == 'images' ){
2565
+                                    $img_drag_drop = true;
2566
+                                }
2567 2567
 
2568
-								// set if we should show alignment
2569
-								if ( $key == 'alignment' ) {
2570
-									$show_alignment = true;
2571
-								}
2568
+                                // set if we should show alignment
2569
+                                if ( $key == 'alignment' ) {
2570
+                                    $show_alignment = true;
2571
+                                }
2572 2572
 
2573
-								$extra = '';
2573
+                                $extra = '';
2574 2574
 
2575
-								if ( $args['type'] == 'notice' ||  $args['type'] == 'tab' ) {
2576
-									continue;
2577
-								}
2578
-								elseif ( $args['type'] == 'checkbox' ) {
2579
-									$type    = 'boolean';
2580
-									$default = isset( $args['default'] ) && $args['default'] ? 'true' : 'false';
2581
-								} elseif ( $args['type'] == 'number' ) {
2582
-									$type    = 'number';
2583
-									$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2584
-								} elseif ( $args['type'] == 'select' && ! empty( $args['multiple'] ) ) {
2585
-									$type = 'array';
2586
-									if ( isset( $args['default'] ) && is_array( $args['default'] ) ) {
2587
-										$default = ! empty( $args['default'] ) ? "['" . implode( "','", $args['default'] ) . "']" : "[]";
2588
-									} else {
2589
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2590
-									}
2591
-								} elseif ( $args['type'] == 'tagselect' ) {
2592
-									$type    = 'array';
2593
-									$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2594
-								} elseif ( $args['type'] == 'multiselect' ) {
2595
-									$type    = 'array';
2596
-									$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2597
-								} elseif ( $args['type'] == 'image_xy' ) {
2598
-									$type    = 'object';
2599
-									$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2600
-								} elseif ( $args['type'] == 'image' ) {
2601
-									$type    = 'string';
2602
-									$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2575
+                                if ( $args['type'] == 'notice' ||  $args['type'] == 'tab' ) {
2576
+                                    continue;
2577
+                                }
2578
+                                elseif ( $args['type'] == 'checkbox' ) {
2579
+                                    $type    = 'boolean';
2580
+                                    $default = isset( $args['default'] ) && $args['default'] ? 'true' : 'false';
2581
+                                } elseif ( $args['type'] == 'number' ) {
2582
+                                    $type    = 'number';
2583
+                                    $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2584
+                                } elseif ( $args['type'] == 'select' && ! empty( $args['multiple'] ) ) {
2585
+                                    $type = 'array';
2586
+                                    if ( isset( $args['default'] ) && is_array( $args['default'] ) ) {
2587
+                                        $default = ! empty( $args['default'] ) ? "['" . implode( "','", $args['default'] ) . "']" : "[]";
2588
+                                    } else {
2589
+                                        $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2590
+                                    }
2591
+                                } elseif ( $args['type'] == 'tagselect' ) {
2592
+                                    $type    = 'array';
2593
+                                    $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2594
+                                } elseif ( $args['type'] == 'multiselect' ) {
2595
+                                    $type    = 'array';
2596
+                                    $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2597
+                                } elseif ( $args['type'] == 'image_xy' ) {
2598
+                                    $type    = 'object';
2599
+                                    $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2600
+                                } elseif ( $args['type'] == 'image' ) {
2601
+                                    $type    = 'string';
2602
+                                    $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2603 2603
 
2604 2604
                                     // add a field for ID
2605 2605
 //                                    echo $key . "_id : {";
@@ -2609,25 +2609,25 @@  discard block
 block discarded – undo
2609 2609
 //                                    echo "type : 'object',";
2610 2610
 //                                    echo "},";
2611 2611
 
2612
-								} else {
2613
-									$type    = !empty($args['hidden_type']) ? esc_attr($args['hidden_type']) : 'string';
2614
-									$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2612
+                                } else {
2613
+                                    $type    = !empty($args['hidden_type']) ? esc_attr($args['hidden_type']) : 'string';
2614
+                                    $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2615 2615
 
2616
-								}
2617
-								echo $key . " : {";
2618
-								echo "type : '$type',";
2619
-								echo "default : $default,";
2620
-								echo "},";
2621
-							}
2616
+                                }
2617
+                                echo $key . " : {";
2618
+                                echo "type : '$type',";
2619
+                                echo "default : $default,";
2620
+                                echo "},";
2621
+                            }
2622 2622
 
2623
-							echo "content : {type : 'string',default: 'Please select the attributes in the block settings'},";
2624
-							echo "className: { type: 'string', default: '' },";
2623
+                            echo "content : {type : 'string',default: 'Please select the attributes in the block settings'},";
2624
+                            echo "className: { type: 'string', default: '' },";
2625 2625
 
2626
-							echo "},";
2626
+                            echo "},";
2627 2627
 
2628
-						}
2628
+                        }
2629 2629
 
2630
-						?>
2630
+                        ?>
2631 2631
 
2632 2632
 						// The "edit" property must be a valid function.
2633 2633
 						edit: function (props) {
@@ -2726,9 +2726,9 @@  discard block
 block discarded – undo
2726 2726
 
2727 2727
 	var $value = '';
2728 2728
 	<?php
2729
-	// if we have a post_type and a category then link them
2730
-	if( isset($this->arguments['post_type']) && isset($this->arguments['category']) && !empty($this->arguments['category']['post_type_linked']) ){
2731
-	?>
2729
+    // if we have a post_type and a category then link them
2730
+    if( isset($this->arguments['post_type']) && isset($this->arguments['category']) && !empty($this->arguments['category']['post_type_linked']) ){
2731
+    ?>
2732 2732
 	if(typeof(prev_attributes[props.clientId]) != 'undefined'){
2733 2733
 		$pt = props.attributes.post_type;
2734 2734
 		if(post_type_rest_slugs.length){
@@ -2741,11 +2741,11 @@  discard block
 block discarded – undo
2741 2741
 			term_query_type = $pt;
2742 2742
 		}
2743 2743
 <?php
2744
-	$cat_path = '';
2745
-	if ( ! empty( $this->arguments['post_type']['onchange_rest']['path'] ) ) {
2746
-		$cat_path = esc_js( strip_tags( $this->arguments['post_type']['onchange_rest']['path'] ) );
2747
-		$cat_path = str_replace( array( '&quot;', '&#039;' ), array( '"', "'" ), $cat_path );
2748
-	}
2744
+    $cat_path = '';
2745
+    if ( ! empty( $this->arguments['post_type']['onchange_rest']['path'] ) ) {
2746
+        $cat_path = esc_js( strip_tags( $this->arguments['post_type']['onchange_rest']['path'] ) );
2747
+        $cat_path = str_replace( array( '&quot;', '&#039;' ), array( '"', "'" ), $cat_path );
2748
+    }
2749 2749
 ?>
2750 2750
 		/* taxonomies */
2751 2751
 		if($value && 'post_type' in prev_attributes[props.clientId] && 'category' in prev_attributes[props.clientId] && run){
@@ -2837,7 +2837,7 @@  discard block
 block discarded – undo
2837 2837
 <?php
2838 2838
 $current_screen = function_exists('get_current_screen') ? get_current_screen() : '';
2839 2839
 if(!empty($current_screen->base) && $current_screen->base==='widgets'){
2840
-	echo 'const { deviceType } = "";';
2840
+    echo 'const { deviceType } = "";';
2841 2841
 }else{
2842 2842
 ?>
2843 2843
 /** Get device type const. */
@@ -2871,8 +2871,8 @@  discard block
 block discarded – undo
2871 2871
 										'attributes': props.attributes,
2872 2872
 										'block_parent_name': parentBlocks.length ? parentBlocks[parentBlocks.length - 1].name : '',
2873 2873
 										'post_id': <?php global $post; if ( isset( $post->ID ) ) {
2874
-										echo $post->ID;
2875
-									}else{echo '0';}?>,
2874
+                                        echo $post->ID;
2875
+                                    }else{echo '0';}?>,
2876 2876
 										'_ajax_nonce': '<?php echo wp_create_nonce( 'super_duper_output_shortcode' );?>'
2877 2877
 									};
2878 2878
 
@@ -2949,10 +2949,10 @@  discard block
 block discarded – undo
2949 2949
 
2950 2950
 									<?php
2951 2951
 
2952
-									if(! empty( $this->arguments )){
2952
+                                    if(! empty( $this->arguments )){
2953 2953
 
2954
-									if ( $show_advanced ) {
2955
-									?>
2954
+                                    if ( $show_advanced ) {
2955
+                                    ?>
2956 2956
 									el('div', {
2957 2957
 											style: {'padding-left': '16px','padding-right': '16px'}
2958 2958
 										},
@@ -2969,127 +2969,127 @@  discard block
 block discarded – undo
2969 2969
 									)
2970 2970
 									,
2971 2971
 									<?php
2972
-									}
2972
+                                    }
2973 2973
 
2974
-									$arguments = $this->group_arguments( $this->arguments );
2975
-									$block_group_tabs = ! empty( $this->options['block_group_tabs'] ) ? $this->group_block_tabs( $this->options['block_group_tabs'], $arguments ) : array();
2974
+                                    $arguments = $this->group_arguments( $this->arguments );
2975
+                                    $block_group_tabs = ! empty( $this->options['block_group_tabs'] ) ? $this->group_block_tabs( $this->options['block_group_tabs'], $arguments ) : array();
2976 2976
 
2977
-									// Do we have sections?
2978
-									$has_sections = $arguments == $this->arguments ? false : true;
2977
+                                    // Do we have sections?
2978
+                                    $has_sections = $arguments == $this->arguments ? false : true;
2979 2979
 
2980
-									if($has_sections){
2981
-									$panel_count = 0;
2982
-									$open_tab = '';
2980
+                                    if($has_sections){
2981
+                                    $panel_count = 0;
2982
+                                    $open_tab = '';
2983 2983
 
2984
-									$open_tab_groups = array();
2985
-									$used_tabs = array();
2984
+                                    $open_tab_groups = array();
2985
+                                    $used_tabs = array();
2986 2986
 
2987
-									foreach ( $arguments as $key => $args ) {
2988
-										$close_tab = false;
2989
-										$close_tabs = false;
2987
+                                    foreach ( $arguments as $key => $args ) {
2988
+                                        $close_tab = false;
2989
+                                        $close_tabs = false;
2990 2990
 
2991
-										 if ( ! empty( $block_group_tabs ) ) {
2992
-											foreach ( $block_group_tabs as $tab_name => $tab_args ) {
2993
-												if ( in_array( $key, $tab_args['groups'] ) ) {
2994
-													$open_tab_groups[] = $key;
2991
+                                            if ( ! empty( $block_group_tabs ) ) {
2992
+                                            foreach ( $block_group_tabs as $tab_name => $tab_args ) {
2993
+                                                if ( in_array( $key, $tab_args['groups'] ) ) {
2994
+                                                    $open_tab_groups[] = $key;
2995 2995
 
2996
-													if ( $open_tab != $tab_name ) {
2997
-														$tab_args['tab']['tabs_open'] = $open_tab == '' ? true : false;
2998
-														$tab_args['tab']['open'] = true;
2996
+                                                    if ( $open_tab != $tab_name ) {
2997
+                                                        $tab_args['tab']['tabs_open'] = $open_tab == '' ? true : false;
2998
+                                                        $tab_args['tab']['open'] = true;
2999 2999
 
3000
-														$this->block_tab_start( '', $tab_args );
3001
-														$open_tab = $tab_name;
3002
-														$used_tabs[] = $tab_name;
3003
-													}
3000
+                                                        $this->block_tab_start( '', $tab_args );
3001
+                                                        $open_tab = $tab_name;
3002
+                                                        $used_tabs[] = $tab_name;
3003
+                                                    }
3004 3004
 
3005
-													if ( $open_tab_groups == $tab_args['groups'] ) {
3006
-														$close_tab = true;
3007
-														$open_tab_groups = array();
3005
+                                                    if ( $open_tab_groups == $tab_args['groups'] ) {
3006
+                                                        $close_tab = true;
3007
+                                                        $open_tab_groups = array();
3008 3008
 
3009
-														if ( $used_tabs == array_keys( $block_group_tabs ) ) {
3010
-															$close_tabs = true;
3011
-														}
3012
-													}
3013
-												}
3014
-											}
3015
-										}
3016
-										?>
3009
+                                                        if ( $used_tabs == array_keys( $block_group_tabs ) ) {
3010
+                                                            $close_tabs = true;
3011
+                                                        }
3012
+                                                    }
3013
+                                                }
3014
+                                            }
3015
+                                        }
3016
+                                        ?>
3017 3017
 										el(wp.components.PanelBody, {
3018 3018
 												title: '<?php esc_attr_e( $key ); ?>',
3019 3019
 												initialOpen: <?php if ( $panel_count ) {
3020
-												echo "false";
3021
-											} else {
3022
-												echo "true";
3023
-											}?>
3020
+                                                echo "false";
3021
+                                            } else {
3022
+                                                echo "true";
3023
+                                            }?>
3024 3024
 											},
3025 3025
 											<?php
3026
-											foreach ( $args as $k => $a ) {
3027
-												$this->block_tab_start( $k, $a );
3028
-												$this->block_row_start( $k, $a );
3029
-												$this->build_block_arguments( $k, $a );
3030
-												$this->block_row_end( $k, $a );
3031
-												$this->block_tab_end( $k, $a );
3032
-											}
3033
-											?>
3026
+                                            foreach ( $args as $k => $a ) {
3027
+                                                $this->block_tab_start( $k, $a );
3028
+                                                $this->block_row_start( $k, $a );
3029
+                                                $this->build_block_arguments( $k, $a );
3030
+                                                $this->block_row_end( $k, $a );
3031
+                                                $this->block_tab_end( $k, $a );
3032
+                                            }
3033
+                                            ?>
3034 3034
 										),
3035 3035
 										<?php
3036
-										$panel_count ++;
3036
+                                        $panel_count ++;
3037 3037
 
3038
-										if($close_tab || $close_tabs){
3039
-											$tab_args = array(
3040
-												'tab'	=> array(
3041
-													'tabs_close' => $close_tabs,
3042
-												'close' => true,
3043
-												)
3038
+                                        if($close_tab || $close_tabs){
3039
+                                            $tab_args = array(
3040
+                                                'tab'	=> array(
3041
+                                                    'tabs_close' => $close_tabs,
3042
+                                                'close' => true,
3043
+                                                )
3044 3044
 
3045
-											);
3046
-											$this->block_tab_end( '', $tab_args );
3045
+                                            );
3046
+                                            $this->block_tab_end( '', $tab_args );
3047 3047
 //											echo '###close'; print_r($tab_args);
3048
-											$panel_count = 0;
3049
-										}
3048
+                                            $panel_count = 0;
3049
+                                        }
3050 3050
 //
3051 3051
 
3052
-									}
3053
-									}else {
3054
-									?>
3052
+                                    }
3053
+                                    }else {
3054
+                                    ?>
3055 3055
 									el(wp.components.PanelBody, {
3056 3056
 											title: '<?php esc_attr_e( "Settings" ); ?>',
3057 3057
 											initialOpen: true
3058 3058
 										},
3059 3059
 										<?php
3060
-										foreach ( $this->arguments as $key => $args ) {
3061
-											$this->block_row_start( $key, $args );
3062
-											$this->build_block_arguments( $key, $args );
3063
-											$this->block_row_end( $key, $args );
3064
-										}
3065
-										?>
3060
+                                        foreach ( $this->arguments as $key => $args ) {
3061
+                                            $this->block_row_start( $key, $args );
3062
+                                            $this->build_block_arguments( $key, $args );
3063
+                                            $this->block_row_end( $key, $args );
3064
+                                        }
3065
+                                        ?>
3066 3066
 									),
3067 3067
 									<?php
3068
-									}
3068
+                                    }
3069 3069
 
3070
-									}
3071
-									?>
3070
+                                    }
3071
+                                    ?>
3072 3072
 
3073 3073
 								),
3074 3074
 
3075 3075
 								<?php
3076
-								// If the user sets block-output array then build it
3077
-								if ( ! empty( $this->options['block-output'] ) ) {
3078
-								$this->block_element( $this->options['block-output'] );
3079
-							}elseif(!empty($this->options['block-edit-return'])){
3080
-                                   echo $this->options['block-edit-return'];
3081
-							}else{
3082
-								// if no block-output is set then we try and get the shortcode html output via ajax.
3083
-								$block_edit_wrap_tag = !empty($this->options['block_edit_wrap_tag']) ? esc_attr($this->options['block_edit_wrap_tag']) : 'div';
3084
-								?>
3076
+                                // If the user sets block-output array then build it
3077
+                                if ( ! empty( $this->options['block-output'] ) ) {
3078
+                                $this->block_element( $this->options['block-output'] );
3079
+                            }elseif(!empty($this->options['block-edit-return'])){
3080
+                                    echo $this->options['block-edit-return'];
3081
+                            }else{
3082
+                                // if no block-output is set then we try and get the shortcode html output via ajax.
3083
+                                $block_edit_wrap_tag = !empty($this->options['block_edit_wrap_tag']) ? esc_attr($this->options['block_edit_wrap_tag']) : 'div';
3084
+                                ?>
3085 3085
 								el('<?php echo esc_attr($block_edit_wrap_tag); ?>', wp.blockEditor.useBlockProps({
3086 3086
 									dangerouslySetInnerHTML: {__html: onChangeContent()},
3087 3087
 									className: props.className,
3088 3088
 									style: {'minHeight': '30px'}
3089 3089
 								}))
3090 3090
 								<?php
3091
-								}
3092
-								?>
3091
+                                }
3092
+                                ?>
3093 3093
 							]; // end return
3094 3094
 
3095 3095
 							<?php
@@ -3108,11 +3108,11 @@  discard block
 block discarded – undo
3108 3108
 							$html = '';
3109 3109
 							<?php
3110 3110
 
3111
-							if(! empty( $this->arguments )){
3111
+                            if(! empty( $this->arguments )){
3112 3112
 
3113
-							foreach($this->arguments as $key => $args){
3114
-                               // if($args['type']=='tabs'){continue;}
3115
-							?>
3113
+                            foreach($this->arguments as $key => $args){
3114
+                                // if($args['type']=='tabs'){continue;}
3115
+                            ?>
3116 3116
 							if (attr.hasOwnProperty("<?php echo esc_attr( $key );?>")) {
3117 3117
 								if ('<?php echo esc_attr( $key );?>' == 'html') {
3118 3118
 									$html = attr.<?php echo esc_attr( $key );?>;
@@ -3123,10 +3123,10 @@  discard block
 block discarded – undo
3123 3123
 								}
3124 3124
 							}
3125 3125
 							<?php
3126
-							}
3127
-							}
3126
+                            }
3127
+                            }
3128 3128
 
3129
-							?>
3129
+                            ?>
3130 3130
 							content += "]";
3131 3131
 
3132 3132
                             <?php
@@ -3173,7 +3173,7 @@  discard block
 block discarded – undo
3173 3173
 //                               $this->block_element( $this->options['block-output'], true );
3174 3174
 //                               echo ";";
3175 3175
 
3176
-                               ?>
3176
+                                ?>
3177 3177
                               return el(
3178 3178
                                    '',
3179 3179
                                    {},
@@ -3183,9 +3183,9 @@  discard block
 block discarded – undo
3183 3183
                                );
3184 3184
                                 <?php
3185 3185
 
3186
-							}elseif(!empty($this->options['block-save-return'])){
3187
-                                   echo 'return ' . $this->options['block-save-return'];
3188
-							}elseif(!empty($this->options['nested-block'])){
3186
+                            }elseif(!empty($this->options['block-save-return'])){
3187
+                                    echo 'return ' . $this->options['block-save-return'];
3188
+                            }elseif(!empty($this->options['nested-block'])){
3189 3189
                                 ?>
3190 3190
                               return el(
3191 3191
                                    '',
@@ -3195,22 +3195,22 @@  discard block
 block discarded – undo
3195 3195
                                    el('', {dangerouslySetInnerHTML: {__html: "[/<?php echo $this->options['base_id'];?>]"}})
3196 3196
                                );
3197 3197
                                 <?php
3198
-							}elseif(!empty( $this->options['block-save-return'] ) ){
3198
+                            }elseif(!empty( $this->options['block-save-return'] ) ){
3199 3199
                                 echo "return ". $this->options['block-edit-return'].";";
3200
-							}elseif(isset( $this->options['block-wrap'] ) && $this->options['block-wrap'] == ''){
3201
-							?>
3200
+                            }elseif(isset( $this->options['block-wrap'] ) && $this->options['block-wrap'] == ''){
3201
+                            ?>
3202 3202
 							return content;
3203 3203
 							<?php
3204
-							}else{
3205
-							?>
3204
+                            }else{
3205
+                            ?>
3206 3206
 							var block_wrap = 'div';
3207 3207
 							if (attr.hasOwnProperty("block_wrap")) {
3208 3208
 								block_wrap = attr.block_wrap;
3209 3209
 							}
3210 3210
 							return el(block_wrap, wp.blockEditor.useBlockProps.save( {dangerouslySetInnerHTML: {__html: content}, className: align} ));
3211 3211
 							<?php
3212
-							}
3213
-							?>
3212
+                            }
3213
+                            ?>
3214 3214
 
3215 3215
 
3216 3216
 						}
@@ -3224,29 +3224,29 @@  discard block
 block discarded – undo
3224 3224
                 });
3225 3225
 			</script>
3226 3226
 			<?php
3227
-			$output = ob_get_clean();
3227
+            $output = ob_get_clean();
3228 3228
 
3229
-			/*
3229
+            /*
3230 3230
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
3231 3231
 			 */
3232 3232
 
3233
-			return str_replace( array(
3234
-				'<script>',
3235
-				'</script>'
3236
-			), '', $output );
3237
-		}
3233
+            return str_replace( array(
3234
+                '<script>',
3235
+                '</script>'
3236
+            ), '', $output );
3237
+        }
3238 3238
 
3239 3239
 
3240 3240
 
3241
-		public function block_row_start($key, $args){
3241
+        public function block_row_start($key, $args){
3242 3242
 
3243
-			// check for row
3244
-			if(!empty($args['row'])){
3243
+            // check for row
3244
+            if(!empty($args['row'])){
3245 3245
 
3246
-				if(!empty($args['row']['open'])){
3246
+                if(!empty($args['row']['open'])){
3247 3247
 
3248
-				// element require
3249
-				$element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3248
+                // element require
3249
+                $element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3250 3250
                 $device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3251 3251
                 $device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3252 3252
                 $device_type_icon = '';
@@ -3257,10 +3257,10 @@  discard block
 block discarded – undo
3257 3257
                 }elseif($device_type=='Mobile'){
3258 3258
                     $device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3259 3259
                 }
3260
-				echo $element_require;
3260
+                echo $element_require;
3261 3261
                 echo $device_type_require;
3262 3262
 
3263
-					if(false){?><script><?php }?>
3263
+                    if(false){?><script><?php }?>
3264 3264
 						el('div', {
3265 3265
 								className: 'bsui components-base-control',
3266 3266
 							},
@@ -3298,51 +3298,51 @@  discard block
 block discarded – undo
3298 3298
 									},
3299 3299
 
3300 3300
 					<?php
3301
-					if(false){?></script><?php }
3302
-				}elseif(!empty($args['row']['close'])){
3303
-					if(false){?><script><?php }?>
3301
+                    if(false){?></script><?php }
3302
+                }elseif(!empty($args['row']['close'])){
3303
+                    if(false){?><script><?php }?>
3304 3304
 						el(
3305 3305
 							'div',
3306 3306
 							{
3307 3307
 								className: 'col pl-0 ps-0',
3308 3308
 							},
3309 3309
 					<?php
3310
-					if(false){?></script><?php }
3311
-				}else{
3312
-					if(false){?><script><?php }?>
3310
+                    if(false){?></script><?php }
3311
+                }else{
3312
+                    if(false){?><script><?php }?>
3313 3313
 						el(
3314 3314
 							'div',
3315 3315
 							{
3316 3316
 								className: 'col pl-0 ps-0 pr-2 pe-2',
3317 3317
 							},
3318 3318
 					<?php
3319
-					if(false){?></script><?php }
3320
-				}
3319
+                    if(false){?></script><?php }
3320
+                }
3321 3321
 
3322
-			}
3322
+            }
3323 3323
 
3324
-		}
3324
+        }
3325 3325
 
3326
-		public function block_row_end($key, $args){
3326
+        public function block_row_end($key, $args){
3327 3327
 
3328
-			if(!empty($args['row'])){
3329
-				// maybe close
3330
-				if(!empty($args['row']['close'])){
3331
-					echo "))";
3332
-				}
3328
+            if(!empty($args['row'])){
3329
+                // maybe close
3330
+                if(!empty($args['row']['close'])){
3331
+                    echo "))";
3332
+                }
3333 3333
 
3334
-				echo "),";
3335
-			}
3336
-		}
3334
+                echo "),";
3335
+            }
3336
+        }
3337 3337
 
3338
-		public function block_tab_start($key, $args){
3338
+        public function block_tab_start($key, $args){
3339 3339
 
3340
-			// check for row
3341
-			if(!empty($args['tab'])){
3340
+            // check for row
3341
+            if(!empty($args['tab'])){
3342 3342
 
3343
-				if(!empty($args['tab']['tabs_open'])){
3343
+                if(!empty($args['tab']['tabs_open'])){
3344 3344
 
3345
-					if(false){?><script><?php }?>
3345
+                    if(false){?><script><?php }?>
3346 3346
 
3347 3347
 el('div',{className: 'bsui'},
3348 3348
 
@@ -3355,12 +3355,12 @@  discard block
 block discarded – undo
3355 3355
 										tabs: [
3356 3356
 
3357 3357
 					<?php
3358
-					if(false){?></script><?php }
3359
-				}
3358
+                    if(false){?></script><?php }
3359
+                }
3360 3360
 
3361
-				if(!empty($args['tab']['open'])){
3361
+                if(!empty($args['tab']['open'])){
3362 3362
 
3363
-					if(false){?><script><?php }?>
3363
+                    if(false){?><script><?php }?>
3364 3364
 							{
3365 3365
 												name: '<?php echo addslashes( esc_attr( $args['tab']['key']) ); ?>',
3366 3366
 												title: el('div', {dangerouslySetInnerHTML: {__html: '<?php echo addslashes( esc_attr( $args['tab']['title']) ); ?>'}}),
@@ -3369,44 +3369,44 @@  discard block
 block discarded – undo
3369 3369
 									className: 'components-base-control__help mb-0',
3370 3370
 									dangerouslySetInnerHTML: {__html:'<?php echo addslashes( $args['tab']['desc'] ); ?>'}
3371 3371
 								}),<?php }
3372
-					if(false){?></script><?php }
3373
-				}
3372
+                    if(false){?></script><?php }
3373
+                }
3374 3374
 
3375
-			}
3375
+            }
3376 3376
 
3377
-		}
3377
+        }
3378 3378
 
3379
-		public function block_tab_end($key, $args){
3379
+        public function block_tab_end($key, $args){
3380 3380
 
3381
-			if(!empty($args['tab'])){
3382
-				// maybe close
3383
-				if(!empty($args['tab']['close'])){
3384
-					echo ")}, /* tab close */";
3385
-				}
3381
+            if(!empty($args['tab'])){
3382
+                // maybe close
3383
+                if(!empty($args['tab']['close'])){
3384
+                    echo ")}, /* tab close */";
3385
+                }
3386 3386
 
3387
-				if(!empty($args['tab']['tabs_close'])){
3388
-					if(false){?><script><?php }?>
3387
+                if(!empty($args['tab']['tabs_close'])){
3388
+                    if(false){?><script><?php }?>
3389 3389
 						]}, ( tab ) => {
3390 3390
 								return tab.content;
3391 3391
 							}
3392 3392
 						)), /* tabs close */
3393 3393
 					<?php if(false){ ?></script><?php }
3394
-				}
3395
-			}
3396
-		}
3394
+                }
3395
+            }
3396
+        }
3397 3397
 
3398
-		public function build_block_arguments( $key, $args ) {
3399
-			$custom_attributes = ! empty( $args['custom_attributes'] ) ? $this->array_to_attributes( $args['custom_attributes'] ) : '';
3400
-			$options           = '';
3401
-			$extra             = '';
3402
-			$require           = '';
3398
+        public function build_block_arguments( $key, $args ) {
3399
+            $custom_attributes = ! empty( $args['custom_attributes'] ) ? $this->array_to_attributes( $args['custom_attributes'] ) : '';
3400
+            $options           = '';
3401
+            $extra             = '';
3402
+            $require           = '';
3403 3403
             $inside_elements   = '';
3404
-			$after_elements	   = '';
3404
+            $after_elements	   = '';
3405 3405
 
3406
-			// `content` is a protected and special argument
3407
-			if ( $key == 'content' ) {
3408
-				return;
3409
-			}
3406
+            // `content` is a protected and special argument
3407
+            if ( $key == 'content' ) {
3408
+                return;
3409
+            }
3410 3410
 
3411 3411
             $device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3412 3412
             $device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
@@ -3419,37 +3419,37 @@  discard block
 block discarded – undo
3419 3419
                 $device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3420 3420
             }
3421 3421
 
3422
-			// icon
3423
-			$icon = '';
3424
-			if( !empty( $args['icon'] ) ){
3425
-				$icon .= "el('div', {";
3426
-									$icon .= "dangerouslySetInnerHTML: {__html: '".self::get_widget_icon( esc_attr($args['icon']))."'},";
3427
-									$icon .= "className: 'text-center',";
3428
-									$icon .= "title: '".addslashes( $args['title'] )."',";
3429
-								$icon .= "}),";
3430
-
3431
-				// blank title as its added to the icon.
3432
-				$args['title'] = '';
3433
-			}
3422
+            // icon
3423
+            $icon = '';
3424
+            if( !empty( $args['icon'] ) ){
3425
+                $icon .= "el('div', {";
3426
+                                    $icon .= "dangerouslySetInnerHTML: {__html: '".self::get_widget_icon( esc_attr($args['icon']))."'},";
3427
+                                    $icon .= "className: 'text-center',";
3428
+                                    $icon .= "title: '".addslashes( $args['title'] )."',";
3429
+                                $icon .= "}),";
3430
+
3431
+                // blank title as its added to the icon.
3432
+                $args['title'] = '';
3433
+            }
3434 3434
 
3435
-			// require advanced
3436
-			$require_advanced = ! empty( $args['advanced'] ) ? "props.attributes.show_advanced && " : "";
3435
+            // require advanced
3436
+            $require_advanced = ! empty( $args['advanced'] ) ? "props.attributes.show_advanced && " : "";
3437 3437
 
3438
-			// element require
3439
-			$element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3438
+            // element require
3439
+            $element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3440 3440
 
3441 3441
 
3442
-			$onchange  = "props.setAttributes({ $key: $key } )";
3443
-			$onchangecomplete  = "";
3444
-			$value     = "props.attributes.$key";
3445
-			$text_type = array( 'text', 'password', 'number', 'email', 'tel', 'url', 'colorx','range' );
3446
-			if ( in_array( $args['type'], $text_type ) ) {
3447
-				$type = 'TextControl';
3448
-				// Save numbers as numbers and not strings
3449
-				if ( $args['type'] == 'number' ) {
3450
-					$onchange = "props.setAttributes({ $key: $key ? Number($key) : '' } )";
3451
-				}
3452
-			}
3442
+            $onchange  = "props.setAttributes({ $key: $key } )";
3443
+            $onchangecomplete  = "";
3444
+            $value     = "props.attributes.$key";
3445
+            $text_type = array( 'text', 'password', 'number', 'email', 'tel', 'url', 'colorx','range' );
3446
+            if ( in_array( $args['type'], $text_type ) ) {
3447
+                $type = 'TextControl';
3448
+                // Save numbers as numbers and not strings
3449
+                if ( $args['type'] == 'number' ) {
3450
+                    $onchange = "props.setAttributes({ $key: $key ? Number($key) : '' } )";
3451
+                }
3452
+            }
3453 3453
 //			else if ( $args['type'] == 'popup' ) {
3454 3454
 //				$type = 'TextControl';
3455 3455
 //				$args['type'] == 'text';
@@ -3467,21 +3467,21 @@  discard block
 block discarded – undo
3467 3467
 //
3468 3468
 //				$value     = "props.attributes.$key ? props.attributes.$key : ''";
3469 3469
 //			}
3470
-			else if ( $args['type'] == 'styleid' ) {
3471
-				$type = 'TextControl';
3472
-				$args['type'] == 'text';
3473
-				// Save numbers as numbers and not strings
3474
-				$value     = "props.attributes.$key ? props.attributes.$key : ''";
3475
-			}else if ( $args['type'] == 'notice' ) {
3476
-
3477
-				$notice_message = !empty($args['desc']) ? addslashes($args['desc']) : '';
3478
-				$notice_status = !empty($args['status']) ? esc_attr($args['status']) : 'info';
3479
-
3480
-				$notice = "el('div',{className:'bsui'},el(wp.components.Notice, {status: '$notice_status',isDismissible: false,className: 'm-0 pr-0 pe-0 mb-3'},el('div',{dangerouslySetInnerHTML: {__html: '$notice_message'}}))),";
3481
-				echo $notice_message ? $element_require . $notice : '';
3482
-				return;
3483
-			}
3484
-			/*
3470
+            else if ( $args['type'] == 'styleid' ) {
3471
+                $type = 'TextControl';
3472
+                $args['type'] == 'text';
3473
+                // Save numbers as numbers and not strings
3474
+                $value     = "props.attributes.$key ? props.attributes.$key : ''";
3475
+            }else if ( $args['type'] == 'notice' ) {
3476
+
3477
+                $notice_message = !empty($args['desc']) ? addslashes($args['desc']) : '';
3478
+                $notice_status = !empty($args['status']) ? esc_attr($args['status']) : 'info';
3479
+
3480
+                $notice = "el('div',{className:'bsui'},el(wp.components.Notice, {status: '$notice_status',isDismissible: false,className: 'm-0 pr-0 pe-0 mb-3'},el('div',{dangerouslySetInnerHTML: {__html: '$notice_message'}}))),";
3481
+                echo $notice_message ? $element_require . $notice : '';
3482
+                return;
3483
+            }
3484
+            /*
3485 3485
 			 * https://www.wptricks.com/question/set-current-tab-on-a-gutenberg-tabpanel-component-from-outside-that-component/ es5 layout
3486 3486
 						elseif($args['type']=='tabs'){
3487 3487
 							?>
@@ -3534,22 +3534,22 @@  discard block
 block discarded – undo
3534 3534
 							return;
3535 3535
 						}
3536 3536
 */
3537
-			elseif ( $args['type'] == 'color' ) {
3538
-				$type = 'ColorPicker';
3539
-				$onchange = "";
3540
-				$extra = "color: $value,";
3541
-				if(!empty($args['disable_alpha'])){
3542
-					$extra .= "disableAlpha: true,";
3543
-				}
3544
-				$onchangecomplete = "onChangeComplete: function($key) {
3537
+            elseif ( $args['type'] == 'color' ) {
3538
+                $type = 'ColorPicker';
3539
+                $onchange = "";
3540
+                $extra = "color: $value,";
3541
+                if(!empty($args['disable_alpha'])){
3542
+                    $extra .= "disableAlpha: true,";
3543
+                }
3544
+                $onchangecomplete = "onChangeComplete: function($key) {
3545 3545
 				value =  $key.rgb.a && $key.rgb.a < 1 ? \"rgba(\"+$key.rgb.r+\",\"+$key.rgb.g+\",\"+$key.rgb.b+\",\"+$key.rgb.a+\")\" : $key.hex;
3546 3546
                         props.setAttributes({
3547 3547
                             $key: value
3548 3548
                         });
3549 3549
                     },";
3550
-			}elseif ( $args['type'] == 'gradient' ) {
3551
-				$type = 'GradientPicker';
3552
-				$extra .= "gradients: [{
3550
+            }elseif ( $args['type'] == 'gradient' ) {
3551
+                $type = 'GradientPicker';
3552
+                $extra .= "gradients: [{
3553 3553
 			name: 'Vivid cyan blue to vivid purple',
3554 3554
 			gradient:
3555 3555
 				'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
@@ -3586,7 +3586,7 @@  discard block
 block discarded – undo
3586 3586
 			slug: 'cool-to-warm-spectrum',
3587 3587
 		}],";
3588 3588
 
3589
-			}elseif ( $args['type'] == 'image' ) {
3589
+            }elseif ( $args['type'] == 'image' ) {
3590 3590
 //                print_r($args);
3591 3591
 
3592 3592
                 $img_preview = isset($args['focalpoint']) && !$args['focalpoint'] ? " props.attributes.$key && el('img', { src: props.attributes.$key,style: {maxWidth:'100%',background: '#ccc'}})," : " ( props.attributes.$key ||  props.attributes.{$key}_use_featured ) && el(wp.components.FocalPointPicker,{
@@ -3611,15 +3611,15 @@  discard block
 block discarded – undo
3611 3611
 
3612 3612
 
3613 3613
                 $value = '""';
3614
-				$type = 'MediaUpload';
3614
+                $type = 'MediaUpload';
3615 3615
                 $extra .= "onSelect: function(media){
3616 3616
                       return props.setAttributes({
3617 3617
                           $key: media.url,
3618 3618
                           {$key}_id: media.id
3619 3619
                         });
3620 3620
                       },";
3621
-                   $extra .= "type: 'image',";
3622
-                   $extra .= "render: function (obj) {
3621
+                    $extra .= "type: 'image',";
3622
+                    $extra .= "render: function (obj) {
3623 3623
                         return el( 'div',{},
3624 3624
                         ( !props.attributes.$key && !props.attributes.{$key}_use_featured ) && el( wp.components.Button, {
3625 3625
                           className: 'components-button components-circular-option-picker__clear is-primary is-smallx',
@@ -3648,8 +3648,8 @@  discard block
 block discarded – undo
3648 3648
                 $onchange = "";
3649 3649
 
3650 3650
                 //$inside_elements = ",el('div',{},'file upload')";
3651
-			} else if ( $args['type'] == 'images' ) {
3652
-				$img_preview = "props.attributes.$key && (function() {
3651
+            } else if ( $args['type'] == 'images' ) {
3652
+                $img_preview = "props.attributes.$key && (function() {
3653 3653
 	let uploads = JSON.parse('['+props.attributes.$key+']');
3654 3654
 	let images = [];
3655 3655
 	uploads.map((upload, index) => (
@@ -3676,9 +3676,9 @@  discard block
 block discarded – undo
3676 3676
 })(),";
3677 3677
 
3678 3678
 
3679
-				$value = '""';
3680
-				$type = 'MediaUpload';
3681
-				$extra .= "onSelect: function(media){
3679
+                $value = '""';
3680
+                $type = 'MediaUpload';
3681
+                $extra .= "onSelect: function(media){
3682 3682
 	let slim_images = props.attributes.$key ? JSON.parse('['+props.attributes.$key+']') : [];
3683 3683
 	if(media.length){
3684 3684
 		for (var i=0; i < media.length; i++) {
@@ -3691,9 +3691,9 @@  discard block
 block discarded – undo
3691 3691
 	}
3692 3692
 	return props.setAttributes({ $key: slimImagesV});
3693 3693
 },";
3694
-				$extra .= "type: 'image',";
3695
-				$extra .= "multiple: true,";
3696
-				$extra .= "render: function (obj) {
3694
+                $extra .= "type: 'image',";
3695
+                $extra .= "multiple: true,";
3696
+                $extra .= "render: function (obj) {
3697 3697
 	/* Init the sort */
3698 3698
 	enableDragSort('sd-sortable');
3699 3699
 	return el( 'div',{},
@@ -3723,37 +3723,37 @@  discard block
 block discarded – undo
3723 3723
                 $onchange = "";
3724 3724
 
3725 3725
                 //$inside_elements = ",el('div',{},'file upload')";
3726
-			}
3727
-			elseif ( $args['type'] == 'checkbox' ) {
3728
-				$type = 'CheckboxControl';
3729
-				$extra .= "checked: props.attributes.$key,";
3730
-				$onchange = "props.setAttributes({ $key: ! props.attributes.$key } )";
3731
-			} elseif ( $args['type'] == 'textarea' ) {
3732
-				$type = 'TextareaControl';
3733
-
3734
-			} elseif ( $args['type'] == 'select' || $args['type'] == 'multiselect' ) {
3735
-				$type = 'SelectControl';
3736
-
3737
-				if($args['name'] == 'category' && !empty($args['post_type_linked'])){
3738
-					$options .= "options: taxonomies_".str_replace("-","_", $this->id).",";
3739
-				}elseif($args['name'] == 'sort_by' && !empty($args['post_type_linked'])){
3740
-					$options .= "options: sort_by_".str_replace("-","_", $this->id).",";
3741
-				}else {
3742
-
3743
-					if ( ! empty( $args['options'] ) ) {
3744
-						$options .= "options: [";
3745
-						foreach ( $args['options'] as $option_val => $option_label ) {
3746
-							$options .= "{ value: '" . esc_attr( $option_val ) . "', label: '" . addslashes( $option_label ) . "' },";
3747
-						}
3748
-						$options .= "],";
3749
-					}
3750
-				}
3751
-				if ( isset( $args['multiple'] ) && $args['multiple'] ) { //@todo multiselect does not work at the moment: https://github.com/WordPress/gutenberg/issues/5550
3752
-					$extra .= ' multiple:true,style:{height:"auto",paddingRight:"8px","overflow-y":"auto"}, ';
3753
-				}
3726
+            }
3727
+            elseif ( $args['type'] == 'checkbox' ) {
3728
+                $type = 'CheckboxControl';
3729
+                $extra .= "checked: props.attributes.$key,";
3730
+                $onchange = "props.setAttributes({ $key: ! props.attributes.$key } )";
3731
+            } elseif ( $args['type'] == 'textarea' ) {
3732
+                $type = 'TextareaControl';
3733
+
3734
+            } elseif ( $args['type'] == 'select' || $args['type'] == 'multiselect' ) {
3735
+                $type = 'SelectControl';
3736
+
3737
+                if($args['name'] == 'category' && !empty($args['post_type_linked'])){
3738
+                    $options .= "options: taxonomies_".str_replace("-","_", $this->id).",";
3739
+                }elseif($args['name'] == 'sort_by' && !empty($args['post_type_linked'])){
3740
+                    $options .= "options: sort_by_".str_replace("-","_", $this->id).",";
3741
+                }else {
3742
+
3743
+                    if ( ! empty( $args['options'] ) ) {
3744
+                        $options .= "options: [";
3745
+                        foreach ( $args['options'] as $option_val => $option_label ) {
3746
+                            $options .= "{ value: '" . esc_attr( $option_val ) . "', label: '" . addslashes( $option_label ) . "' },";
3747
+                        }
3748
+                        $options .= "],";
3749
+                    }
3750
+                }
3751
+                if ( isset( $args['multiple'] ) && $args['multiple'] ) { //@todo multiselect does not work at the moment: https://github.com/WordPress/gutenberg/issues/5550
3752
+                    $extra .= ' multiple:true,style:{height:"auto",paddingRight:"8px","overflow-y":"auto"}, ';
3753
+                }
3754 3754
 
3755
-				if($args['type'] == 'multiselect' ||  ( isset( $args['multiple'] ) && $args['multiple'] ) ){
3756
-					$after_elements	 .= "props.attributes.$key && el( wp.components.Button, {
3755
+                if($args['type'] == 'multiselect' ||  ( isset( $args['multiple'] ) && $args['multiple'] ) ){
3756
+                    $after_elements	 .= "props.attributes.$key && el( wp.components.Button, {
3757 3757
                                       className: 'components-button components-circular-option-picker__clear is-secondary is-small',
3758 3758
                                       style: {margin:'-8px 0 8px 0',display: 'block'},
3759 3759
                                       onClick: function(){
@@ -3764,8 +3764,8 @@  discard block
 block discarded – undo
3764 3764
                                     },
3765 3765
                                     'Clear'
3766 3766
                             ),";
3767
-				}
3768
-			} elseif ( $args['type'] == 'tagselect' ) {
3767
+                }
3768
+            } elseif ( $args['type'] == 'tagselect' ) {
3769 3769
 //				$type = 'FormTokenField';
3770 3770
 //
3771 3771
 //				if ( ! empty( $args['options'] ) ) {
@@ -3800,20 +3800,20 @@  discard block
 block discarded – undo
3800 3800
 //				$value     = "[]";
3801 3801
 //				$extra .= ' __experimentalExpandOnFocus: true,';
3802 3802
 
3803
-			} else if ( $args['type'] == 'alignment' ) {
3804
-				$type = 'AlignmentToolbar'; // @todo this does not seem to work but cant find a example
3805
-			} else if ( $args['type'] == 'margins' ) {
3806
-
3807
-			} else if ( $args['type'] == 'visibility_conditions' && ( function_exists( 'wp_is_block_theme' ) && wp_is_block_theme() ) ) {
3808
-				$type = 'TextControl';
3809
-				$value = "(props.attributes.$key ? props.attributes.$key : '')";
3810
-				$args['type'] = 'text';
3811
-				$options .= 'disabled:true,';
3812
-				$bsvc_title = esc_attr( addslashes( $args['title'] ) );
3813
-				$bsvc_body = $this->block_visibility_fields( $args );
3814
-				// @TODO reset button
3815
-				$bsvc_footer = '<button type="button" class="btn btn-danger d-none">' . __( 'Reset', 'super-duper' ) . '</button><button type="button" class="btn btn-secondary bs-vc-close text-white" data-bs-dismiss="modal">' . __( 'Close', 'super-duper' ) . '</button><button type="button" class="btn btn-primary bs-vc-save">' . __( 'Save Rules', 'super-duper' ) . '</button>';
3816
-				$after_elements .= "el('div', {className: 'components-base-control bs-vc-button-wrap'}, el(wp.components.Button, {
3803
+            } else if ( $args['type'] == 'alignment' ) {
3804
+                $type = 'AlignmentToolbar'; // @todo this does not seem to work but cant find a example
3805
+            } else if ( $args['type'] == 'margins' ) {
3806
+
3807
+            } else if ( $args['type'] == 'visibility_conditions' && ( function_exists( 'wp_is_block_theme' ) && wp_is_block_theme() ) ) {
3808
+                $type = 'TextControl';
3809
+                $value = "(props.attributes.$key ? props.attributes.$key : '')";
3810
+                $args['type'] = 'text';
3811
+                $options .= 'disabled:true,';
3812
+                $bsvc_title = esc_attr( addslashes( $args['title'] ) );
3813
+                $bsvc_body = $this->block_visibility_fields( $args );
3814
+                // @TODO reset button
3815
+                $bsvc_footer = '<button type="button" class="btn btn-danger d-none">' . __( 'Reset', 'super-duper' ) . '</button><button type="button" class="btn btn-secondary bs-vc-close text-white" data-bs-dismiss="modal">' . __( 'Close', 'super-duper' ) . '</button><button type="button" class="btn btn-primary bs-vc-save">' . __( 'Save Rules', 'super-duper' ) . '</button>';
3816
+                $after_elements .= "el('div', {className: 'components-base-control bs-vc-button-wrap'}, el(wp.components.Button, {
3817 3817
 						className: 'components-button components-circular-option-picker__clear is-primary is-smallx',
3818 3818
 						onClick: function() {
3819 3819
 							var sValue = props.attributes." . $key . ";
@@ -3839,39 +3839,39 @@  discard block
 block discarded – undo
3839 3839
 					},
3840 3840
 					'" . addslashes( ! empty( $args['button_title'] ) ? $args['button_title'] : $args['title'] ) . "'
3841 3841
 				) ),";
3842
-			} else {
3843
-				return;// if we have not implemented the control then don't break the JS.
3844
-			}
3842
+            } else {
3843
+                return;// if we have not implemented the control then don't break the JS.
3844
+            }
3845 3845
 
3846
-			// color input does not show the labels so we add them
3847
-			if($args['type']=='color'){
3848
-				// add show only if advanced
3849
-				echo $require_advanced;
3850
-				// add setting require if defined
3851
-				echo $element_require;
3852
-				echo "el('div', {style: {'marginBottom': '8px'}}, '".addslashes( $args['title'] )."'),";
3853
-			}
3846
+            // color input does not show the labels so we add them
3847
+            if($args['type']=='color'){
3848
+                // add show only if advanced
3849
+                echo $require_advanced;
3850
+                // add setting require if defined
3851
+                echo $element_require;
3852
+                echo "el('div', {style: {'marginBottom': '8px'}}, '".addslashes( $args['title'] )."'),";
3853
+            }
3854 3854
 
3855
-			// add show only if advanced
3856
-			echo $require_advanced;
3857
-			// add setting require if defined
3858
-			echo $element_require;
3855
+            // add show only if advanced
3856
+            echo $require_advanced;
3857
+            // add setting require if defined
3858
+            echo $element_require;
3859 3859
             echo $device_type_require;
3860 3860
 
3861
-			// icon
3862
-			echo $icon;
3863
-			?>
3861
+            // icon
3862
+            echo $icon;
3863
+            ?>
3864 3864
 			el( <?php echo $args['type'] == 'image' || $args['type'] == 'images' ? $type  : "wp.components.".$type; ?>, {
3865 3865
 			label: <?php if ( empty( $args['title'] ) ) { echo "''"; } else if ( empty( $args['row'] ) && ! empty( $args['device_type'] ) ) { ?>el('label',{className:'components-base-control__label',style:{width:"100%"}},el('span',{dangerouslySetInnerHTML: {__html: '<?php echo addslashes( $args['title'] ) ?>'}}),<?php if ( $device_type_icon ) { ?>deviceType == '<?php echo $device_type;?>' && el('span',{dangerouslySetInnerHTML: {__html: '<?php echo $device_type_icon; ?>'},title: deviceType + ": Set preview mode to change",style: {right:"0",position:"absolute",color:"var(--wp-admin-theme-color)"}})<?php } ?>)<?php
3866
-			} else { ?>'<?php echo addslashes( trim( esc_html( $args['title'] ) ) ); ?>'<?php } ?>,
3866
+            } else { ?>'<?php echo addslashes( trim( esc_html( $args['title'] ) ) ); ?>'<?php } ?>,
3867 3867
 			help: <?php echo ( isset( $args['desc'] ) ? "el('span', {dangerouslySetInnerHTML: {__html: '" . trim( wp_kses_post( addslashes( $args['desc'] ) ) ) . "'}})" : "''" ); ?>,
3868 3868
 			value: <?php echo $value; ?>,
3869 3869
 			<?php if ( $type == 'TextControl' && $args['type'] != 'text' ) {
3870
-				echo "type: '" . addslashes( $args['type'] ) . "',";
3871
-			} ?>
3870
+                echo "type: '" . addslashes( $args['type'] ) . "',";
3871
+            } ?>
3872 3872
 			<?php if ( ! empty( $args['placeholder'] ) ) {
3873
-				echo "placeholder: '" . addslashes( trim( esc_html( $args['placeholder'] ) ) ) . "',";
3874
-			} ?>
3873
+                echo "placeholder: '" . addslashes( trim( esc_html( $args['placeholder'] ) ) ) . "',";
3874
+            } ?>
3875 3875
 			<?php echo $options; ?>
3876 3876
 			<?php echo $extra; ?>
3877 3877
 			<?php echo $custom_attributes; ?>
@@ -3883,68 +3883,68 @@  discard block
 block discarded – undo
3883 3883
 			<?php } ?>
3884 3884
 		} <?php echo $inside_elements; ?> ),
3885 3885
 			<?php
3886
-			echo $after_elements;
3887
-		}
3886
+            echo $after_elements;
3887
+        }
3888 3888
 
3889
-		/**
3890
-		 * Convert an array of attributes to block string.
3891
-		 *
3892
-		 * @param $custom_attributes
3893
-		 *
3894
-		 * @return string
3895
-		 *@todo there is prob a faster way to do this, also we could add some validation here.
3896
-		 *
3897
-		 */
3898
-		public function array_to_attributes( $custom_attributes, $html = false ) {
3899
-			$attributes = '';
3900
-			if ( ! empty( $custom_attributes ) ) {
3901
-
3902
-				foreach ( $custom_attributes as $key => $val ) {
3903
-					if(is_array($val)){
3904
-						$attributes .= $key.': {'.$this->array_to_attributes( $val, $html ).'},';
3905
-					}else{
3906
-						$attributes .= $html ?  " $key='$val' " : "'$key': '$val',";
3907
-					}
3908
-				}
3889
+        /**
3890
+         * Convert an array of attributes to block string.
3891
+         *
3892
+         * @param $custom_attributes
3893
+         *
3894
+         * @return string
3895
+         *@todo there is prob a faster way to do this, also we could add some validation here.
3896
+         *
3897
+         */
3898
+        public function array_to_attributes( $custom_attributes, $html = false ) {
3899
+            $attributes = '';
3900
+            if ( ! empty( $custom_attributes ) ) {
3909 3901
 
3910
-			}
3902
+                foreach ( $custom_attributes as $key => $val ) {
3903
+                    if(is_array($val)){
3904
+                        $attributes .= $key.': {'.$this->array_to_attributes( $val, $html ).'},';
3905
+                    }else{
3906
+                        $attributes .= $html ?  " $key='$val' " : "'$key': '$val',";
3907
+                    }
3908
+                }
3911 3909
 
3912
-			return $attributes;
3913
-		}
3910
+            }
3911
+
3912
+            return $attributes;
3913
+        }
3914 3914
 
3915 3915
 
3916 3916
 
3917
-		/**
3918
-		 * A self looping function to create the output for JS block elements.
3919
-		 *
3920
-		 * This is what is output in the WP Editor visual view.
3921
-		 *
3922
-		 * @param $args
3923
-		 */
3924
-		public function block_element( $args, $save = false ) {
3917
+        /**
3918
+         * A self looping function to create the output for JS block elements.
3919
+         *
3920
+         * This is what is output in the WP Editor visual view.
3921
+         *
3922
+         * @param $args
3923
+         */
3924
+        public function block_element( $args, $save = false ) {
3925 3925
 
3926 3926
 
3927
-			if ( ! empty( $args ) ) {
3928
-				foreach ( $args as $element => $new_args ) {
3927
+            if ( ! empty( $args ) ) {
3928
+                foreach ( $args as $element => $new_args ) {
3929 3929
 
3930
-					if ( is_array( $new_args ) ) { // its an element
3930
+                    if ( is_array( $new_args ) ) { // its an element
3931 3931
 
3932 3932
 
3933
-						if ( isset( $new_args['element'] ) ) {
3933
+                        if ( isset( $new_args['element'] ) ) {
3934 3934
 
3935
-							if ( isset( $new_args['element_require'] ) ) {
3936
-								echo str_replace( array(
3937
-										"'+",
3938
-										"+'"
3939
-									), '', $this->block_props_replace( $new_args['element_require'] ) ) . " &&  ";
3940
-								unset( $new_args['element_require'] );
3941
-							}
3935
+                            if ( isset( $new_args['element_require'] ) ) {
3936
+                                echo str_replace( array(
3937
+                                        "'+",
3938
+                                        "+'"
3939
+                                    ), '', $this->block_props_replace( $new_args['element_require'] ) ) . " &&  ";
3940
+                                unset( $new_args['element_require'] );
3941
+                            }
3942 3942
 
3943 3943
                             if($new_args['element']=='InnerBlocks'){
3944 3944
                                 echo "\n el( InnerBlocks, {";
3945 3945
                             }elseif($new_args['element']=='innerBlocksProps'){
3946 3946
                                 $element = isset($new_args['inner_element']) ? esc_attr($new_args['inner_element']) : 'div';
3947
-                              //  echo "\n el( 'section', wp.blockEditor.useInnerBlocksProps( blockProps, {";
3947
+                                //  echo "\n el( 'section', wp.blockEditor.useInnerBlocksProps( blockProps, {";
3948 3948
 //                                echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( ";
3949 3949
                                 echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( ";
3950 3950
                                 echo $save ? "wp.blockEditor.useBlockProps.save( {" : "wp.blockEditor.useBlockProps( {";
@@ -3954,74 +3954,74 @@  discard block
 block discarded – undo
3954 3954
                                 echo !empty($new_args['innerBlocksProps']) && !$save ? $this->block_element( $new_args['innerBlocksProps'],$save ) : '';
3955 3955
                             //    echo '###';
3956 3956
 
3957
-                              //  echo '###';
3957
+                                //  echo '###';
3958 3958
                             }elseif($new_args['element']=='BlocksProps'){
3959 3959
 
3960
-								if ( isset($new_args['if_inner_element']) ) {
3961
-									$element = $new_args['if_inner_element'];
3962
-								}else {
3963
-									$element = isset($new_args['inner_element']) ? "'".esc_attr($new_args['inner_element'])."'" : "'div'";
3964
-								}
3960
+                                if ( isset($new_args['if_inner_element']) ) {
3961
+                                    $element = $new_args['if_inner_element'];
3962
+                                }else {
3963
+                                    $element = isset($new_args['inner_element']) ? "'".esc_attr($new_args['inner_element'])."'" : "'div'";
3964
+                                }
3965 3965
 
3966
-								unset($new_args['inner_element']);
3966
+                                unset($new_args['inner_element']);
3967 3967
                                 echo $save ? "\n el( $element, wp.blockEditor.useBlockProps.save( {" : "\n el( $element, wp.blockEditor.useBlockProps( {";
3968 3968
                                 echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : '';
3969 3969
 
3970 3970
 
3971
-                               // echo "} ),";
3971
+                                // echo "} ),";
3972 3972
 
3973 3973
                             }else{
3974 3974
                                 echo "\n el( '" . $new_args['element'] . "', {";
3975 3975
                             }
3976 3976
 
3977 3977
 
3978
-							// get the attributes
3979
-							foreach ( $new_args as $new_key => $new_value ) {
3978
+                            // get the attributes
3979
+                            foreach ( $new_args as $new_key => $new_value ) {
3980 3980
 
3981 3981
 
3982
-								if ( $new_key == 'element' || $new_key == 'content'|| $new_key == 'if_content' || $new_key == 'element_require' || $new_key == 'element_repeat' || is_array( $new_value ) ) {
3983
-									// do nothing
3984
-								} else {
3985
-									echo $this->block_element( array( $new_key => $new_value ),$save );
3986
-								}
3987
-							}
3982
+                                if ( $new_key == 'element' || $new_key == 'content'|| $new_key == 'if_content' || $new_key == 'element_require' || $new_key == 'element_repeat' || is_array( $new_value ) ) {
3983
+                                    // do nothing
3984
+                                } else {
3985
+                                    echo $this->block_element( array( $new_key => $new_value ),$save );
3986
+                                }
3987
+                            }
3988 3988
 
3989
-							echo $new_args['element']=='BlocksProps' ? '} ),' : "},";// end attributes
3989
+                            echo $new_args['element']=='BlocksProps' ? '} ),' : "},";// end attributes
3990 3990
 
3991
-							// get the content
3992
-							$first_item = 0;
3993
-							foreach ( $new_args as $new_key => $new_value ) {
3994
-								if ( $new_key === 'content' || $new_key === 'if_content' || is_array( $new_value ) ) {
3991
+                            // get the content
3992
+                            $first_item = 0;
3993
+                            foreach ( $new_args as $new_key => $new_value ) {
3994
+                                if ( $new_key === 'content' || $new_key === 'if_content' || is_array( $new_value ) ) {
3995 3995
 
3996
-									if ( $new_key === 'content' ) {
3997
-										echo "'" . $this->block_props_replace( wp_slash( $new_value ) ) . "'";
3998
-									}else if ( $new_key === 'if_content' ) {
3999
-										echo  $this->block_props_replace(  $new_value  );
4000
-									}
3996
+                                    if ( $new_key === 'content' ) {
3997
+                                        echo "'" . $this->block_props_replace( wp_slash( $new_value ) ) . "'";
3998
+                                    }else if ( $new_key === 'if_content' ) {
3999
+                                        echo  $this->block_props_replace(  $new_value  );
4000
+                                    }
4001 4001
 
4002
-									if ( is_array( $new_value ) ) {
4002
+                                    if ( is_array( $new_value ) ) {
4003 4003
 
4004
-										if ( isset( $new_value['element_require'] ) ) {
4005
-											echo str_replace( array(
4006
-													"'+",
4007
-													"+'"
4008
-												), '', $this->block_props_replace( $new_value['element_require'] ) ) . " &&  ";
4009
-											unset( $new_value['element_require'] );
4010
-										}
4004
+                                        if ( isset( $new_value['element_require'] ) ) {
4005
+                                            echo str_replace( array(
4006
+                                                    "'+",
4007
+                                                    "+'"
4008
+                                                ), '', $this->block_props_replace( $new_value['element_require'] ) ) . " &&  ";
4009
+                                            unset( $new_value['element_require'] );
4010
+                                        }
4011 4011
 
4012
-										if ( isset( $new_value['element_repeat'] ) ) {
4013
-											$x = 1;
4014
-											while ( $x <= absint( $new_value['element_repeat'] ) ) {
4015
-												$this->block_element( array( '' => $new_value ),$save );
4016
-												$x ++;
4017
-											}
4018
-										} else {
4019
-											$this->block_element( array( '' => $new_value ),$save );
4020
-										}
4021
-									}
4022
-									$first_item ++;
4023
-								}
4024
-							}
4012
+                                        if ( isset( $new_value['element_repeat'] ) ) {
4013
+                                            $x = 1;
4014
+                                            while ( $x <= absint( $new_value['element_repeat'] ) ) {
4015
+                                                $this->block_element( array( '' => $new_value ),$save );
4016
+                                                $x ++;
4017
+                                            }
4018
+                                        } else {
4019
+                                            $this->block_element( array( '' => $new_value ),$save );
4020
+                                        }
4021
+                                    }
4022
+                                    $first_item ++;
4023
+                                }
4024
+                            }
4025 4025
 
4026 4026
                             if($new_args['element']=='innerBlocksProps' || $new_args['element']=='xBlocksProps'){
4027 4027
                                 echo "))";// end content
@@ -4030,1067 +4030,1067 @@  discard block
 block discarded – undo
4030 4030
                             }
4031 4031
 
4032 4032
 
4033
-							echo ", \n";
4033
+                            echo ", \n";
4034 4034
 
4035
-						}
4036
-					} else {
4035
+                        }
4036
+                    } else {
4037 4037
 
4038
-						if ( substr( $element, 0, 3 ) === "if_" ) {
4039
-							$extra = '';
4040
-							if( strpos($new_args, '[%WrapClass%]') !== false ){
4041
-								$new_args = str_replace('[%WrapClass%]"','" + sd_build_aui_class(props.attributes)',$new_args);
4042
-								$new_args = str_replace('[%WrapClass%]','+ sd_build_aui_class(props.attributes)',$new_args);
4043
-							}
4044
-							echo str_replace( "if_", "", $element ) . ": " . $this->block_props_replace( $new_args, true ) . ",";
4045
-						} elseif ( $element == 'style' &&  strpos($new_args, '[%WrapStyle%]') !== false ) {
4038
+                        if ( substr( $element, 0, 3 ) === "if_" ) {
4039
+                            $extra = '';
4040
+                            if( strpos($new_args, '[%WrapClass%]') !== false ){
4041
+                                $new_args = str_replace('[%WrapClass%]"','" + sd_build_aui_class(props.attributes)',$new_args);
4042
+                                $new_args = str_replace('[%WrapClass%]','+ sd_build_aui_class(props.attributes)',$new_args);
4043
+                            }
4044
+                            echo str_replace( "if_", "", $element ) . ": " . $this->block_props_replace( $new_args, true ) . ",";
4045
+                        } elseif ( $element == 'style' &&  strpos($new_args, '[%WrapStyle%]') !== false ) {
4046 4046
                             $new_args = str_replace('[%WrapStyle%]','',$new_args);
4047 4047
                             echo $element . ": {..." . $this->block_props_replace( $new_args ) . " , ...sd_build_aui_styles(props.attributes) },";
4048 4048
 //                            echo $element . ": " . $this->block_props_replace( $new_args ) . ",";
4049
-						} elseif ( $element == 'style' ) {
4050
-							echo $element . ": " . $this->block_props_replace( $new_args ) . ",";
4051
-						} elseif ( ( $element == 'class' || $element == 'className'  ) &&  strpos($new_args, '[%WrapClass%]') !== false ) {
4049
+                        } elseif ( $element == 'style' ) {
4050
+                            echo $element . ": " . $this->block_props_replace( $new_args ) . ",";
4051
+                        } elseif ( ( $element == 'class' || $element == 'className'  ) &&  strpos($new_args, '[%WrapClass%]') !== false ) {
4052 4052
                             $new_args = str_replace('[%WrapClass%]','',$new_args);
4053 4053
                             echo $element . ": '" . $this->block_props_replace( $new_args ) . "' + sd_build_aui_class(props.attributes),";
4054
-						} elseif ( $element == 'template' && $new_args ) {
4055
-							echo $element . ": $new_args,";
4056
-						} else {
4057
-							echo $element . ": '" . $this->block_props_replace( $new_args ) . "',";
4058
-						}
4054
+                        } elseif ( $element == 'template' && $new_args ) {
4055
+                            echo $element . ": $new_args,";
4056
+                        } else {
4057
+                            echo $element . ": '" . $this->block_props_replace( $new_args ) . "',";
4058
+                        }
4059 4059
 
4060
-					}
4061
-				}
4062
-			}
4063
-		}
4060
+                    }
4061
+                }
4062
+            }
4063
+        }
4064 4064
 
4065
-		/**
4066
-		 * Replace block attributes placeholders with the proper naming.
4067
-		 *
4068
-		 * @param $string
4069
-		 *
4070
-		 * @return mixed
4071
-		 */
4072
-		public function block_props_replace( $string, $no_wrap = false ) {
4073
-
4074
-			if ( $no_wrap ) {
4075
-				$string = str_replace( array( "[%", "%]" ), array( "props.attributes.", "" ), $string );
4076
-			} else {
4077
-				$string = str_replace( array( "[%", "%]" ), array( "'+props.attributes.", "+'" ), $string );
4078
-			}
4065
+        /**
4066
+         * Replace block attributes placeholders with the proper naming.
4067
+         *
4068
+         * @param $string
4069
+         *
4070
+         * @return mixed
4071
+         */
4072
+        public function block_props_replace( $string, $no_wrap = false ) {
4079 4073
 
4080
-			return $string;
4081
-		}
4074
+            if ( $no_wrap ) {
4075
+                $string = str_replace( array( "[%", "%]" ), array( "props.attributes.", "" ), $string );
4076
+            } else {
4077
+                $string = str_replace( array( "[%", "%]" ), array( "'+props.attributes.", "+'" ), $string );
4078
+            }
4082 4079
 
4083
-		/**
4084
-		 * Outputs the content of the widget
4085
-		 *
4086
-		 * @param array $args
4087
-		 * @param array $instance
4088
-		 */
4089
-		public function widget( $args, $instance ) {
4090
-			if ( ! is_array( $args ) ) {
4091
-				$args = array();
4092
-			}
4080
+            return $string;
4081
+        }
4093 4082
 
4094
-			// Get the filtered values
4095
-			$argument_values = $this->argument_values( $instance );
4096
-			$argument_values = $this->string_to_bool( $argument_values );
4097
-			$output          = $this->output( $argument_values, $args );
4083
+        /**
4084
+         * Outputs the content of the widget
4085
+         *
4086
+         * @param array $args
4087
+         * @param array $instance
4088
+         */
4089
+        public function widget( $args, $instance ) {
4090
+            if ( ! is_array( $args ) ) {
4091
+                $args = array();
4092
+            }
4098 4093
 
4099
-			$no_wrap = false;
4100
-			if ( isset( $argument_values['no_wrap'] ) && $argument_values['no_wrap'] ) {
4101
-				$no_wrap = true;
4102
-			}
4094
+            // Get the filtered values
4095
+            $argument_values = $this->argument_values( $instance );
4096
+            $argument_values = $this->string_to_bool( $argument_values );
4097
+            $output          = $this->output( $argument_values, $args );
4103 4098
 
4104
-			ob_start();
4105
-			if ( $output && ! $no_wrap ) {
4099
+            $no_wrap = false;
4100
+            if ( isset( $argument_values['no_wrap'] ) && $argument_values['no_wrap'] ) {
4101
+                $no_wrap = true;
4102
+            }
4106 4103
 
4107
-				$class_original = $this->options['widget_ops']['classname'];
4108
-				$class = $this->options['widget_ops']['classname']." sdel-".$this->get_instance_hash();
4104
+            ob_start();
4105
+            if ( $output && ! $no_wrap ) {
4109 4106
 
4110
-				// Before widget
4111
-				$before_widget = ! empty( $args['before_widget'] ) ? $args['before_widget'] : '';
4112
-				$before_widget = $before_widget ? str_replace( $class_original, $class, $before_widget ) : $before_widget;
4113
-				$before_widget = apply_filters( 'wp_super_duper_before_widget', $before_widget, $args, $instance, $this );
4114
-				$before_widget = apply_filters( 'wp_super_duper_before_widget_' . $this->base_id, $before_widget, $args, $instance, $this );
4107
+                $class_original = $this->options['widget_ops']['classname'];
4108
+                $class = $this->options['widget_ops']['classname']." sdel-".$this->get_instance_hash();
4115 4109
 
4116
-				// After widget
4117
-				$after_widget = ! empty( $args['after_widget'] ) ? $args['after_widget'] : '';
4118
-				$after_widget = apply_filters( 'wp_super_duper_after_widget', $after_widget, $args, $instance, $this );
4119
-				$after_widget = apply_filters( 'wp_super_duper_after_widget_' . $this->base_id, $after_widget, $args, $instance, $this );
4110
+                // Before widget
4111
+                $before_widget = ! empty( $args['before_widget'] ) ? $args['before_widget'] : '';
4112
+                $before_widget = $before_widget ? str_replace( $class_original, $class, $before_widget ) : $before_widget;
4113
+                $before_widget = apply_filters( 'wp_super_duper_before_widget', $before_widget, $args, $instance, $this );
4114
+                $before_widget = apply_filters( 'wp_super_duper_before_widget_' . $this->base_id, $before_widget, $args, $instance, $this );
4120 4115
 
4121
-				echo $before_widget;
4122
-				// elementor strips the widget wrapping div so we check for and add it back if needed
4123
-				if ( $this->is_elementor_widget_output() ) {
4124
-					// Filter class & attrs for elementor widget output.
4125
-					$class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
4126
-					$class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
4116
+                // After widget
4117
+                $after_widget = ! empty( $args['after_widget'] ) ? $args['after_widget'] : '';
4118
+                $after_widget = apply_filters( 'wp_super_duper_after_widget', $after_widget, $args, $instance, $this );
4119
+                $after_widget = apply_filters( 'wp_super_duper_after_widget_' . $this->base_id, $after_widget, $args, $instance, $this );
4127 4120
 
4128
-					$attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
4129
-					$attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
4121
+                echo $before_widget;
4122
+                // elementor strips the widget wrapping div so we check for and add it back if needed
4123
+                if ( $this->is_elementor_widget_output() ) {
4124
+                    // Filter class & attrs for elementor widget output.
4125
+                    $class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
4126
+                    $class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
4130 4127
 
4131
-					echo "<span class='" . esc_attr( $class  ) . "' " . $attrs . ">";
4132
-				}
4133
-				echo $this->output_title( $args, $instance );
4134
-				echo $output;
4135
-				if ( $this->is_elementor_widget_output() ) {
4136
-					echo "</span>";
4137
-				}
4138
-				echo $after_widget;
4139
-			} elseif ( $this->is_preview() && $output == '' ) {// if preview show a placeholder if empty
4140
-				$output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
4141
-				echo $output;
4142
-			} elseif ( $output && $no_wrap ) {
4143
-				echo $output;
4144
-			}
4145
-			$output = ob_get_clean();
4128
+                    $attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
4129
+                    $attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
4146 4130
 
4147
-			$output = apply_filters( 'wp_super_duper_widget_output', $output, $instance, $args, $this );
4131
+                    echo "<span class='" . esc_attr( $class  ) . "' " . $attrs . ">";
4132
+                }
4133
+                echo $this->output_title( $args, $instance );
4134
+                echo $output;
4135
+                if ( $this->is_elementor_widget_output() ) {
4136
+                    echo "</span>";
4137
+                }
4138
+                echo $after_widget;
4139
+            } elseif ( $this->is_preview() && $output == '' ) {// if preview show a placeholder if empty
4140
+                $output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
4141
+                echo $output;
4142
+            } elseif ( $output && $no_wrap ) {
4143
+                echo $output;
4144
+            }
4145
+            $output = ob_get_clean();
4148 4146
 
4149
-			echo $output;
4150
-		}
4147
+            $output = apply_filters( 'wp_super_duper_widget_output', $output, $instance, $args, $this );
4151 4148
 
4152
-		/**
4153
-		 * Tests if the current output is inside a elementor container.
4154
-		 *
4155
-		 * @return bool
4156
-		 *@since 1.0.4
4157
-		 */
4158
-		public function is_elementor_widget_output() {
4159
-			$result = false;
4160
-			if ( defined( 'ELEMENTOR_VERSION' ) && isset( $this->number ) && $this->number == 'REPLACE_TO_ID' ) {
4161
-				$result = true;
4162
-			}
4149
+            echo $output;
4150
+        }
4163 4151
 
4164
-			return $result;
4165
-		}
4152
+        /**
4153
+         * Tests if the current output is inside a elementor container.
4154
+         *
4155
+         * @return bool
4156
+         *@since 1.0.4
4157
+         */
4158
+        public function is_elementor_widget_output() {
4159
+            $result = false;
4160
+            if ( defined( 'ELEMENTOR_VERSION' ) && isset( $this->number ) && $this->number == 'REPLACE_TO_ID' ) {
4161
+                $result = true;
4162
+            }
4166 4163
 
4167
-		/**
4168
-		 * Tests if the current output is inside a elementor preview.
4169
-		 *
4170
-		 * @return bool
4171
-		 *@since 1.0.4
4172
-		 */
4173
-		public function is_elementor_preview() {
4174
-			$result = false;
4175
-			if ( isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' ) ) {
4176
-				$result = true;
4177
-			}
4164
+            return $result;
4165
+        }
4178 4166
 
4179
-			return $result;
4180
-		}
4167
+        /**
4168
+         * Tests if the current output is inside a elementor preview.
4169
+         *
4170
+         * @return bool
4171
+         *@since 1.0.4
4172
+         */
4173
+        public function is_elementor_preview() {
4174
+            $result = false;
4175
+            if ( isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' ) ) {
4176
+                $result = true;
4177
+            }
4181 4178
 
4182
-		/**
4183
-		 * Tests if the current output is inside a Divi preview.
4184
-		 *
4185
-		 * @return bool
4186
-		 *@since 1.0.6
4187
-		 */
4188
-		public function is_divi_preview() {
4189
-			$result = false;
4190
-			if ( isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) ) {
4191
-				$result = true;
4192
-			}
4179
+            return $result;
4180
+        }
4193 4181
 
4194
-			return $result;
4195
-		}
4182
+        /**
4183
+         * Tests if the current output is inside a Divi preview.
4184
+         *
4185
+         * @return bool
4186
+         *@since 1.0.6
4187
+         */
4188
+        public function is_divi_preview() {
4189
+            $result = false;
4190
+            if ( isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) ) {
4191
+                $result = true;
4192
+            }
4196 4193
 
4197
-		/**
4198
-		 * Tests if the current output is inside a Beaver builder preview.
4199
-		 *
4200
-		 * @return bool
4201
-		 *@since 1.0.6
4202
-		 */
4203
-		public function is_beaver_preview() {
4204
-			$result = false;
4205
-			if ( isset( $_REQUEST['fl_builder'] ) ) {
4206
-				$result = true;
4207
-			}
4194
+            return $result;
4195
+        }
4208 4196
 
4209
-			return $result;
4210
-		}
4197
+        /**
4198
+         * Tests if the current output is inside a Beaver builder preview.
4199
+         *
4200
+         * @return bool
4201
+         *@since 1.0.6
4202
+         */
4203
+        public function is_beaver_preview() {
4204
+            $result = false;
4205
+            if ( isset( $_REQUEST['fl_builder'] ) ) {
4206
+                $result = true;
4207
+            }
4211 4208
 
4212
-		/**
4213
-		 * Tests if the current output is inside a siteorigin builder preview.
4214
-		 *
4215
-		 * @return bool
4216
-		 *@since 1.0.6
4217
-		 */
4218
-		public function is_siteorigin_preview() {
4219
-			$result = false;
4220
-			if ( ! empty( $_REQUEST['siteorigin_panels_live_editor'] ) ) {
4221
-				$result = true;
4222
-			}
4209
+            return $result;
4210
+        }
4223 4211
 
4224
-			return $result;
4225
-		}
4212
+        /**
4213
+         * Tests if the current output is inside a siteorigin builder preview.
4214
+         *
4215
+         * @return bool
4216
+         *@since 1.0.6
4217
+         */
4218
+        public function is_siteorigin_preview() {
4219
+            $result = false;
4220
+            if ( ! empty( $_REQUEST['siteorigin_panels_live_editor'] ) ) {
4221
+                $result = true;
4222
+            }
4226 4223
 
4227
-		/**
4228
-		 * Tests if the current output is inside a cornerstone builder preview.
4229
-		 *
4230
-		 * @return bool
4231
-		 *@since 1.0.8
4232
-		 */
4233
-		public function is_cornerstone_preview() {
4234
-			$result = false;
4235
-			if ( ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint' ) {
4236
-				$result = true;
4237
-			}
4224
+            return $result;
4225
+        }
4238 4226
 
4239
-			return $result;
4240
-		}
4227
+        /**
4228
+         * Tests if the current output is inside a cornerstone builder preview.
4229
+         *
4230
+         * @return bool
4231
+         *@since 1.0.8
4232
+         */
4233
+        public function is_cornerstone_preview() {
4234
+            $result = false;
4235
+            if ( ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint' ) {
4236
+                $result = true;
4237
+            }
4241 4238
 
4242
-		/**
4243
-		 * Tests if the current output is inside a fusion builder preview.
4244
-		 *
4245
-		 * @return bool
4246
-		 *@since 1.1.0
4247
-		 */
4248
-		public function is_fusion_preview() {
4249
-			$result = false;
4250
-			if ( ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] ) ) {
4251
-				$result = true;
4252
-			}
4239
+            return $result;
4240
+        }
4253 4241
 
4254
-			return $result;
4255
-		}
4242
+        /**
4243
+         * Tests if the current output is inside a fusion builder preview.
4244
+         *
4245
+         * @return bool
4246
+         *@since 1.1.0
4247
+         */
4248
+        public function is_fusion_preview() {
4249
+            $result = false;
4250
+            if ( ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] ) ) {
4251
+                $result = true;
4252
+            }
4256 4253
 
4257
-		/**
4258
-		 * Tests if the current output is inside a Oxygen builder preview.
4259
-		 *
4260
-		 * @return bool
4261
-		 *@since 1.0.18
4262
-		 */
4263
-		public function is_oxygen_preview() {
4264
-			$result = false;
4265
-			if ( ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === "oxy_render_" || substr( $_REQUEST['action'], 0, 10 ) === "ct_render_" ) ) ) {
4266
-				$result = true;
4267
-			}
4254
+            return $result;
4255
+        }
4268 4256
 
4269
-			return $result;
4270
-		}
4257
+        /**
4258
+         * Tests if the current output is inside a Oxygen builder preview.
4259
+         *
4260
+         * @return bool
4261
+         *@since 1.0.18
4262
+         */
4263
+        public function is_oxygen_preview() {
4264
+            $result = false;
4265
+            if ( ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === "oxy_render_" || substr( $_REQUEST['action'], 0, 10 ) === "ct_render_" ) ) ) {
4266
+                $result = true;
4267
+            }
4271 4268
 
4272
-		/**
4273
-		 * Check for Kallyas theme Zion builder preview.
4274
-		 *
4275
-		 * @since 1.1.22
4276
-		 *
4277
-		 * @return bool True when preview page otherwise false.
4278
-		 */
4279
-		public function is_kallyas_zion_preview() {
4280
-			$result = false;
4281
-
4282
-			if ( function_exists( 'znhg_kallyas_theme_config' ) && ! empty( $_REQUEST['zn_pb_edit'] ) ) {
4283
-				$result = true;
4284
-			}
4269
+            return $result;
4270
+        }
4285 4271
 
4286
-			return $result;
4287
-		}
4272
+        /**
4273
+         * Check for Kallyas theme Zion builder preview.
4274
+         *
4275
+         * @since 1.1.22
4276
+         *
4277
+         * @return bool True when preview page otherwise false.
4278
+         */
4279
+        public function is_kallyas_zion_preview() {
4280
+            $result = false;
4288 4281
 
4289
-		/**
4290
-		 * General function to check if we are in a preview situation.
4291
-		 *
4292
-		 * @return bool
4293
-		 *@since 1.0.6
4294
-		 */
4295
-		public function is_preview() {
4296
-			$preview = false;
4297
-			if ( $this->is_divi_preview() ) {
4298
-				$preview = true;
4299
-			} elseif ( $this->is_elementor_preview() ) {
4300
-				$preview = true;
4301
-			} elseif ( $this->is_beaver_preview() ) {
4302
-				$preview = true;
4303
-			} elseif ( $this->is_siteorigin_preview() ) {
4304
-				$preview = true;
4305
-			} elseif ( $this->is_cornerstone_preview() ) {
4306
-				$preview = true;
4307
-			} elseif ( $this->is_fusion_preview() ) {
4308
-				$preview = true;
4309
-			} elseif ( $this->is_oxygen_preview() ) {
4310
-				$preview = true;
4311
-			} elseif( $this->is_kallyas_zion_preview() ) {
4312
-				$preview = true;
4313
-			} elseif( $this->is_block_content_call() ) {
4314
-				$preview = true;
4315
-			}
4282
+            if ( function_exists( 'znhg_kallyas_theme_config' ) && ! empty( $_REQUEST['zn_pb_edit'] ) ) {
4283
+                $result = true;
4284
+            }
4316 4285
 
4317
-			return $preview;
4318
-		}
4286
+            return $result;
4287
+        }
4319 4288
 
4320
-		/**
4321
-		 * Output the super title.
4322
-		 *
4323
-		 * @param $args
4324
-		 * @param array $instance
4325
-		 *
4326
-		 * @return string
4327
-		 */
4328
-		public function output_title( $args, $instance = array() ) {
4329
-			$output = '';
4330
-			if ( ! empty( $instance['title'] ) ) {
4331
-				/** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
4332
-				$title  = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );
4333
-
4334
-				if(empty($instance['widget_title_tag'])){
4335
-					$output = $args['before_title'] . $title . $args['after_title'];
4336
-				}else{
4337
-					$title_tag = esc_attr( $instance['widget_title_tag'] );
4338
-
4339
-					// classes
4340
-					$title_classes = array();
4341
-					$title_classes[] = !empty( $instance['widget_title_size_class'] ) ? sanitize_html_class( $instance['widget_title_size_class'] ) : '';
4342
-					$title_classes[] = !empty( $instance['widget_title_align_class'] ) ? sanitize_html_class( $instance['widget_title_align_class'] ) : '';
4343
-					$title_classes[] = !empty( $instance['widget_title_color_class'] ) ? "text-".sanitize_html_class( $instance['widget_title_color_class'] ) : '';
4344
-					$title_classes[] = !empty( $instance['widget_title_border_class'] ) ? sanitize_html_class( $instance['widget_title_border_class'] ) : '';
4345
-					$title_classes[] = !empty( $instance['widget_title_border_color_class'] ) ? "border-".sanitize_html_class( $instance['widget_title_border_color_class'] ) : '';
4346
-					$title_classes[] = !empty( $instance['widget_title_mt_class'] ) ? "mt-".absint( $instance['widget_title_mt_class'] ) : '';
4347
-					$title_classes[] = !empty( $instance['widget_title_mr_class'] ) ? "mr-".absint( $instance['widget_title_mr_class'] ) : '';
4348
-					$title_classes[] = !empty( $instance['widget_title_mb_class'] ) ? "mb-".absint( $instance['widget_title_mb_class'] ) : '';
4349
-					$title_classes[] = !empty( $instance['widget_title_ml_class'] ) ? "ml-".absint( $instance['widget_title_ml_class'] ) : '';
4350
-					$title_classes[] = !empty( $instance['widget_title_pt_class'] ) ? "pt-".absint( $instance['widget_title_pt_class'] ) : '';
4351
-					$title_classes[] = !empty( $instance['widget_title_pr_class'] ) ? "pr-".absint( $instance['widget_title_pr_class'] ) : '';
4352
-					$title_classes[] = !empty( $instance['widget_title_pb_class'] ) ? "pb-".absint( $instance['widget_title_pb_class'] ) : '';
4353
-					$title_classes[] = !empty( $instance['widget_title_pl_class'] ) ? "pl-".absint( $instance['widget_title_pl_class'] ) : '';
4354
-
4355
-					$class = !empty( $title_classes ) ? implode(" ",$title_classes) : '';
4356
-					$output = "<$title_tag class='$class' >$title</$title_tag>";
4357
-				}
4289
+        /**
4290
+         * General function to check if we are in a preview situation.
4291
+         *
4292
+         * @return bool
4293
+         *@since 1.0.6
4294
+         */
4295
+        public function is_preview() {
4296
+            $preview = false;
4297
+            if ( $this->is_divi_preview() ) {
4298
+                $preview = true;
4299
+            } elseif ( $this->is_elementor_preview() ) {
4300
+                $preview = true;
4301
+            } elseif ( $this->is_beaver_preview() ) {
4302
+                $preview = true;
4303
+            } elseif ( $this->is_siteorigin_preview() ) {
4304
+                $preview = true;
4305
+            } elseif ( $this->is_cornerstone_preview() ) {
4306
+                $preview = true;
4307
+            } elseif ( $this->is_fusion_preview() ) {
4308
+                $preview = true;
4309
+            } elseif ( $this->is_oxygen_preview() ) {
4310
+                $preview = true;
4311
+            } elseif( $this->is_kallyas_zion_preview() ) {
4312
+                $preview = true;
4313
+            } elseif( $this->is_block_content_call() ) {
4314
+                $preview = true;
4315
+            }
4358 4316
 
4359
-			}
4317
+            return $preview;
4318
+        }
4360 4319
 
4361
-			return $output;
4362
-		}
4320
+        /**
4321
+         * Output the super title.
4322
+         *
4323
+         * @param $args
4324
+         * @param array $instance
4325
+         *
4326
+         * @return string
4327
+         */
4328
+        public function output_title( $args, $instance = array() ) {
4329
+            $output = '';
4330
+            if ( ! empty( $instance['title'] ) ) {
4331
+                /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
4332
+                $title  = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );
4333
+
4334
+                if(empty($instance['widget_title_tag'])){
4335
+                    $output = $args['before_title'] . $title . $args['after_title'];
4336
+                }else{
4337
+                    $title_tag = esc_attr( $instance['widget_title_tag'] );
4338
+
4339
+                    // classes
4340
+                    $title_classes = array();
4341
+                    $title_classes[] = !empty( $instance['widget_title_size_class'] ) ? sanitize_html_class( $instance['widget_title_size_class'] ) : '';
4342
+                    $title_classes[] = !empty( $instance['widget_title_align_class'] ) ? sanitize_html_class( $instance['widget_title_align_class'] ) : '';
4343
+                    $title_classes[] = !empty( $instance['widget_title_color_class'] ) ? "text-".sanitize_html_class( $instance['widget_title_color_class'] ) : '';
4344
+                    $title_classes[] = !empty( $instance['widget_title_border_class'] ) ? sanitize_html_class( $instance['widget_title_border_class'] ) : '';
4345
+                    $title_classes[] = !empty( $instance['widget_title_border_color_class'] ) ? "border-".sanitize_html_class( $instance['widget_title_border_color_class'] ) : '';
4346
+                    $title_classes[] = !empty( $instance['widget_title_mt_class'] ) ? "mt-".absint( $instance['widget_title_mt_class'] ) : '';
4347
+                    $title_classes[] = !empty( $instance['widget_title_mr_class'] ) ? "mr-".absint( $instance['widget_title_mr_class'] ) : '';
4348
+                    $title_classes[] = !empty( $instance['widget_title_mb_class'] ) ? "mb-".absint( $instance['widget_title_mb_class'] ) : '';
4349
+                    $title_classes[] = !empty( $instance['widget_title_ml_class'] ) ? "ml-".absint( $instance['widget_title_ml_class'] ) : '';
4350
+                    $title_classes[] = !empty( $instance['widget_title_pt_class'] ) ? "pt-".absint( $instance['widget_title_pt_class'] ) : '';
4351
+                    $title_classes[] = !empty( $instance['widget_title_pr_class'] ) ? "pr-".absint( $instance['widget_title_pr_class'] ) : '';
4352
+                    $title_classes[] = !empty( $instance['widget_title_pb_class'] ) ? "pb-".absint( $instance['widget_title_pb_class'] ) : '';
4353
+                    $title_classes[] = !empty( $instance['widget_title_pl_class'] ) ? "pl-".absint( $instance['widget_title_pl_class'] ) : '';
4354
+
4355
+                    $class = !empty( $title_classes ) ? implode(" ",$title_classes) : '';
4356
+                    $output = "<$title_tag class='$class' >$title</$title_tag>";
4357
+                }
4358
+
4359
+            }
4360
+
4361
+            return $output;
4362
+        }
4363 4363
 
4364
-		/**
4365
-		 * Outputs the options form inputs for the widget.
4366
-		 *
4367
-		 * @param array $instance The widget options.
4368
-		 */
4369
-		public function form( $instance ) {
4364
+        /**
4365
+         * Outputs the options form inputs for the widget.
4366
+         *
4367
+         * @param array $instance The widget options.
4368
+         */
4369
+        public function form( $instance ) {
4370 4370
 
4371
-			// set widget instance
4372
-			$this->instance = $instance;
4371
+            // set widget instance
4372
+            $this->instance = $instance;
4373 4373
 
4374
-			// set it as a SD widget
4375
-			echo $this->widget_advanced_toggle();
4374
+            // set it as a SD widget
4375
+            echo $this->widget_advanced_toggle();
4376 4376
 
4377
-			echo "<p>" . esc_attr( $this->options['widget_ops']['description'] ) . "</p>";
4378
-			$arguments_raw = $this->get_arguments();
4377
+            echo "<p>" . esc_attr( $this->options['widget_ops']['description'] ) . "</p>";
4378
+            $arguments_raw = $this->get_arguments();
4379 4379
 
4380
-			if ( is_array( $arguments_raw ) ) {
4380
+            if ( is_array( $arguments_raw ) ) {
4381 4381
 
4382
-				$arguments = $this->group_arguments( $arguments_raw );
4382
+                $arguments = $this->group_arguments( $arguments_raw );
4383 4383
 
4384
-				// Do we have sections?
4385
-				$has_sections = $arguments == $arguments_raw ? false : true;
4384
+                // Do we have sections?
4385
+                $has_sections = $arguments == $arguments_raw ? false : true;
4386 4386
 
4387 4387
 
4388
-				if ( $has_sections ) {
4389
-					$panel_count = 0;
4390
-					foreach ( $arguments as $key => $args ) {
4388
+                if ( $has_sections ) {
4389
+                    $panel_count = 0;
4390
+                    foreach ( $arguments as $key => $args ) {
4391 4391
 
4392
-						?>
4392
+                        ?>
4393 4393
 						<script>
4394 4394
 							//							jQuery(this).find("i").toggleClass("fas fa-chevron-up fas fa-chevron-down");jQuery(this).next().toggle();
4395 4395
 						</script>
4396 4396
 						<?php
4397 4397
 
4398
-						$hide       = $panel_count ? ' style="display:none;" ' : '';
4399
-						$icon_class = $panel_count ? 'fas fa-chevron-up' : 'fas fa-chevron-down';
4400
-						echo "<button onclick='jQuery(this).find(\"i\").toggleClass(\"fas fa-chevron-up fas fa-chevron-down\");jQuery(this).next().slideToggle();' type='button' class='sd-toggle-group-button sd-input-group-toggle" . sanitize_title_with_dashes( $key ) . "'>" . esc_attr( $key ) . " <i style='float:right;' class='" . $icon_class . "'></i></button>";
4401
-						echo "<div class='sd-toggle-group sd-input-group-" . sanitize_title_with_dashes( $key ) . "' $hide>";
4398
+                        $hide       = $panel_count ? ' style="display:none;" ' : '';
4399
+                        $icon_class = $panel_count ? 'fas fa-chevron-up' : 'fas fa-chevron-down';
4400
+                        echo "<button onclick='jQuery(this).find(\"i\").toggleClass(\"fas fa-chevron-up fas fa-chevron-down\");jQuery(this).next().slideToggle();' type='button' class='sd-toggle-group-button sd-input-group-toggle" . sanitize_title_with_dashes( $key ) . "'>" . esc_attr( $key ) . " <i style='float:right;' class='" . $icon_class . "'></i></button>";
4401
+                        echo "<div class='sd-toggle-group sd-input-group-" . sanitize_title_with_dashes( $key ) . "' $hide>";
4402 4402
 
4403
-						foreach ( $args as $k => $a ) {
4403
+                        foreach ( $args as $k => $a ) {
4404 4404
 
4405
-							$this->widget_inputs_row_start($k, $a);
4406
-							$this->widget_inputs( $a, $instance );
4407
-							$this->widget_inputs_row_end($k, $a);
4405
+                            $this->widget_inputs_row_start($k, $a);
4406
+                            $this->widget_inputs( $a, $instance );
4407
+                            $this->widget_inputs_row_end($k, $a);
4408 4408
 
4409
-						}
4409
+                        }
4410 4410
 
4411
-						echo "</div>";
4411
+                        echo "</div>";
4412 4412
 
4413
-						$panel_count ++;
4413
+                        $panel_count ++;
4414 4414
 
4415
-					}
4416
-				} else {
4417
-					foreach ( $arguments as $key => $args ) {
4418
-						$this->widget_inputs_row_start($key, $args);
4419
-						$this->widget_inputs( $args, $instance );
4420
-						$this->widget_inputs_row_end($key, $args);
4421
-					}
4422
-				}
4415
+                    }
4416
+                } else {
4417
+                    foreach ( $arguments as $key => $args ) {
4418
+                        $this->widget_inputs_row_start($key, $args);
4419
+                        $this->widget_inputs( $args, $instance );
4420
+                        $this->widget_inputs_row_end($key, $args);
4421
+                    }
4422
+                }
4423 4423
 
4424
-			}
4425
-		}
4424
+            }
4425
+        }
4426 4426
 
4427
-		public function widget_inputs_row_start($key, $args){
4428
-			if(!empty($args['row'])){
4429
-				// maybe open
4430
-				if(!empty($args['row']['open'])){
4431
-					?>
4427
+        public function widget_inputs_row_start($key, $args){
4428
+            if(!empty($args['row'])){
4429
+                // maybe open
4430
+                if(!empty($args['row']['open'])){
4431
+                    ?>
4432 4432
 					<div class='bsui sd-argument ' data-argument='<?php echo esc_attr( $args['row']['key'] ); ?>' data-element_require='<?php if ( !empty($args['row']['element_require'])) {
4433
-						echo $this->convert_element_require( $args['row']['element_require'] );
4434
-					} ?>'>
4433
+                        echo $this->convert_element_require( $args['row']['element_require'] );
4434
+                    } ?>'>
4435 4435
 					<?php if(!empty($args['row']['title'])){ ?>
4436 4436
 					<label class="mb-0 "><?php echo esc_attr( $args['row']['title'] ); ?><?php echo $this->widget_field_desc( $args['row'] ); ?></label>
4437 4437
 					<?php }?>
4438 4438
 					<div class='row <?php if(!empty($args['row']['class'])){ echo esc_attr($args['row']['class']);} ?>'>
4439 4439
 					<div class='col pr-2'>
4440 4440
 					<?php
4441
-				}elseif(!empty($args['row']['close'])){
4442
-					echo "<div class='col pl-0 ps-0'>";
4443
-				}else{
4444
-					echo "<div class='col pl-0 ps-0 pr-2 pe-2'>";
4445
-				}
4446
-			}
4447
-		}
4441
+                }elseif(!empty($args['row']['close'])){
4442
+                    echo "<div class='col pl-0 ps-0'>";
4443
+                }else{
4444
+                    echo "<div class='col pl-0 ps-0 pr-2 pe-2'>";
4445
+                }
4446
+            }
4447
+        }
4448 4448
 
4449
-		public function widget_inputs_row_end($key, $args){
4449
+        public function widget_inputs_row_end($key, $args){
4450 4450
 
4451
-			if(!empty($args['row'])){
4452
-				// maybe close
4453
-				if(!empty($args['row']['close'])){
4454
-					echo "</div></div>";
4455
-				}
4451
+            if(!empty($args['row'])){
4452
+                // maybe close
4453
+                if(!empty($args['row']['close'])){
4454
+                    echo "</div></div>";
4455
+                }
4456 4456
 
4457
-				echo "</div>";
4458
-			}
4459
-		}
4457
+                echo "</div>";
4458
+            }
4459
+        }
4460 4460
 
4461
-		/**
4462
-		 * Get the hidden input that when added makes the advanced button show on widget settings.
4463
-		 *
4464
-		 * @return string
4465
-		 */
4466
-		public function widget_advanced_toggle() {
4461
+        /**
4462
+         * Get the hidden input that when added makes the advanced button show on widget settings.
4463
+         *
4464
+         * @return string
4465
+         */
4466
+        public function widget_advanced_toggle() {
4467 4467
 
4468
-			$output = '';
4469
-			if ( $this->block_show_advanced() ) {
4470
-				$val = 1;
4471
-			} else {
4472
-				$val = 0;
4473
-			}
4468
+            $output = '';
4469
+            if ( $this->block_show_advanced() ) {
4470
+                $val = 1;
4471
+            } else {
4472
+                $val = 0;
4473
+            }
4474 4474
 
4475
-			$output .= "<input type='hidden'  class='sd-show-advanced' value='$val' />";
4475
+            $output .= "<input type='hidden'  class='sd-show-advanced' value='$val' />";
4476 4476
 
4477
-			return $output;
4478
-		}
4477
+            return $output;
4478
+        }
4479 4479
 
4480
-		/**
4481
-		 * Convert require element.
4482
-		 *
4483
-		 * @param string $input Input element.
4484
-		 *
4485
-		 * @return string $output
4486
-		 *@since 1.0.0
4487
-		 *
4488
-		 */
4489
-		public function convert_element_require( $input ) {
4490
-
4491
-			$input = str_replace( "'", '"', $input );// we only want double quotes
4492
-
4493
-			$output = esc_attr( str_replace( array( "[%", "%]" ), array(
4494
-				"jQuery(form).find('[data-argument=\"",
4495
-				"\"]').find('input,select,textarea').val()"
4496
-			), $input ) );
4497
-
4498
-			return $output;
4499
-		}
4480
+        /**
4481
+         * Convert require element.
4482
+         *
4483
+         * @param string $input Input element.
4484
+         *
4485
+         * @return string $output
4486
+         *@since 1.0.0
4487
+         *
4488
+         */
4489
+        public function convert_element_require( $input ) {
4500 4490
 
4501
-		/**
4502
-		 * Builds the inputs for the widget options.
4503
-		 *
4504
-		 * @param $args
4505
-		 * @param $instance
4506
-		 */
4507
-		public function widget_inputs( $args, $instance ) {
4508
-
4509
-			$class             = "";
4510
-			$element_require   = "";
4511
-			$custom_attributes = "";
4512
-
4513
-			// get value
4514
-			if ( isset( $instance[ $args['name'] ] ) ) {
4515
-				$value = $instance[ $args['name'] ];
4516
-			} elseif ( ! isset( $instance[ $args['name'] ] ) && ! empty( $args['default'] ) ) {
4517
-				$value = is_array( $args['default'] ) ? array_map( "esc_html", $args['default'] ) : esc_html( $args['default'] );
4518
-			} else {
4519
-				$value = '';
4520
-			}
4491
+            $input = str_replace( "'", '"', $input );// we only want double quotes
4521 4492
 
4522
-			// get placeholder
4523
-			if ( ! empty( $args['placeholder'] ) ) {
4524
-				$placeholder = "placeholder='" . esc_html( $args['placeholder'] ) . "'";
4525
-			} else {
4526
-				$placeholder = '';
4527
-			}
4493
+            $output = esc_attr( str_replace( array( "[%", "%]" ), array(
4494
+                "jQuery(form).find('[data-argument=\"",
4495
+                "\"]').find('input,select,textarea').val()"
4496
+            ), $input ) );
4528 4497
 
4529
-			// get if advanced
4530
-			if ( isset( $args['advanced'] ) && $args['advanced'] ) {
4531
-				$class .= " sd-advanced-setting ";
4532
-			}
4498
+            return $output;
4499
+        }
4533 4500
 
4534
-			// element_require
4535
-			if ( isset( $args['element_require'] ) && $args['element_require'] ) {
4536
-				$element_require = $args['element_require'];
4537
-			}
4501
+        /**
4502
+         * Builds the inputs for the widget options.
4503
+         *
4504
+         * @param $args
4505
+         * @param $instance
4506
+         */
4507
+        public function widget_inputs( $args, $instance ) {
4508
+
4509
+            $class             = "";
4510
+            $element_require   = "";
4511
+            $custom_attributes = "";
4512
+
4513
+            // get value
4514
+            if ( isset( $instance[ $args['name'] ] ) ) {
4515
+                $value = $instance[ $args['name'] ];
4516
+            } elseif ( ! isset( $instance[ $args['name'] ] ) && ! empty( $args['default'] ) ) {
4517
+                $value = is_array( $args['default'] ) ? array_map( "esc_html", $args['default'] ) : esc_html( $args['default'] );
4518
+            } else {
4519
+                $value = '';
4520
+            }
4538 4521
 
4539
-			// custom_attributes
4540
-			if ( isset( $args['custom_attributes'] ) && $args['custom_attributes'] ) {
4541
-				$custom_attributes = $this->array_to_attributes( $args['custom_attributes'], true );
4542
-			}
4522
+            // get placeholder
4523
+            if ( ! empty( $args['placeholder'] ) ) {
4524
+                $placeholder = "placeholder='" . esc_html( $args['placeholder'] ) . "'";
4525
+            } else {
4526
+                $placeholder = '';
4527
+            }
4528
+
4529
+            // get if advanced
4530
+            if ( isset( $args['advanced'] ) && $args['advanced'] ) {
4531
+                $class .= " sd-advanced-setting ";
4532
+            }
4533
+
4534
+            // element_require
4535
+            if ( isset( $args['element_require'] ) && $args['element_require'] ) {
4536
+                $element_require = $args['element_require'];
4537
+            }
4538
+
4539
+            // custom_attributes
4540
+            if ( isset( $args['custom_attributes'] ) && $args['custom_attributes'] ) {
4541
+                $custom_attributes = $this->array_to_attributes( $args['custom_attributes'], true );
4542
+            }
4543 4543
 
4544
-			// before wrapper
4545
-			?>
4544
+            // before wrapper
4545
+            ?>
4546 4546
 			<p class="sd-argument <?php echo esc_attr( $class ); ?>" data-argument='<?php echo esc_attr( $args['name'] ); ?>' data-element_require='<?php if ( $element_require ) { echo $this->convert_element_require( $element_require );} ?>'>
4547 4547
 			<?php
4548
-			switch ( $args['type'] ) {
4549
-				//array('text','password','number','email','tel','url','color')
4550
-				case "text":
4551
-				case "password":
4552
-				case "number":
4553
-				case "email":
4554
-				case "tel":
4555
-				case "url":
4556
-				case "color":
4557
-					?>
4548
+            switch ( $args['type'] ) {
4549
+                //array('text','password','number','email','tel','url','color')
4550
+                case "text":
4551
+                case "password":
4552
+                case "number":
4553
+                case "email":
4554
+                case "tel":
4555
+                case "url":
4556
+                case "color":
4557
+                    ?>
4558 4558
 					<label for="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>"><?php echo $this->widget_field_title( $args );?><?php echo $this->widget_field_desc( $args ); ?></label>
4559 4559
 					<input <?php echo $placeholder; ?> class="widefat" <?php echo $custom_attributes; ?> id="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( $args['name'] ) ); ?>" type="<?php echo esc_attr( $args['type'] ); ?>" value="<?php echo esc_attr( $value ); ?>">
4560 4560
 					<?php
4561 4561
 
4562
-					break;
4563
-				case "select":
4564
-					$multiple = isset( $args['multiple'] ) && $args['multiple'] ? true : false;
4565
-					if ( $multiple ) {
4566
-						if ( empty( $value ) ) {
4567
-							$value = array();
4568
-						}
4569
-					}
4570
-					?>
4562
+                    break;
4563
+                case "select":
4564
+                    $multiple = isset( $args['multiple'] ) && $args['multiple'] ? true : false;
4565
+                    if ( $multiple ) {
4566
+                        if ( empty( $value ) ) {
4567
+                            $value = array();
4568
+                        }
4569
+                    }
4570
+                    ?>
4571 4571
 					<label for="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>"><?php echo $this->widget_field_title( $args ); ?><?php echo $this->widget_field_desc( $args ); ?></label>
4572 4572
 					<select <?php echo $placeholder; ?> class="widefat" <?php echo $custom_attributes; ?> id="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( $args['name'] ) ); if ( $multiple ) { echo "[]"; } ?>"
4573 4573
 						<?php if ( $multiple ) {
4574
-							echo "multiple";
4575
-						} //@todo not implemented yet due to gutenberg not supporting it
4576
-						?>>
4574
+                            echo "multiple";
4575
+                        } //@todo not implemented yet due to gutenberg not supporting it
4576
+                        ?>>
4577 4577
 						<?php
4578 4578
 
4579
-						if ( ! empty( $args['options'] ) ) {
4580
-							foreach ( $args['options'] as $val => $label ) {
4581
-								if ( $multiple ) {
4582
-									$selected = in_array( $val, $value ) ? 'selected="selected"' : '';
4583
-								} else {
4584
-									$selected = selected( $value, $val, false );
4585
-								}
4586
-								echo "<option value='$val' " . $selected . ">$label</option>";
4587
-							}
4588
-						}
4589
-						?>
4579
+                        if ( ! empty( $args['options'] ) ) {
4580
+                            foreach ( $args['options'] as $val => $label ) {
4581
+                                if ( $multiple ) {
4582
+                                    $selected = in_array( $val, $value ) ? 'selected="selected"' : '';
4583
+                                } else {
4584
+                                    $selected = selected( $value, $val, false );
4585
+                                }
4586
+                                echo "<option value='$val' " . $selected . ">$label</option>";
4587
+                            }
4588
+                        }
4589
+                        ?>
4590 4590
 					</select>
4591 4591
 					<?php
4592
-					break;
4593
-				case "checkbox":
4594
-					?>
4592
+                    break;
4593
+                case "checkbox":
4594
+                    ?>
4595 4595
 					<input <?php echo $placeholder; ?> <?php checked( 1, $value, true ) ?> <?php echo $custom_attributes; ?> class="widefat" id="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( $args['name'] ) ); ?>" type="checkbox" value="1">
4596 4596
 					<label for="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>"><?php echo $this->widget_field_title( $args );?><?php echo $this->widget_field_desc( $args ); ?></label>
4597 4597
 					<?php
4598
-					break;
4599
-				case "textarea":
4600
-					?>
4598
+                    break;
4599
+                case "textarea":
4600
+                    ?>
4601 4601
 					<label for="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>"><?php echo $this->widget_field_title( $args ); ?><?php echo $this->widget_field_desc( $args ); ?></label>
4602 4602
 					<textarea <?php echo $placeholder; ?> class="widefat" <?php echo $custom_attributes; ?> id="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( $args['name'] ) ); ?>"><?php echo esc_attr( $value ); ?></textarea>
4603 4603
 					<?php
4604 4604
 
4605
-					break;
4606
-				case "hidden":
4607
-					?>
4605
+                    break;
4606
+                case "hidden":
4607
+                    ?>
4608 4608
 					<input id="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( $args['name'] ) ); ?>" type="hidden" value="<?php echo esc_attr( $value ); ?>">
4609 4609
 					<?php
4610
-					break;
4611
-				default:
4612
-					echo "No input type found!"; // @todo we need to add more input types.
4613
-			}
4614
-			// after wrapper
4615
-			?></p><?php
4616
-		}
4610
+                    break;
4611
+                default:
4612
+                    echo "No input type found!"; // @todo we need to add more input types.
4613
+            }
4614
+            // after wrapper
4615
+            ?></p><?php
4616
+        }
4617 4617
 
4618
-		public function get_widget_icon($icon = 'box-top', $title = ''){
4619
-			if($icon=='box-top'){
4620
-				return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.714" y="5.492" width="1.048" height="9.017" fill="#555D66"></rect><rect x="16.265" y="5.498" width="1.023" height="9.003" fill="#555D66"></rect><rect x="5.518" y="2.186" width="8.964" height="2.482" fill="#272B2F"></rect><rect x="5.487" y="16.261" width="9.026" height="1.037" fill="#555D66"></rect></svg>';
4621
-			}elseif($icon=='box-right'){
4622
-				return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.714" y="5.492" width="1.046" height="9.017" fill="#555D66"></rect><rect x="15.244" y="5.498" width="2.518" height="9.003" fill="#272B2F"></rect><rect x="5.518" y="2.719" width="8.964" height="0.954" fill="#555D66"></rect><rect x="5.487" y="16.308" width="9.026" height="0.99" fill="#555D66"></rect></svg>';
4623
-			}elseif($icon=='box-bottom'){
4624
-				return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.714" y="5.492" width="1" height="9.017" fill="#555D66"></rect><rect x="16.261" y="5.498" width="1.027" height="9.003" fill="#555D66"></rect><rect x="5.518" y="2.719" width="8.964" height="0.968" fill="#555D66"></rect><rect x="5.487" y="15.28" width="9.026" height="2.499" fill="#272B2F"></rect></svg>';
4625
-			}elseif($icon=='box-left'){
4626
-				return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.202" y="5.492" width="2.503" height="9.017" fill="#272B2F"></rect><rect x="16.276" y="5.498" width="1.012" height="9.003" fill="#555D66"></rect><rect x="5.518" y="2.719" width="8.964" height="0.966" fill="#555D66"></rect><rect x="5.487" y="16.303" width="9.026" height="0.995" fill="#555D66"></rect></svg>';
4627
-			}
4628
-		}
4618
+        public function get_widget_icon($icon = 'box-top', $title = ''){
4619
+            if($icon=='box-top'){
4620
+                return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.714" y="5.492" width="1.048" height="9.017" fill="#555D66"></rect><rect x="16.265" y="5.498" width="1.023" height="9.003" fill="#555D66"></rect><rect x="5.518" y="2.186" width="8.964" height="2.482" fill="#272B2F"></rect><rect x="5.487" y="16.261" width="9.026" height="1.037" fill="#555D66"></rect></svg>';
4621
+            }elseif($icon=='box-right'){
4622
+                return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.714" y="5.492" width="1.046" height="9.017" fill="#555D66"></rect><rect x="15.244" y="5.498" width="2.518" height="9.003" fill="#272B2F"></rect><rect x="5.518" y="2.719" width="8.964" height="0.954" fill="#555D66"></rect><rect x="5.487" y="16.308" width="9.026" height="0.99" fill="#555D66"></rect></svg>';
4623
+            }elseif($icon=='box-bottom'){
4624
+                return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.714" y="5.492" width="1" height="9.017" fill="#555D66"></rect><rect x="16.261" y="5.498" width="1.027" height="9.003" fill="#555D66"></rect><rect x="5.518" y="2.719" width="8.964" height="0.968" fill="#555D66"></rect><rect x="5.487" y="15.28" width="9.026" height="2.499" fill="#272B2F"></rect></svg>';
4625
+            }elseif($icon=='box-left'){
4626
+                return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.202" y="5.492" width="2.503" height="9.017" fill="#272B2F"></rect><rect x="16.276" y="5.498" width="1.012" height="9.003" fill="#555D66"></rect><rect x="5.518" y="2.719" width="8.964" height="0.966" fill="#555D66"></rect><rect x="5.487" y="16.303" width="9.026" height="0.995" fill="#555D66"></rect></svg>';
4627
+            }
4628
+        }
4629 4629
 
4630
-		/**
4631
-		 * Get the widget input description html.
4632
-		 *
4633
-		 * @param $args
4634
-		 *
4635
-		 * @return string
4636
-		 * @todo, need to make its own tooltip script
4637
-		 */
4638
-		public function widget_field_desc( $args ) {
4639
-
4640
-			$description = '';
4641
-			if ( isset( $args['desc'] ) && $args['desc'] ) {
4642
-				if ( isset( $args['desc_tip'] ) && $args['desc_tip'] ) {
4643
-					$description = $this->desc_tip( $args['desc'] );
4644
-				} else {
4645
-					$description = '<span class="description">' . wp_kses_post( $args['desc'] ) . '</span>';
4646
-				}
4647
-			}
4630
+        /**
4631
+         * Get the widget input description html.
4632
+         *
4633
+         * @param $args
4634
+         *
4635
+         * @return string
4636
+         * @todo, need to make its own tooltip script
4637
+         */
4638
+        public function widget_field_desc( $args ) {
4639
+
4640
+            $description = '';
4641
+            if ( isset( $args['desc'] ) && $args['desc'] ) {
4642
+                if ( isset( $args['desc_tip'] ) && $args['desc_tip'] ) {
4643
+                    $description = $this->desc_tip( $args['desc'] );
4644
+                } else {
4645
+                    $description = '<span class="description">' . wp_kses_post( $args['desc'] ) . '</span>';
4646
+                }
4647
+            }
4648 4648
 
4649
-			return $description;
4650
-		}
4649
+            return $description;
4650
+        }
4651 4651
 
4652
-		/**
4653
-		 * Get the widget input title html.
4654
-		 *
4655
-		 * @param $args
4656
-		 *
4657
-		 * @return string
4658
-		 */
4659
-		public function widget_field_title( $args ) {
4660
-
4661
-			$title = '';
4662
-			if ( isset( $args['title'] ) && $args['title'] ) {
4663
-				if ( isset( $args['icon'] ) && $args['icon'] ) {
4664
-					$title = self::get_widget_icon( $args['icon'], $args['title']  );
4665
-				} else {
4666
-					$title = esc_attr($args['title']);
4667
-				}
4668
-			}
4652
+        /**
4653
+         * Get the widget input title html.
4654
+         *
4655
+         * @param $args
4656
+         *
4657
+         * @return string
4658
+         */
4659
+        public function widget_field_title( $args ) {
4660
+
4661
+            $title = '';
4662
+            if ( isset( $args['title'] ) && $args['title'] ) {
4663
+                if ( isset( $args['icon'] ) && $args['icon'] ) {
4664
+                    $title = self::get_widget_icon( $args['icon'], $args['title']  );
4665
+                } else {
4666
+                    $title = esc_attr($args['title']);
4667
+                }
4668
+            }
4669 4669
 
4670
-			return $title;
4671
-		}
4670
+            return $title;
4671
+        }
4672 4672
 
4673
-		/**
4674
-		 * Get the tool tip html.
4675
-		 *
4676
-		 * @param $tip
4677
-		 * @param bool $allow_html
4678
-		 *
4679
-		 * @return string
4680
-		 */
4681
-		function desc_tip( $tip, $allow_html = false ) {
4682
-			if ( $allow_html ) {
4683
-				$tip = $this->sanitize_tooltip( $tip );
4684
-			} else {
4685
-				$tip = esc_attr( $tip );
4686
-			}
4673
+        /**
4674
+         * Get the tool tip html.
4675
+         *
4676
+         * @param $tip
4677
+         * @param bool $allow_html
4678
+         *
4679
+         * @return string
4680
+         */
4681
+        function desc_tip( $tip, $allow_html = false ) {
4682
+            if ( $allow_html ) {
4683
+                $tip = $this->sanitize_tooltip( $tip );
4684
+            } else {
4685
+                $tip = esc_attr( $tip );
4686
+            }
4687 4687
 
4688
-			return '<span class="gd-help-tip dashicons dashicons-editor-help" title="' . $tip . '"></span>';
4689
-		}
4688
+            return '<span class="gd-help-tip dashicons dashicons-editor-help" title="' . $tip . '"></span>';
4689
+        }
4690 4690
 
4691
-		/**
4692
-		 * Sanitize a string destined to be a tooltip.
4693
-		 *
4694
-		 * @param string $var
4695
-		 *
4696
-		 * @return string
4697
-		 */
4698
-		public function sanitize_tooltip( $var ) {
4699
-			return htmlspecialchars( wp_kses( html_entity_decode( $var ), array(
4700
-				'br'     => array(),
4701
-				'em'     => array(),
4702
-				'strong' => array(),
4703
-				'small'  => array(),
4704
-				'span'   => array(),
4705
-				'ul'     => array(),
4706
-				'li'     => array(),
4707
-				'ol'     => array(),
4708
-				'p'      => array(),
4709
-			) ) );
4710
-		}
4691
+        /**
4692
+         * Sanitize a string destined to be a tooltip.
4693
+         *
4694
+         * @param string $var
4695
+         *
4696
+         * @return string
4697
+         */
4698
+        public function sanitize_tooltip( $var ) {
4699
+            return htmlspecialchars( wp_kses( html_entity_decode( $var ), array(
4700
+                'br'     => array(),
4701
+                'em'     => array(),
4702
+                'strong' => array(),
4703
+                'small'  => array(),
4704
+                'span'   => array(),
4705
+                'ul'     => array(),
4706
+                'li'     => array(),
4707
+                'ol'     => array(),
4708
+                'p'      => array(),
4709
+            ) ) );
4710
+        }
4711 4711
 
4712
-		/**
4713
-		 * Processing widget options on save
4714
-		 *
4715
-		 * @param array $new_instance The new options
4716
-		 * @param array $old_instance The previous options
4717
-		 *
4718
-		 * @return array
4719
-		 * @todo we should add some sanitation here.
4720
-		 */
4721
-		public function update( $new_instance, $old_instance ) {
4722
-
4723
-			//save the widget
4724
-			$instance = array_merge( (array) $old_instance, (array) $new_instance );
4725
-
4726
-			// set widget instance
4727
-			$this->instance = $instance;
4728
-
4729
-			if ( empty( $this->arguments ) ) {
4730
-				$this->get_arguments();
4731
-			}
4712
+        /**
4713
+         * Processing widget options on save
4714
+         *
4715
+         * @param array $new_instance The new options
4716
+         * @param array $old_instance The previous options
4717
+         *
4718
+         * @return array
4719
+         * @todo we should add some sanitation here.
4720
+         */
4721
+        public function update( $new_instance, $old_instance ) {
4732 4722
 
4733
-			// check for checkboxes
4734
-			if ( ! empty( $this->arguments ) ) {
4735
-				foreach ( $this->arguments as $argument ) {
4736
-					if ( isset( $argument['type'] ) && $argument['type'] == 'checkbox' && ! isset( $new_instance[ $argument['name'] ] ) ) {
4737
-						$instance[ $argument['name'] ] = '0';
4738
-					}
4739
-				}
4740
-			}
4723
+            //save the widget
4724
+            $instance = array_merge( (array) $old_instance, (array) $new_instance );
4741 4725
 
4742
-			return $instance;
4743
-		}
4726
+            // set widget instance
4727
+            $this->instance = $instance;
4744 4728
 
4745
-		/**
4746
-		 * Checks if the current call is a ajax call to get the block content.
4747
-		 *
4748
-		 * This can be used in your widget to return different content as the block content.
4749
-		 *
4750
-		 * @return bool
4751
-		 *@since 1.0.3
4752
-		 */
4753
-		public function is_block_content_call() {
4754
-			$result = false;
4755
-			if ( wp_doing_ajax() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'super_duper_output_shortcode' ) {
4756
-				$result = true;
4757
-			}
4729
+            if ( empty( $this->arguments ) ) {
4730
+                $this->get_arguments();
4731
+            }
4758 4732
 
4759
-			return $result;
4760
-		}
4733
+            // check for checkboxes
4734
+            if ( ! empty( $this->arguments ) ) {
4735
+                foreach ( $this->arguments as $argument ) {
4736
+                    if ( isset( $argument['type'] ) && $argument['type'] == 'checkbox' && ! isset( $new_instance[ $argument['name'] ] ) ) {
4737
+                        $instance[ $argument['name'] ] = '0';
4738
+                    }
4739
+                }
4740
+            }
4761 4741
 
4762
-		/**
4763
-		 * Get an instance hash that will be unique to the type and settings.
4764
-		 *
4765
-		 * @return string
4766
-		 *@since 1.0.20
4767
-		 */
4768
-		public function get_instance_hash(){
4769
-			$instance_string = $this->base_id.serialize($this->instance);
4770
-			return hash('crc32b',$instance_string);
4771
-		}
4742
+            return $instance;
4743
+        }
4772 4744
 
4773
-		/**
4774
-		 * Generate and return inline styles from CSS rules that will match the unique class of the instance.
4775
-		 *
4776
-		 * @param array $rules
4777
-		 *
4778
-		 * @return string
4779
-		 *@since 1.0.20
4780
-		 */
4781
-		public function get_instance_style($rules = array()){
4782
-			$css = '';
4783
-
4784
-			if(!empty($rules)){
4785
-				$rules = array_unique($rules);
4786
-				$instance_hash = $this->get_instance_hash();
4787
-				$css .= "<style>";
4788
-				foreach($rules as $rule){
4789
-					$css .= ".sdel-$instance_hash $rule";
4790
-				}
4791
-				$css .= "</style>";
4792
-			}
4745
+        /**
4746
+         * Checks if the current call is a ajax call to get the block content.
4747
+         *
4748
+         * This can be used in your widget to return different content as the block content.
4749
+         *
4750
+         * @return bool
4751
+         *@since 1.0.3
4752
+         */
4753
+        public function is_block_content_call() {
4754
+            $result = false;
4755
+            if ( wp_doing_ajax() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'super_duper_output_shortcode' ) {
4756
+                $result = true;
4757
+            }
4793 4758
 
4794
-			return $css;
4795
-		}
4759
+            return $result;
4760
+        }
4796 4761
 
4797
-		/**
4798
-		 * Encode shortcodes tags.
4799
-		 *
4800
-		 * @param string $content Content to search for shortcode tags.
4801
-		 *
4762
+        /**
4763
+         * Get an instance hash that will be unique to the type and settings.
4764
+         *
4765
+         * @return string
4766
+         *@since 1.0.20
4767
+         */
4768
+        public function get_instance_hash(){
4769
+            $instance_string = $this->base_id.serialize($this->instance);
4770
+            return hash('crc32b',$instance_string);
4771
+        }
4772
+
4773
+        /**
4774
+         * Generate and return inline styles from CSS rules that will match the unique class of the instance.
4775
+         *
4776
+         * @param array $rules
4777
+         *
4778
+         * @return string
4779
+         *@since 1.0.20
4780
+         */
4781
+        public function get_instance_style($rules = array()){
4782
+            $css = '';
4783
+
4784
+            if(!empty($rules)){
4785
+                $rules = array_unique($rules);
4786
+                $instance_hash = $this->get_instance_hash();
4787
+                $css .= "<style>";
4788
+                foreach($rules as $rule){
4789
+                    $css .= ".sdel-$instance_hash $rule";
4790
+                }
4791
+                $css .= "</style>";
4792
+            }
4793
+
4794
+            return $css;
4795
+        }
4796
+
4797
+        /**
4798
+         * Encode shortcodes tags.
4799
+         *
4800
+         * @param string $content Content to search for shortcode tags.
4801
+         *
4802 4802
 *@return string Content with shortcode tags removed.
4803
-		 *@since 1.0.28
4804
-		 *
4805
-		 */
4806
-		public function encode_shortcodes( $content ) {
4807
-			// Avoids existing encoded tags.
4808
-			$trans   = array(
4809
-				'&#91;' => '&#091;',
4810
-				'&#93;' => '&#093;',
4811
-				'&amp;#91;' => '&#091;',
4812
-				'&amp;#93;' => '&#093;',
4813
-				'&lt;' => '&0lt;',
4814
-				'&gt;' => '&0gt;',
4815
-				'&amp;lt;' => '&0lt;',
4816
-				'&amp;gt;' => '&0gt;',
4817
-			);
4818
-
4819
-			$content = strtr( $content, $trans );
4820
-
4821
-			$trans   = array(
4822
-				'[' => '&#91;',
4823
-				']' => '&#93;',
4824
-				'<' => '&lt;',
4825
-				'>' => '&gt;',
4826
-				'"' => '&quot;',
4827
-				"'" => '&#39;',
4828
-			);
4829
-
4830
-			$content = strtr( $content, $trans );
4831
-
4832
-			return $content;
4833
-		}
4803
+         *@since 1.0.28
4804
+         *
4805
+         */
4806
+        public function encode_shortcodes( $content ) {
4807
+            // Avoids existing encoded tags.
4808
+            $trans   = array(
4809
+                '&#91;' => '&#091;',
4810
+                '&#93;' => '&#093;',
4811
+                '&amp;#91;' => '&#091;',
4812
+                '&amp;#93;' => '&#093;',
4813
+                '&lt;' => '&0lt;',
4814
+                '&gt;' => '&0gt;',
4815
+                '&amp;lt;' => '&0lt;',
4816
+                '&amp;gt;' => '&0gt;',
4817
+            );
4818
+
4819
+            $content = strtr( $content, $trans );
4820
+
4821
+            $trans   = array(
4822
+                '[' => '&#91;',
4823
+                ']' => '&#93;',
4824
+                '<' => '&lt;',
4825
+                '>' => '&gt;',
4826
+                '"' => '&quot;',
4827
+                "'" => '&#39;',
4828
+            );
4829
+
4830
+            $content = strtr( $content, $trans );
4831
+
4832
+            return $content;
4833
+        }
4834 4834
 
4835
-		/**
4836
-		 * Remove encoded shortcod tags.
4837
-		 *
4838
-		 * @param string $content Content to search for shortcode tags.
4839
-		 *
4835
+        /**
4836
+         * Remove encoded shortcod tags.
4837
+         *
4838
+         * @param string $content Content to search for shortcode tags.
4839
+         *
4840 4840
 *@return string Content with decoded shortcode tags.
4841
-		 *@since 1.0.28
4842
-		 *
4843
-		 */
4844
-		public function decode_shortcodes( $content ) {
4845
-			$trans   = array(
4846
-				'&#91;' => '[',
4847
-				'&#93;' => ']',
4848
-				'&amp;#91;' => '[',
4849
-				'&amp;#93;' => ']',
4850
-				'&lt;' => '<',
4851
-				'&gt;' => '>',
4852
-				'&amp;lt;' => '<',
4853
-				'&amp;gt;' => '>',
4854
-				'&quot;' => '"',
4855
-				'&apos;' => "'",
4856
-			);
4857
-
4858
-			$content = strtr( $content, $trans );
4859
-
4860
-			$trans   = array(
4861
-				'&#091;' => '&#91;',
4862
-				'&#093;' => '&#93;',
4863
-				'&amp;#091;' => '&#91;',
4864
-				'&amp;#093;' => '&#93;',
4865
-				'&0lt;' => '&lt;',
4866
-				'&0gt;' => '&gt;',
4867
-				'&amp;0lt;' => '&lt;',
4868
-				'&amp;0gt;' => '&gt;',
4869
-			);
4870
-
4871
-			$content = strtr( $content, $trans );
4872
-
4873
-			return $content;
4874
-		}
4875
-
4876
-		public function block_visibility_fields( $args ) {
4877
-			$value = ! empty( $args['value'] ) ? esc_attr( $args['value'] ) : '';
4878
-			$content = '<div class="bs-vc-rule-template d-none">';
4879
-				$content .= '<div class="p-3 pb-0 mb-3 border border-1 rounded-1 position-relative bs-vc-rule" data-bs-index="BSVCINDEX" >';
4880
-					$content .= '<div class="row">';
4881
-						$content .= '<div class="col-sm-12">';
4882
-							$content .= '<div class="bs-rule-action position-absolute top-0 end-0 p-2 zindex-5"><span class="text-danger c-pointer bs-vc-remove-rule" title="' . esc_attr__( 'Remove Rule', 'super-duper' ) . '"><i class="fas fa-circle-minus fs-6"></i></span></div>';
4883
-							$content .= aui()->select(
4884
-								array(
4885
-									'id'          => 'bsvc_rule_BSVCINDEX',
4886
-									'name'        => 'bsvc_rule_BSVCINDEX',
4887
-									'label'       => __( 'Rule', 'super-duper' ),
4888
-									'placeholder' => __( 'Select Rule...', 'super-duper' ),
4889
-									'class'       => 'bsvc_rule form-select-sm',
4890
-									'options'     => sd_visibility_rules_options(),
4891
-									'default'     => '',
4892
-									'value'       => '',
4893
-									'label_type'  => '',
4894
-									'select2'     => false,
4895
-									'input_group_left' => __( 'Rule:', 'super-duper' ),
4896
-									'extra_attributes' => array(
4897
-										'data-minimum-results-for-search' => '-1'
4898
-									)
4899
-								)
4900
-							);
4901
-
4902
-						$content .= '</div>';
4903
-
4904
-						if ( class_exists( 'GeoDirectory' ) ) {
4905
-							$content .= '<div class="col-md-7 col-sm-12">';
4906
-
4907
-								$content .= aui()->select(
4908
-									array(
4909
-										'id'          => 'bsvc_gd_field_BSVCINDEX',
4910
-										'name'        => 'bsvc_gd_field_BSVCINDEX',
4911
-										'label'       => __( 'FIELD', 'super-duper' ),
4912
-										'placeholder' => __( 'FIELD', 'super-duper' ),
4913
-										'class'       => 'bsvc_gd_field form-select-sm',
4914
-										'options'     => sd_visibility_gd_field_options(),
4915
-										'default'     => '',
4916
-										'value'       => '',
4917
-										'label_type'  => '',
4918
-										'select2'     => false,
4919
-										'element_require'  => '[%bsvc_rule_BSVCINDEX%]=="gd_field"',
4920
-										'extra_attributes' => array(
4921
-											'data-minimum-results-for-search' => '-1'
4922
-										)
4923
-									)
4924
-								);
4925
-
4926
-							$content .= '</div>';
4927
-							$content .= '<div class="col-md-5 col-sm-12">';
4928
-
4929
-								$content .= aui()->select(
4930
-									array(
4931
-										'id'          => 'bsvc_gd_field_condition_BSVCINDEX',
4932
-										'name'        => 'bsvc_gd_field_condition_BSVCINDEX',
4933
-										'label'       => __( 'CONDITION', 'super-duper' ),
4934
-										'placeholder' => __( 'CONDITION', 'super-duper' ),
4935
-										'class'       => 'bsvc_gd_field_condition form-select-sm',
4936
-										'options'     => sd_visibility_field_condition_options(),
4937
-										'default'     => '',
4938
-										'value'       => '',
4939
-										'label_type'  => '',
4940
-										'select2'     => false,
4941
-										'element_require'  => '[%bsvc_rule_BSVCINDEX%]=="gd_field"',
4942
-										'extra_attributes' => array(
4943
-											'data-minimum-results-for-search' => '-1'
4944
-										)
4945
-									)
4946
-								);
4947
-
4948
-							$content .= '</div>';
4949
-							$content .= '<div class="col-sm-12">';
4950
-
4951
-								$content .= aui()->input(
4952
-									array(
4953
-										'type'            => 'text',
4954
-										'id'              => 'bsvc_gd_field_search_BSVCINDEX',
4955
-										'name'            => 'bsvc_gd_field_search_BSVCINDEX',
4956
-										'label'           => __( 'VALUE TO MATCH', 'super-duper' ),
4957
-										'class'           => 'bsvc_gd_field_search form-control-sm',
4958
-										'placeholder'     => __( 'VALUE TO MATCH', 'super-duper' ),
4959
-										'label_type'      => '',
4960
-										'value'           => '',
4961
-										'element_require' => '([%bsvc_rule_BSVCINDEX%]=="gd_field" && [%bsvc_gd_field_condition_BSVCINDEX%] && [%bsvc_gd_field_condition_BSVCINDEX%]!="is_empty" && [%bsvc_gd_field_condition_BSVCINDEX%]!="is_not_empty")'
4962
-									)
4963
-								);
4841
+         *@since 1.0.28
4842
+         *
4843
+         */
4844
+        public function decode_shortcodes( $content ) {
4845
+            $trans   = array(
4846
+                '&#91;' => '[',
4847
+                '&#93;' => ']',
4848
+                '&amp;#91;' => '[',
4849
+                '&amp;#93;' => ']',
4850
+                '&lt;' => '<',
4851
+                '&gt;' => '>',
4852
+                '&amp;lt;' => '<',
4853
+                '&amp;gt;' => '>',
4854
+                '&quot;' => '"',
4855
+                '&apos;' => "'",
4856
+            );
4857
+
4858
+            $content = strtr( $content, $trans );
4859
+
4860
+            $trans   = array(
4861
+                '&#091;' => '&#91;',
4862
+                '&#093;' => '&#93;',
4863
+                '&amp;#091;' => '&#91;',
4864
+                '&amp;#093;' => '&#93;',
4865
+                '&0lt;' => '&lt;',
4866
+                '&0gt;' => '&gt;',
4867
+                '&amp;0lt;' => '&lt;',
4868
+                '&amp;0gt;' => '&gt;',
4869
+            );
4870
+
4871
+            $content = strtr( $content, $trans );
4872
+
4873
+            return $content;
4874
+        }
4964 4875
 
4965
-							$content .= '</div>';
4966
-						}
4876
+        public function block_visibility_fields( $args ) {
4877
+            $value = ! empty( $args['value'] ) ? esc_attr( $args['value'] ) : '';
4878
+            $content = '<div class="bs-vc-rule-template d-none">';
4879
+                $content .= '<div class="p-3 pb-0 mb-3 border border-1 rounded-1 position-relative bs-vc-rule" data-bs-index="BSVCINDEX" >';
4880
+                    $content .= '<div class="row">';
4881
+                        $content .= '<div class="col-sm-12">';
4882
+                            $content .= '<div class="bs-rule-action position-absolute top-0 end-0 p-2 zindex-5"><span class="text-danger c-pointer bs-vc-remove-rule" title="' . esc_attr__( 'Remove Rule', 'super-duper' ) . '"><i class="fas fa-circle-minus fs-6"></i></span></div>';
4883
+                            $content .= aui()->select(
4884
+                                array(
4885
+                                    'id'          => 'bsvc_rule_BSVCINDEX',
4886
+                                    'name'        => 'bsvc_rule_BSVCINDEX',
4887
+                                    'label'       => __( 'Rule', 'super-duper' ),
4888
+                                    'placeholder' => __( 'Select Rule...', 'super-duper' ),
4889
+                                    'class'       => 'bsvc_rule form-select-sm',
4890
+                                    'options'     => sd_visibility_rules_options(),
4891
+                                    'default'     => '',
4892
+                                    'value'       => '',
4893
+                                    'label_type'  => '',
4894
+                                    'select2'     => false,
4895
+                                    'input_group_left' => __( 'Rule:', 'super-duper' ),
4896
+                                    'extra_attributes' => array(
4897
+                                        'data-minimum-results-for-search' => '-1'
4898
+                                    )
4899
+                                )
4900
+                            );
4901
+
4902
+                        $content .= '</div>';
4903
+
4904
+                        if ( class_exists( 'GeoDirectory' ) ) {
4905
+                            $content .= '<div class="col-md-7 col-sm-12">';
4906
+
4907
+                                $content .= aui()->select(
4908
+                                    array(
4909
+                                        'id'          => 'bsvc_gd_field_BSVCINDEX',
4910
+                                        'name'        => 'bsvc_gd_field_BSVCINDEX',
4911
+                                        'label'       => __( 'FIELD', 'super-duper' ),
4912
+                                        'placeholder' => __( 'FIELD', 'super-duper' ),
4913
+                                        'class'       => 'bsvc_gd_field form-select-sm',
4914
+                                        'options'     => sd_visibility_gd_field_options(),
4915
+                                        'default'     => '',
4916
+                                        'value'       => '',
4917
+                                        'label_type'  => '',
4918
+                                        'select2'     => false,
4919
+                                        'element_require'  => '[%bsvc_rule_BSVCINDEX%]=="gd_field"',
4920
+                                        'extra_attributes' => array(
4921
+                                            'data-minimum-results-for-search' => '-1'
4922
+                                        )
4923
+                                    )
4924
+                                );
4925
+
4926
+                            $content .= '</div>';
4927
+                            $content .= '<div class="col-md-5 col-sm-12">';
4928
+
4929
+                                $content .= aui()->select(
4930
+                                    array(
4931
+                                        'id'          => 'bsvc_gd_field_condition_BSVCINDEX',
4932
+                                        'name'        => 'bsvc_gd_field_condition_BSVCINDEX',
4933
+                                        'label'       => __( 'CONDITION', 'super-duper' ),
4934
+                                        'placeholder' => __( 'CONDITION', 'super-duper' ),
4935
+                                        'class'       => 'bsvc_gd_field_condition form-select-sm',
4936
+                                        'options'     => sd_visibility_field_condition_options(),
4937
+                                        'default'     => '',
4938
+                                        'value'       => '',
4939
+                                        'label_type'  => '',
4940
+                                        'select2'     => false,
4941
+                                        'element_require'  => '[%bsvc_rule_BSVCINDEX%]=="gd_field"',
4942
+                                        'extra_attributes' => array(
4943
+                                            'data-minimum-results-for-search' => '-1'
4944
+                                        )
4945
+                                    )
4946
+                                );
4947
+
4948
+                            $content .= '</div>';
4949
+                            $content .= '<div class="col-sm-12">';
4950
+
4951
+                                $content .= aui()->input(
4952
+                                    array(
4953
+                                        'type'            => 'text',
4954
+                                        'id'              => 'bsvc_gd_field_search_BSVCINDEX',
4955
+                                        'name'            => 'bsvc_gd_field_search_BSVCINDEX',
4956
+                                        'label'           => __( 'VALUE TO MATCH', 'super-duper' ),
4957
+                                        'class'           => 'bsvc_gd_field_search form-control-sm',
4958
+                                        'placeholder'     => __( 'VALUE TO MATCH', 'super-duper' ),
4959
+                                        'label_type'      => '',
4960
+                                        'value'           => '',
4961
+                                        'element_require' => '([%bsvc_rule_BSVCINDEX%]=="gd_field" && [%bsvc_gd_field_condition_BSVCINDEX%] && [%bsvc_gd_field_condition_BSVCINDEX%]!="is_empty" && [%bsvc_gd_field_condition_BSVCINDEX%]!="is_not_empty")'
4962
+                                    )
4963
+                                );
4964
+
4965
+                            $content .= '</div>';
4966
+                        }
4967 4967
 
4968
-					$content .= '</div>';
4969
-
4970
-					$content .= '<div class="row aui-conditional-field" data-element-require="jQuery(form).find(\'[name=bsvc_rule_BSVCINDEX]\').val()==\'user_roles\'" data-argument="bsvc_user_roles_BSVCINDEX_1"><label for="bsvc_user_roles_BSVCINDEX_1" class="form-label mb-3">' . __( 'Select User Roles:', 'super-duper' ) . '</label>';
4971
-						$role_options = sd_user_roles_options();
4972
-
4973
-						$role_option_i = 0;
4974
-						foreach ( $role_options as $role_option_key => $role_option_name ) {
4975
-							$role_option_i++;
4976
-
4977
-							$content .= '<div class="col-sm-6">';
4978
-							$content .= aui()->input(
4979
-								array(
4980
-									'id'               => 'bsvc_user_roles_BSVCINDEX_' . $role_option_i,
4981
-									'name'             => 'bsvc_user_roles_BSVCINDEX[]',
4982
-									'type'             => 'checkbox',
4983
-									'label'            => $role_option_name,
4984
-									'label_type'       => 'hidden',
4985
-									'class'            => 'bsvc_user_roles',
4986
-									'value'            => $role_option_key,
4987
-									'switch'           => 'md',
4988
-									'no_wrap'          => true
4989
-								)
4990
-							);
4991
-							$content .= '</div>';
4992
-						}
4993
-					$content .= '</div>';
4994
-				$content .= '</div>';
4995
-			$content .= '</div>';
4996
-			$content .= '<form id="bs-vc-modal-form" class="bs-vc-modal-form">';
4997
-			$content .= '<div class="bs-vc-rule-sets"></div>';
4998
-			$content .= '<div class="row"><div class="col-sm-12 text-center pt-1 pb-4"><button type="button" class="btn btn-sm btn-primary d-block w-100 bs-vc-add-rule"><i class="fas fa-plus"></i> ' . __( 'Add Rule', 'super-duper' ) . '</button></div></div>';
4999
-			$content .= '<div class="row"><div class="col-md-6 col-sm-12">';
5000
-			$content .= aui()->select(
5001
-				array(
5002
-					'id'          => 'bsvc_output',
5003
-					'name'        => 'bsvc_output',
5004
-					'label'       => __( 'What should happen if rules met.', 'super-duper' ),
5005
-					'placeholder' => __( 'Default Output', 'super-duper' ),
5006
-					'class'       => 'bsvc_output form-select-sm',
5007
-					'options'     => sd_visibility_output_options(),
5008
-					'default'     => '',
5009
-					'value'       => '',
5010
-					'label_type'  => 'top',
5011
-					'select2'     => true,
5012
-					'extra_attributes' => array(
5013
-						'data-minimum-results-for-search' => '-1'
5014
-					)
5015
-				)
5016
-			);
5017
-
5018
-			$content .= '</div><div class="col-md-6 col-sm-12">';
5019
-
5020
-			$content .= aui()->select(
5021
-				array(
5022
-					'id'              => 'bsvc_page',
5023
-					'name'            => 'bsvc_page',
5024
-					'label'           => __( 'Page Content', 'super-duper' ),
5025
-					'placeholder'     => __( 'Select Page ID...', 'super-duper' ),
5026
-					'class'           => 'bsvc_page form-select-sm',
5027
-					'options'         => sd_template_page_options(),
5028
-					'default'         => '',
5029
-					'value'           => '',
5030
-					'label_type'      => 'top',
5031
-					'select2'         => true,
5032
-					'element_require' => '[%bsvc_output%]=="page"'
5033
-				)
5034
-			);
5035
-
5036
-			$content .= aui()->select(
5037
-				array(
5038
-					'id'          => 'bsvc_tmpl_part',
5039
-					'name'        => 'bsvc_tmpl_part',
5040
-					'label'       => __( 'Template Part', 'super-duper' ),
5041
-					'placeholder' => __( 'Select Template Part...', 'super-duper' ),
5042
-					'class'       => 'bsvc_tmpl_part form-select-sm',
5043
-					'options'     => sd_template_part_options(),
5044
-					'default'     => '',
5045
-					'value'       => '',
5046
-					'label_type'  => 'top',
5047
-					'select2'     => true,
5048
-					'element_require'  => '[%bsvc_output%]=="template_part"',
5049
-					'extra_attributes' => array(
5050
-						'data-minimum-results-for-search' => '-1'
5051
-					)
5052
-				)
5053
-			);
5054
-
5055
-			$content .= aui()->select(
5056
-				array(
5057
-					'id'               => 'bsvc_message_type',
5058
-					'name'             => 'bsvc_message_type',
5059
-					'label'            => __( 'Custom Message Type', 'super-duper' ),
5060
-					'placeholder'      => __( 'Default (none)', 'super-duper' ),
5061
-					'class'            => 'bsvc_message_type form-select-sm',
5062
-					'options'          => sd_aui_colors(),
5063
-					'default'          => '',
5064
-					'value'            => '',
5065
-					'label_type'       => 'top',
5066
-					'select2'          => true,
5067
-					'element_require'  => '[%bsvc_output%]=="message"',
5068
-					'extra_attributes' => array(
5069
-						'data-minimum-results-for-search' => '-1'
5070
-					)
5071
-				)
5072
-			);
5073
-
5074
-			$content .= '</div><div class="col-sm-12">';
5075
-
5076
-			$content .= aui()->input(
5077
-				array(
5078
-					'type'            => 'text',
5079
-					'id'              => 'bsvc_message',
5080
-					'name'            => 'bsvc_message',
5081
-					'label'           => '',
5082
-					'class'           => 'bsvc_message form-control-sm',
5083
-					'placeholder'     => __( 'CUSTOM MESSAGE TO SHOW', 'super-duper' ),
5084
-					'label_type'      => '',
5085
-					'value'           => '',
5086
-					'form_group_class' => ' ',
5087
-					'element_require' => '[%bsvc_output%]=="message"',
5088
-				)
5089
-			);
5090
-
5091
-			$content .= '</div></div></form><input type="hidden" id="bsvc_raw_value" name="bsvc_raw_value" value="' . $value . '">';
5092
-
5093
-			return $content;
5094
-		}
5095
-	}
4968
+                    $content .= '</div>';
4969
+
4970
+                    $content .= '<div class="row aui-conditional-field" data-element-require="jQuery(form).find(\'[name=bsvc_rule_BSVCINDEX]\').val()==\'user_roles\'" data-argument="bsvc_user_roles_BSVCINDEX_1"><label for="bsvc_user_roles_BSVCINDEX_1" class="form-label mb-3">' . __( 'Select User Roles:', 'super-duper' ) . '</label>';
4971
+                        $role_options = sd_user_roles_options();
4972
+
4973
+                        $role_option_i = 0;
4974
+                        foreach ( $role_options as $role_option_key => $role_option_name ) {
4975
+                            $role_option_i++;
4976
+
4977
+                            $content .= '<div class="col-sm-6">';
4978
+                            $content .= aui()->input(
4979
+                                array(
4980
+                                    'id'               => 'bsvc_user_roles_BSVCINDEX_' . $role_option_i,
4981
+                                    'name'             => 'bsvc_user_roles_BSVCINDEX[]',
4982
+                                    'type'             => 'checkbox',
4983
+                                    'label'            => $role_option_name,
4984
+                                    'label_type'       => 'hidden',
4985
+                                    'class'            => 'bsvc_user_roles',
4986
+                                    'value'            => $role_option_key,
4987
+                                    'switch'           => 'md',
4988
+                                    'no_wrap'          => true
4989
+                                )
4990
+                            );
4991
+                            $content .= '</div>';
4992
+                        }
4993
+                    $content .= '</div>';
4994
+                $content .= '</div>';
4995
+            $content .= '</div>';
4996
+            $content .= '<form id="bs-vc-modal-form" class="bs-vc-modal-form">';
4997
+            $content .= '<div class="bs-vc-rule-sets"></div>';
4998
+            $content .= '<div class="row"><div class="col-sm-12 text-center pt-1 pb-4"><button type="button" class="btn btn-sm btn-primary d-block w-100 bs-vc-add-rule"><i class="fas fa-plus"></i> ' . __( 'Add Rule', 'super-duper' ) . '</button></div></div>';
4999
+            $content .= '<div class="row"><div class="col-md-6 col-sm-12">';
5000
+            $content .= aui()->select(
5001
+                array(
5002
+                    'id'          => 'bsvc_output',
5003
+                    'name'        => 'bsvc_output',
5004
+                    'label'       => __( 'What should happen if rules met.', 'super-duper' ),
5005
+                    'placeholder' => __( 'Default Output', 'super-duper' ),
5006
+                    'class'       => 'bsvc_output form-select-sm',
5007
+                    'options'     => sd_visibility_output_options(),
5008
+                    'default'     => '',
5009
+                    'value'       => '',
5010
+                    'label_type'  => 'top',
5011
+                    'select2'     => true,
5012
+                    'extra_attributes' => array(
5013
+                        'data-minimum-results-for-search' => '-1'
5014
+                    )
5015
+                )
5016
+            );
5017
+
5018
+            $content .= '</div><div class="col-md-6 col-sm-12">';
5019
+
5020
+            $content .= aui()->select(
5021
+                array(
5022
+                    'id'              => 'bsvc_page',
5023
+                    'name'            => 'bsvc_page',
5024
+                    'label'           => __( 'Page Content', 'super-duper' ),
5025
+                    'placeholder'     => __( 'Select Page ID...', 'super-duper' ),
5026
+                    'class'           => 'bsvc_page form-select-sm',
5027
+                    'options'         => sd_template_page_options(),
5028
+                    'default'         => '',
5029
+                    'value'           => '',
5030
+                    'label_type'      => 'top',
5031
+                    'select2'         => true,
5032
+                    'element_require' => '[%bsvc_output%]=="page"'
5033
+                )
5034
+            );
5035
+
5036
+            $content .= aui()->select(
5037
+                array(
5038
+                    'id'          => 'bsvc_tmpl_part',
5039
+                    'name'        => 'bsvc_tmpl_part',
5040
+                    'label'       => __( 'Template Part', 'super-duper' ),
5041
+                    'placeholder' => __( 'Select Template Part...', 'super-duper' ),
5042
+                    'class'       => 'bsvc_tmpl_part form-select-sm',
5043
+                    'options'     => sd_template_part_options(),
5044
+                    'default'     => '',
5045
+                    'value'       => '',
5046
+                    'label_type'  => 'top',
5047
+                    'select2'     => true,
5048
+                    'element_require'  => '[%bsvc_output%]=="template_part"',
5049
+                    'extra_attributes' => array(
5050
+                        'data-minimum-results-for-search' => '-1'
5051
+                    )
5052
+                )
5053
+            );
5054
+
5055
+            $content .= aui()->select(
5056
+                array(
5057
+                    'id'               => 'bsvc_message_type',
5058
+                    'name'             => 'bsvc_message_type',
5059
+                    'label'            => __( 'Custom Message Type', 'super-duper' ),
5060
+                    'placeholder'      => __( 'Default (none)', 'super-duper' ),
5061
+                    'class'            => 'bsvc_message_type form-select-sm',
5062
+                    'options'          => sd_aui_colors(),
5063
+                    'default'          => '',
5064
+                    'value'            => '',
5065
+                    'label_type'       => 'top',
5066
+                    'select2'          => true,
5067
+                    'element_require'  => '[%bsvc_output%]=="message"',
5068
+                    'extra_attributes' => array(
5069
+                        'data-minimum-results-for-search' => '-1'
5070
+                    )
5071
+                )
5072
+            );
5073
+
5074
+            $content .= '</div><div class="col-sm-12">';
5075
+
5076
+            $content .= aui()->input(
5077
+                array(
5078
+                    'type'            => 'text',
5079
+                    'id'              => 'bsvc_message',
5080
+                    'name'            => 'bsvc_message',
5081
+                    'label'           => '',
5082
+                    'class'           => 'bsvc_message form-control-sm',
5083
+                    'placeholder'     => __( 'CUSTOM MESSAGE TO SHOW', 'super-duper' ),
5084
+                    'label_type'      => '',
5085
+                    'value'           => '',
5086
+                    'form_group_class' => ' ',
5087
+                    'element_require' => '[%bsvc_output%]=="message"',
5088
+                )
5089
+            );
5090
+
5091
+            $content .= '</div></div></form><input type="hidden" id="bsvc_raw_value" name="bsvc_raw_value" value="' . $value . '">';
5092
+
5093
+            return $content;
5094
+        }
5095
+    }
5096 5096
 }
Please login to merge, or discard this patch.
vendor/ayecode/wp-super-duper/sd-functions.php 1 patch
Indentation   +2490 added lines, -2490 removed lines patch added patch discarded remove patch
@@ -11,21 +11,21 @@  discard block
 block discarded – undo
11 11
  * @return mixed|void
12 12
  */
13 13
 function sd_pagenow_exclude() {
14
-	return apply_filters(
15
-		'sd_pagenow_exclude',
16
-		array(
17
-			'upload.php',
18
-			'edit-comments.php',
19
-			'edit-tags.php',
20
-			'index.php',
21
-			'media-new.php',
22
-			'options-discussion.php',
23
-			'options-writing.php',
24
-			'edit.php',
25
-			'themes.php',
26
-			'users.php',
27
-		)
28
-	);
14
+    return apply_filters(
15
+        'sd_pagenow_exclude',
16
+        array(
17
+            'upload.php',
18
+            'edit-comments.php',
19
+            'edit-tags.php',
20
+            'index.php',
21
+            'media-new.php',
22
+            'options-discussion.php',
23
+            'options-writing.php',
24
+            'edit.php',
25
+            'themes.php',
26
+            'users.php',
27
+        )
28
+    );
29 29
 }
30 30
 
31 31
 
@@ -37,7 +37,7 @@  discard block
 block discarded – undo
37 37
  * @return mixed|void
38 38
  */
39 39
 function sd_widget_exclude() {
40
-	return apply_filters( 'sd_widget_exclude', array() );
40
+    return apply_filters( 'sd_widget_exclude', array() );
41 41
 }
42 42
 
43 43
 
@@ -50,83 +50,83 @@  discard block
 block discarded – undo
50 50
  * @return array
51 51
  */
52 52
 function sd_get_margin_input( $type = 'mt', $overwrite = array(), $include_negatives = true ) {
53
-	global $aui_bs5;
54
-	$options = array(
55
-		''     => __( 'None', 'super-duper' ),
56
-		'auto' => __( 'auto', 'super-duper' ),
57
-		'0'    => '0',
58
-		'1'    => '1',
59
-		'2'    => '2',
60
-		'3'    => '3',
61
-		'4'    => '4',
62
-		'5'    => '5',
63
-		'6'    => '6',
64
-		'7'    => '7',
65
-		'8'    => '8',
66
-		'9'    => '9',
67
-		'10'   => '10',
68
-		'11'   => '11',
69
-		'12'   => '12',
70
-	);
71
-
72
-	if ( $include_negatives ) {
73
-		$options['n1']  = '-1';
74
-		$options['n2']  = '-2';
75
-		$options['n3']  = '-3';
76
-		$options['n4']  = '-4';
77
-		$options['n5']  = '-5';
78
-		$options['n6']  = '-6';
79
-		$options['n7']  = '-7';
80
-		$options['n8']  = '-8';
81
-		$options['n9']  = '-9';
82
-		$options['n10'] = '-10';
83
-		$options['n11'] = '-11';
84
-		$options['n12'] = '-12';
85
-	}
86
-
87
-	$defaults = array(
88
-		'type'     => 'select',
89
-		'title'    => __( 'Margin top', 'super-duper' ),
90
-		'options'  => $options,
91
-		'default'  => '',
92
-		'desc_tip' => true,
93
-		'group'    => __( 'Wrapper Styles', 'super-duper' ),
94
-	);
95
-
96
-	// title
97
-	if ( $type == 'mt' ) {
98
-		$defaults['title'] = __( 'Margin top', 'super-duper' );
99
-		$defaults['icon']  = 'box-top';
100
-		$defaults['row']   = array(
101
-			'title' => __( 'Margins', 'super-duper' ),
102
-			'key'   => 'wrapper-margins',
103
-			'open'  => true,
104
-			'class' => 'text-center',
105
-		);
106
-	} elseif ( $type == 'mr' ) {
107
-		$defaults['title'] = __( 'Margin right', 'super-duper' );
108
-		$defaults['icon']  = 'box-right';
109
-		$defaults['row']   = array(
110
-			'key' => 'wrapper-margins',
111
-		);
112
-	} elseif ( $type == 'mb' ) {
113
-		$defaults['title'] = __( 'Margin bottom', 'super-duper' );
114
-		$defaults['icon']  = 'box-bottom';
115
-		$defaults['row']   = array(
116
-			'key' => 'wrapper-margins',
117
-		);
118
-	} elseif ( $type == 'ml' ) {
119
-		$defaults['title'] = __( 'Margin left', 'super-duper' );
120
-		$defaults['icon']  = 'box-left';
121
-		$defaults['row']   = array(
122
-			'key'   => 'wrapper-margins',
123
-			'close' => true,
124
-		);
125
-	}
126
-
127
-	$input = wp_parse_args( $overwrite, $defaults );
128
-
129
-	return $input;
53
+    global $aui_bs5;
54
+    $options = array(
55
+        ''     => __( 'None', 'super-duper' ),
56
+        'auto' => __( 'auto', 'super-duper' ),
57
+        '0'    => '0',
58
+        '1'    => '1',
59
+        '2'    => '2',
60
+        '3'    => '3',
61
+        '4'    => '4',
62
+        '5'    => '5',
63
+        '6'    => '6',
64
+        '7'    => '7',
65
+        '8'    => '8',
66
+        '9'    => '9',
67
+        '10'   => '10',
68
+        '11'   => '11',
69
+        '12'   => '12',
70
+    );
71
+
72
+    if ( $include_negatives ) {
73
+        $options['n1']  = '-1';
74
+        $options['n2']  = '-2';
75
+        $options['n3']  = '-3';
76
+        $options['n4']  = '-4';
77
+        $options['n5']  = '-5';
78
+        $options['n6']  = '-6';
79
+        $options['n7']  = '-7';
80
+        $options['n8']  = '-8';
81
+        $options['n9']  = '-9';
82
+        $options['n10'] = '-10';
83
+        $options['n11'] = '-11';
84
+        $options['n12'] = '-12';
85
+    }
86
+
87
+    $defaults = array(
88
+        'type'     => 'select',
89
+        'title'    => __( 'Margin top', 'super-duper' ),
90
+        'options'  => $options,
91
+        'default'  => '',
92
+        'desc_tip' => true,
93
+        'group'    => __( 'Wrapper Styles', 'super-duper' ),
94
+    );
95
+
96
+    // title
97
+    if ( $type == 'mt' ) {
98
+        $defaults['title'] = __( 'Margin top', 'super-duper' );
99
+        $defaults['icon']  = 'box-top';
100
+        $defaults['row']   = array(
101
+            'title' => __( 'Margins', 'super-duper' ),
102
+            'key'   => 'wrapper-margins',
103
+            'open'  => true,
104
+            'class' => 'text-center',
105
+        );
106
+    } elseif ( $type == 'mr' ) {
107
+        $defaults['title'] = __( 'Margin right', 'super-duper' );
108
+        $defaults['icon']  = 'box-right';
109
+        $defaults['row']   = array(
110
+            'key' => 'wrapper-margins',
111
+        );
112
+    } elseif ( $type == 'mb' ) {
113
+        $defaults['title'] = __( 'Margin bottom', 'super-duper' );
114
+        $defaults['icon']  = 'box-bottom';
115
+        $defaults['row']   = array(
116
+            'key' => 'wrapper-margins',
117
+        );
118
+    } elseif ( $type == 'ml' ) {
119
+        $defaults['title'] = __( 'Margin left', 'super-duper' );
120
+        $defaults['icon']  = 'box-left';
121
+        $defaults['row']   = array(
122
+            'key'   => 'wrapper-margins',
123
+            'close' => true,
124
+        );
125
+    }
126
+
127
+    $input = wp_parse_args( $overwrite, $defaults );
128
+
129
+    return $input;
130 130
 }
131 131
 
132 132
 /**
@@ -138,67 +138,67 @@  discard block
 block discarded – undo
138 138
  * @return array
139 139
  */
140 140
 function sd_get_padding_input( $type = 'pt', $overwrite = array() ) {
141
-	$options = array(
142
-		''   => __( 'None', 'super-duper' ),
143
-		'0'  => '0',
144
-		'1'  => '1',
145
-		'2'  => '2',
146
-		'3'  => '3',
147
-		'4'  => '4',
148
-		'5'  => '5',
149
-		'6'  => '6',
150
-		'7'  => '7',
151
-		'8'  => '8',
152
-		'9'  => '9',
153
-		'10' => '10',
154
-		'11' => '11',
155
-		'12' => '12',
156
-	);
157
-
158
-	$defaults = array(
159
-		'type'     => 'select',
160
-		'title'    => __( 'Padding top', 'super-duper' ),
161
-		'options'  => $options,
162
-		'default'  => '',
163
-		'desc_tip' => true,
164
-		'group'    => __( 'Wrapper Styles', 'super-duper' ),
165
-	);
166
-
167
-	// title
168
-	if ( $type == 'pt' ) {
169
-		$defaults['title'] = __( 'Padding top', 'super-duper' );
170
-		$defaults['icon']  = 'box-top';
171
-		$defaults['row']   = array(
172
-			'title' => __( 'Padding', 'super-duper' ),
173
-			'key'   => 'wrapper-padding',
174
-			'open'  => true,
175
-			'class' => 'text-center',
176
-		);
177
-	} elseif ( $type == 'pr' ) {
178
-		$defaults['title'] = __( 'Padding right', 'super-duper' );
179
-		$defaults['icon']  = 'box-right';
180
-		$defaults['row']   = array(
181
-			'key' => 'wrapper-padding',
182
-		);
183
-	} elseif ( $type == 'pb' ) {
184
-		$defaults['title'] = __( 'Padding bottom', 'super-duper' );
185
-		$defaults['icon']  = 'box-bottom';
186
-		$defaults['row']   = array(
187
-			'key' => 'wrapper-padding',
188
-		);
189
-	} elseif ( $type == 'pl' ) {
190
-		$defaults['title'] = __( 'Padding left', 'super-duper' );
191
-		$defaults['icon']  = 'box-left';
192
-		$defaults['row']   = array(
193
-			'key'   => 'wrapper-padding',
194
-			'close' => true,
195
-
196
-		);
197
-	}
198
-
199
-	$input = wp_parse_args( $overwrite, $defaults );
200
-
201
-	return $input;
141
+    $options = array(
142
+        ''   => __( 'None', 'super-duper' ),
143
+        '0'  => '0',
144
+        '1'  => '1',
145
+        '2'  => '2',
146
+        '3'  => '3',
147
+        '4'  => '4',
148
+        '5'  => '5',
149
+        '6'  => '6',
150
+        '7'  => '7',
151
+        '8'  => '8',
152
+        '9'  => '9',
153
+        '10' => '10',
154
+        '11' => '11',
155
+        '12' => '12',
156
+    );
157
+
158
+    $defaults = array(
159
+        'type'     => 'select',
160
+        'title'    => __( 'Padding top', 'super-duper' ),
161
+        'options'  => $options,
162
+        'default'  => '',
163
+        'desc_tip' => true,
164
+        'group'    => __( 'Wrapper Styles', 'super-duper' ),
165
+    );
166
+
167
+    // title
168
+    if ( $type == 'pt' ) {
169
+        $defaults['title'] = __( 'Padding top', 'super-duper' );
170
+        $defaults['icon']  = 'box-top';
171
+        $defaults['row']   = array(
172
+            'title' => __( 'Padding', 'super-duper' ),
173
+            'key'   => 'wrapper-padding',
174
+            'open'  => true,
175
+            'class' => 'text-center',
176
+        );
177
+    } elseif ( $type == 'pr' ) {
178
+        $defaults['title'] = __( 'Padding right', 'super-duper' );
179
+        $defaults['icon']  = 'box-right';
180
+        $defaults['row']   = array(
181
+            'key' => 'wrapper-padding',
182
+        );
183
+    } elseif ( $type == 'pb' ) {
184
+        $defaults['title'] = __( 'Padding bottom', 'super-duper' );
185
+        $defaults['icon']  = 'box-bottom';
186
+        $defaults['row']   = array(
187
+            'key' => 'wrapper-padding',
188
+        );
189
+    } elseif ( $type == 'pl' ) {
190
+        $defaults['title'] = __( 'Padding left', 'super-duper' );
191
+        $defaults['icon']  = 'box-left';
192
+        $defaults['row']   = array(
193
+            'key'   => 'wrapper-padding',
194
+            'close' => true,
195
+
196
+        );
197
+    }
198
+
199
+    $input = wp_parse_args( $overwrite, $defaults );
200
+
201
+    return $input;
202 202
 }
203 203
 
204 204
 /**
@@ -210,97 +210,97 @@  discard block
 block discarded – undo
210 210
  * @return array
211 211
  */
212 212
 function sd_get_border_input( $type = 'border', $overwrite = array() ) {
213
-	global $aui_bs5;
214
-
215
-	$defaults = array(
216
-		'type'     => 'select',
217
-		'title'    => __( 'Border', 'super-duper' ),
218
-		'options'  => array(),
219
-		'default'  => '',
220
-		'desc_tip' => true,
221
-		'group'    => __( 'Wrapper Styles', 'super-duper' ),
222
-	);
223
-
224
-	// title
225
-	if ( 'rounded' === $type ) {
226
-		$defaults['title']           = __( 'Border radius type', 'super-duper' );
227
-		$defaults['options']         = array(
228
-			''               => __( 'Default', 'super-duper' ),
229
-			'rounded'        => 'rounded',
230
-			'rounded-top'    => 'rounded-top',
231
-			'rounded-right'  => 'rounded-right',
232
-			'rounded-bottom' => 'rounded-bottom',
233
-			'rounded-left'   => 'rounded-left',
234
-		);
235
-		$defaults['element_require'] = '[%border%]';
236
-	} elseif ( 'rounded_size' === $type ) {
237
-		$defaults['title'] = __( 'Border radius size', 'super-duper' );
238
-
239
-		if ( $aui_bs5 ) {
240
-			$defaults['options'] = array(
241
-				''       => __( 'Default', 'super-duper' ),
242
-				'0'      => '0',
243
-				'1'      => '1',
244
-				'2'      => '2',
245
-				'3'      => '3',
246
-				'4'      => '4',
247
-				'circle' => 'circle',
248
-				'pill'   => 'pill',
249
-			);
250
-		} else {
251
-			$defaults['options'] = array(
252
-				''   => __( 'Default', 'super-duper' ),
253
-				'sm' => __( 'Small', 'super-duper' ),
254
-				'lg' => __( 'Large', 'super-duper' ),
255
-			);
256
-		}
257
-		$defaults['element_require'] = '[%border%]';
258
-	} elseif ( 'width' === $type ) { // BS%
259
-		$defaults['title']           = __( 'Border width', 'super-duper' );
260
-		$defaults['options']         = array(
261
-			''         => __( 'Default', 'super-duper' ),
262
-			'border-2' => '2',
263
-			'border-3' => '3',
264
-			'border-4' => '4',
265
-			'border-5' => '5',
266
-		);
267
-		$defaults['element_require'] = $aui_bs5 ? '[%border%]' : '1==2';
268
-	} elseif ( 'opacity' === $type ) { // BS%
269
-		$defaults['title']           = __( 'Border opacity', 'super-duper' );
270
-		$defaults['options']         = array(
271
-			''                  => __( 'Default', 'super-duper' ),
272
-			'border-opacity-75' => '75%',
273
-			'border-opacity-50' => '50%',
274
-			'border-opacity-25' => '25%',
275
-			'border-opacity-10' => '10%',
276
-		);
277
-		$defaults['element_require'] = $aui_bs5 ? '[%border%]' : '1==2';
278
-	} elseif ( 'type' === $type ) {
279
-		$defaults['title']           = __( 'Border show', 'super-duper' );
280
-		$defaults['options']         = array(
281
-			'border'          => __( 'Full (set color to show)', 'super-duper' ),
282
-			'border-top'      => __( 'Top', 'super-duper' ),
283
-			'border-bottom'   => __( 'Bottom', 'super-duper' ),
284
-			'border-left'     => __( 'Left', 'super-duper' ),
285
-			'border-right'    => __( 'Right', 'super-duper' ),
286
-			'border-top-0'    => __( '-Top', 'super-duper' ),
287
-			'border-bottom-0' => __( '-Bottom', 'super-duper' ),
288
-			'border-left-0'   => __( '-Left', 'super-duper' ),
289
-			'border-right-0'  => __( '-Right', 'super-duper' ),
290
-		);
291
-		$defaults['element_require'] = '[%border%]';
292
-
293
-	} else {
294
-		$defaults['title']   = __( 'Border color', 'super-duper' );
295
-		$defaults['options'] = array(
296
-			                       ''  => __( 'Default', 'super-duper' ),
297
-			                       '0' => __( 'None', 'super-duper' ),
298
-		                       ) + sd_aui_colors();
299
-	}
300
-
301
-	$input = wp_parse_args( $overwrite, $defaults );
302
-
303
-	return $input;
213
+    global $aui_bs5;
214
+
215
+    $defaults = array(
216
+        'type'     => 'select',
217
+        'title'    => __( 'Border', 'super-duper' ),
218
+        'options'  => array(),
219
+        'default'  => '',
220
+        'desc_tip' => true,
221
+        'group'    => __( 'Wrapper Styles', 'super-duper' ),
222
+    );
223
+
224
+    // title
225
+    if ( 'rounded' === $type ) {
226
+        $defaults['title']           = __( 'Border radius type', 'super-duper' );
227
+        $defaults['options']         = array(
228
+            ''               => __( 'Default', 'super-duper' ),
229
+            'rounded'        => 'rounded',
230
+            'rounded-top'    => 'rounded-top',
231
+            'rounded-right'  => 'rounded-right',
232
+            'rounded-bottom' => 'rounded-bottom',
233
+            'rounded-left'   => 'rounded-left',
234
+        );
235
+        $defaults['element_require'] = '[%border%]';
236
+    } elseif ( 'rounded_size' === $type ) {
237
+        $defaults['title'] = __( 'Border radius size', 'super-duper' );
238
+
239
+        if ( $aui_bs5 ) {
240
+            $defaults['options'] = array(
241
+                ''       => __( 'Default', 'super-duper' ),
242
+                '0'      => '0',
243
+                '1'      => '1',
244
+                '2'      => '2',
245
+                '3'      => '3',
246
+                '4'      => '4',
247
+                'circle' => 'circle',
248
+                'pill'   => 'pill',
249
+            );
250
+        } else {
251
+            $defaults['options'] = array(
252
+                ''   => __( 'Default', 'super-duper' ),
253
+                'sm' => __( 'Small', 'super-duper' ),
254
+                'lg' => __( 'Large', 'super-duper' ),
255
+            );
256
+        }
257
+        $defaults['element_require'] = '[%border%]';
258
+    } elseif ( 'width' === $type ) { // BS%
259
+        $defaults['title']           = __( 'Border width', 'super-duper' );
260
+        $defaults['options']         = array(
261
+            ''         => __( 'Default', 'super-duper' ),
262
+            'border-2' => '2',
263
+            'border-3' => '3',
264
+            'border-4' => '4',
265
+            'border-5' => '5',
266
+        );
267
+        $defaults['element_require'] = $aui_bs5 ? '[%border%]' : '1==2';
268
+    } elseif ( 'opacity' === $type ) { // BS%
269
+        $defaults['title']           = __( 'Border opacity', 'super-duper' );
270
+        $defaults['options']         = array(
271
+            ''                  => __( 'Default', 'super-duper' ),
272
+            'border-opacity-75' => '75%',
273
+            'border-opacity-50' => '50%',
274
+            'border-opacity-25' => '25%',
275
+            'border-opacity-10' => '10%',
276
+        );
277
+        $defaults['element_require'] = $aui_bs5 ? '[%border%]' : '1==2';
278
+    } elseif ( 'type' === $type ) {
279
+        $defaults['title']           = __( 'Border show', 'super-duper' );
280
+        $defaults['options']         = array(
281
+            'border'          => __( 'Full (set color to show)', 'super-duper' ),
282
+            'border-top'      => __( 'Top', 'super-duper' ),
283
+            'border-bottom'   => __( 'Bottom', 'super-duper' ),
284
+            'border-left'     => __( 'Left', 'super-duper' ),
285
+            'border-right'    => __( 'Right', 'super-duper' ),
286
+            'border-top-0'    => __( '-Top', 'super-duper' ),
287
+            'border-bottom-0' => __( '-Bottom', 'super-duper' ),
288
+            'border-left-0'   => __( '-Left', 'super-duper' ),
289
+            'border-right-0'  => __( '-Right', 'super-duper' ),
290
+        );
291
+        $defaults['element_require'] = '[%border%]';
292
+
293
+    } else {
294
+        $defaults['title']   = __( 'Border color', 'super-duper' );
295
+        $defaults['options'] = array(
296
+                                    ''  => __( 'Default', 'super-duper' ),
297
+                                    '0' => __( 'None', 'super-duper' ),
298
+                                ) + sd_aui_colors();
299
+    }
300
+
301
+    $input = wp_parse_args( $overwrite, $defaults );
302
+
303
+    return $input;
304 304
 }
305 305
 
306 306
 /**
@@ -312,25 +312,25 @@  discard block
 block discarded – undo
312 312
  * @return array
313 313
  */
314 314
 function sd_get_shadow_input( $type = 'shadow', $overwrite = array() ) {
315
-	$options = array(
316
-		''          => __( 'None', 'super-duper' ),
317
-		'shadow-sm' => __( 'Small', 'super-duper' ),
318
-		'shadow'    => __( 'Regular', 'super-duper' ),
319
-		'shadow-lg' => __( 'Large', 'super-duper' ),
320
-	);
315
+    $options = array(
316
+        ''          => __( 'None', 'super-duper' ),
317
+        'shadow-sm' => __( 'Small', 'super-duper' ),
318
+        'shadow'    => __( 'Regular', 'super-duper' ),
319
+        'shadow-lg' => __( 'Large', 'super-duper' ),
320
+    );
321 321
 
322
-	$defaults = array(
323
-		'type'     => 'select',
324
-		'title'    => __( 'Shadow', 'super-duper' ),
325
-		'options'  => $options,
326
-		'default'  => '',
327
-		'desc_tip' => true,
328
-		'group'    => __( 'Wrapper Styles', 'super-duper' ),
329
-	);
322
+    $defaults = array(
323
+        'type'     => 'select',
324
+        'title'    => __( 'Shadow', 'super-duper' ),
325
+        'options'  => $options,
326
+        'default'  => '',
327
+        'desc_tip' => true,
328
+        'group'    => __( 'Wrapper Styles', 'super-duper' ),
329
+    );
330 330
 
331
-	$input = wp_parse_args( $overwrite, $defaults );
331
+    $input = wp_parse_args( $overwrite, $defaults );
332 332
 
333
-	return $input;
333
+    return $input;
334 334
 }
335 335
 
336 336
 /**
@@ -342,23 +342,23 @@  discard block
 block discarded – undo
342 342
  * @return array
343 343
  */
344 344
 function sd_get_background_input( $type = 'bg', $overwrite = array() ) {
345
-	$options = array(
346
-		           ''            => __( 'None', 'super-duper' ),
347
-		           'transparent' => __( 'Transparent', 'super-duper' ),
348
-	           ) + sd_aui_colors();
345
+    $options = array(
346
+                    ''            => __( 'None', 'super-duper' ),
347
+                    'transparent' => __( 'Transparent', 'super-duper' ),
348
+                ) + sd_aui_colors();
349 349
 
350
-	$defaults = array(
351
-		'type'     => 'select',
352
-		'title'    => __( 'Background color', 'super-duper' ),
353
-		'options'  => $options,
354
-		'default'  => '',
355
-		'desc_tip' => true,
356
-		'group'    => __( 'Wrapper Styles', 'super-duper' ),
357
-	);
350
+    $defaults = array(
351
+        'type'     => 'select',
352
+        'title'    => __( 'Background color', 'super-duper' ),
353
+        'options'  => $options,
354
+        'default'  => '',
355
+        'desc_tip' => true,
356
+        'group'    => __( 'Wrapper Styles', 'super-duper' ),
357
+    );
358 358
 
359
-	$input = wp_parse_args( $overwrite, $defaults );
359
+    $input = wp_parse_args( $overwrite, $defaults );
360 360
 
361
-	return $input;
361
+    return $input;
362 362
 }
363 363
 
364 364
 /**
@@ -370,35 +370,35 @@  discard block
 block discarded – undo
370 370
  * @return array
371 371
  */
372 372
 function sd_get_opacity_input( $type = 'opacity', $overwrite = array() ) {
373
-	$options = array(
374
-		''            => __( 'Default', 'super-duper' ),
375
-		'opacity-10'  => '10%',
376
-		'opacity-15'  => '15%',
377
-		'opacity-25'  => '25%',
378
-		'opacity-35'  => '35%',
379
-		'opacity-40'  => '40%',
380
-		'opacity-50'  => '50%',
381
-		'opacity-60'  => '60%',
382
-		'opacity-65'  => '65%',
383
-		'opacity-70'  => '70%',
384
-		'opacity-75'  => '75%',
385
-		'opacity-80'  => '80%',
386
-		'opacity-90'  => '90%',
387
-		'opacity-100' => '100%',
388
-	);
389
-
390
-	$defaults = array(
391
-		'type'     => 'select',
392
-		'title'    => __( 'Opacity', 'super-duper' ),
393
-		'options'  => $options,
394
-		'default'  => '',
395
-		'desc_tip' => true,
396
-		'group'    => __( 'Wrapper Styles', 'super-duper' ),
397
-	);
398
-
399
-	$input = wp_parse_args( $overwrite, $defaults );
400
-
401
-	return $input;
373
+    $options = array(
374
+        ''            => __( 'Default', 'super-duper' ),
375
+        'opacity-10'  => '10%',
376
+        'opacity-15'  => '15%',
377
+        'opacity-25'  => '25%',
378
+        'opacity-35'  => '35%',
379
+        'opacity-40'  => '40%',
380
+        'opacity-50'  => '50%',
381
+        'opacity-60'  => '60%',
382
+        'opacity-65'  => '65%',
383
+        'opacity-70'  => '70%',
384
+        'opacity-75'  => '75%',
385
+        'opacity-80'  => '80%',
386
+        'opacity-90'  => '90%',
387
+        'opacity-100' => '100%',
388
+    );
389
+
390
+    $defaults = array(
391
+        'type'     => 'select',
392
+        'title'    => __( 'Opacity', 'super-duper' ),
393
+        'options'  => $options,
394
+        'default'  => '',
395
+        'desc_tip' => true,
396
+        'group'    => __( 'Wrapper Styles', 'super-duper' ),
397
+    );
398
+
399
+    $input = wp_parse_args( $overwrite, $defaults );
400
+
401
+    return $input;
402 402
 }
403 403
 
404 404
 /**
@@ -411,124 +411,124 @@  discard block
 block discarded – undo
411 411
  */
412 412
 function sd_get_background_inputs( $type = 'bg', $overwrite = array(), $overwrite_color = array(), $overwrite_gradient = array(), $overwrite_image = array(), $include_button_colors = false ) {
413 413
 
414
-	$color_options = $include_button_colors ? sd_aui_colors( false, true, true, true ) : sd_aui_colors();
415
-
416
-	$options = array(
417
-		           ''            => __( 'None', 'super-duper' ),
418
-		           'transparent' => __( 'Transparent', 'super-duper' ),
419
-	           ) + $color_options;
420
-
421
-	if ( false !== $overwrite_color ) {
422
-		$options['custom-color'] = __( 'Custom Color', 'super-duper' );
423
-	}
424
-
425
-	if ( false !== $overwrite_gradient ) {
426
-		$options['custom-gradient'] = __( 'Custom Gradient', 'super-duper' );
427
-	}
428
-
429
-	$defaults = array(
430
-		'type'     => 'select',
431
-		'title'    => __( 'Background Color', 'super-duper' ),
432
-		'options'  => $options,
433
-		'default'  => '',
434
-		'desc_tip' => true,
435
-		'group'    => __( 'Background', 'super-duper' ),
436
-	);
437
-
438
-	if ( $overwrite !== false ) {
439
-		$input[ $type ] = wp_parse_args( $overwrite, $defaults );
440
-	}
441
-
442
-	if ( $overwrite_color !== false ) {
443
-		$input[ $type . '_color' ] = wp_parse_args(
444
-			$overwrite_color,
445
-			array(
446
-				'type'            => 'color',
447
-				'title'           => __( 'Custom color', 'super-duper' ),
448
-				'placeholder'     => '',
449
-				'default'         => '#0073aa',
450
-				'desc_tip'        => true,
451
-				'group'           => __( 'Background', 'super-duper' ),
452
-				'element_require' => '[%' . $type . '%]=="custom-color"',
453
-			)
454
-		);
455
-	}
456
-
457
-	if ( $overwrite_gradient !== false ) {
458
-		$input[ $type . '_gradient' ] = wp_parse_args(
459
-			$overwrite_gradient,
460
-			array(
461
-				'type'            => 'gradient',
462
-				'title'           => __( 'Custom gradient', 'super-duper' ),
463
-				'placeholder'     => '',
464
-				'default'         => 'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
465
-				'desc_tip'        => true,
466
-				'group'           => __( 'Background', 'super-duper' ),
467
-				'element_require' => '[%' . $type . '%]=="custom-gradient"',
468
-			)
469
-		);
470
-	}
471
-
472
-	if ( $overwrite_image !== false ) {
473
-
474
-		$input[ $type . '_image_fixed' ] = array(
475
-			'type'            => 'checkbox',
476
-			'title'           => __( 'Fixed background', 'super-duper' ),
477
-			'default'         => '',
478
-			'desc_tip'        => true,
479
-			'group'           => ! empty( $overwrite_image['group'] ) ? $overwrite_image['group'] : __( 'Background', 'super-duper' ),
480
-			'element_require' => '( [%' . $type . '%]=="" || [%' . $type . '%]=="custom-color" || [%' . $type . '%]=="custom-gradient" || [%' . $type . '%]=="transparent" )',
481
-
482
-		);
483
-
484
-		$input[ $type . '_image_use_featured' ] = array(
485
-			'type'            => 'checkbox',
486
-			'title'           => __( 'Use featured image', 'super-duper' ),
487
-			'default'         => '',
488
-			'desc_tip'        => true,
489
-			'group'           => ! empty( $overwrite_image['group'] ) ? $overwrite_image['group'] : __( 'Background', 'super-duper' ),
490
-			'element_require' => '( [%' . $type . '%]=="" || [%' . $type . '%]=="custom-color" || [%' . $type . '%]=="custom-gradient" || [%' . $type . '%]=="transparent" )',
491
-
492
-		);
493
-
494
-		$input[ $type . '_image' ] = wp_parse_args(
495
-			$overwrite_image,
496
-			array(
497
-				'type'        => 'image',
498
-				'title'       => __( 'Custom image', 'super-duper' ),
499
-				'placeholder' => '',
500
-				'default'     => '',
501
-				'desc_tip'    => true,
502
-				'group'       => __( 'Background', 'super-duper' ),
503
-				//          'element_require' => ' ![%' . $type . '_image_use_featured%] '
504
-			)
505
-		);
506
-
507
-		$input[ $type . '_image_id' ] = wp_parse_args(
508
-			$overwrite_image,
509
-			array(
510
-				'type'        => 'hidden',
511
-				'hidden_type' => 'number',
512
-				'title'       => '',
513
-				'placeholder' => '',
514
-				'default'     => '',
515
-				'group'       => __( 'Background', 'super-duper' ),
516
-			)
517
-		);
518
-
519
-		$input[ $type . '_image_xy' ] = wp_parse_args(
520
-			$overwrite_image,
521
-			array(
522
-				'type'        => 'image_xy',
523
-				'title'       => '',
524
-				'placeholder' => '',
525
-				'default'     => '',
526
-				'group'       => __( 'Background', 'super-duper' ),
527
-			)
528
-		);
529
-	}
530
-
531
-	return $input;
414
+    $color_options = $include_button_colors ? sd_aui_colors( false, true, true, true ) : sd_aui_colors();
415
+
416
+    $options = array(
417
+                    ''            => __( 'None', 'super-duper' ),
418
+                    'transparent' => __( 'Transparent', 'super-duper' ),
419
+                ) + $color_options;
420
+
421
+    if ( false !== $overwrite_color ) {
422
+        $options['custom-color'] = __( 'Custom Color', 'super-duper' );
423
+    }
424
+
425
+    if ( false !== $overwrite_gradient ) {
426
+        $options['custom-gradient'] = __( 'Custom Gradient', 'super-duper' );
427
+    }
428
+
429
+    $defaults = array(
430
+        'type'     => 'select',
431
+        'title'    => __( 'Background Color', 'super-duper' ),
432
+        'options'  => $options,
433
+        'default'  => '',
434
+        'desc_tip' => true,
435
+        'group'    => __( 'Background', 'super-duper' ),
436
+    );
437
+
438
+    if ( $overwrite !== false ) {
439
+        $input[ $type ] = wp_parse_args( $overwrite, $defaults );
440
+    }
441
+
442
+    if ( $overwrite_color !== false ) {
443
+        $input[ $type . '_color' ] = wp_parse_args(
444
+            $overwrite_color,
445
+            array(
446
+                'type'            => 'color',
447
+                'title'           => __( 'Custom color', 'super-duper' ),
448
+                'placeholder'     => '',
449
+                'default'         => '#0073aa',
450
+                'desc_tip'        => true,
451
+                'group'           => __( 'Background', 'super-duper' ),
452
+                'element_require' => '[%' . $type . '%]=="custom-color"',
453
+            )
454
+        );
455
+    }
456
+
457
+    if ( $overwrite_gradient !== false ) {
458
+        $input[ $type . '_gradient' ] = wp_parse_args(
459
+            $overwrite_gradient,
460
+            array(
461
+                'type'            => 'gradient',
462
+                'title'           => __( 'Custom gradient', 'super-duper' ),
463
+                'placeholder'     => '',
464
+                'default'         => 'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
465
+                'desc_tip'        => true,
466
+                'group'           => __( 'Background', 'super-duper' ),
467
+                'element_require' => '[%' . $type . '%]=="custom-gradient"',
468
+            )
469
+        );
470
+    }
471
+
472
+    if ( $overwrite_image !== false ) {
473
+
474
+        $input[ $type . '_image_fixed' ] = array(
475
+            'type'            => 'checkbox',
476
+            'title'           => __( 'Fixed background', 'super-duper' ),
477
+            'default'         => '',
478
+            'desc_tip'        => true,
479
+            'group'           => ! empty( $overwrite_image['group'] ) ? $overwrite_image['group'] : __( 'Background', 'super-duper' ),
480
+            'element_require' => '( [%' . $type . '%]=="" || [%' . $type . '%]=="custom-color" || [%' . $type . '%]=="custom-gradient" || [%' . $type . '%]=="transparent" )',
481
+
482
+        );
483
+
484
+        $input[ $type . '_image_use_featured' ] = array(
485
+            'type'            => 'checkbox',
486
+            'title'           => __( 'Use featured image', 'super-duper' ),
487
+            'default'         => '',
488
+            'desc_tip'        => true,
489
+            'group'           => ! empty( $overwrite_image['group'] ) ? $overwrite_image['group'] : __( 'Background', 'super-duper' ),
490
+            'element_require' => '( [%' . $type . '%]=="" || [%' . $type . '%]=="custom-color" || [%' . $type . '%]=="custom-gradient" || [%' . $type . '%]=="transparent" )',
491
+
492
+        );
493
+
494
+        $input[ $type . '_image' ] = wp_parse_args(
495
+            $overwrite_image,
496
+            array(
497
+                'type'        => 'image',
498
+                'title'       => __( 'Custom image', 'super-duper' ),
499
+                'placeholder' => '',
500
+                'default'     => '',
501
+                'desc_tip'    => true,
502
+                'group'       => __( 'Background', 'super-duper' ),
503
+                //          'element_require' => ' ![%' . $type . '_image_use_featured%] '
504
+            )
505
+        );
506
+
507
+        $input[ $type . '_image_id' ] = wp_parse_args(
508
+            $overwrite_image,
509
+            array(
510
+                'type'        => 'hidden',
511
+                'hidden_type' => 'number',
512
+                'title'       => '',
513
+                'placeholder' => '',
514
+                'default'     => '',
515
+                'group'       => __( 'Background', 'super-duper' ),
516
+            )
517
+        );
518
+
519
+        $input[ $type . '_image_xy' ] = wp_parse_args(
520
+            $overwrite_image,
521
+            array(
522
+                'type'        => 'image_xy',
523
+                'title'       => '',
524
+                'placeholder' => '',
525
+                'default'     => '',
526
+                'group'       => __( 'Background', 'super-duper' ),
527
+            )
528
+        );
529
+    }
530
+
531
+    return $input;
532 532
 }
533 533
 
534 534
 /**
@@ -541,175 +541,175 @@  discard block
 block discarded – undo
541 541
  */
542 542
 function sd_get_shape_divider_inputs( $type = 'sd', $overwrite = array(), $overwrite_color = array(), $overwrite_gradient = array(), $overwrite_image = array() ) {
543 543
 
544
-	$options = array(
545
-		''                      => __( 'None', 'super-duper' ),
546
-		'mountains'             => __( 'Mountains', 'super-duper' ),
547
-		'drops'                 => __( 'Drops', 'super-duper' ),
548
-		'clouds'                => __( 'Clouds', 'super-duper' ),
549
-		'zigzag'                => __( 'Zigzag', 'super-duper' ),
550
-		'pyramids'              => __( 'Pyramids', 'super-duper' ),
551
-		'triangle'              => __( 'Triangle', 'super-duper' ),
552
-		'triangle-asymmetrical' => __( 'Triangle Asymmetrical', 'super-duper' ),
553
-		'tilt'                  => __( 'Tilt', 'super-duper' ),
554
-		'opacity-tilt'          => __( 'Opacity Tilt', 'super-duper' ),
555
-		'opacity-fan'           => __( 'Opacity Fan', 'super-duper' ),
556
-		'curve'                 => __( 'Curve', 'super-duper' ),
557
-		'curve-asymmetrical'    => __( 'Curve Asymmetrical', 'super-duper' ),
558
-		'waves'                 => __( 'Waves', 'super-duper' ),
559
-		'wave-brush'            => __( 'Wave Brush', 'super-duper' ),
560
-		'waves-pattern'         => __( 'Waves Pattern', 'super-duper' ),
561
-		'arrow'                 => __( 'Arrow', 'super-duper' ),
562
-		'split'                 => __( 'Split', 'super-duper' ),
563
-		'book'                  => __( 'Book', 'super-duper' ),
564
-	);
565
-
566
-	$defaults = array(
567
-		'type'     => 'select',
568
-		'title'    => __( 'Type', 'super-duper' ),
569
-		'options'  => $options,
570
-		'default'  => '',
571
-		'desc_tip' => true,
572
-		'group'    => __( 'Shape Divider', 'super-duper' ),
573
-	);
574
-
575
-	$input[ $type ] = wp_parse_args( $overwrite, $defaults );
576
-
577
-	$input[ $type . '_notice' ] = array(
578
-		'type'            => 'notice',
579
-		'desc'            => __( 'Parent element must be position `relative`', 'super-duper' ),
580
-		'status'          => 'warning',
581
-		'group'           => __( 'Shape Divider', 'super-duper' ),
582
-		'element_require' => '[%' . $type . '%]!=""',
583
-	);
584
-
585
-	$input[ $type . '_position' ] = wp_parse_args(
586
-		$overwrite_color,
587
-		array(
588
-			'type'            => 'select',
589
-			'title'           => __( 'Position', 'super-duper' ),
590
-			'options'         => array(
591
-				'top'    => __( 'Top', 'super-duper' ),
592
-				'bottom' => __( 'Bottom', 'super-duper' ),
593
-			),
594
-			'desc_tip'        => true,
595
-			'group'           => __( 'Shape Divider', 'super-duper' ),
596
-			'element_require' => '[%' . $type . '%]!=""',
597
-		)
598
-	);
599
-
600
-	$options = array(
601
-		           ''            => __( 'None', 'super-duper' ),
602
-		           'transparent' => __( 'Transparent', 'super-duper' ),
603
-	           ) + sd_aui_colors()
604
-	           + array(
605
-		           'custom-color' => __( 'Custom Color', 'super-duper' ),
606
-	           );
607
-
608
-	$input[ $type . '_color' ] = wp_parse_args(
609
-		$overwrite_color,
610
-		array(
611
-			'type'            => 'select',
612
-			'title'           => __( 'Color', 'super-duper' ),
613
-			'options'         => $options,
614
-			'desc_tip'        => true,
615
-			'group'           => __( 'Shape Divider', 'super-duper' ),
616
-			'element_require' => '[%' . $type . '%]!=""',
617
-		)
618
-	);
619
-
620
-	$input[ $type . '_custom_color' ] = wp_parse_args(
621
-		$overwrite_color,
622
-		array(
623
-			'type'            => 'color',
624
-			'title'           => __( 'Custom color', 'super-duper' ),
625
-			'placeholder'     => '',
626
-			'default'         => '#0073aa',
627
-			'desc_tip'        => true,
628
-			'group'           => __( 'Shape Divider', 'super-duper' ),
629
-			'element_require' => '[%' . $type . '_color%]=="custom-color" && [%' . $type . '%]!=""',
630
-		)
631
-	);
632
-
633
-	$input[ $type . '_width' ] = wp_parse_args(
634
-		$overwrite_gradient,
635
-		array(
636
-			'type'              => 'range',
637
-			'title'             => __( 'Width', 'super-duper' ),
638
-			'placeholder'       => '',
639
-			'default'           => '200',
640
-			'desc_tip'          => true,
641
-			'custom_attributes' => array(
642
-				'min' => 100,
643
-				'max' => 300,
644
-			),
645
-			'group'             => __( 'Shape Divider', 'super-duper' ),
646
-			'element_require'   => '[%' . $type . '%]!=""',
647
-		)
648
-	);
649
-
650
-	$input[ $type . '_height' ] = array(
651
-		'type'              => 'range',
652
-		'title'             => __( 'Height', 'super-duper' ),
653
-		'default'           => '100',
654
-		'desc_tip'          => true,
655
-		'custom_attributes' => array(
656
-			'min' => 0,
657
-			'max' => 500,
658
-		),
659
-		'group'             => __( 'Shape Divider', 'super-duper' ),
660
-		'element_require'   => '[%' . $type . '%]!=""',
661
-	);
662
-
663
-	$requires = array(
664
-		'mountains'             => array( 'flip' ),
665
-		'drops'                 => array( 'flip', 'invert' ),
666
-		'clouds'                => array( 'flip', 'invert' ),
667
-		'zigzag'                => array(),
668
-		'pyramids'              => array( 'flip', 'invert' ),
669
-		'triangle'              => array( 'invert' ),
670
-		'triangle-asymmetrical' => array( 'flip', 'invert' ),
671
-		'tilt'                  => array( 'flip' ),
672
-		'opacity-tilt'          => array( 'flip' ),
673
-		'opacity-fan'           => array(),
674
-		'curve'                 => array( 'invert' ),
675
-		'curve-asymmetrical'    => array( 'flip', 'invert' ),
676
-		'waves'                 => array( 'flip', 'invert' ),
677
-		'wave-brush'            => array( 'flip' ),
678
-		'waves-pattern'         => array( 'flip' ),
679
-		'arrow'                 => array( 'invert' ),
680
-		'split'                 => array( 'invert' ),
681
-		'book'                  => array( 'invert' ),
682
-	);
683
-
684
-	$input[ $type . '_flip' ] = array(
685
-		'type'            => 'checkbox',
686
-		'title'           => __( 'Flip', 'super-duper' ),
687
-		'default'         => '',
688
-		'desc_tip'        => true,
689
-		'group'           => __( 'Shape Divider', 'super-duper' ),
690
-		'element_require' => sd_get_element_require_string( $requires, 'flip', 'sd' ),
691
-	);
692
-
693
-	$input[ $type . '_invert' ] = array(
694
-		'type'            => 'checkbox',
695
-		'title'           => __( 'Invert', 'super-duper' ),
696
-		'default'         => '',
697
-		'desc_tip'        => true,
698
-		'group'           => __( 'Shape Divider', 'super-duper' ),
699
-		'element_require' => sd_get_element_require_string( $requires, 'invert', 'sd' ),
700
-	);
701
-
702
-	$input[ $type . '_btf' ] = array(
703
-		'type'            => 'checkbox',
704
-		'title'           => __( 'Bring to front', 'super-duper' ),
705
-		'default'         => '',
706
-		'desc_tip'        => true,
707
-		'group'           => __( 'Shape Divider', 'super-duper' ),
708
-		'element_require' => '[%' . $type . '%]!=""',
709
-
710
-	);
711
-
712
-	return $input;
544
+    $options = array(
545
+        ''                      => __( 'None', 'super-duper' ),
546
+        'mountains'             => __( 'Mountains', 'super-duper' ),
547
+        'drops'                 => __( 'Drops', 'super-duper' ),
548
+        'clouds'                => __( 'Clouds', 'super-duper' ),
549
+        'zigzag'                => __( 'Zigzag', 'super-duper' ),
550
+        'pyramids'              => __( 'Pyramids', 'super-duper' ),
551
+        'triangle'              => __( 'Triangle', 'super-duper' ),
552
+        'triangle-asymmetrical' => __( 'Triangle Asymmetrical', 'super-duper' ),
553
+        'tilt'                  => __( 'Tilt', 'super-duper' ),
554
+        'opacity-tilt'          => __( 'Opacity Tilt', 'super-duper' ),
555
+        'opacity-fan'           => __( 'Opacity Fan', 'super-duper' ),
556
+        'curve'                 => __( 'Curve', 'super-duper' ),
557
+        'curve-asymmetrical'    => __( 'Curve Asymmetrical', 'super-duper' ),
558
+        'waves'                 => __( 'Waves', 'super-duper' ),
559
+        'wave-brush'            => __( 'Wave Brush', 'super-duper' ),
560
+        'waves-pattern'         => __( 'Waves Pattern', 'super-duper' ),
561
+        'arrow'                 => __( 'Arrow', 'super-duper' ),
562
+        'split'                 => __( 'Split', 'super-duper' ),
563
+        'book'                  => __( 'Book', 'super-duper' ),
564
+    );
565
+
566
+    $defaults = array(
567
+        'type'     => 'select',
568
+        'title'    => __( 'Type', 'super-duper' ),
569
+        'options'  => $options,
570
+        'default'  => '',
571
+        'desc_tip' => true,
572
+        'group'    => __( 'Shape Divider', 'super-duper' ),
573
+    );
574
+
575
+    $input[ $type ] = wp_parse_args( $overwrite, $defaults );
576
+
577
+    $input[ $type . '_notice' ] = array(
578
+        'type'            => 'notice',
579
+        'desc'            => __( 'Parent element must be position `relative`', 'super-duper' ),
580
+        'status'          => 'warning',
581
+        'group'           => __( 'Shape Divider', 'super-duper' ),
582
+        'element_require' => '[%' . $type . '%]!=""',
583
+    );
584
+
585
+    $input[ $type . '_position' ] = wp_parse_args(
586
+        $overwrite_color,
587
+        array(
588
+            'type'            => 'select',
589
+            'title'           => __( 'Position', 'super-duper' ),
590
+            'options'         => array(
591
+                'top'    => __( 'Top', 'super-duper' ),
592
+                'bottom' => __( 'Bottom', 'super-duper' ),
593
+            ),
594
+            'desc_tip'        => true,
595
+            'group'           => __( 'Shape Divider', 'super-duper' ),
596
+            'element_require' => '[%' . $type . '%]!=""',
597
+        )
598
+    );
599
+
600
+    $options = array(
601
+                    ''            => __( 'None', 'super-duper' ),
602
+                    'transparent' => __( 'Transparent', 'super-duper' ),
603
+                ) + sd_aui_colors()
604
+               + array(
605
+                    'custom-color' => __( 'Custom Color', 'super-duper' ),
606
+                );
607
+
608
+    $input[ $type . '_color' ] = wp_parse_args(
609
+        $overwrite_color,
610
+        array(
611
+            'type'            => 'select',
612
+            'title'           => __( 'Color', 'super-duper' ),
613
+            'options'         => $options,
614
+            'desc_tip'        => true,
615
+            'group'           => __( 'Shape Divider', 'super-duper' ),
616
+            'element_require' => '[%' . $type . '%]!=""',
617
+        )
618
+    );
619
+
620
+    $input[ $type . '_custom_color' ] = wp_parse_args(
621
+        $overwrite_color,
622
+        array(
623
+            'type'            => 'color',
624
+            'title'           => __( 'Custom color', 'super-duper' ),
625
+            'placeholder'     => '',
626
+            'default'         => '#0073aa',
627
+            'desc_tip'        => true,
628
+            'group'           => __( 'Shape Divider', 'super-duper' ),
629
+            'element_require' => '[%' . $type . '_color%]=="custom-color" && [%' . $type . '%]!=""',
630
+        )
631
+    );
632
+
633
+    $input[ $type . '_width' ] = wp_parse_args(
634
+        $overwrite_gradient,
635
+        array(
636
+            'type'              => 'range',
637
+            'title'             => __( 'Width', 'super-duper' ),
638
+            'placeholder'       => '',
639
+            'default'           => '200',
640
+            'desc_tip'          => true,
641
+            'custom_attributes' => array(
642
+                'min' => 100,
643
+                'max' => 300,
644
+            ),
645
+            'group'             => __( 'Shape Divider', 'super-duper' ),
646
+            'element_require'   => '[%' . $type . '%]!=""',
647
+        )
648
+    );
649
+
650
+    $input[ $type . '_height' ] = array(
651
+        'type'              => 'range',
652
+        'title'             => __( 'Height', 'super-duper' ),
653
+        'default'           => '100',
654
+        'desc_tip'          => true,
655
+        'custom_attributes' => array(
656
+            'min' => 0,
657
+            'max' => 500,
658
+        ),
659
+        'group'             => __( 'Shape Divider', 'super-duper' ),
660
+        'element_require'   => '[%' . $type . '%]!=""',
661
+    );
662
+
663
+    $requires = array(
664
+        'mountains'             => array( 'flip' ),
665
+        'drops'                 => array( 'flip', 'invert' ),
666
+        'clouds'                => array( 'flip', 'invert' ),
667
+        'zigzag'                => array(),
668
+        'pyramids'              => array( 'flip', 'invert' ),
669
+        'triangle'              => array( 'invert' ),
670
+        'triangle-asymmetrical' => array( 'flip', 'invert' ),
671
+        'tilt'                  => array( 'flip' ),
672
+        'opacity-tilt'          => array( 'flip' ),
673
+        'opacity-fan'           => array(),
674
+        'curve'                 => array( 'invert' ),
675
+        'curve-asymmetrical'    => array( 'flip', 'invert' ),
676
+        'waves'                 => array( 'flip', 'invert' ),
677
+        'wave-brush'            => array( 'flip' ),
678
+        'waves-pattern'         => array( 'flip' ),
679
+        'arrow'                 => array( 'invert' ),
680
+        'split'                 => array( 'invert' ),
681
+        'book'                  => array( 'invert' ),
682
+    );
683
+
684
+    $input[ $type . '_flip' ] = array(
685
+        'type'            => 'checkbox',
686
+        'title'           => __( 'Flip', 'super-duper' ),
687
+        'default'         => '',
688
+        'desc_tip'        => true,
689
+        'group'           => __( 'Shape Divider', 'super-duper' ),
690
+        'element_require' => sd_get_element_require_string( $requires, 'flip', 'sd' ),
691
+    );
692
+
693
+    $input[ $type . '_invert' ] = array(
694
+        'type'            => 'checkbox',
695
+        'title'           => __( 'Invert', 'super-duper' ),
696
+        'default'         => '',
697
+        'desc_tip'        => true,
698
+        'group'           => __( 'Shape Divider', 'super-duper' ),
699
+        'element_require' => sd_get_element_require_string( $requires, 'invert', 'sd' ),
700
+    );
701
+
702
+    $input[ $type . '_btf' ] = array(
703
+        'type'            => 'checkbox',
704
+        'title'           => __( 'Bring to front', 'super-duper' ),
705
+        'default'         => '',
706
+        'desc_tip'        => true,
707
+        'group'           => __( 'Shape Divider', 'super-duper' ),
708
+        'element_require' => '[%' . $type . '%]!=""',
709
+
710
+    );
711
+
712
+    return $input;
713 713
 }
714 714
 
715 715
 /**
@@ -722,22 +722,22 @@  discard block
 block discarded – undo
722 722
  * @return string
723 723
  */
724 724
 function sd_get_element_require_string( $args, $key, $type ) {
725
-	$output   = '';
726
-	$requires = array();
725
+    $output   = '';
726
+    $requires = array();
727 727
 
728
-	if ( ! empty( $args ) ) {
729
-		foreach ( $args as $t => $k ) {
730
-			if ( in_array( $key, $k ) ) {
731
-				$requires[] = '[%' . $type . '%]=="' . $t . '"';
732
-			}
733
-		}
728
+    if ( ! empty( $args ) ) {
729
+        foreach ( $args as $t => $k ) {
730
+            if ( in_array( $key, $k ) ) {
731
+                $requires[] = '[%' . $type . '%]=="' . $t . '"';
732
+            }
733
+        }
734 734
 
735
-		if ( ! empty( $requires ) ) {
736
-			$output = '(' . implode( ' || ', $requires ) . ')';
737
-		}
738
-	}
735
+        if ( ! empty( $requires ) ) {
736
+            $output = '(' . implode( ' || ', $requires ) . ')';
737
+        }
738
+    }
739 739
 
740
-	return $output;
740
+    return $output;
741 741
 }
742 742
 
743 743
 /**
@@ -749,41 +749,41 @@  discard block
 block discarded – undo
749 749
  * @return array
750 750
  */
751 751
 function sd_get_text_color_input( $type = 'text_color', $overwrite = array(), $has_custom = false ) {
752
-	$options = array(
753
-		           '' => __( 'None', 'super-duper' ),
754
-	           ) + sd_aui_colors();
752
+    $options = array(
753
+                    '' => __( 'None', 'super-duper' ),
754
+                ) + sd_aui_colors();
755 755
 
756
-	if ( $has_custom ) {
757
-		$options['custom'] = __( 'Custom color', 'super-duper' );
758
-	}
756
+    if ( $has_custom ) {
757
+        $options['custom'] = __( 'Custom color', 'super-duper' );
758
+    }
759 759
 
760
-	$defaults = array(
761
-		'type'     => 'select',
762
-		'title'    => __( 'Text color', 'super-duper' ),
763
-		'options'  => $options,
764
-		'default'  => '',
765
-		'desc_tip' => true,
766
-		'group'    => __( 'Typography', 'super-duper' ),
767
-	);
760
+    $defaults = array(
761
+        'type'     => 'select',
762
+        'title'    => __( 'Text color', 'super-duper' ),
763
+        'options'  => $options,
764
+        'default'  => '',
765
+        'desc_tip' => true,
766
+        'group'    => __( 'Typography', 'super-duper' ),
767
+    );
768 768
 
769
-	$input = wp_parse_args( $overwrite, $defaults );
769
+    $input = wp_parse_args( $overwrite, $defaults );
770 770
 
771
-	return $input;
771
+    return $input;
772 772
 }
773 773
 
774 774
 function sd_get_text_color_input_group( $type = 'text_color', $overwrite = array(), $overwrite_custom = array() ) {
775
-	$inputs = array();
775
+    $inputs = array();
776 776
 
777
-	if ( $overwrite !== false ) {
778
-		$inputs[ $type ] = sd_get_text_color_input( $type, $overwrite, true );
779
-	}
777
+    if ( $overwrite !== false ) {
778
+        $inputs[ $type ] = sd_get_text_color_input( $type, $overwrite, true );
779
+    }
780 780
 
781
-	if ( $overwrite_custom !== false ) {
782
-		$custom            = $type . '_custom';
783
-		$inputs[ $custom ] = sd_get_custom_color_input( $custom, $overwrite_custom, $type );
784
-	}
781
+    if ( $overwrite_custom !== false ) {
782
+        $custom            = $type . '_custom';
783
+        $inputs[ $custom ] = sd_get_custom_color_input( $custom, $overwrite_custom, $type );
784
+    }
785 785
 
786
-	return $inputs;
786
+    return $inputs;
787 787
 }
788 788
 
789 789
 /**
@@ -796,22 +796,22 @@  discard block
 block discarded – undo
796 796
  */
797 797
 function sd_get_custom_color_input( $type = 'color_custom', $overwrite = array(), $parent_type = '' ) {
798 798
 
799
-	$defaults = array(
800
-		'type'        => 'color',
801
-		'title'       => __( 'Custom color', 'super-duper' ),
802
-		'default'     => '',
803
-		'placeholder' => '',
804
-		'desc_tip'    => true,
805
-		'group'       => __( 'Typography', 'super-duper' ),
806
-	);
799
+    $defaults = array(
800
+        'type'        => 'color',
801
+        'title'       => __( 'Custom color', 'super-duper' ),
802
+        'default'     => '',
803
+        'placeholder' => '',
804
+        'desc_tip'    => true,
805
+        'group'       => __( 'Typography', 'super-duper' ),
806
+    );
807 807
 
808
-	if ( $parent_type ) {
809
-		$defaults['element_require'] = '[%' . $parent_type . '%]=="custom"';
810
-	}
808
+    if ( $parent_type ) {
809
+        $defaults['element_require'] = '[%' . $parent_type . '%]=="custom"';
810
+    }
811 811
 
812
-	$input = wp_parse_args( $overwrite, $defaults );
812
+    $input = wp_parse_args( $overwrite, $defaults );
813 813
 
814
-	return $input;
814
+    return $input;
815 815
 }
816 816
 
817 817
 /**
@@ -824,44 +824,44 @@  discard block
 block discarded – undo
824 824
  */
825 825
 function sd_get_col_input( $type = 'col', $overwrite = array() ) {
826 826
 
827
-	$device_size = '';
828
-	if ( ! empty( $overwrite['device_type'] ) ) {
829
-		if ( $overwrite['device_type'] == 'Tablet' ) {
830
-			$device_size = '-md';
831
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
832
-			$device_size = '-lg';
833
-		}
834
-	}
835
-	$options = array(
836
-		''     => __( 'Default', 'super-duper' ),
837
-		'auto' => __( 'auto', 'super-duper' ),
838
-		'1'    => '1/12',
839
-		'2'    => '2/12',
840
-		'3'    => '3/12',
841
-		'4'    => '4/12',
842
-		'5'    => '5/12',
843
-		'6'    => '6/12',
844
-		'7'    => '7/12',
845
-		'8'    => '8/12',
846
-		'9'    => '9/12',
847
-		'10'   => '10/12',
848
-		'11'   => '11/12',
849
-		'12'   => '12/12',
850
-	);
851
-
852
-	$defaults = array(
853
-		'type'            => 'select',
854
-		'title'           => __( 'Column width', 'super-duper' ),
855
-		'options'         => $options,
856
-		'default'         => '',
857
-		'desc_tip'        => true,
858
-		'group'           => __( 'Container', 'super-duper' ),
859
-		'element_require' => '[%container%]=="col"',
860
-	);
861
-
862
-	$input = wp_parse_args( $overwrite, $defaults );
863
-
864
-	return $input;
827
+    $device_size = '';
828
+    if ( ! empty( $overwrite['device_type'] ) ) {
829
+        if ( $overwrite['device_type'] == 'Tablet' ) {
830
+            $device_size = '-md';
831
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
832
+            $device_size = '-lg';
833
+        }
834
+    }
835
+    $options = array(
836
+        ''     => __( 'Default', 'super-duper' ),
837
+        'auto' => __( 'auto', 'super-duper' ),
838
+        '1'    => '1/12',
839
+        '2'    => '2/12',
840
+        '3'    => '3/12',
841
+        '4'    => '4/12',
842
+        '5'    => '5/12',
843
+        '6'    => '6/12',
844
+        '7'    => '7/12',
845
+        '8'    => '8/12',
846
+        '9'    => '9/12',
847
+        '10'   => '10/12',
848
+        '11'   => '11/12',
849
+        '12'   => '12/12',
850
+    );
851
+
852
+    $defaults = array(
853
+        'type'            => 'select',
854
+        'title'           => __( 'Column width', 'super-duper' ),
855
+        'options'         => $options,
856
+        'default'         => '',
857
+        'desc_tip'        => true,
858
+        'group'           => __( 'Container', 'super-duper' ),
859
+        'element_require' => '[%container%]=="col"',
860
+    );
861
+
862
+    $input = wp_parse_args( $overwrite, $defaults );
863
+
864
+    return $input;
865 865
 }
866 866
 
867 867
 /**
@@ -874,37 +874,37 @@  discard block
 block discarded – undo
874 874
  */
875 875
 function sd_get_row_cols_input( $type = 'row_cols', $overwrite = array() ) {
876 876
 
877
-	$device_size = '';
878
-	if ( ! empty( $overwrite['device_type'] ) ) {
879
-		if ( $overwrite['device_type'] == 'Tablet' ) {
880
-			$device_size = '-md';
881
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
882
-			$device_size = '-lg';
883
-		}
884
-	}
885
-	$options = array(
886
-		''  => __( 'auto', 'super-duper' ),
887
-		'1' => '1',
888
-		'2' => '2',
889
-		'3' => '3',
890
-		'4' => '4',
891
-		'5' => '5',
892
-		'6' => '6',
893
-	);
894
-
895
-	$defaults = array(
896
-		'type'            => 'select',
897
-		'title'           => __( 'Row columns', 'super-duper' ),
898
-		'options'         => $options,
899
-		'default'         => '',
900
-		'desc_tip'        => true,
901
-		'group'           => __( 'Container', 'super-duper' ),
902
-		'element_require' => '[%container%]=="row"',
903
-	);
904
-
905
-	$input = wp_parse_args( $overwrite, $defaults );
906
-
907
-	return $input;
877
+    $device_size = '';
878
+    if ( ! empty( $overwrite['device_type'] ) ) {
879
+        if ( $overwrite['device_type'] == 'Tablet' ) {
880
+            $device_size = '-md';
881
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
882
+            $device_size = '-lg';
883
+        }
884
+    }
885
+    $options = array(
886
+        ''  => __( 'auto', 'super-duper' ),
887
+        '1' => '1',
888
+        '2' => '2',
889
+        '3' => '3',
890
+        '4' => '4',
891
+        '5' => '5',
892
+        '6' => '6',
893
+    );
894
+
895
+    $defaults = array(
896
+        'type'            => 'select',
897
+        'title'           => __( 'Row columns', 'super-duper' ),
898
+        'options'         => $options,
899
+        'default'         => '',
900
+        'desc_tip'        => true,
901
+        'group'           => __( 'Container', 'super-duper' ),
902
+        'element_require' => '[%container%]=="row"',
903
+    );
904
+
905
+    $input = wp_parse_args( $overwrite, $defaults );
906
+
907
+    return $input;
908 908
 }
909 909
 
910 910
 /**
@@ -917,33 +917,33 @@  discard block
 block discarded – undo
917 917
  */
918 918
 function sd_get_text_align_input( $type = 'text_align', $overwrite = array() ) {
919 919
 
920
-	$device_size = '';
921
-	if ( ! empty( $overwrite['device_type'] ) ) {
922
-		if ( $overwrite['device_type'] == 'Tablet' ) {
923
-			$device_size = '-md';
924
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
925
-			$device_size = '-lg';
926
-		}
927
-	}
928
-	$options = array(
929
-		''                                => __( 'Default', 'super-duper' ),
930
-		'text' . $device_size . '-left'   => __( 'Left', 'super-duper' ),
931
-		'text' . $device_size . '-right'  => __( 'Right', 'super-duper' ),
932
-		'text' . $device_size . '-center' => __( 'Center', 'super-duper' ),
933
-	);
934
-
935
-	$defaults = array(
936
-		'type'     => 'select',
937
-		'title'    => __( 'Text align', 'super-duper' ),
938
-		'options'  => $options,
939
-		'default'  => '',
940
-		'desc_tip' => true,
941
-		'group'    => __( 'Typography', 'super-duper' ),
942
-	);
943
-
944
-	$input = wp_parse_args( $overwrite, $defaults );
945
-
946
-	return $input;
920
+    $device_size = '';
921
+    if ( ! empty( $overwrite['device_type'] ) ) {
922
+        if ( $overwrite['device_type'] == 'Tablet' ) {
923
+            $device_size = '-md';
924
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
925
+            $device_size = '-lg';
926
+        }
927
+    }
928
+    $options = array(
929
+        ''                                => __( 'Default', 'super-duper' ),
930
+        'text' . $device_size . '-left'   => __( 'Left', 'super-duper' ),
931
+        'text' . $device_size . '-right'  => __( 'Right', 'super-duper' ),
932
+        'text' . $device_size . '-center' => __( 'Center', 'super-duper' ),
933
+    );
934
+
935
+    $defaults = array(
936
+        'type'     => 'select',
937
+        'title'    => __( 'Text align', 'super-duper' ),
938
+        'options'  => $options,
939
+        'default'  => '',
940
+        'desc_tip' => true,
941
+        'group'    => __( 'Typography', 'super-duper' ),
942
+    );
943
+
944
+    $input = wp_parse_args( $overwrite, $defaults );
945
+
946
+    return $input;
947 947
 }
948 948
 
949 949
 /**
@@ -956,39 +956,39 @@  discard block
 block discarded – undo
956 956
  */
957 957
 function sd_get_display_input( $type = 'display', $overwrite = array() ) {
958 958
 
959
-	$device_size = '';
960
-	if ( ! empty( $overwrite['device_type'] ) ) {
961
-		if ( $overwrite['device_type'] == 'Tablet' ) {
962
-			$device_size = '-md';
963
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
964
-			$device_size = '-lg';
965
-		}
966
-	}
967
-	$options = array(
968
-		''                                   => __( 'Default', 'super-duper' ),
969
-		'd' . $device_size . '-none'         => 'none',
970
-		'd' . $device_size . '-inline'       => 'inline',
971
-		'd' . $device_size . '-inline-block' => 'inline-block',
972
-		'd' . $device_size . '-block'        => 'block',
973
-		'd' . $device_size . '-table'        => 'table',
974
-		'd' . $device_size . '-table-cell'   => 'table-cell',
975
-		'd' . $device_size . '-table-row'    => 'table-row',
976
-		'd' . $device_size . '-flex'         => 'flex',
977
-		'd' . $device_size . '-inline-flex'  => 'inline-flex',
978
-	);
979
-
980
-	$defaults = array(
981
-		'type'     => 'select',
982
-		'title'    => __( 'Display', 'super-duper' ),
983
-		'options'  => $options,
984
-		'default'  => '',
985
-		'desc_tip' => true,
986
-		'group'    => __( 'Wrapper Styles', 'super-duper' ),
987
-	);
988
-
989
-	$input = wp_parse_args( $overwrite, $defaults );
990
-
991
-	return $input;
959
+    $device_size = '';
960
+    if ( ! empty( $overwrite['device_type'] ) ) {
961
+        if ( $overwrite['device_type'] == 'Tablet' ) {
962
+            $device_size = '-md';
963
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
964
+            $device_size = '-lg';
965
+        }
966
+    }
967
+    $options = array(
968
+        ''                                   => __( 'Default', 'super-duper' ),
969
+        'd' . $device_size . '-none'         => 'none',
970
+        'd' . $device_size . '-inline'       => 'inline',
971
+        'd' . $device_size . '-inline-block' => 'inline-block',
972
+        'd' . $device_size . '-block'        => 'block',
973
+        'd' . $device_size . '-table'        => 'table',
974
+        'd' . $device_size . '-table-cell'   => 'table-cell',
975
+        'd' . $device_size . '-table-row'    => 'table-row',
976
+        'd' . $device_size . '-flex'         => 'flex',
977
+        'd' . $device_size . '-inline-flex'  => 'inline-flex',
978
+    );
979
+
980
+    $defaults = array(
981
+        'type'     => 'select',
982
+        'title'    => __( 'Display', 'super-duper' ),
983
+        'options'  => $options,
984
+        'default'  => '',
985
+        'desc_tip' => true,
986
+        'group'    => __( 'Wrapper Styles', 'super-duper' ),
987
+    );
988
+
989
+    $input = wp_parse_args( $overwrite, $defaults );
990
+
991
+    return $input;
992 992
 }
993 993
 
994 994
 /**
@@ -1001,17 +1001,17 @@  discard block
 block discarded – undo
1001 1001
  */
1002 1002
 function sd_get_text_justify_input( $type = 'text_justify', $overwrite = array() ) {
1003 1003
 
1004
-	$defaults = array(
1005
-		'type'     => 'checkbox',
1006
-		'title'    => __( 'Text justify', 'super-duper' ),
1007
-		'default'  => '',
1008
-		'desc_tip' => true,
1009
-		'group'    => __( 'Typography', 'super-duper' ),
1010
-	);
1004
+    $defaults = array(
1005
+        'type'     => 'checkbox',
1006
+        'title'    => __( 'Text justify', 'super-duper' ),
1007
+        'default'  => '',
1008
+        'desc_tip' => true,
1009
+        'group'    => __( 'Typography', 'super-duper' ),
1010
+    );
1011 1011
 
1012
-	$input = wp_parse_args( $overwrite, $defaults );
1012
+    $input = wp_parse_args( $overwrite, $defaults );
1013 1013
 
1014
-	return $input;
1014
+    return $input;
1015 1015
 }
1016 1016
 
1017 1017
 /**
@@ -1024,72 +1024,72 @@  discard block
 block discarded – undo
1024 1024
  * @return array
1025 1025
  */
1026 1026
 function sd_aui_colors( $include_branding = false, $include_outlines = false, $outline_button_only_text = false, $include_translucent = false ) {
1027
-	$theme_colors = array();
1028
-
1029
-	$theme_colors['primary']   = __( 'Primary', 'super-duper' );
1030
-	$theme_colors['secondary'] = __( 'Secondary', 'super-duper' );
1031
-	$theme_colors['success']   = __( 'Success', 'super-duper' );
1032
-	$theme_colors['danger']    = __( 'Danger', 'super-duper' );
1033
-	$theme_colors['warning']   = __( 'Warning', 'super-duper' );
1034
-	$theme_colors['info']      = __( 'Info', 'super-duper' );
1035
-	$theme_colors['light']     = __( 'Light', 'super-duper' );
1036
-	$theme_colors['dark']      = __( 'Dark', 'super-duper' );
1037
-	$theme_colors['black']     = __( 'Black', 'super-duper' );
1038
-	$theme_colors['white']     = __( 'White', 'super-duper' );
1039
-	$theme_colors['purple']    = __( 'Purple', 'super-duper' );
1040
-	$theme_colors['salmon']    = __( 'Salmon', 'super-duper' );
1041
-	$theme_colors['cyan']      = __( 'Cyan', 'super-duper' );
1042
-	$theme_colors['gray']      = __( 'Gray', 'super-duper' );
1043
-	$theme_colors['muted']     = __( 'Muted', 'super-duper' );
1044
-	$theme_colors['gray-dark'] = __( 'Gray dark', 'super-duper' );
1045
-	$theme_colors['indigo']    = __( 'Indigo', 'super-duper' );
1046
-	$theme_colors['orange']    = __( 'Orange', 'super-duper' );
1047
-
1048
-	if ( $include_outlines ) {
1049
-		$button_only                       = $outline_button_only_text ? ' ' . __( '(button only)', 'super-duper' ) : '';
1050
-		$theme_colors['outline-primary']   = __( 'Primary outline', 'super-duper' ) . $button_only;
1051
-		$theme_colors['outline-secondary'] = __( 'Secondary outline', 'super-duper' ) . $button_only;
1052
-		$theme_colors['outline-success']   = __( 'Success outline', 'super-duper' ) . $button_only;
1053
-		$theme_colors['outline-danger']    = __( 'Danger outline', 'super-duper' ) . $button_only;
1054
-		$theme_colors['outline-warning']   = __( 'Warning outline', 'super-duper' ) . $button_only;
1055
-		$theme_colors['outline-info']      = __( 'Info outline', 'super-duper' ) . $button_only;
1056
-		$theme_colors['outline-light']     = __( 'Light outline', 'super-duper' ) . $button_only;
1057
-		$theme_colors['outline-dark']      = __( 'Dark outline', 'super-duper' ) . $button_only;
1058
-		$theme_colors['outline-white']     = __( 'White outline', 'super-duper' ) . $button_only;
1059
-		$theme_colors['outline-purple']    = __( 'Purple outline', 'super-duper' ) . $button_only;
1060
-		$theme_colors['outline-salmon']    = __( 'Salmon outline', 'super-duper' ) . $button_only;
1061
-		$theme_colors['outline-cyan']      = __( 'Cyan outline', 'super-duper' ) . $button_only;
1062
-		$theme_colors['outline-gray']      = __( 'Gray outline', 'super-duper' ) . $button_only;
1063
-		$theme_colors['outline-gray-dark'] = __( 'Gray dark outline', 'super-duper' ) . $button_only;
1064
-		$theme_colors['outline-indigo']    = __( 'Indigo outline', 'super-duper' ) . $button_only;
1065
-		$theme_colors['outline-orange']    = __( 'Orange outline', 'super-duper' ) . $button_only;
1066
-	}
1067
-
1068
-	if ( $include_branding ) {
1069
-		$theme_colors = $theme_colors + sd_aui_branding_colors();
1070
-	}
1071
-
1072
-	if ( $include_translucent ) {
1073
-		$button_only                           = $outline_button_only_text ? ' ' . __( '(button only)', 'super-duper' ) : '';
1074
-		$theme_colors['translucent-primary']   = __( 'Primary translucent', 'super-duper' ) . $button_only;
1075
-		$theme_colors['translucent-secondary'] = __( 'Secondary translucent', 'super-duper' ) . $button_only;
1076
-		$theme_colors['translucent-success']   = __( 'Success translucent', 'super-duper' ) . $button_only;
1077
-		$theme_colors['translucent-danger']    = __( 'Danger translucent', 'super-duper' ) . $button_only;
1078
-		$theme_colors['translucent-warning']   = __( 'Warning translucent', 'super-duper' ) . $button_only;
1079
-		$theme_colors['translucent-info']      = __( 'Info translucent', 'super-duper' ) . $button_only;
1080
-		$theme_colors['translucent-light']     = __( 'Light translucent', 'super-duper' ) . $button_only;
1081
-		$theme_colors['translucent-dark']      = __( 'Dark translucent', 'super-duper' ) . $button_only;
1082
-		$theme_colors['translucent-white']     = __( 'White translucent', 'super-duper' ) . $button_only;
1083
-		$theme_colors['translucent-purple']    = __( 'Purple translucent', 'super-duper' ) . $button_only;
1084
-		$theme_colors['translucent-salmon']    = __( 'Salmon translucent', 'super-duper' ) . $button_only;
1085
-		$theme_colors['translucent-cyan']      = __( 'Cyan translucent', 'super-duper' ) . $button_only;
1086
-		$theme_colors['translucent-gray']      = __( 'Gray translucent', 'super-duper' ) . $button_only;
1087
-		$theme_colors['translucent-gray-dark'] = __( 'Gray dark translucent', 'super-duper' ) . $button_only;
1088
-		$theme_colors['translucent-indigo']    = __( 'Indigo translucent', 'super-duper' ) . $button_only;
1089
-		$theme_colors['translucent-orange']    = __( 'Orange translucent', 'super-duper' ) . $button_only;
1090
-	}
1091
-
1092
-	return apply_filters( 'sd_aui_colors', $theme_colors, $include_outlines, $include_branding );
1027
+    $theme_colors = array();
1028
+
1029
+    $theme_colors['primary']   = __( 'Primary', 'super-duper' );
1030
+    $theme_colors['secondary'] = __( 'Secondary', 'super-duper' );
1031
+    $theme_colors['success']   = __( 'Success', 'super-duper' );
1032
+    $theme_colors['danger']    = __( 'Danger', 'super-duper' );
1033
+    $theme_colors['warning']   = __( 'Warning', 'super-duper' );
1034
+    $theme_colors['info']      = __( 'Info', 'super-duper' );
1035
+    $theme_colors['light']     = __( 'Light', 'super-duper' );
1036
+    $theme_colors['dark']      = __( 'Dark', 'super-duper' );
1037
+    $theme_colors['black']     = __( 'Black', 'super-duper' );
1038
+    $theme_colors['white']     = __( 'White', 'super-duper' );
1039
+    $theme_colors['purple']    = __( 'Purple', 'super-duper' );
1040
+    $theme_colors['salmon']    = __( 'Salmon', 'super-duper' );
1041
+    $theme_colors['cyan']      = __( 'Cyan', 'super-duper' );
1042
+    $theme_colors['gray']      = __( 'Gray', 'super-duper' );
1043
+    $theme_colors['muted']     = __( 'Muted', 'super-duper' );
1044
+    $theme_colors['gray-dark'] = __( 'Gray dark', 'super-duper' );
1045
+    $theme_colors['indigo']    = __( 'Indigo', 'super-duper' );
1046
+    $theme_colors['orange']    = __( 'Orange', 'super-duper' );
1047
+
1048
+    if ( $include_outlines ) {
1049
+        $button_only                       = $outline_button_only_text ? ' ' . __( '(button only)', 'super-duper' ) : '';
1050
+        $theme_colors['outline-primary']   = __( 'Primary outline', 'super-duper' ) . $button_only;
1051
+        $theme_colors['outline-secondary'] = __( 'Secondary outline', 'super-duper' ) . $button_only;
1052
+        $theme_colors['outline-success']   = __( 'Success outline', 'super-duper' ) . $button_only;
1053
+        $theme_colors['outline-danger']    = __( 'Danger outline', 'super-duper' ) . $button_only;
1054
+        $theme_colors['outline-warning']   = __( 'Warning outline', 'super-duper' ) . $button_only;
1055
+        $theme_colors['outline-info']      = __( 'Info outline', 'super-duper' ) . $button_only;
1056
+        $theme_colors['outline-light']     = __( 'Light outline', 'super-duper' ) . $button_only;
1057
+        $theme_colors['outline-dark']      = __( 'Dark outline', 'super-duper' ) . $button_only;
1058
+        $theme_colors['outline-white']     = __( 'White outline', 'super-duper' ) . $button_only;
1059
+        $theme_colors['outline-purple']    = __( 'Purple outline', 'super-duper' ) . $button_only;
1060
+        $theme_colors['outline-salmon']    = __( 'Salmon outline', 'super-duper' ) . $button_only;
1061
+        $theme_colors['outline-cyan']      = __( 'Cyan outline', 'super-duper' ) . $button_only;
1062
+        $theme_colors['outline-gray']      = __( 'Gray outline', 'super-duper' ) . $button_only;
1063
+        $theme_colors['outline-gray-dark'] = __( 'Gray dark outline', 'super-duper' ) . $button_only;
1064
+        $theme_colors['outline-indigo']    = __( 'Indigo outline', 'super-duper' ) . $button_only;
1065
+        $theme_colors['outline-orange']    = __( 'Orange outline', 'super-duper' ) . $button_only;
1066
+    }
1067
+
1068
+    if ( $include_branding ) {
1069
+        $theme_colors = $theme_colors + sd_aui_branding_colors();
1070
+    }
1071
+
1072
+    if ( $include_translucent ) {
1073
+        $button_only                           = $outline_button_only_text ? ' ' . __( '(button only)', 'super-duper' ) : '';
1074
+        $theme_colors['translucent-primary']   = __( 'Primary translucent', 'super-duper' ) . $button_only;
1075
+        $theme_colors['translucent-secondary'] = __( 'Secondary translucent', 'super-duper' ) . $button_only;
1076
+        $theme_colors['translucent-success']   = __( 'Success translucent', 'super-duper' ) . $button_only;
1077
+        $theme_colors['translucent-danger']    = __( 'Danger translucent', 'super-duper' ) . $button_only;
1078
+        $theme_colors['translucent-warning']   = __( 'Warning translucent', 'super-duper' ) . $button_only;
1079
+        $theme_colors['translucent-info']      = __( 'Info translucent', 'super-duper' ) . $button_only;
1080
+        $theme_colors['translucent-light']     = __( 'Light translucent', 'super-duper' ) . $button_only;
1081
+        $theme_colors['translucent-dark']      = __( 'Dark translucent', 'super-duper' ) . $button_only;
1082
+        $theme_colors['translucent-white']     = __( 'White translucent', 'super-duper' ) . $button_only;
1083
+        $theme_colors['translucent-purple']    = __( 'Purple translucent', 'super-duper' ) . $button_only;
1084
+        $theme_colors['translucent-salmon']    = __( 'Salmon translucent', 'super-duper' ) . $button_only;
1085
+        $theme_colors['translucent-cyan']      = __( 'Cyan translucent', 'super-duper' ) . $button_only;
1086
+        $theme_colors['translucent-gray']      = __( 'Gray translucent', 'super-duper' ) . $button_only;
1087
+        $theme_colors['translucent-gray-dark'] = __( 'Gray dark translucent', 'super-duper' ) . $button_only;
1088
+        $theme_colors['translucent-indigo']    = __( 'Indigo translucent', 'super-duper' ) . $button_only;
1089
+        $theme_colors['translucent-orange']    = __( 'Orange translucent', 'super-duper' ) . $button_only;
1090
+    }
1091
+
1092
+    return apply_filters( 'sd_aui_colors', $theme_colors, $include_outlines, $include_branding );
1093 1093
 }
1094 1094
 
1095 1095
 /**
@@ -1098,19 +1098,19 @@  discard block
 block discarded – undo
1098 1098
  * @return array
1099 1099
  */
1100 1100
 function sd_aui_branding_colors() {
1101
-	return array(
1102
-		'facebook'  => __( 'Facebook', 'super-duper' ),
1103
-		'twitter'   => __( 'Twitter', 'super-duper' ),
1104
-		'instagram' => __( 'Instagram', 'super-duper' ),
1105
-		'linkedin'  => __( 'Linkedin', 'super-duper' ),
1106
-		'flickr'    => __( 'Flickr', 'super-duper' ),
1107
-		'github'    => __( 'GitHub', 'super-duper' ),
1108
-		'youtube'   => __( 'YouTube', 'super-duper' ),
1109
-		'wordpress' => __( 'WordPress', 'super-duper' ),
1110
-		'google'    => __( 'Google', 'super-duper' ),
1111
-		'yahoo'     => __( 'Yahoo', 'super-duper' ),
1112
-		'vkontakte' => __( 'Vkontakte', 'super-duper' ),
1113
-	);
1101
+    return array(
1102
+        'facebook'  => __( 'Facebook', 'super-duper' ),
1103
+        'twitter'   => __( 'Twitter', 'super-duper' ),
1104
+        'instagram' => __( 'Instagram', 'super-duper' ),
1105
+        'linkedin'  => __( 'Linkedin', 'super-duper' ),
1106
+        'flickr'    => __( 'Flickr', 'super-duper' ),
1107
+        'github'    => __( 'GitHub', 'super-duper' ),
1108
+        'youtube'   => __( 'YouTube', 'super-duper' ),
1109
+        'wordpress' => __( 'WordPress', 'super-duper' ),
1110
+        'google'    => __( 'Google', 'super-duper' ),
1111
+        'yahoo'     => __( 'Yahoo', 'super-duper' ),
1112
+        'vkontakte' => __( 'Vkontakte', 'super-duper' ),
1113
+    );
1114 1114
 }
1115 1115
 
1116 1116
 
@@ -1124,38 +1124,38 @@  discard block
 block discarded – undo
1124 1124
  */
1125 1125
 function sd_get_container_class_input( $type = 'container', $overwrite = array() ) {
1126 1126
 
1127
-	$options = array(
1128
-		'container'       => __( 'container (default)', 'super-duper' ),
1129
-		'container-sm'    => 'container-sm',
1130
-		'container-md'    => 'container-md',
1131
-		'container-lg'    => 'container-lg',
1132
-		'container-xl'    => 'container-xl',
1133
-		'container-xxl'   => 'container-xxl',
1134
-		'container-fluid' => 'container-fluid',
1135
-		'row'             => 'row',
1136
-		'col'             => 'col',
1137
-		'card'            => 'card',
1138
-		'card-header'     => 'card-header',
1139
-		'card-img-top'    => 'card-img-top',
1140
-		'card-body'       => 'card-body',
1141
-		'card-footer'     => 'card-footer',
1142
-		'list-group'      => 'list-group',
1143
-		'list-group-item' => 'list-group-item',
1144
-		''                => __( 'no container class', 'super-duper' ),
1145
-	);
1146
-
1147
-	$defaults = array(
1148
-		'type'     => 'select',
1149
-		'title'    => __( 'Type', 'super-duper' ),
1150
-		'options'  => $options,
1151
-		'default'  => '',
1152
-		'desc_tip' => true,
1153
-		'group'    => __( 'Container', 'super-duper' ),
1154
-	);
1155
-
1156
-	$input = wp_parse_args( $overwrite, $defaults );
1157
-
1158
-	return $input;
1127
+    $options = array(
1128
+        'container'       => __( 'container (default)', 'super-duper' ),
1129
+        'container-sm'    => 'container-sm',
1130
+        'container-md'    => 'container-md',
1131
+        'container-lg'    => 'container-lg',
1132
+        'container-xl'    => 'container-xl',
1133
+        'container-xxl'   => 'container-xxl',
1134
+        'container-fluid' => 'container-fluid',
1135
+        'row'             => 'row',
1136
+        'col'             => 'col',
1137
+        'card'            => 'card',
1138
+        'card-header'     => 'card-header',
1139
+        'card-img-top'    => 'card-img-top',
1140
+        'card-body'       => 'card-body',
1141
+        'card-footer'     => 'card-footer',
1142
+        'list-group'      => 'list-group',
1143
+        'list-group-item' => 'list-group-item',
1144
+        ''                => __( 'no container class', 'super-duper' ),
1145
+    );
1146
+
1147
+    $defaults = array(
1148
+        'type'     => 'select',
1149
+        'title'    => __( 'Type', 'super-duper' ),
1150
+        'options'  => $options,
1151
+        'default'  => '',
1152
+        'desc_tip' => true,
1153
+        'group'    => __( 'Container', 'super-duper' ),
1154
+    );
1155
+
1156
+    $input = wp_parse_args( $overwrite, $defaults );
1157
+
1158
+    return $input;
1159 1159
 }
1160 1160
 
1161 1161
 /**
@@ -1168,30 +1168,30 @@  discard block
 block discarded – undo
1168 1168
  */
1169 1169
 function sd_get_position_class_input( $type = 'position', $overwrite = array() ) {
1170 1170
 
1171
-	$options = array(
1172
-		''                  => __( 'Default', 'super-duper' ),
1173
-		'position-static'   => 'static',
1174
-		'position-relative' => 'relative',
1175
-		'position-absolute' => 'absolute',
1176
-		'position-fixed'    => 'fixed',
1177
-		'position-sticky'   => 'sticky',
1178
-		'fixed-top'         => 'fixed-top',
1179
-		'fixed-bottom'      => 'fixed-bottom',
1180
-		'sticky-top'        => 'sticky-top',
1181
-	);
1171
+    $options = array(
1172
+        ''                  => __( 'Default', 'super-duper' ),
1173
+        'position-static'   => 'static',
1174
+        'position-relative' => 'relative',
1175
+        'position-absolute' => 'absolute',
1176
+        'position-fixed'    => 'fixed',
1177
+        'position-sticky'   => 'sticky',
1178
+        'fixed-top'         => 'fixed-top',
1179
+        'fixed-bottom'      => 'fixed-bottom',
1180
+        'sticky-top'        => 'sticky-top',
1181
+    );
1182 1182
 
1183
-	$defaults = array(
1184
-		'type'     => 'select',
1185
-		'title'    => __( 'Position', 'super-duper' ),
1186
-		'options'  => $options,
1187
-		'default'  => '',
1188
-		'desc_tip' => true,
1189
-		'group'    => __( 'Wrapper Styles', 'super-duper' ),
1190
-	);
1183
+    $defaults = array(
1184
+        'type'     => 'select',
1185
+        'title'    => __( 'Position', 'super-duper' ),
1186
+        'options'  => $options,
1187
+        'default'  => '',
1188
+        'desc_tip' => true,
1189
+        'group'    => __( 'Wrapper Styles', 'super-duper' ),
1190
+    );
1191 1191
 
1192
-	$input = wp_parse_args( $overwrite, $defaults );
1192
+    $input = wp_parse_args( $overwrite, $defaults );
1193 1193
 
1194
-	return $input;
1194
+    return $input;
1195 1195
 }
1196 1196
 
1197 1197
 /**
@@ -1202,32 +1202,32 @@  discard block
 block discarded – undo
1202 1202
  */
1203 1203
 function sd_get_absolute_position_input( $type = 'absolute_position', $overwrite = array() ) {
1204 1204
 
1205
-	$options = array(
1206
-		''              => __( 'Default', 'super-duper' ),
1207
-		'top-left'      => 'top-left',
1208
-		'top-center'    => 'top-center',
1209
-		'top-right'     => 'top-right',
1210
-		'center-left'   => 'middle-left',
1211
-		'center'        => 'center',
1212
-		'center-right'  => 'middle-right',
1213
-		'bottom-left'   => 'bottom-left',
1214
-		'bottom-center' => 'bottom-center',
1215
-		'bottom-right'  => 'bottom-right',
1216
-	);
1217
-
1218
-	$defaults = array(
1219
-		'type'            => 'select',
1220
-		'title'           => __( 'Absolute Position', 'super-duper' ),
1221
-		'options'         => $options,
1222
-		'default'         => '',
1223
-		'desc_tip'        => true,
1224
-		'group'           => __( 'Wrapper Styles', 'super-duper' ),
1225
-		'element_require' => '[%position%]=="position-absolute"',
1226
-	);
1227
-
1228
-	$input = wp_parse_args( $overwrite, $defaults );
1229
-
1230
-	return $input;
1205
+    $options = array(
1206
+        ''              => __( 'Default', 'super-duper' ),
1207
+        'top-left'      => 'top-left',
1208
+        'top-center'    => 'top-center',
1209
+        'top-right'     => 'top-right',
1210
+        'center-left'   => 'middle-left',
1211
+        'center'        => 'center',
1212
+        'center-right'  => 'middle-right',
1213
+        'bottom-left'   => 'bottom-left',
1214
+        'bottom-center' => 'bottom-center',
1215
+        'bottom-right'  => 'bottom-right',
1216
+    );
1217
+
1218
+    $defaults = array(
1219
+        'type'            => 'select',
1220
+        'title'           => __( 'Absolute Position', 'super-duper' ),
1221
+        'options'         => $options,
1222
+        'default'         => '',
1223
+        'desc_tip'        => true,
1224
+        'group'           => __( 'Wrapper Styles', 'super-duper' ),
1225
+        'element_require' => '[%position%]=="position-absolute"',
1226
+    );
1227
+
1228
+    $input = wp_parse_args( $overwrite, $defaults );
1229
+
1230
+    return $input;
1231 1231
 }
1232 1232
 
1233 1233
 /**
@@ -1240,38 +1240,38 @@  discard block
 block discarded – undo
1240 1240
  */
1241 1241
 function sd_get_sticky_offset_input( $type = 'top', $overwrite = array() ) {
1242 1242
 
1243
-	$defaults = array(
1244
-		'type'            => 'number',
1245
-		'title'           => __( 'Sticky offset', 'super-duper' ),
1246
-		//'desc' =>  __( 'Sticky offset', 'super-duper' ),
1247
-		'default'         => '',
1248
-		'desc_tip'        => true,
1249
-		'group'           => __( 'Wrapper Styles', 'super-duper' ),
1250
-		'element_require' => '[%position%]=="sticky" || [%position%]=="sticky-top"',
1251
-	);
1252
-
1253
-	// title
1254
-	if ( $type == 'top' ) {
1255
-		$defaults['title'] = __( 'Top offset', 'super-duper' );
1256
-		$defaults['icon']  = 'box-top';
1257
-		$defaults['row']   = array(
1258
-			'title' => __( 'Sticky offset', 'super-duper' ),
1259
-			'key'   => 'sticky-offset',
1260
-			'open'  => true,
1261
-			'class' => 'text-center',
1262
-		);
1263
-	} elseif ( $type == 'bottom' ) {
1264
-		$defaults['title'] = __( 'Bottom offset', 'super-duper' );
1265
-		$defaults['icon']  = 'box-bottom';
1266
-		$defaults['row']   = array(
1267
-			'key'   => 'sticky-offset',
1268
-			'close' => true,
1269
-		);
1270
-	}
1271
-
1272
-	$input = wp_parse_args( $overwrite, $defaults );
1273
-
1274
-	return $input;
1243
+    $defaults = array(
1244
+        'type'            => 'number',
1245
+        'title'           => __( 'Sticky offset', 'super-duper' ),
1246
+        //'desc' =>  __( 'Sticky offset', 'super-duper' ),
1247
+        'default'         => '',
1248
+        'desc_tip'        => true,
1249
+        'group'           => __( 'Wrapper Styles', 'super-duper' ),
1250
+        'element_require' => '[%position%]=="sticky" || [%position%]=="sticky-top"',
1251
+    );
1252
+
1253
+    // title
1254
+    if ( $type == 'top' ) {
1255
+        $defaults['title'] = __( 'Top offset', 'super-duper' );
1256
+        $defaults['icon']  = 'box-top';
1257
+        $defaults['row']   = array(
1258
+            'title' => __( 'Sticky offset', 'super-duper' ),
1259
+            'key'   => 'sticky-offset',
1260
+            'open'  => true,
1261
+            'class' => 'text-center',
1262
+        );
1263
+    } elseif ( $type == 'bottom' ) {
1264
+        $defaults['title'] = __( 'Bottom offset', 'super-duper' );
1265
+        $defaults['icon']  = 'box-bottom';
1266
+        $defaults['row']   = array(
1267
+            'key'   => 'sticky-offset',
1268
+            'close' => true,
1269
+        );
1270
+    }
1271
+
1272
+    $input = wp_parse_args( $overwrite, $defaults );
1273
+
1274
+    return $input;
1275 1275
 }
1276 1276
 
1277 1277
 /**
@@ -1283,61 +1283,61 @@  discard block
 block discarded – undo
1283 1283
  * @return array
1284 1284
  */
1285 1285
 function sd_get_font_size_input( $type = 'font_size', $overwrite = array(), $has_custom = false ) {
1286
-	global $aui_bs5;
1287
-
1288
-	$options[] = __( 'Inherit from parent', 'super-duper' );
1289
-	if ( $aui_bs5 ) {
1290
-		// responsive font sizes
1291
-		$options['fs-base'] = 'fs-base (body default)';
1292
-		$options['fs-6']    = 'fs-6';
1293
-		$options['fs-5']    = 'fs-5';
1294
-		$options['fs-4']    = 'fs-4';
1295
-		$options['fs-3']    = 'fs-3';
1296
-		$options['fs-2']    = 'fs-2';
1297
-		$options['fs-1']    = 'fs-1';
1298
-
1299
-		// custom
1300
-		$options['fs-lg']  = 'fs-lg';
1301
-		$options['fs-sm']  = 'fs-sm';
1302
-		$options['fs-xs']  = 'fs-xs';
1303
-		$options['fs-xxs'] = 'fs-xxs';
1304
-
1305
-	}
1306
-
1307
-	$options = $options + array(
1308
-			'h6'        => 'h6',
1309
-			'h5'        => 'h5',
1310
-			'h4'        => 'h4',
1311
-			'h3'        => 'h3',
1312
-			'h2'        => 'h2',
1313
-			'h1'        => 'h1',
1314
-			'display-1' => 'display-1',
1315
-			'display-2' => 'display-2',
1316
-			'display-3' => 'display-3',
1317
-			'display-4' => 'display-4',
1318
-		);
1319
-
1320
-	if ( $aui_bs5 ) {
1321
-		$options['display-5'] = 'display-5';
1322
-		$options['display-6'] = 'display-6';
1323
-	}
1324
-
1325
-	if ( $has_custom ) {
1326
-		$options['custom'] = __( 'Custom size', 'super-duper' );
1327
-	}
1328
-
1329
-	$defaults = array(
1330
-		'type'     => 'select',
1331
-		'title'    => __( 'Font size', 'super-duper' ),
1332
-		'options'  => $options,
1333
-		'default'  => '',
1334
-		'desc_tip' => true,
1335
-		'group'    => __( 'Typography', 'super-duper' ),
1336
-	);
1337
-
1338
-	$input = wp_parse_args( $overwrite, $defaults );
1339
-
1340
-	return $input;
1286
+    global $aui_bs5;
1287
+
1288
+    $options[] = __( 'Inherit from parent', 'super-duper' );
1289
+    if ( $aui_bs5 ) {
1290
+        // responsive font sizes
1291
+        $options['fs-base'] = 'fs-base (body default)';
1292
+        $options['fs-6']    = 'fs-6';
1293
+        $options['fs-5']    = 'fs-5';
1294
+        $options['fs-4']    = 'fs-4';
1295
+        $options['fs-3']    = 'fs-3';
1296
+        $options['fs-2']    = 'fs-2';
1297
+        $options['fs-1']    = 'fs-1';
1298
+
1299
+        // custom
1300
+        $options['fs-lg']  = 'fs-lg';
1301
+        $options['fs-sm']  = 'fs-sm';
1302
+        $options['fs-xs']  = 'fs-xs';
1303
+        $options['fs-xxs'] = 'fs-xxs';
1304
+
1305
+    }
1306
+
1307
+    $options = $options + array(
1308
+            'h6'        => 'h6',
1309
+            'h5'        => 'h5',
1310
+            'h4'        => 'h4',
1311
+            'h3'        => 'h3',
1312
+            'h2'        => 'h2',
1313
+            'h1'        => 'h1',
1314
+            'display-1' => 'display-1',
1315
+            'display-2' => 'display-2',
1316
+            'display-3' => 'display-3',
1317
+            'display-4' => 'display-4',
1318
+        );
1319
+
1320
+    if ( $aui_bs5 ) {
1321
+        $options['display-5'] = 'display-5';
1322
+        $options['display-6'] = 'display-6';
1323
+    }
1324
+
1325
+    if ( $has_custom ) {
1326
+        $options['custom'] = __( 'Custom size', 'super-duper' );
1327
+    }
1328
+
1329
+    $defaults = array(
1330
+        'type'     => 'select',
1331
+        'title'    => __( 'Font size', 'super-duper' ),
1332
+        'options'  => $options,
1333
+        'default'  => '',
1334
+        'desc_tip' => true,
1335
+        'group'    => __( 'Typography', 'super-duper' ),
1336
+    );
1337
+
1338
+    $input = wp_parse_args( $overwrite, $defaults );
1339
+
1340
+    return $input;
1341 1341
 }
1342 1342
 
1343 1343
 /**
@@ -1350,27 +1350,27 @@  discard block
 block discarded – undo
1350 1350
  */
1351 1351
 function sd_get_font_custom_size_input( $type = 'font_size_custom', $overwrite = array(), $parent_type = '' ) {
1352 1352
 
1353
-	$defaults = array(
1354
-		'type'              => 'number',
1355
-		'title'             => __( 'Font size (rem)', 'super-duper' ),
1356
-		'default'           => '',
1357
-		'placeholder'       => '1.25',
1358
-		'custom_attributes' => array(
1359
-			'step' => '0.1',
1360
-			'min'  => '0',
1361
-			'max'  => '100',
1362
-		),
1363
-		'desc_tip'          => true,
1364
-		'group'             => __( 'Typography', 'super-duper' ),
1365
-	);
1353
+    $defaults = array(
1354
+        'type'              => 'number',
1355
+        'title'             => __( 'Font size (rem)', 'super-duper' ),
1356
+        'default'           => '',
1357
+        'placeholder'       => '1.25',
1358
+        'custom_attributes' => array(
1359
+            'step' => '0.1',
1360
+            'min'  => '0',
1361
+            'max'  => '100',
1362
+        ),
1363
+        'desc_tip'          => true,
1364
+        'group'             => __( 'Typography', 'super-duper' ),
1365
+    );
1366 1366
 
1367
-	if ( $parent_type ) {
1368
-		$defaults['element_require'] = '[%' . $parent_type . '%]=="custom"';
1369
-	}
1367
+    if ( $parent_type ) {
1368
+        $defaults['element_require'] = '[%' . $parent_type . '%]=="custom"';
1369
+    }
1370 1370
 
1371
-	$input = wp_parse_args( $overwrite, $defaults );
1371
+    $input = wp_parse_args( $overwrite, $defaults );
1372 1372
 
1373
-	return $input;
1373
+    return $input;
1374 1374
 }
1375 1375
 
1376 1376
 /**
@@ -1383,23 +1383,23 @@  discard block
 block discarded – undo
1383 1383
  */
1384 1384
 function sd_get_font_line_height_input( $type = 'font_line_height', $overwrite = array() ) {
1385 1385
 
1386
-	$defaults = array(
1387
-		'type'              => 'number',
1388
-		'title'             => __( 'Font Line Height', 'super-duper' ),
1389
-		'default'           => '',
1390
-		'placeholder'       => '1.75',
1391
-		'custom_attributes' => array(
1392
-			'step' => '0.1',
1393
-			'min'  => '0',
1394
-			'max'  => '100',
1395
-		),
1396
-		'desc_tip'          => true,
1397
-		'group'             => __( 'Typography', 'super-duper' ),
1398
-	);
1386
+    $defaults = array(
1387
+        'type'              => 'number',
1388
+        'title'             => __( 'Font Line Height', 'super-duper' ),
1389
+        'default'           => '',
1390
+        'placeholder'       => '1.75',
1391
+        'custom_attributes' => array(
1392
+            'step' => '0.1',
1393
+            'min'  => '0',
1394
+            'max'  => '100',
1395
+        ),
1396
+        'desc_tip'          => true,
1397
+        'group'             => __( 'Typography', 'super-duper' ),
1398
+    );
1399 1399
 
1400
-	$input = wp_parse_args( $overwrite, $defaults );
1400
+    $input = wp_parse_args( $overwrite, $defaults );
1401 1401
 
1402
-	return $input;
1402
+    return $input;
1403 1403
 }
1404 1404
 
1405 1405
 /**
@@ -1412,18 +1412,18 @@  discard block
 block discarded – undo
1412 1412
  */
1413 1413
 function sd_get_font_size_input_group( $type = 'font_size', $overwrite = array(), $overwrite_custom = array() ) {
1414 1414
 
1415
-	$inputs = array();
1415
+    $inputs = array();
1416 1416
 
1417
-	if ( $overwrite !== false ) {
1418
-		$inputs[ $type ] = sd_get_font_size_input( $type, $overwrite, true );
1419
-	}
1417
+    if ( $overwrite !== false ) {
1418
+        $inputs[ $type ] = sd_get_font_size_input( $type, $overwrite, true );
1419
+    }
1420 1420
 
1421
-	if ( $overwrite_custom !== false ) {
1422
-		$custom            = $type . '_custom';
1423
-		$inputs[ $custom ] = sd_get_font_custom_size_input( $custom, $overwrite_custom, $type );
1424
-	}
1421
+    if ( $overwrite_custom !== false ) {
1422
+        $custom            = $type . '_custom';
1423
+        $inputs[ $custom ] = sd_get_font_custom_size_input( $custom, $overwrite_custom, $type );
1424
+    }
1425 1425
 
1426
-	return $inputs;
1426
+    return $inputs;
1427 1427
 }
1428 1428
 
1429 1429
 /**
@@ -1436,33 +1436,33 @@  discard block
 block discarded – undo
1436 1436
  */
1437 1437
 function sd_get_font_weight_input( $type = 'font_weight', $overwrite = array() ) {
1438 1438
 
1439
-	$options = array(
1440
-		''                                => __( 'Inherit', 'super-duper' ),
1441
-		'font-weight-bold'                => 'bold',
1442
-		'font-weight-bolder'              => 'bolder',
1443
-		'font-weight-normal'              => 'normal',
1444
-		'font-weight-light'               => 'light',
1445
-		'font-weight-lighter'             => 'lighter',
1446
-		'font-italic'                     => 'italic',
1447
-		'font-weight-bold font-italic'    => 'bold italic',
1448
-		'font-weight-bolder font-italic'  => 'bolder italic',
1449
-		'font-weight-normal font-italic'  => 'normal italic',
1450
-		'font-weight-light font-italic'   => 'light italic',
1451
-		'font-weight-lighter font-italic' => 'lighter italic',
1452
-	);
1453
-
1454
-	$defaults = array(
1455
-		'type'     => 'select',
1456
-		'title'    => __( 'Appearance', 'super-duper' ),
1457
-		'options'  => $options,
1458
-		'default'  => '',
1459
-		'desc_tip' => true,
1460
-		'group'    => __( 'Typography', 'super-duper' ),
1461
-	);
1462
-
1463
-	$input = wp_parse_args( $overwrite, $defaults );
1464
-
1465
-	return $input;
1439
+    $options = array(
1440
+        ''                                => __( 'Inherit', 'super-duper' ),
1441
+        'font-weight-bold'                => 'bold',
1442
+        'font-weight-bolder'              => 'bolder',
1443
+        'font-weight-normal'              => 'normal',
1444
+        'font-weight-light'               => 'light',
1445
+        'font-weight-lighter'             => 'lighter',
1446
+        'font-italic'                     => 'italic',
1447
+        'font-weight-bold font-italic'    => 'bold italic',
1448
+        'font-weight-bolder font-italic'  => 'bolder italic',
1449
+        'font-weight-normal font-italic'  => 'normal italic',
1450
+        'font-weight-light font-italic'   => 'light italic',
1451
+        'font-weight-lighter font-italic' => 'lighter italic',
1452
+    );
1453
+
1454
+    $defaults = array(
1455
+        'type'     => 'select',
1456
+        'title'    => __( 'Appearance', 'super-duper' ),
1457
+        'options'  => $options,
1458
+        'default'  => '',
1459
+        'desc_tip' => true,
1460
+        'group'    => __( 'Typography', 'super-duper' ),
1461
+    );
1462
+
1463
+    $input = wp_parse_args( $overwrite, $defaults );
1464
+
1465
+    return $input;
1466 1466
 }
1467 1467
 
1468 1468
 /**
@@ -1475,25 +1475,25 @@  discard block
 block discarded – undo
1475 1475
  */
1476 1476
 function sd_get_font_case_input( $type = 'font_weight', $overwrite = array() ) {
1477 1477
 
1478
-	$options = array(
1479
-		''                => __( 'Default', 'super-duper' ),
1480
-		'text-lowercase'  => __( 'lowercase', 'super-duper' ),
1481
-		'text-uppercase'  => __( 'UPPERCASE', 'super-duper' ),
1482
-		'text-capitalize' => __( 'Capitalize', 'super-duper' ),
1483
-	);
1478
+    $options = array(
1479
+        ''                => __( 'Default', 'super-duper' ),
1480
+        'text-lowercase'  => __( 'lowercase', 'super-duper' ),
1481
+        'text-uppercase'  => __( 'UPPERCASE', 'super-duper' ),
1482
+        'text-capitalize' => __( 'Capitalize', 'super-duper' ),
1483
+    );
1484 1484
 
1485
-	$defaults = array(
1486
-		'type'     => 'select',
1487
-		'title'    => __( 'Letter case', 'super-duper' ),
1488
-		'options'  => $options,
1489
-		'default'  => '',
1490
-		'desc_tip' => true,
1491
-		'group'    => __( 'Typography', 'super-duper' ),
1492
-	);
1485
+    $defaults = array(
1486
+        'type'     => 'select',
1487
+        'title'    => __( 'Letter case', 'super-duper' ),
1488
+        'options'  => $options,
1489
+        'default'  => '',
1490
+        'desc_tip' => true,
1491
+        'group'    => __( 'Typography', 'super-duper' ),
1492
+    );
1493 1493
 
1494
-	$input = wp_parse_args( $overwrite, $defaults );
1494
+    $input = wp_parse_args( $overwrite, $defaults );
1495 1495
 
1496
-	return $input;
1496
+    return $input;
1497 1497
 }
1498 1498
 
1499 1499
 /**
@@ -1507,23 +1507,23 @@  discard block
 block discarded – undo
1507 1507
  */
1508 1508
 function sd_get_font_italic_input( $type = 'font_italic', $overwrite = array() ) {
1509 1509
 
1510
-	$options = array(
1511
-		''            => __( 'No', 'super-duper' ),
1512
-		'font-italic' => __( 'Yes', 'super-duper' ),
1513
-	);
1510
+    $options = array(
1511
+        ''            => __( 'No', 'super-duper' ),
1512
+        'font-italic' => __( 'Yes', 'super-duper' ),
1513
+    );
1514 1514
 
1515
-	$defaults = array(
1516
-		'type'     => 'select',
1517
-		'title'    => __( 'Font italic', 'super-duper' ),
1518
-		'options'  => $options,
1519
-		'default'  => '',
1520
-		'desc_tip' => true,
1521
-		'group'    => __( 'Typography', 'super-duper' ),
1522
-	);
1515
+    $defaults = array(
1516
+        'type'     => 'select',
1517
+        'title'    => __( 'Font italic', 'super-duper' ),
1518
+        'options'  => $options,
1519
+        'default'  => '',
1520
+        'desc_tip' => true,
1521
+        'group'    => __( 'Typography', 'super-duper' ),
1522
+    );
1523 1523
 
1524
-	$input = wp_parse_args( $overwrite, $defaults );
1524
+    $input = wp_parse_args( $overwrite, $defaults );
1525 1525
 
1526
-	return $input;
1526
+    return $input;
1527 1527
 }
1528 1528
 
1529 1529
 /**
@@ -1536,18 +1536,18 @@  discard block
 block discarded – undo
1536 1536
  */
1537 1537
 function sd_get_anchor_input( $type = 'anchor', $overwrite = array() ) {
1538 1538
 
1539
-	$defaults = array(
1540
-		'type'     => 'text',
1541
-		'title'    => __( 'HTML anchor', 'super-duper' ),
1542
-		'desc'     => __( 'Enter a word or two — without spaces — to make a unique web address just for this block, called an “anchor.” Then, you’ll be able to link directly to this section of your page.', 'super-duper' ),
1543
-		'default'  => '',
1544
-		'desc_tip' => true,
1545
-		'group'    => __( 'Advanced', 'super-duper' ),
1546
-	);
1539
+    $defaults = array(
1540
+        'type'     => 'text',
1541
+        'title'    => __( 'HTML anchor', 'super-duper' ),
1542
+        'desc'     => __( 'Enter a word or two — without spaces — to make a unique web address just for this block, called an “anchor.” Then, you’ll be able to link directly to this section of your page.', 'super-duper' ),
1543
+        'default'  => '',
1544
+        'desc_tip' => true,
1545
+        'group'    => __( 'Advanced', 'super-duper' ),
1546
+    );
1547 1547
 
1548
-	$input = wp_parse_args( $overwrite, $defaults );
1548
+    $input = wp_parse_args( $overwrite, $defaults );
1549 1549
 
1550
-	return $input;
1550
+    return $input;
1551 1551
 }
1552 1552
 
1553 1553
 /**
@@ -1560,18 +1560,18 @@  discard block
 block discarded – undo
1560 1560
  */
1561 1561
 function sd_get_class_input( $type = 'css_class', $overwrite = array() ) {
1562 1562
 
1563
-	$defaults = array(
1564
-		'type'     => 'text',
1565
-		'title'    => __( 'Additional CSS class(es)', 'super-duper' ),
1566
-		'desc'     => __( 'Separate multiple classes with spaces.', 'super-duper' ),
1567
-		'default'  => '',
1568
-		'desc_tip' => true,
1569
-		'group'    => __( 'Advanced', 'super-duper' ),
1570
-	);
1563
+    $defaults = array(
1564
+        'type'     => 'text',
1565
+        'title'    => __( 'Additional CSS class(es)', 'super-duper' ),
1566
+        'desc'     => __( 'Separate multiple classes with spaces.', 'super-duper' ),
1567
+        'default'  => '',
1568
+        'desc_tip' => true,
1569
+        'group'    => __( 'Advanced', 'super-duper' ),
1570
+    );
1571 1571
 
1572
-	$input = wp_parse_args( $overwrite, $defaults );
1572
+    $input = wp_parse_args( $overwrite, $defaults );
1573 1573
 
1574
-	return $input;
1574
+    return $input;
1575 1575
 }
1576 1576
 
1577 1577
 /**
@@ -1584,341 +1584,341 @@  discard block
 block discarded – undo
1584 1584
  */
1585 1585
 function sd_get_hover_animations_input( $type = 'hover_animations', $overwrite = array() ) {
1586 1586
 
1587
-	$options = array(
1588
-		''                 => __( 'none', 'super-duper' ),
1589
-		'hover-zoom'       => __( 'Zoom', 'super-duper' ),
1590
-		'hover-shadow'     => __( 'Shadow', 'super-duper' ),
1591
-		'hover-move-up'    => __( 'Move up', 'super-duper' ),
1592
-		'hover-move-down'  => __( 'Move down', 'super-duper' ),
1593
-		'hover-move-left'  => __( 'Move left', 'super-duper' ),
1594
-		'hover-move-right' => __( 'Move right', 'super-duper' ),
1595
-	);
1587
+    $options = array(
1588
+        ''                 => __( 'none', 'super-duper' ),
1589
+        'hover-zoom'       => __( 'Zoom', 'super-duper' ),
1590
+        'hover-shadow'     => __( 'Shadow', 'super-duper' ),
1591
+        'hover-move-up'    => __( 'Move up', 'super-duper' ),
1592
+        'hover-move-down'  => __( 'Move down', 'super-duper' ),
1593
+        'hover-move-left'  => __( 'Move left', 'super-duper' ),
1594
+        'hover-move-right' => __( 'Move right', 'super-duper' ),
1595
+    );
1596 1596
 
1597
-	$defaults = array(
1598
-		'type'     => 'select',
1599
-		'multiple' => true,
1600
-		'title'    => __( 'Hover Animations', 'super-duper' ),
1601
-		'options'  => $options,
1602
-		'default'  => '',
1603
-		'desc_tip' => true,
1604
-		'group'    => __( 'Hover Animations', 'super-duper' ),
1605
-	);
1597
+    $defaults = array(
1598
+        'type'     => 'select',
1599
+        'multiple' => true,
1600
+        'title'    => __( 'Hover Animations', 'super-duper' ),
1601
+        'options'  => $options,
1602
+        'default'  => '',
1603
+        'desc_tip' => true,
1604
+        'group'    => __( 'Hover Animations', 'super-duper' ),
1605
+    );
1606 1606
 
1607
-	$input = wp_parse_args( $overwrite, $defaults );
1607
+    $input = wp_parse_args( $overwrite, $defaults );
1608 1608
 
1609
-	return $input;
1609
+    return $input;
1610 1610
 }
1611 1611
 
1612 1612
 
1613 1613
 function sd_get_flex_align_items_input( $type = 'align-items', $overwrite = array() ) {
1614
-	$device_size = '';
1615
-	if ( ! empty( $overwrite['device_type'] ) ) {
1616
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1617
-			$device_size = '-md';
1618
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1619
-			$device_size = '-lg';
1620
-		}
1621
-	}
1622
-	$options = array(
1623
-		''                                         => __( 'Default', 'super-duper' ),
1624
-		'align-items' . $device_size . '-start'    => 'align-items-start',
1625
-		'align-items' . $device_size . '-end'      => 'align-items-end',
1626
-		'align-items' . $device_size . '-center'   => 'align-items-center',
1627
-		'align-items' . $device_size . '-baseline' => 'align-items-baseline',
1628
-		'align-items' . $device_size . '-stretch'  => 'align-items-stretch',
1629
-	);
1630
-
1631
-	$defaults = array(
1632
-		'type'            => 'select',
1633
-		'title'           => __( 'Vertical Align Items', 'super-duper' ),
1634
-		'options'         => $options,
1635
-		'default'         => '',
1636
-		'desc_tip'        => true,
1637
-		'group'           => __( 'Wrapper Styles', 'super-duper' ),
1638
-		'element_require' => ' ( ( [%container%]=="row" ) || ( [%display%]=="d-flex" || [%display_md%]=="d-md-flex" || [%display_lg%]=="d-lg-flex" ) ) ',
1639
-
1640
-	);
1641
-
1642
-	$input = wp_parse_args( $overwrite, $defaults );
1643
-
1644
-	return $input;
1614
+    $device_size = '';
1615
+    if ( ! empty( $overwrite['device_type'] ) ) {
1616
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1617
+            $device_size = '-md';
1618
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1619
+            $device_size = '-lg';
1620
+        }
1621
+    }
1622
+    $options = array(
1623
+        ''                                         => __( 'Default', 'super-duper' ),
1624
+        'align-items' . $device_size . '-start'    => 'align-items-start',
1625
+        'align-items' . $device_size . '-end'      => 'align-items-end',
1626
+        'align-items' . $device_size . '-center'   => 'align-items-center',
1627
+        'align-items' . $device_size . '-baseline' => 'align-items-baseline',
1628
+        'align-items' . $device_size . '-stretch'  => 'align-items-stretch',
1629
+    );
1630
+
1631
+    $defaults = array(
1632
+        'type'            => 'select',
1633
+        'title'           => __( 'Vertical Align Items', 'super-duper' ),
1634
+        'options'         => $options,
1635
+        'default'         => '',
1636
+        'desc_tip'        => true,
1637
+        'group'           => __( 'Wrapper Styles', 'super-duper' ),
1638
+        'element_require' => ' ( ( [%container%]=="row" ) || ( [%display%]=="d-flex" || [%display_md%]=="d-md-flex" || [%display_lg%]=="d-lg-flex" ) ) ',
1639
+
1640
+    );
1641
+
1642
+    $input = wp_parse_args( $overwrite, $defaults );
1643
+
1644
+    return $input;
1645 1645
 }
1646 1646
 
1647 1647
 function sd_get_flex_align_items_input_group( $type = 'flex_align_items', $overwrite = array() ) {
1648
-	$inputs = array();
1649
-	$sizes  = array(
1650
-		''    => 'Mobile',
1651
-		'_md' => 'Tablet',
1652
-		'_lg' => 'Desktop',
1653
-	);
1648
+    $inputs = array();
1649
+    $sizes  = array(
1650
+        ''    => 'Mobile',
1651
+        '_md' => 'Tablet',
1652
+        '_lg' => 'Desktop',
1653
+    );
1654 1654
 
1655
-	if ( $overwrite !== false ) {
1655
+    if ( $overwrite !== false ) {
1656 1656
 
1657
-		foreach ( $sizes as $ds => $dt ) {
1658
-			$overwrite['device_type'] = $dt;
1659
-			$inputs[ $type . $ds ]    = sd_get_flex_align_items_input( $type, $overwrite );
1660
-		}
1661
-	}
1657
+        foreach ( $sizes as $ds => $dt ) {
1658
+            $overwrite['device_type'] = $dt;
1659
+            $inputs[ $type . $ds ]    = sd_get_flex_align_items_input( $type, $overwrite );
1660
+        }
1661
+    }
1662 1662
 
1663
-	return $inputs;
1663
+    return $inputs;
1664 1664
 }
1665 1665
 
1666 1666
 function sd_get_flex_justify_content_input( $type = 'flex_justify_content', $overwrite = array() ) {
1667
-	$device_size = '';
1668
-	if ( ! empty( $overwrite['device_type'] ) ) {
1669
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1670
-			$device_size = '-md';
1671
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1672
-			$device_size = '-lg';
1673
-		}
1674
-	}
1675
-	$options = array(
1676
-		''                                            => __( 'Default', 'super-duper' ),
1677
-		'justify-content' . $device_size . '-start'   => 'justify-content-start',
1678
-		'justify-content' . $device_size . '-end'     => 'justify-content-end',
1679
-		'justify-content' . $device_size . '-center'  => 'justify-content-center',
1680
-		'justify-content' . $device_size . '-between' => 'justify-content-between',
1681
-		'justify-content' . $device_size . '-stretch' => 'justify-content-around',
1682
-	);
1683
-
1684
-	$defaults = array(
1685
-		'type'            => 'select',
1686
-		'title'           => __( 'Justify content', 'super-duper' ),
1687
-		'options'         => $options,
1688
-		'default'         => '',
1689
-		'desc_tip'        => true,
1690
-		'group'           => __( 'Wrapper Styles', 'super-duper' ),
1691
-		'element_require' => '( ( [%container%]=="row" ) || ( [%display%]=="d-flex" || [%display_md%]=="d-md-flex" || [%display_lg%]=="d-lg-flex" ) ) ',
1692
-
1693
-	);
1694
-
1695
-	$input = wp_parse_args( $overwrite, $defaults );
1696
-
1697
-	return $input;
1667
+    $device_size = '';
1668
+    if ( ! empty( $overwrite['device_type'] ) ) {
1669
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1670
+            $device_size = '-md';
1671
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1672
+            $device_size = '-lg';
1673
+        }
1674
+    }
1675
+    $options = array(
1676
+        ''                                            => __( 'Default', 'super-duper' ),
1677
+        'justify-content' . $device_size . '-start'   => 'justify-content-start',
1678
+        'justify-content' . $device_size . '-end'     => 'justify-content-end',
1679
+        'justify-content' . $device_size . '-center'  => 'justify-content-center',
1680
+        'justify-content' . $device_size . '-between' => 'justify-content-between',
1681
+        'justify-content' . $device_size . '-stretch' => 'justify-content-around',
1682
+    );
1683
+
1684
+    $defaults = array(
1685
+        'type'            => 'select',
1686
+        'title'           => __( 'Justify content', 'super-duper' ),
1687
+        'options'         => $options,
1688
+        'default'         => '',
1689
+        'desc_tip'        => true,
1690
+        'group'           => __( 'Wrapper Styles', 'super-duper' ),
1691
+        'element_require' => '( ( [%container%]=="row" ) || ( [%display%]=="d-flex" || [%display_md%]=="d-md-flex" || [%display_lg%]=="d-lg-flex" ) ) ',
1692
+
1693
+    );
1694
+
1695
+    $input = wp_parse_args( $overwrite, $defaults );
1696
+
1697
+    return $input;
1698 1698
 }
1699 1699
 
1700 1700
 function sd_get_flex_justify_content_input_group( $type = 'flex_justify_content', $overwrite = array() ) {
1701
-	$inputs = array();
1702
-	$sizes  = array(
1703
-		''    => 'Mobile',
1704
-		'_md' => 'Tablet',
1705
-		'_lg' => 'Desktop',
1706
-	);
1701
+    $inputs = array();
1702
+    $sizes  = array(
1703
+        ''    => 'Mobile',
1704
+        '_md' => 'Tablet',
1705
+        '_lg' => 'Desktop',
1706
+    );
1707 1707
 
1708
-	if ( $overwrite !== false ) {
1708
+    if ( $overwrite !== false ) {
1709 1709
 
1710
-		foreach ( $sizes as $ds => $dt ) {
1711
-			$overwrite['device_type'] = $dt;
1712
-			$inputs[ $type . $ds ]    = sd_get_flex_justify_content_input( $type, $overwrite );
1713
-		}
1714
-	}
1710
+        foreach ( $sizes as $ds => $dt ) {
1711
+            $overwrite['device_type'] = $dt;
1712
+            $inputs[ $type . $ds ]    = sd_get_flex_justify_content_input( $type, $overwrite );
1713
+        }
1714
+    }
1715 1715
 
1716
-	return $inputs;
1716
+    return $inputs;
1717 1717
 }
1718 1718
 
1719 1719
 
1720 1720
 function sd_get_flex_align_self_input( $type = 'flex_align_self', $overwrite = array() ) {
1721
-	$device_size = '';
1722
-	if ( ! empty( $overwrite['device_type'] ) ) {
1723
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1724
-			$device_size = '-md';
1725
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1726
-			$device_size = '-lg';
1727
-		}
1728
-	}
1729
-	$options = array(
1730
-		''                                         => __( 'Default', 'super-duper' ),
1731
-		'align-items' . $device_size . '-start'    => 'align-items-start',
1732
-		'align-items' . $device_size . '-end'      => 'align-items-end',
1733
-		'align-items' . $device_size . '-center'   => 'align-items-center',
1734
-		'align-items' . $device_size . '-baseline' => 'align-items-baseline',
1735
-		'align-items' . $device_size . '-stretch'  => 'align-items-stretch',
1736
-	);
1737
-
1738
-	$defaults = array(
1739
-		'type'            => 'select',
1740
-		'title'           => __( 'Align Self', 'super-duper' ),
1741
-		'options'         => $options,
1742
-		'default'         => '',
1743
-		'desc_tip'        => true,
1744
-		'group'           => __( 'Wrapper Styles', 'super-duper' ),
1745
-		'element_require' => ' [%container%]=="col" ',
1746
-
1747
-	);
1748
-
1749
-	$input = wp_parse_args( $overwrite, $defaults );
1750
-
1751
-	return $input;
1721
+    $device_size = '';
1722
+    if ( ! empty( $overwrite['device_type'] ) ) {
1723
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1724
+            $device_size = '-md';
1725
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1726
+            $device_size = '-lg';
1727
+        }
1728
+    }
1729
+    $options = array(
1730
+        ''                                         => __( 'Default', 'super-duper' ),
1731
+        'align-items' . $device_size . '-start'    => 'align-items-start',
1732
+        'align-items' . $device_size . '-end'      => 'align-items-end',
1733
+        'align-items' . $device_size . '-center'   => 'align-items-center',
1734
+        'align-items' . $device_size . '-baseline' => 'align-items-baseline',
1735
+        'align-items' . $device_size . '-stretch'  => 'align-items-stretch',
1736
+    );
1737
+
1738
+    $defaults = array(
1739
+        'type'            => 'select',
1740
+        'title'           => __( 'Align Self', 'super-duper' ),
1741
+        'options'         => $options,
1742
+        'default'         => '',
1743
+        'desc_tip'        => true,
1744
+        'group'           => __( 'Wrapper Styles', 'super-duper' ),
1745
+        'element_require' => ' [%container%]=="col" ',
1746
+
1747
+    );
1748
+
1749
+    $input = wp_parse_args( $overwrite, $defaults );
1750
+
1751
+    return $input;
1752 1752
 }
1753 1753
 
1754 1754
 function sd_get_flex_align_self_input_group( $type = 'flex_align_self', $overwrite = array() ) {
1755
-	$inputs = array();
1756
-	$sizes  = array(
1757
-		''    => 'Mobile',
1758
-		'_md' => 'Tablet',
1759
-		'_lg' => 'Desktop',
1760
-	);
1755
+    $inputs = array();
1756
+    $sizes  = array(
1757
+        ''    => 'Mobile',
1758
+        '_md' => 'Tablet',
1759
+        '_lg' => 'Desktop',
1760
+    );
1761 1761
 
1762
-	if ( $overwrite !== false ) {
1762
+    if ( $overwrite !== false ) {
1763 1763
 
1764
-		foreach ( $sizes as $ds => $dt ) {
1765
-			$overwrite['device_type'] = $dt;
1766
-			$inputs[ $type . $ds ]    = sd_get_flex_align_self_input( $type, $overwrite );
1767
-		}
1768
-	}
1764
+        foreach ( $sizes as $ds => $dt ) {
1765
+            $overwrite['device_type'] = $dt;
1766
+            $inputs[ $type . $ds ]    = sd_get_flex_align_self_input( $type, $overwrite );
1767
+        }
1768
+    }
1769 1769
 
1770
-	return $inputs;
1770
+    return $inputs;
1771 1771
 }
1772 1772
 
1773 1773
 function sd_get_flex_order_input( $type = 'flex_order', $overwrite = array() ) {
1774
-	$device_size = '';
1775
-	if ( ! empty( $overwrite['device_type'] ) ) {
1776
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1777
-			$device_size = '-md';
1778
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1779
-			$device_size = '-lg';
1780
-		}
1781
-	}
1782
-	$options = array(
1783
-		'' => __( 'Default', 'super-duper' ),
1784
-	);
1785
-
1786
-	$i = 0;
1787
-	while ( $i <= 5 ) {
1788
-		$options[ 'order' . $device_size . '-' . $i ] = $i;
1789
-		$i++;
1790
-	}
1791
-
1792
-	$defaults = array(
1793
-		'type'            => 'select',
1794
-		'title'           => __( 'Flex Order', 'super-duper' ),
1795
-		'options'         => $options,
1796
-		'default'         => '',
1797
-		'desc_tip'        => true,
1798
-		'group'           => __( 'Wrapper Styles', 'super-duper' ),
1799
-		'element_require' => ' [%container%]=="col" ',
1800
-
1801
-	);
1802
-
1803
-	$input = wp_parse_args( $overwrite, $defaults );
1804
-
1805
-	return $input;
1774
+    $device_size = '';
1775
+    if ( ! empty( $overwrite['device_type'] ) ) {
1776
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1777
+            $device_size = '-md';
1778
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1779
+            $device_size = '-lg';
1780
+        }
1781
+    }
1782
+    $options = array(
1783
+        '' => __( 'Default', 'super-duper' ),
1784
+    );
1785
+
1786
+    $i = 0;
1787
+    while ( $i <= 5 ) {
1788
+        $options[ 'order' . $device_size . '-' . $i ] = $i;
1789
+        $i++;
1790
+    }
1791
+
1792
+    $defaults = array(
1793
+        'type'            => 'select',
1794
+        'title'           => __( 'Flex Order', 'super-duper' ),
1795
+        'options'         => $options,
1796
+        'default'         => '',
1797
+        'desc_tip'        => true,
1798
+        'group'           => __( 'Wrapper Styles', 'super-duper' ),
1799
+        'element_require' => ' [%container%]=="col" ',
1800
+
1801
+    );
1802
+
1803
+    $input = wp_parse_args( $overwrite, $defaults );
1804
+
1805
+    return $input;
1806 1806
 }
1807 1807
 
1808 1808
 function sd_get_flex_order_input_group( $type = 'flex_order', $overwrite = array() ) {
1809
-	$inputs = array();
1810
-	$sizes  = array(
1811
-		''    => 'Mobile',
1812
-		'_md' => 'Tablet',
1813
-		'_lg' => 'Desktop',
1814
-	);
1809
+    $inputs = array();
1810
+    $sizes  = array(
1811
+        ''    => 'Mobile',
1812
+        '_md' => 'Tablet',
1813
+        '_lg' => 'Desktop',
1814
+    );
1815 1815
 
1816
-	if ( $overwrite !== false ) {
1816
+    if ( $overwrite !== false ) {
1817 1817
 
1818
-		foreach ( $sizes as $ds => $dt ) {
1819
-			$overwrite['device_type'] = $dt;
1820
-			$inputs[ $type . $ds ]    = sd_get_flex_order_input( $type, $overwrite );
1821
-		}
1822
-	}
1818
+        foreach ( $sizes as $ds => $dt ) {
1819
+            $overwrite['device_type'] = $dt;
1820
+            $inputs[ $type . $ds ]    = sd_get_flex_order_input( $type, $overwrite );
1821
+        }
1822
+    }
1823 1823
 
1824
-	return $inputs;
1824
+    return $inputs;
1825 1825
 }
1826 1826
 
1827 1827
 function sd_get_flex_wrap_group( $type = 'flex_wrap', $overwrite = array() ) {
1828
-	$inputs = array();
1829
-	$sizes  = array(
1830
-		''    => 'Mobile',
1831
-		'_md' => 'Tablet',
1832
-		'_lg' => 'Desktop',
1833
-	);
1828
+    $inputs = array();
1829
+    $sizes  = array(
1830
+        ''    => 'Mobile',
1831
+        '_md' => 'Tablet',
1832
+        '_lg' => 'Desktop',
1833
+    );
1834 1834
 
1835
-	if ( $overwrite !== false ) {
1835
+    if ( $overwrite !== false ) {
1836 1836
 
1837
-		foreach ( $sizes as $ds => $dt ) {
1838
-			$overwrite['device_type'] = $dt;
1839
-			$inputs[ $type . $ds ]    = sd_get_flex_wrap_input( $type, $overwrite );
1840
-		}
1841
-	}
1837
+        foreach ( $sizes as $ds => $dt ) {
1838
+            $overwrite['device_type'] = $dt;
1839
+            $inputs[ $type . $ds ]    = sd_get_flex_wrap_input( $type, $overwrite );
1840
+        }
1841
+    }
1842 1842
 
1843
-	return $inputs;
1843
+    return $inputs;
1844 1844
 }
1845 1845
 
1846 1846
 function sd_get_flex_wrap_input( $type = 'flex_wrap', $overwrite = array() ) {
1847
-	$device_size = '';
1848
-	if ( ! empty( $overwrite['device_type'] ) ) {
1849
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1850
-			$device_size = '-md';
1851
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1852
-			$device_size = '-lg';
1853
-		}
1854
-	}
1855
-	$options = array(
1856
-		''                                      => __( 'Default', 'super-duper' ),
1857
-		'flex' . $device_size . '-nowrap'       => 'nowrap',
1858
-		'flex' . $device_size . '-wrap'         => 'wrap',
1859
-		'flex' . $device_size . '-wrap-reverse' => 'wrap-reverse',
1860
-	);
1861
-
1862
-	$defaults = array(
1863
-		'type'     => 'select',
1864
-		'title'    => __( 'Flex wrap', 'super-duper' ),
1865
-		'options'  => $options,
1866
-		'default'  => '',
1867
-		'desc_tip' => true,
1868
-		'group'    => __( 'Wrapper Styles', 'super-duper' ),
1869
-	);
1870
-
1871
-	$input = wp_parse_args( $overwrite, $defaults );
1872
-
1873
-	return $input;
1847
+    $device_size = '';
1848
+    if ( ! empty( $overwrite['device_type'] ) ) {
1849
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1850
+            $device_size = '-md';
1851
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1852
+            $device_size = '-lg';
1853
+        }
1854
+    }
1855
+    $options = array(
1856
+        ''                                      => __( 'Default', 'super-duper' ),
1857
+        'flex' . $device_size . '-nowrap'       => 'nowrap',
1858
+        'flex' . $device_size . '-wrap'         => 'wrap',
1859
+        'flex' . $device_size . '-wrap-reverse' => 'wrap-reverse',
1860
+    );
1861
+
1862
+    $defaults = array(
1863
+        'type'     => 'select',
1864
+        'title'    => __( 'Flex wrap', 'super-duper' ),
1865
+        'options'  => $options,
1866
+        'default'  => '',
1867
+        'desc_tip' => true,
1868
+        'group'    => __( 'Wrapper Styles', 'super-duper' ),
1869
+    );
1870
+
1871
+    $input = wp_parse_args( $overwrite, $defaults );
1872
+
1873
+    return $input;
1874 1874
 }
1875 1875
 
1876 1876
 function sd_get_float_group( $type = 'float', $overwrite = array() ) {
1877
-	$inputs = array();
1878
-	$sizes  = array(
1879
-		''    => 'Mobile',
1880
-		'_md' => 'Tablet',
1881
-		'_lg' => 'Desktop',
1882
-	);
1877
+    $inputs = array();
1878
+    $sizes  = array(
1879
+        ''    => 'Mobile',
1880
+        '_md' => 'Tablet',
1881
+        '_lg' => 'Desktop',
1882
+    );
1883 1883
 
1884
-	if ( $overwrite !== false ) {
1884
+    if ( $overwrite !== false ) {
1885 1885
 
1886
-		foreach ( $sizes as $ds => $dt ) {
1887
-			$overwrite['device_type'] = $dt;
1888
-			$inputs[ $type . $ds ]    = sd_get_float_input( $type, $overwrite );
1889
-		}
1890
-	}
1886
+        foreach ( $sizes as $ds => $dt ) {
1887
+            $overwrite['device_type'] = $dt;
1888
+            $inputs[ $type . $ds ]    = sd_get_float_input( $type, $overwrite );
1889
+        }
1890
+    }
1891 1891
 
1892
-	return $inputs;
1892
+    return $inputs;
1893 1893
 }
1894 1894
 function sd_get_float_input( $type = 'float', $overwrite = array() ) {
1895
-	$device_size = '';
1896
-	if ( ! empty( $overwrite['device_type'] ) ) {
1897
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1898
-			$device_size = '-md';
1899
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1900
-			$device_size = '-lg';
1901
-		}
1902
-	}
1903
-	$options = array(
1904
-		''                                      => __( 'Default', 'super-duper' ),
1905
-		'float' . $device_size . '-start'       => 'left',
1906
-		'float' . $device_size . '-end'         => 'right',
1907
-		'float' . $device_size . '-none' => 'none',
1908
-	);
1909
-
1910
-	$defaults = array(
1911
-		'type'     => 'select',
1912
-		'title'    => __( 'Float', 'super-duper' ),
1913
-		'options'  => $options,
1914
-		'default'  => '',
1915
-		'desc_tip' => true,
1916
-		'group'    => __( 'Wrapper Styles', 'super-duper' ),
1917
-	);
1918
-
1919
-	$input = wp_parse_args( $overwrite, $defaults );
1920
-
1921
-	return $input;
1895
+    $device_size = '';
1896
+    if ( ! empty( $overwrite['device_type'] ) ) {
1897
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1898
+            $device_size = '-md';
1899
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1900
+            $device_size = '-lg';
1901
+        }
1902
+    }
1903
+    $options = array(
1904
+        ''                                      => __( 'Default', 'super-duper' ),
1905
+        'float' . $device_size . '-start'       => 'left',
1906
+        'float' . $device_size . '-end'         => 'right',
1907
+        'float' . $device_size . '-none' => 'none',
1908
+    );
1909
+
1910
+    $defaults = array(
1911
+        'type'     => 'select',
1912
+        'title'    => __( 'Float', 'super-duper' ),
1913
+        'options'  => $options,
1914
+        'default'  => '',
1915
+        'desc_tip' => true,
1916
+        'group'    => __( 'Wrapper Styles', 'super-duper' ),
1917
+    );
1918
+
1919
+    $input = wp_parse_args( $overwrite, $defaults );
1920
+
1921
+    return $input;
1922 1922
 }
1923 1923
 
1924 1924
 /**
@@ -1929,26 +1929,26 @@  discard block
 block discarded – undo
1929 1929
  */
1930 1930
 function sd_get_zindex_input( $type = 'zindex', $overwrite = array() ) {
1931 1931
 
1932
-	$options = array(
1933
-		''          => __( 'Default', 'super-duper' ),
1934
-		'zindex-0'  => '0',
1935
-		'zindex-1'  => '1',
1936
-		'zindex-5'  => '5',
1937
-		'zindex-10' => '10',
1938
-	);
1932
+    $options = array(
1933
+        ''          => __( 'Default', 'super-duper' ),
1934
+        'zindex-0'  => '0',
1935
+        'zindex-1'  => '1',
1936
+        'zindex-5'  => '5',
1937
+        'zindex-10' => '10',
1938
+    );
1939 1939
 
1940
-	$defaults = array(
1941
-		'type'     => 'select',
1942
-		'title'    => __( 'Z-index', 'super-duper' ),
1943
-		'options'  => $options,
1944
-		'default'  => '',
1945
-		'desc_tip' => true,
1946
-		'group'    => __( 'Wrapper Styles', 'super-duper' ),
1947
-	);
1940
+    $defaults = array(
1941
+        'type'     => 'select',
1942
+        'title'    => __( 'Z-index', 'super-duper' ),
1943
+        'options'  => $options,
1944
+        'default'  => '',
1945
+        'desc_tip' => true,
1946
+        'group'    => __( 'Wrapper Styles', 'super-duper' ),
1947
+    );
1948 1948
 
1949
-	$input = wp_parse_args( $overwrite, $defaults );
1949
+    $input = wp_parse_args( $overwrite, $defaults );
1950 1950
 
1951
-	return $input;
1951
+    return $input;
1952 1952
 }
1953 1953
 
1954 1954
 /**
@@ -1959,26 +1959,26 @@  discard block
 block discarded – undo
1959 1959
  */
1960 1960
 function sd_get_overflow_input( $type = 'overflow', $overwrite = array() ) {
1961 1961
 
1962
-	$options = array(
1963
-		''                 => __( 'Default', 'super-duper' ),
1964
-		'overflow-auto'    => __( 'Auto', 'super-duper' ),
1965
-		'overflow-hidden'  => __( 'Hidden', 'super-duper' ),
1966
-		'overflow-visible' => __( 'Visible', 'super-duper' ),
1967
-		'overflow-scroll'  => __( 'Scroll', 'super-duper' ),
1968
-	);
1962
+    $options = array(
1963
+        ''                 => __( 'Default', 'super-duper' ),
1964
+        'overflow-auto'    => __( 'Auto', 'super-duper' ),
1965
+        'overflow-hidden'  => __( 'Hidden', 'super-duper' ),
1966
+        'overflow-visible' => __( 'Visible', 'super-duper' ),
1967
+        'overflow-scroll'  => __( 'Scroll', 'super-duper' ),
1968
+    );
1969 1969
 
1970
-	$defaults = array(
1971
-		'type'     => 'select',
1972
-		'title'    => __( 'Overflow', 'super-duper' ),
1973
-		'options'  => $options,
1974
-		'default'  => '',
1975
-		'desc_tip' => true,
1976
-		'group'    => __( 'Wrapper Styles', 'super-duper' ),
1977
-	);
1970
+    $defaults = array(
1971
+        'type'     => 'select',
1972
+        'title'    => __( 'Overflow', 'super-duper' ),
1973
+        'options'  => $options,
1974
+        'default'  => '',
1975
+        'desc_tip' => true,
1976
+        'group'    => __( 'Wrapper Styles', 'super-duper' ),
1977
+    );
1978 1978
 
1979
-	$input = wp_parse_args( $overwrite, $defaults );
1979
+    $input = wp_parse_args( $overwrite, $defaults );
1980 1980
 
1981
-	return $input;
1981
+    return $input;
1982 1982
 }
1983 1983
 
1984 1984
 /**
@@ -1989,19 +1989,19 @@  discard block
 block discarded – undo
1989 1989
  */
1990 1990
 function sd_get_max_height_input( $type = 'max_height', $overwrite = array() ) {
1991 1991
 
1992
-	$defaults = array(
1993
-		'type'        => 'text',
1994
-		'title'       => __( 'Max height', 'super-duper' ),
1995
-		'value'       => '',
1996
-		'default'     => '',
1997
-		'placeholder' => '',
1998
-		'desc_tip'    => true,
1999
-		'group'       => __( 'Wrapper Styles', 'super-duper' ),
2000
-	);
1992
+    $defaults = array(
1993
+        'type'        => 'text',
1994
+        'title'       => __( 'Max height', 'super-duper' ),
1995
+        'value'       => '',
1996
+        'default'     => '',
1997
+        'placeholder' => '',
1998
+        'desc_tip'    => true,
1999
+        'group'       => __( 'Wrapper Styles', 'super-duper' ),
2000
+    );
2001 2001
 
2002
-	$input = wp_parse_args( $overwrite, $defaults );
2002
+    $input = wp_parse_args( $overwrite, $defaults );
2003 2003
 
2004
-	return $input;
2004
+    return $input;
2005 2005
 }
2006 2006
 
2007 2007
 /**
@@ -2012,23 +2012,23 @@  discard block
 block discarded – undo
2012 2012
  */
2013 2013
 function sd_get_scrollbars_input( $type = 'scrollbars', $overwrite = array() ) {
2014 2014
 
2015
-	$options = array(
2016
-		''               => __( 'Default', 'super-duper' ),
2017
-		'scrollbars-ios' => __( 'IOS Style', 'super-duper' ),
2018
-	);
2015
+    $options = array(
2016
+        ''               => __( 'Default', 'super-duper' ),
2017
+        'scrollbars-ios' => __( 'IOS Style', 'super-duper' ),
2018
+    );
2019 2019
 
2020
-	$defaults = array(
2021
-		'type'     => 'select',
2022
-		'title'    => __( 'Scrollbars', 'super-duper' ),
2023
-		'options'  => $options,
2024
-		'default'  => '',
2025
-		'desc_tip' => true,
2026
-		'group'    => __( 'Wrapper Styles', 'super-duper' ),
2027
-	);
2020
+    $defaults = array(
2021
+        'type'     => 'select',
2022
+        'title'    => __( 'Scrollbars', 'super-duper' ),
2023
+        'options'  => $options,
2024
+        'default'  => '',
2025
+        'desc_tip' => true,
2026
+        'group'    => __( 'Wrapper Styles', 'super-duper' ),
2027
+    );
2028 2028
 
2029
-	$input = wp_parse_args( $overwrite, $defaults );
2029
+    $input = wp_parse_args( $overwrite, $defaults );
2030 2030
 
2031
-	return $input;
2031
+    return $input;
2032 2032
 }
2033 2033
 
2034 2034
 /**
@@ -2040,415 +2040,415 @@  discard block
 block discarded – undo
2040 2040
  * @todo find best way to use px- py- or general p-
2041 2041
  */
2042 2042
 function sd_build_aui_class( $args ) {
2043
-	global $aui_bs5;
2044
-
2045
-	$classes = array();
2046
-
2047
-	if ( $aui_bs5 ) {
2048
-		$p_ml = 'ms-';
2049
-		$p_mr = 'me-';
2050
-
2051
-		$p_pl = 'ps-';
2052
-		$p_pr = 'pe-';
2053
-	} else {
2054
-		$p_ml = 'ml-';
2055
-		$p_mr = 'mr-';
2056
-
2057
-		$p_pl = 'pl-';
2058
-		$p_pr = 'pr-';
2059
-	}
2060
-
2061
-	// margins.
2062
-	if ( isset( $args['mt'] ) && $args['mt'] !== '' ) {
2063
-		$classes[] = 'mt-' . sanitize_html_class( $args['mt'] );
2064
-		$mt        = $args['mt'];
2065
-	} else {
2066
-		$mt = null;
2067
-	}
2068
-	if ( isset( $args['mr'] ) && $args['mr'] !== '' ) {
2069
-		$classes[] = $p_mr . sanitize_html_class( $args['mr'] );
2070
-		$mr        = $args['mr'];
2071
-	} else {
2072
-		$mr = null;
2073
-	}
2074
-	if ( isset( $args['mb'] ) && $args['mb'] !== '' ) {
2075
-		$classes[] = 'mb-' . sanitize_html_class( $args['mb'] );
2076
-		$mb        = $args['mb'];
2077
-	} else {
2078
-		$mb = null;
2079
-	}
2080
-	if ( isset( $args['ml'] ) && $args['ml'] !== '' ) {
2081
-		$classes[] = $p_ml . sanitize_html_class( $args['ml'] );
2082
-		$ml        = $args['ml'];
2083
-	} else {
2084
-		$ml = null;
2085
-	}
2086
-
2087
-	// margins tablet.
2088
-	if ( isset( $args['mt_md'] ) && $args['mt_md'] !== '' ) {
2089
-		$classes[] = 'mt-md-' . sanitize_html_class( $args['mt_md'] );
2090
-		$mt_md     = $args['mt_md'];
2091
-	} else {
2092
-		$mt_md = null;
2093
-	}
2094
-	if ( isset( $args['mr_md'] ) && $args['mr_md'] !== '' ) {
2095
-		$classes[] = $p_mr . 'md-' . sanitize_html_class( $args['mr_md'] );
2096
-		$mt_md     = $args['mr_md'];
2097
-	} else {
2098
-		$mr_md = null;
2099
-	}
2100
-	if ( isset( $args['mb_md'] ) && $args['mb_md'] !== '' ) {
2101
-		$classes[] = 'mb-md-' . sanitize_html_class( $args['mb_md'] );
2102
-		$mt_md     = $args['mb_md'];
2103
-	} else {
2104
-		$mb_md = null;
2105
-	}
2106
-	if ( isset( $args['ml_md'] ) && $args['ml_md'] !== '' ) {
2107
-		$classes[] = $p_ml . 'md-' . sanitize_html_class( $args['ml_md'] );
2108
-		$mt_md     = $args['ml_md'];
2109
-	} else {
2110
-		$ml_md = null;
2111
-	}
2112
-
2113
-	// margins desktop.
2114
-	if ( isset( $args['mt_lg'] ) && $args['mt_lg'] !== '' ) {
2115
-		if ( $mt == null && $mt_md == null ) {
2116
-			$classes[] = 'mt-' . sanitize_html_class( $args['mt_lg'] );
2117
-		} else {
2118
-			$classes[] = 'mt-lg-' . sanitize_html_class( $args['mt_lg'] );
2119
-		}
2120
-	}
2121
-	if ( isset( $args['mr_lg'] ) && $args['mr_lg'] !== '' ) {
2122
-		if ( $mr == null && $mr_md == null ) {
2123
-			$classes[] = $p_mr . sanitize_html_class( $args['mr_lg'] );
2124
-		} else {
2125
-			$classes[] = $p_mr . 'lg-' . sanitize_html_class( $args['mr_lg'] );
2126
-		}
2127
-	}
2128
-	if ( isset( $args['mb_lg'] ) && $args['mb_lg'] !== '' ) {
2129
-		if ( $mb == null && $mb_md == null ) {
2130
-			$classes[] = 'mb-' . sanitize_html_class( $args['mb_lg'] );
2131
-		} else {
2132
-			$classes[] = 'mb-lg-' . sanitize_html_class( $args['mb_lg'] );
2133
-		}
2134
-	}
2135
-	if ( isset( $args['ml_lg'] ) && $args['ml_lg'] !== '' ) {
2136
-		if ( $ml == null && $ml_md == null ) {
2137
-			$classes[] = $p_ml . sanitize_html_class( $args['ml_lg'] );
2138
-		} else {
2139
-			$classes[] = $p_ml . 'lg-' . sanitize_html_class( $args['ml_lg'] );
2140
-		}
2141
-	}
2142
-
2143
-	// padding.
2144
-	if ( isset( $args['pt'] ) && $args['pt'] !== '' ) {
2145
-		$classes[] = 'pt-' . sanitize_html_class( $args['pt'] );
2146
-		$pt        = $args['pt'];
2147
-	} else {
2148
-		$pt = null;
2149
-	}
2150
-	if ( isset( $args['pr'] ) && $args['pr'] !== '' ) {
2151
-		$classes[] = $p_pr . sanitize_html_class( $args['pr'] );
2152
-		$pr        = $args['pr'];
2153
-	} else {
2154
-		$pr = null;
2155
-	}
2156
-	if ( isset( $args['pb'] ) && $args['pb'] !== '' ) {
2157
-		$classes[] = 'pb-' . sanitize_html_class( $args['pb'] );
2158
-		$pb        = $args['pb'];
2159
-	} else {
2160
-		$pb = null;
2161
-	}
2162
-	if ( isset( $args['pl'] ) && $args['pl'] !== '' ) {
2163
-		$classes[] = $p_pl . sanitize_html_class( $args['pl'] );
2164
-		$pl        = $args['pl'];
2165
-	} else {
2166
-		$pl = null;
2167
-	}
2168
-
2169
-	// padding tablet.
2170
-	if ( isset( $args['pt_md'] ) && $args['pt_md'] !== '' ) {
2171
-		$classes[] = 'pt-md-' . sanitize_html_class( $args['pt_md'] );
2172
-		$pt_md     = $args['pt_md'];
2173
-	} else {
2174
-		$pt_md = null;
2175
-	}
2176
-	if ( isset( $args['pr_md'] ) && $args['pr_md'] !== '' ) {
2177
-		$classes[] = $p_pr . 'md-' . sanitize_html_class( $args['pr_md'] );
2178
-		$pr_md     = $args['pr_md'];
2179
-	} else {
2180
-		$pr_md = null;
2181
-	}
2182
-	if ( isset( $args['pb_md'] ) && $args['pb_md'] !== '' ) {
2183
-		$classes[] = 'pb-md-' . sanitize_html_class( $args['pb_md'] );
2184
-		$pb_md     = $args['pb_md'];
2185
-	} else {
2186
-		$pb_md = null;
2187
-	}
2188
-	if ( isset( $args['pl_md'] ) && $args['pl_md'] !== '' ) {
2189
-		$classes[] = $p_pl . 'md-' . sanitize_html_class( $args['pl_md'] );
2190
-		$pl_md     = $args['pl_md'];
2191
-	} else {
2192
-		$pl_md = null;
2193
-	}
2194
-
2195
-	// padding desktop.
2196
-	if ( isset( $args['pt_lg'] ) && $args['pt_lg'] !== '' ) {
2197
-		if ( $pt == null && $pt_md == null ) {
2198
-			$classes[] = 'pt-' . sanitize_html_class( $args['pt_lg'] );
2199
-		} else {
2200
-			$classes[] = 'pt-lg-' . sanitize_html_class( $args['pt_lg'] );
2201
-		}
2202
-	}
2203
-	if ( isset( $args['pr_lg'] ) && $args['pr_lg'] !== '' ) {
2204
-		if ( $pr == null && $pr_md == null ) {
2205
-			$classes[] = $p_pr . sanitize_html_class( $args['pr_lg'] );
2206
-		} else {
2207
-			$classes[] = $p_pr . 'lg-' . sanitize_html_class( $args['pr_lg'] );
2208
-		}
2209
-	}
2210
-	if ( isset( $args['pb_lg'] ) && $args['pb_lg'] !== '' ) {
2211
-		if ( $pb == null && $pb_md == null ) {
2212
-			$classes[] = 'pb-' . sanitize_html_class( $args['pb_lg'] );
2213
-		} else {
2214
-			$classes[] = 'pb-lg-' . sanitize_html_class( $args['pb_lg'] );
2215
-		}
2216
-	}
2217
-	if ( isset( $args['pl_lg'] ) && $args['pl_lg'] !== '' ) {
2218
-		if ( $pl == null && $pl_md == null ) {
2219
-			$classes[] = $p_pl . sanitize_html_class( $args['pl_lg'] );
2220
-		} else {
2221
-			$classes[] = $p_pl . 'lg-' . sanitize_html_class( $args['pl_lg'] );
2222
-		}
2223
-	}
2224
-
2225
-	// row cols, mobile, tablet, desktop
2226
-	if ( ! empty( $args['row_cols'] ) && $args['row_cols'] !== '' ) {
2227
-		$classes[] = sanitize_html_class( 'row-cols-' . $args['row_cols'] );
2228
-		$row_cols  = $args['row_cols'];
2229
-	} else {
2230
-		$row_cols = null;
2231
-	}
2232
-	if ( ! empty( $args['row_cols_md'] ) && $args['row_cols_md'] !== '' ) {
2233
-		$classes[]   = sanitize_html_class( 'row-cols-md-' . $args['row_cols_md'] );
2234
-		$row_cols_md = $args['row_cols_md'];
2235
-	} else {
2236
-		$row_cols_md = null;
2237
-	}
2238
-	if ( ! empty( $args['row_cols_lg'] ) && $args['row_cols_lg'] !== '' ) {
2239
-		if ( $row_cols == null && $row_cols_md == null ) {
2240
-			$classes[] = sanitize_html_class( 'row-cols-' . $args['row_cols_lg'] );
2241
-		} else {
2242
-			$classes[] = sanitize_html_class( 'row-cols-lg-' . $args['row_cols_lg'] );
2243
-		}
2244
-	}
2245
-
2246
-	// columns , mobile, tablet, desktop
2247
-	if ( ! empty( $args['col'] ) && $args['col'] !== '' ) {
2248
-		$classes[] = sanitize_html_class( 'col-' . $args['col'] );
2249
-		$col       = $args['col'];
2250
-	} else {
2251
-		$col = null;
2252
-	}
2253
-	if ( ! empty( $args['col_md'] ) && $args['col_md'] !== '' ) {
2254
-		$classes[] = sanitize_html_class( 'col-md-' . $args['col_md'] );
2255
-		$col_md    = $args['col_md'];
2256
-	} else {
2257
-		$col_md = null;
2258
-	}
2259
-	if ( ! empty( $args['col_lg'] ) && $args['col_lg'] !== '' ) {
2260
-		if ( $col == null && $col_md == null ) {
2261
-			$classes[] = sanitize_html_class( 'col-' . $args['col_lg'] );
2262
-		} else {
2263
-			$classes[] = sanitize_html_class( 'col-lg-' . $args['col_lg'] );
2264
-		}
2265
-	}
2266
-
2267
-	// border
2268
-	if ( isset( $args['border'] ) && ( $args['border'] == 'none' || $args['border'] === '0' || $args['border'] === 0 ) ) {
2269
-		$classes[] = 'border-0';
2270
-	} elseif ( ! empty( $args['border'] ) ) {
2271
-		$border_class = 'border';
2272
-		if ( ! empty( $args['border_type'] ) && strpos( $args['border_type'], '-0' ) === false ) {
2273
-			$border_class = '';
2274
-		}
2275
-		$classes[] = $border_class . ' border-' . sanitize_html_class( $args['border'] );
2276
-	}
2277
-
2278
-	// border radius type
2279
-	if ( ! empty( $args['rounded'] ) ) {
2280
-		$classes[] = sanitize_html_class( $args['rounded'] );
2281
-	}
2282
-
2283
-	// border radius size BS4
2284
-	if ( isset( $args['rounded_size'] ) && in_array( $args['rounded_size'], array( 'sm', 'lg' ) ) ) {
2285
-		$classes[] = 'rounded-' . sanitize_html_class( $args['rounded_size'] );
2286
-		// if we set a size then we need to remove "rounded" if set
2287
-		if ( ( $key = array_search( 'rounded', $classes ) ) !== false ) {
2288
-			unset( $classes[ $key ] );
2289
-		}
2290
-	} else {
2291
-
2292
-		// border radius size , mobile, tablet, desktop
2293
-		if ( isset( $args['rounded_size'] ) && $args['rounded_size'] !== '' ) {
2294
-			$classes[]    = sanitize_html_class( 'rounded-' . $args['rounded_size'] );
2295
-			$rounded_size = $args['rounded_size'];
2296
-		} else {
2297
-			$rounded_size = null;
2298
-		}
2299
-		if ( isset( $args['rounded_size_md'] ) && $args['rounded_size_md'] !== '' ) {
2300
-			$classes[]       = sanitize_html_class( 'rounded-md-' . $args['rounded_size_md'] );
2301
-			$rounded_size_md = $args['rounded_size_md'];
2302
-		} else {
2303
-			$rounded_size_md = null;
2304
-		}
2305
-		if ( isset( $args['rounded_size_lg'] ) && $args['rounded_size_lg'] !== '' ) {
2306
-			if ( $rounded_size == null && $rounded_size_md == null ) {
2307
-				$classes[] = sanitize_html_class( 'rounded-' . $args['rounded_size_lg'] );
2308
-			} else {
2309
-				$classes[] = sanitize_html_class( 'rounded-lg-' . $args['rounded_size_lg'] );
2310
-			}
2311
-		}
2312
-	}
2313
-
2314
-	// shadow
2315
-	//if ( !empty( $args['shadow'] ) ) { $classes[] = sanitize_html_class($args['shadow']); }
2316
-
2317
-	// background
2318
-	if ( ! empty( $args['bg'] ) ) {
2319
-		$classes[] = 'bg-' . sanitize_html_class( $args['bg'] );
2320
-	}
2321
-
2322
-	// text_color
2323
-	if ( ! empty( $args['text_color'] ) ) {
2324
-		$classes[] = 'text-' . sanitize_html_class( $args['text_color'] );
2325
-	}
2326
-
2327
-	// text_align
2328
-	if ( ! empty( $args['text_justify'] ) ) {
2329
-		$classes[] = 'text-justify';
2330
-	} else {
2331
-		if ( ! empty( $args['text_align'] ) ) {
2332
-			$classes[]  = sanitize_html_class( $args['text_align'] );
2333
-			$text_align = $args['text_align'];
2334
-		} else {
2335
-			$text_align = null;
2336
-		}
2337
-		if ( ! empty( $args['text_align_md'] ) && $args['text_align_md'] !== '' ) {
2338
-			$classes[]     = sanitize_html_class( $args['text_align_md'] );
2339
-			$text_align_md = $args['text_align_md'];
2340
-		} else {
2341
-			$text_align_md = null;
2342
-		}
2343
-		if ( ! empty( $args['text_align_lg'] ) && $args['text_align_lg'] !== '' ) {
2344
-			if ( $text_align == null && $text_align_md == null ) {
2345
-				$classes[] = sanitize_html_class( str_replace( '-lg', '', $args['text_align_lg'] ) );
2346
-			} else {
2347
-				$classes[] = sanitize_html_class( $args['text_align_lg'] );
2348
-			}
2349
-		}
2350
-	}
2351
-
2352
-	// display
2353
-	if ( ! empty( $args['display'] ) ) {
2354
-		$classes[] = sanitize_html_class( $args['display'] );
2355
-		$display   = $args['display'];
2356
-	} else {
2357
-		$display = null;
2358
-	}
2359
-	if ( ! empty( $args['display_md'] ) && $args['display_md'] !== '' ) {
2360
-		$classes[]  = sanitize_html_class( $args['display_md'] );
2361
-		$display_md = $args['display_md'];
2362
-	} else {
2363
-		$display_md = null;
2364
-	}
2365
-	if ( ! empty( $args['display_lg'] ) && $args['display_lg'] !== '' ) {
2366
-		if ( $display == null && $display_md == null ) {
2367
-			$classes[] = sanitize_html_class( str_replace( '-lg', '', $args['display_lg'] ) );
2368
-		} else {
2369
-			$classes[] = sanitize_html_class( $args['display_lg'] );
2370
-		}
2371
-	}
2372
-
2373
-	// bgtus - background transparent until scroll
2374
-	if ( ! empty( $args['bgtus'] ) ) {
2375
-		$classes[] = sanitize_html_class( 'bg-transparent-until-scroll' );
2376
-	}
2377
-
2378
-	// cscos - change color scheme on scroll
2379
-	if ( ! empty( $args['bgtus'] ) && ! empty( $args['cscos'] ) ) {
2380
-		$classes[] = sanitize_html_class( 'color-scheme-flip-on-scroll' );
2381
-	}
2382
-
2383
-	// hover animations
2384
-	if ( ! empty( $args['hover_animations'] ) ) {
2385
-		$classes[] = sd_sanitize_html_classes( str_replace( ',', ' ', $args['hover_animations'] ) );
2386
-	}
2387
-
2388
-	// absolute_position
2389
-	if ( ! empty( $args['absolute_position'] ) ) {
2390
-		if ( 'top-left' === $args['absolute_position'] ) {
2391
-			$classes[] = 'start-0 top-0';
2392
-		} elseif ( 'top-center' === $args['absolute_position'] ) {
2393
-			$classes[] = 'start-50 top-0 translate-middle';
2394
-		} elseif ( 'top-right' === $args['absolute_position'] ) {
2395
-			$classes[] = 'end-0 top-0';
2396
-		} elseif ( 'center-left' === $args['absolute_position'] ) {
2397
-			$classes[] = 'start-0 top-50';
2398
-		} elseif ( 'center' === $args['absolute_position'] ) {
2399
-			$classes[] = 'start-50 top-50 translate-middle';
2400
-		} elseif ( 'center-right' === $args['absolute_position'] ) {
2401
-			$classes[] = 'end-0 top-50';
2402
-		} elseif ( 'bottom-left' === $args['absolute_position'] ) {
2403
-			$classes[] = 'start-0 bottom-0';
2404
-		} elseif ( 'bottom-center' === $args['absolute_position'] ) {
2405
-			$classes[] = 'start-50 bottom-0 translate-middle';
2406
-		} elseif ( 'bottom-right' === $args['absolute_position'] ) {
2407
-			$classes[] = 'end-0 bottom-0';
2408
-		}
2409
-	}
2410
-
2411
-	// build classes from build keys
2412
-	$build_keys = sd_get_class_build_keys();
2413
-	if ( ! empty( $build_keys ) ) {
2414
-		foreach ( $build_keys as $key ) {
2415
-
2416
-			if ( substr( $key, -4 ) == '-MTD' ) {
2417
-
2418
-				$k = str_replace( '-MTD', '', $key );
2419
-
2420
-				// Mobile, Tablet, Desktop
2421
-				if ( ! empty( $args[ $k ] ) && $args[ $k ] !== '' ) {
2422
-					$classes[] = sanitize_html_class( $args[ $k ] );
2423
-					$v         = $args[ $k ];
2424
-				} else {
2425
-					$v = null;
2426
-				}
2427
-				if ( ! empty( $args[ $k . '_md' ] ) && $args[ $k . '_md' ] !== '' ) {
2428
-					$classes[] = sanitize_html_class( $args[ $k . '_md' ] );
2429
-					$v_md      = $args[ $k . '_md' ];
2430
-				} else {
2431
-					$v_md = null;
2432
-				}
2433
-				if ( ! empty( $args[ $k . '_lg' ] ) && $args[ $k . '_lg' ] !== '' ) {
2434
-					if ( $v == null && $v_md == null ) {
2435
-						$classes[] = sanitize_html_class( str_replace( '-lg', '', $args[ $k . '_lg' ] ) );
2436
-					} else {
2437
-						$classes[] = sanitize_html_class( $args[ $k . '_lg' ] );
2438
-					}
2439
-				}
2440
-			} else {
2441
-				if ( $key == 'font_size' && ! empty( $args[ $key ] ) && $args[ $key ] == 'custom' ) {
2442
-					continue;
2443
-				}
2444
-				if ( ! empty( $args[ $key ] ) ) {
2445
-					$classes[] = sd_sanitize_html_classes( $args[ $key ] );
2446
-				}
2447
-			}
2448
-		}
2449
-	}
2450
-
2451
-	return implode( ' ', $classes );
2043
+    global $aui_bs5;
2044
+
2045
+    $classes = array();
2046
+
2047
+    if ( $aui_bs5 ) {
2048
+        $p_ml = 'ms-';
2049
+        $p_mr = 'me-';
2050
+
2051
+        $p_pl = 'ps-';
2052
+        $p_pr = 'pe-';
2053
+    } else {
2054
+        $p_ml = 'ml-';
2055
+        $p_mr = 'mr-';
2056
+
2057
+        $p_pl = 'pl-';
2058
+        $p_pr = 'pr-';
2059
+    }
2060
+
2061
+    // margins.
2062
+    if ( isset( $args['mt'] ) && $args['mt'] !== '' ) {
2063
+        $classes[] = 'mt-' . sanitize_html_class( $args['mt'] );
2064
+        $mt        = $args['mt'];
2065
+    } else {
2066
+        $mt = null;
2067
+    }
2068
+    if ( isset( $args['mr'] ) && $args['mr'] !== '' ) {
2069
+        $classes[] = $p_mr . sanitize_html_class( $args['mr'] );
2070
+        $mr        = $args['mr'];
2071
+    } else {
2072
+        $mr = null;
2073
+    }
2074
+    if ( isset( $args['mb'] ) && $args['mb'] !== '' ) {
2075
+        $classes[] = 'mb-' . sanitize_html_class( $args['mb'] );
2076
+        $mb        = $args['mb'];
2077
+    } else {
2078
+        $mb = null;
2079
+    }
2080
+    if ( isset( $args['ml'] ) && $args['ml'] !== '' ) {
2081
+        $classes[] = $p_ml . sanitize_html_class( $args['ml'] );
2082
+        $ml        = $args['ml'];
2083
+    } else {
2084
+        $ml = null;
2085
+    }
2086
+
2087
+    // margins tablet.
2088
+    if ( isset( $args['mt_md'] ) && $args['mt_md'] !== '' ) {
2089
+        $classes[] = 'mt-md-' . sanitize_html_class( $args['mt_md'] );
2090
+        $mt_md     = $args['mt_md'];
2091
+    } else {
2092
+        $mt_md = null;
2093
+    }
2094
+    if ( isset( $args['mr_md'] ) && $args['mr_md'] !== '' ) {
2095
+        $classes[] = $p_mr . 'md-' . sanitize_html_class( $args['mr_md'] );
2096
+        $mt_md     = $args['mr_md'];
2097
+    } else {
2098
+        $mr_md = null;
2099
+    }
2100
+    if ( isset( $args['mb_md'] ) && $args['mb_md'] !== '' ) {
2101
+        $classes[] = 'mb-md-' . sanitize_html_class( $args['mb_md'] );
2102
+        $mt_md     = $args['mb_md'];
2103
+    } else {
2104
+        $mb_md = null;
2105
+    }
2106
+    if ( isset( $args['ml_md'] ) && $args['ml_md'] !== '' ) {
2107
+        $classes[] = $p_ml . 'md-' . sanitize_html_class( $args['ml_md'] );
2108
+        $mt_md     = $args['ml_md'];
2109
+    } else {
2110
+        $ml_md = null;
2111
+    }
2112
+
2113
+    // margins desktop.
2114
+    if ( isset( $args['mt_lg'] ) && $args['mt_lg'] !== '' ) {
2115
+        if ( $mt == null && $mt_md == null ) {
2116
+            $classes[] = 'mt-' . sanitize_html_class( $args['mt_lg'] );
2117
+        } else {
2118
+            $classes[] = 'mt-lg-' . sanitize_html_class( $args['mt_lg'] );
2119
+        }
2120
+    }
2121
+    if ( isset( $args['mr_lg'] ) && $args['mr_lg'] !== '' ) {
2122
+        if ( $mr == null && $mr_md == null ) {
2123
+            $classes[] = $p_mr . sanitize_html_class( $args['mr_lg'] );
2124
+        } else {
2125
+            $classes[] = $p_mr . 'lg-' . sanitize_html_class( $args['mr_lg'] );
2126
+        }
2127
+    }
2128
+    if ( isset( $args['mb_lg'] ) && $args['mb_lg'] !== '' ) {
2129
+        if ( $mb == null && $mb_md == null ) {
2130
+            $classes[] = 'mb-' . sanitize_html_class( $args['mb_lg'] );
2131
+        } else {
2132
+            $classes[] = 'mb-lg-' . sanitize_html_class( $args['mb_lg'] );
2133
+        }
2134
+    }
2135
+    if ( isset( $args['ml_lg'] ) && $args['ml_lg'] !== '' ) {
2136
+        if ( $ml == null && $ml_md == null ) {
2137
+            $classes[] = $p_ml . sanitize_html_class( $args['ml_lg'] );
2138
+        } else {
2139
+            $classes[] = $p_ml . 'lg-' . sanitize_html_class( $args['ml_lg'] );
2140
+        }
2141
+    }
2142
+
2143
+    // padding.
2144
+    if ( isset( $args['pt'] ) && $args['pt'] !== '' ) {
2145
+        $classes[] = 'pt-' . sanitize_html_class( $args['pt'] );
2146
+        $pt        = $args['pt'];
2147
+    } else {
2148
+        $pt = null;
2149
+    }
2150
+    if ( isset( $args['pr'] ) && $args['pr'] !== '' ) {
2151
+        $classes[] = $p_pr . sanitize_html_class( $args['pr'] );
2152
+        $pr        = $args['pr'];
2153
+    } else {
2154
+        $pr = null;
2155
+    }
2156
+    if ( isset( $args['pb'] ) && $args['pb'] !== '' ) {
2157
+        $classes[] = 'pb-' . sanitize_html_class( $args['pb'] );
2158
+        $pb        = $args['pb'];
2159
+    } else {
2160
+        $pb = null;
2161
+    }
2162
+    if ( isset( $args['pl'] ) && $args['pl'] !== '' ) {
2163
+        $classes[] = $p_pl . sanitize_html_class( $args['pl'] );
2164
+        $pl        = $args['pl'];
2165
+    } else {
2166
+        $pl = null;
2167
+    }
2168
+
2169
+    // padding tablet.
2170
+    if ( isset( $args['pt_md'] ) && $args['pt_md'] !== '' ) {
2171
+        $classes[] = 'pt-md-' . sanitize_html_class( $args['pt_md'] );
2172
+        $pt_md     = $args['pt_md'];
2173
+    } else {
2174
+        $pt_md = null;
2175
+    }
2176
+    if ( isset( $args['pr_md'] ) && $args['pr_md'] !== '' ) {
2177
+        $classes[] = $p_pr . 'md-' . sanitize_html_class( $args['pr_md'] );
2178
+        $pr_md     = $args['pr_md'];
2179
+    } else {
2180
+        $pr_md = null;
2181
+    }
2182
+    if ( isset( $args['pb_md'] ) && $args['pb_md'] !== '' ) {
2183
+        $classes[] = 'pb-md-' . sanitize_html_class( $args['pb_md'] );
2184
+        $pb_md     = $args['pb_md'];
2185
+    } else {
2186
+        $pb_md = null;
2187
+    }
2188
+    if ( isset( $args['pl_md'] ) && $args['pl_md'] !== '' ) {
2189
+        $classes[] = $p_pl . 'md-' . sanitize_html_class( $args['pl_md'] );
2190
+        $pl_md     = $args['pl_md'];
2191
+    } else {
2192
+        $pl_md = null;
2193
+    }
2194
+
2195
+    // padding desktop.
2196
+    if ( isset( $args['pt_lg'] ) && $args['pt_lg'] !== '' ) {
2197
+        if ( $pt == null && $pt_md == null ) {
2198
+            $classes[] = 'pt-' . sanitize_html_class( $args['pt_lg'] );
2199
+        } else {
2200
+            $classes[] = 'pt-lg-' . sanitize_html_class( $args['pt_lg'] );
2201
+        }
2202
+    }
2203
+    if ( isset( $args['pr_lg'] ) && $args['pr_lg'] !== '' ) {
2204
+        if ( $pr == null && $pr_md == null ) {
2205
+            $classes[] = $p_pr . sanitize_html_class( $args['pr_lg'] );
2206
+        } else {
2207
+            $classes[] = $p_pr . 'lg-' . sanitize_html_class( $args['pr_lg'] );
2208
+        }
2209
+    }
2210
+    if ( isset( $args['pb_lg'] ) && $args['pb_lg'] !== '' ) {
2211
+        if ( $pb == null && $pb_md == null ) {
2212
+            $classes[] = 'pb-' . sanitize_html_class( $args['pb_lg'] );
2213
+        } else {
2214
+            $classes[] = 'pb-lg-' . sanitize_html_class( $args['pb_lg'] );
2215
+        }
2216
+    }
2217
+    if ( isset( $args['pl_lg'] ) && $args['pl_lg'] !== '' ) {
2218
+        if ( $pl == null && $pl_md == null ) {
2219
+            $classes[] = $p_pl . sanitize_html_class( $args['pl_lg'] );
2220
+        } else {
2221
+            $classes[] = $p_pl . 'lg-' . sanitize_html_class( $args['pl_lg'] );
2222
+        }
2223
+    }
2224
+
2225
+    // row cols, mobile, tablet, desktop
2226
+    if ( ! empty( $args['row_cols'] ) && $args['row_cols'] !== '' ) {
2227
+        $classes[] = sanitize_html_class( 'row-cols-' . $args['row_cols'] );
2228
+        $row_cols  = $args['row_cols'];
2229
+    } else {
2230
+        $row_cols = null;
2231
+    }
2232
+    if ( ! empty( $args['row_cols_md'] ) && $args['row_cols_md'] !== '' ) {
2233
+        $classes[]   = sanitize_html_class( 'row-cols-md-' . $args['row_cols_md'] );
2234
+        $row_cols_md = $args['row_cols_md'];
2235
+    } else {
2236
+        $row_cols_md = null;
2237
+    }
2238
+    if ( ! empty( $args['row_cols_lg'] ) && $args['row_cols_lg'] !== '' ) {
2239
+        if ( $row_cols == null && $row_cols_md == null ) {
2240
+            $classes[] = sanitize_html_class( 'row-cols-' . $args['row_cols_lg'] );
2241
+        } else {
2242
+            $classes[] = sanitize_html_class( 'row-cols-lg-' . $args['row_cols_lg'] );
2243
+        }
2244
+    }
2245
+
2246
+    // columns , mobile, tablet, desktop
2247
+    if ( ! empty( $args['col'] ) && $args['col'] !== '' ) {
2248
+        $classes[] = sanitize_html_class( 'col-' . $args['col'] );
2249
+        $col       = $args['col'];
2250
+    } else {
2251
+        $col = null;
2252
+    }
2253
+    if ( ! empty( $args['col_md'] ) && $args['col_md'] !== '' ) {
2254
+        $classes[] = sanitize_html_class( 'col-md-' . $args['col_md'] );
2255
+        $col_md    = $args['col_md'];
2256
+    } else {
2257
+        $col_md = null;
2258
+    }
2259
+    if ( ! empty( $args['col_lg'] ) && $args['col_lg'] !== '' ) {
2260
+        if ( $col == null && $col_md == null ) {
2261
+            $classes[] = sanitize_html_class( 'col-' . $args['col_lg'] );
2262
+        } else {
2263
+            $classes[] = sanitize_html_class( 'col-lg-' . $args['col_lg'] );
2264
+        }
2265
+    }
2266
+
2267
+    // border
2268
+    if ( isset( $args['border'] ) && ( $args['border'] == 'none' || $args['border'] === '0' || $args['border'] === 0 ) ) {
2269
+        $classes[] = 'border-0';
2270
+    } elseif ( ! empty( $args['border'] ) ) {
2271
+        $border_class = 'border';
2272
+        if ( ! empty( $args['border_type'] ) && strpos( $args['border_type'], '-0' ) === false ) {
2273
+            $border_class = '';
2274
+        }
2275
+        $classes[] = $border_class . ' border-' . sanitize_html_class( $args['border'] );
2276
+    }
2277
+
2278
+    // border radius type
2279
+    if ( ! empty( $args['rounded'] ) ) {
2280
+        $classes[] = sanitize_html_class( $args['rounded'] );
2281
+    }
2282
+
2283
+    // border radius size BS4
2284
+    if ( isset( $args['rounded_size'] ) && in_array( $args['rounded_size'], array( 'sm', 'lg' ) ) ) {
2285
+        $classes[] = 'rounded-' . sanitize_html_class( $args['rounded_size'] );
2286
+        // if we set a size then we need to remove "rounded" if set
2287
+        if ( ( $key = array_search( 'rounded', $classes ) ) !== false ) {
2288
+            unset( $classes[ $key ] );
2289
+        }
2290
+    } else {
2291
+
2292
+        // border radius size , mobile, tablet, desktop
2293
+        if ( isset( $args['rounded_size'] ) && $args['rounded_size'] !== '' ) {
2294
+            $classes[]    = sanitize_html_class( 'rounded-' . $args['rounded_size'] );
2295
+            $rounded_size = $args['rounded_size'];
2296
+        } else {
2297
+            $rounded_size = null;
2298
+        }
2299
+        if ( isset( $args['rounded_size_md'] ) && $args['rounded_size_md'] !== '' ) {
2300
+            $classes[]       = sanitize_html_class( 'rounded-md-' . $args['rounded_size_md'] );
2301
+            $rounded_size_md = $args['rounded_size_md'];
2302
+        } else {
2303
+            $rounded_size_md = null;
2304
+        }
2305
+        if ( isset( $args['rounded_size_lg'] ) && $args['rounded_size_lg'] !== '' ) {
2306
+            if ( $rounded_size == null && $rounded_size_md == null ) {
2307
+                $classes[] = sanitize_html_class( 'rounded-' . $args['rounded_size_lg'] );
2308
+            } else {
2309
+                $classes[] = sanitize_html_class( 'rounded-lg-' . $args['rounded_size_lg'] );
2310
+            }
2311
+        }
2312
+    }
2313
+
2314
+    // shadow
2315
+    //if ( !empty( $args['shadow'] ) ) { $classes[] = sanitize_html_class($args['shadow']); }
2316
+
2317
+    // background
2318
+    if ( ! empty( $args['bg'] ) ) {
2319
+        $classes[] = 'bg-' . sanitize_html_class( $args['bg'] );
2320
+    }
2321
+
2322
+    // text_color
2323
+    if ( ! empty( $args['text_color'] ) ) {
2324
+        $classes[] = 'text-' . sanitize_html_class( $args['text_color'] );
2325
+    }
2326
+
2327
+    // text_align
2328
+    if ( ! empty( $args['text_justify'] ) ) {
2329
+        $classes[] = 'text-justify';
2330
+    } else {
2331
+        if ( ! empty( $args['text_align'] ) ) {
2332
+            $classes[]  = sanitize_html_class( $args['text_align'] );
2333
+            $text_align = $args['text_align'];
2334
+        } else {
2335
+            $text_align = null;
2336
+        }
2337
+        if ( ! empty( $args['text_align_md'] ) && $args['text_align_md'] !== '' ) {
2338
+            $classes[]     = sanitize_html_class( $args['text_align_md'] );
2339
+            $text_align_md = $args['text_align_md'];
2340
+        } else {
2341
+            $text_align_md = null;
2342
+        }
2343
+        if ( ! empty( $args['text_align_lg'] ) && $args['text_align_lg'] !== '' ) {
2344
+            if ( $text_align == null && $text_align_md == null ) {
2345
+                $classes[] = sanitize_html_class( str_replace( '-lg', '', $args['text_align_lg'] ) );
2346
+            } else {
2347
+                $classes[] = sanitize_html_class( $args['text_align_lg'] );
2348
+            }
2349
+        }
2350
+    }
2351
+
2352
+    // display
2353
+    if ( ! empty( $args['display'] ) ) {
2354
+        $classes[] = sanitize_html_class( $args['display'] );
2355
+        $display   = $args['display'];
2356
+    } else {
2357
+        $display = null;
2358
+    }
2359
+    if ( ! empty( $args['display_md'] ) && $args['display_md'] !== '' ) {
2360
+        $classes[]  = sanitize_html_class( $args['display_md'] );
2361
+        $display_md = $args['display_md'];
2362
+    } else {
2363
+        $display_md = null;
2364
+    }
2365
+    if ( ! empty( $args['display_lg'] ) && $args['display_lg'] !== '' ) {
2366
+        if ( $display == null && $display_md == null ) {
2367
+            $classes[] = sanitize_html_class( str_replace( '-lg', '', $args['display_lg'] ) );
2368
+        } else {
2369
+            $classes[] = sanitize_html_class( $args['display_lg'] );
2370
+        }
2371
+    }
2372
+
2373
+    // bgtus - background transparent until scroll
2374
+    if ( ! empty( $args['bgtus'] ) ) {
2375
+        $classes[] = sanitize_html_class( 'bg-transparent-until-scroll' );
2376
+    }
2377
+
2378
+    // cscos - change color scheme on scroll
2379
+    if ( ! empty( $args['bgtus'] ) && ! empty( $args['cscos'] ) ) {
2380
+        $classes[] = sanitize_html_class( 'color-scheme-flip-on-scroll' );
2381
+    }
2382
+
2383
+    // hover animations
2384
+    if ( ! empty( $args['hover_animations'] ) ) {
2385
+        $classes[] = sd_sanitize_html_classes( str_replace( ',', ' ', $args['hover_animations'] ) );
2386
+    }
2387
+
2388
+    // absolute_position
2389
+    if ( ! empty( $args['absolute_position'] ) ) {
2390
+        if ( 'top-left' === $args['absolute_position'] ) {
2391
+            $classes[] = 'start-0 top-0';
2392
+        } elseif ( 'top-center' === $args['absolute_position'] ) {
2393
+            $classes[] = 'start-50 top-0 translate-middle';
2394
+        } elseif ( 'top-right' === $args['absolute_position'] ) {
2395
+            $classes[] = 'end-0 top-0';
2396
+        } elseif ( 'center-left' === $args['absolute_position'] ) {
2397
+            $classes[] = 'start-0 top-50';
2398
+        } elseif ( 'center' === $args['absolute_position'] ) {
2399
+            $classes[] = 'start-50 top-50 translate-middle';
2400
+        } elseif ( 'center-right' === $args['absolute_position'] ) {
2401
+            $classes[] = 'end-0 top-50';
2402
+        } elseif ( 'bottom-left' === $args['absolute_position'] ) {
2403
+            $classes[] = 'start-0 bottom-0';
2404
+        } elseif ( 'bottom-center' === $args['absolute_position'] ) {
2405
+            $classes[] = 'start-50 bottom-0 translate-middle';
2406
+        } elseif ( 'bottom-right' === $args['absolute_position'] ) {
2407
+            $classes[] = 'end-0 bottom-0';
2408
+        }
2409
+    }
2410
+
2411
+    // build classes from build keys
2412
+    $build_keys = sd_get_class_build_keys();
2413
+    if ( ! empty( $build_keys ) ) {
2414
+        foreach ( $build_keys as $key ) {
2415
+
2416
+            if ( substr( $key, -4 ) == '-MTD' ) {
2417
+
2418
+                $k = str_replace( '-MTD', '', $key );
2419
+
2420
+                // Mobile, Tablet, Desktop
2421
+                if ( ! empty( $args[ $k ] ) && $args[ $k ] !== '' ) {
2422
+                    $classes[] = sanitize_html_class( $args[ $k ] );
2423
+                    $v         = $args[ $k ];
2424
+                } else {
2425
+                    $v = null;
2426
+                }
2427
+                if ( ! empty( $args[ $k . '_md' ] ) && $args[ $k . '_md' ] !== '' ) {
2428
+                    $classes[] = sanitize_html_class( $args[ $k . '_md' ] );
2429
+                    $v_md      = $args[ $k . '_md' ];
2430
+                } else {
2431
+                    $v_md = null;
2432
+                }
2433
+                if ( ! empty( $args[ $k . '_lg' ] ) && $args[ $k . '_lg' ] !== '' ) {
2434
+                    if ( $v == null && $v_md == null ) {
2435
+                        $classes[] = sanitize_html_class( str_replace( '-lg', '', $args[ $k . '_lg' ] ) );
2436
+                    } else {
2437
+                        $classes[] = sanitize_html_class( $args[ $k . '_lg' ] );
2438
+                    }
2439
+                }
2440
+            } else {
2441
+                if ( $key == 'font_size' && ! empty( $args[ $key ] ) && $args[ $key ] == 'custom' ) {
2442
+                    continue;
2443
+                }
2444
+                if ( ! empty( $args[ $key ] ) ) {
2445
+                    $classes[] = sd_sanitize_html_classes( $args[ $key ] );
2446
+                }
2447
+            }
2448
+        }
2449
+    }
2450
+
2451
+    return implode( ' ', $classes );
2452 2452
 }
2453 2453
 
2454 2454
 /**
@@ -2460,90 +2460,90 @@  discard block
 block discarded – undo
2460 2460
  */
2461 2461
 function sd_build_aui_styles( $args ) {
2462 2462
 
2463
-	$styles = array();
2464
-
2465
-	// background color
2466
-	if ( ! empty( $args['bg'] ) && $args['bg'] !== '' ) {
2467
-		if ( $args['bg'] == 'custom-color' ) {
2468
-			$styles['background-color'] = $args['bg_color'];
2469
-		} elseif ( $args['bg'] == 'custom-gradient' ) {
2470
-			$styles['background-image'] = $args['bg_gradient'];
2471
-
2472
-			// use background on text.
2473
-			if ( ! empty( $args['bg_on_text'] ) && $args['bg_on_text'] ) {
2474
-				$styles['background-clip']         = 'text';
2475
-				$styles['-webkit-background-clip'] = 'text';
2476
-				$styles['text-fill-color']         = 'transparent';
2477
-				$styles['-webkit-text-fill-color'] = 'transparent';
2478
-			}
2479
-		}
2480
-	}
2481
-
2482
-	if ( ! empty( $args['bg_image'] ) && $args['bg_image'] !== '' ) {
2483
-		$hasImage = true;
2484
-		if ( ! empty( $styles['background-color'] ) && $args['bg'] == 'custom-color' ) {
2485
-			$styles['background-image']      = 'url(' . $args['bg_image'] . ')';
2486
-			$styles['background-blend-mode'] = 'overlay';
2487
-		} elseif ( ! empty( $styles['background-image'] ) && $args['bg'] == 'custom-gradient' ) {
2488
-			$styles['background-image'] .= ',url(' . $args['bg_image'] . ')';
2489
-		} elseif ( ! empty( $args['bg'] ) && $args['bg'] != '' && $args['bg'] != 'transparent' ) {
2490
-			// do nothing as we alreay have a preset
2491
-			$hasImage = false;
2492
-		} else {
2493
-			$styles['background-image'] = 'url(' . $args['bg_image'] . ')';
2494
-		}
2495
-
2496
-		if ( $hasImage ) {
2497
-			$styles['background-size'] = 'cover';
2498
-
2499
-			if ( ! empty( $args['bg_image_fixed'] ) && $args['bg_image_fixed'] ) {
2500
-				$styles['background-attachment'] = 'fixed';
2501
-			}
2502
-		}
2503
-
2504
-		if ( $hasImage && ! empty( $args['bg_image_xy'] ) && ! empty( $args['bg_image_xy']['x'] ) ) {
2505
-			$styles['background-position'] = ( $args['bg_image_xy']['x'] * 100 ) . '% ' . ( $args['bg_image_xy']['y'] * 100 ) . '%';
2506
-		}
2507
-	}
2508
-
2509
-	// sticky offset top
2510
-	if ( ! empty( $args['sticky_offset_top'] ) && $args['sticky_offset_top'] !== '' ) {
2511
-		$styles['top'] = absint( $args['sticky_offset_top'] );
2512
-	}
2513
-
2514
-	// sticky offset bottom
2515
-	if ( ! empty( $args['sticky_offset_bottom'] ) && $args['sticky_offset_bottom'] !== '' ) {
2516
-		$styles['bottom'] = absint( $args['sticky_offset_bottom'] );
2517
-	}
2518
-
2519
-	// font size
2520
-	if ( ! empty( $args['font_size_custom'] ) && $args['font_size_custom'] !== '' ) {
2521
-		$styles['font-size'] = (float) $args['font_size_custom'] . 'rem';
2522
-	}
2523
-
2524
-	// font color
2525
-	if ( ! empty( $args['text_color_custom'] ) && $args['text_color_custom'] !== '' ) {
2526
-		$styles['color'] = esc_attr( $args['text_color_custom'] );
2527
-	}
2528
-
2529
-	// font line height
2530
-	if ( ! empty( $args['font_line_height'] ) && $args['font_line_height'] !== '' ) {
2531
-		$styles['line-height'] = esc_attr( $args['font_line_height'] );
2532
-	}
2533
-
2534
-	// max height
2535
-	if ( ! empty( $args['max_height'] ) && $args['max_height'] !== '' ) {
2536
-		$styles['max-height'] = esc_attr( $args['max_height'] );
2537
-	}
2538
-
2539
-	$style_string = '';
2540
-	if ( ! empty( $styles ) ) {
2541
-		foreach ( $styles as $key => $val ) {
2542
-			$style_string .= esc_attr( $key ) . ':' . esc_attr( $val ) . ';';
2543
-		}
2544
-	}
2545
-
2546
-	return $style_string;
2463
+    $styles = array();
2464
+
2465
+    // background color
2466
+    if ( ! empty( $args['bg'] ) && $args['bg'] !== '' ) {
2467
+        if ( $args['bg'] == 'custom-color' ) {
2468
+            $styles['background-color'] = $args['bg_color'];
2469
+        } elseif ( $args['bg'] == 'custom-gradient' ) {
2470
+            $styles['background-image'] = $args['bg_gradient'];
2471
+
2472
+            // use background on text.
2473
+            if ( ! empty( $args['bg_on_text'] ) && $args['bg_on_text'] ) {
2474
+                $styles['background-clip']         = 'text';
2475
+                $styles['-webkit-background-clip'] = 'text';
2476
+                $styles['text-fill-color']         = 'transparent';
2477
+                $styles['-webkit-text-fill-color'] = 'transparent';
2478
+            }
2479
+        }
2480
+    }
2481
+
2482
+    if ( ! empty( $args['bg_image'] ) && $args['bg_image'] !== '' ) {
2483
+        $hasImage = true;
2484
+        if ( ! empty( $styles['background-color'] ) && $args['bg'] == 'custom-color' ) {
2485
+            $styles['background-image']      = 'url(' . $args['bg_image'] . ')';
2486
+            $styles['background-blend-mode'] = 'overlay';
2487
+        } elseif ( ! empty( $styles['background-image'] ) && $args['bg'] == 'custom-gradient' ) {
2488
+            $styles['background-image'] .= ',url(' . $args['bg_image'] . ')';
2489
+        } elseif ( ! empty( $args['bg'] ) && $args['bg'] != '' && $args['bg'] != 'transparent' ) {
2490
+            // do nothing as we alreay have a preset
2491
+            $hasImage = false;
2492
+        } else {
2493
+            $styles['background-image'] = 'url(' . $args['bg_image'] . ')';
2494
+        }
2495
+
2496
+        if ( $hasImage ) {
2497
+            $styles['background-size'] = 'cover';
2498
+
2499
+            if ( ! empty( $args['bg_image_fixed'] ) && $args['bg_image_fixed'] ) {
2500
+                $styles['background-attachment'] = 'fixed';
2501
+            }
2502
+        }
2503
+
2504
+        if ( $hasImage && ! empty( $args['bg_image_xy'] ) && ! empty( $args['bg_image_xy']['x'] ) ) {
2505
+            $styles['background-position'] = ( $args['bg_image_xy']['x'] * 100 ) . '% ' . ( $args['bg_image_xy']['y'] * 100 ) . '%';
2506
+        }
2507
+    }
2508
+
2509
+    // sticky offset top
2510
+    if ( ! empty( $args['sticky_offset_top'] ) && $args['sticky_offset_top'] !== '' ) {
2511
+        $styles['top'] = absint( $args['sticky_offset_top'] );
2512
+    }
2513
+
2514
+    // sticky offset bottom
2515
+    if ( ! empty( $args['sticky_offset_bottom'] ) && $args['sticky_offset_bottom'] !== '' ) {
2516
+        $styles['bottom'] = absint( $args['sticky_offset_bottom'] );
2517
+    }
2518
+
2519
+    // font size
2520
+    if ( ! empty( $args['font_size_custom'] ) && $args['font_size_custom'] !== '' ) {
2521
+        $styles['font-size'] = (float) $args['font_size_custom'] . 'rem';
2522
+    }
2523
+
2524
+    // font color
2525
+    if ( ! empty( $args['text_color_custom'] ) && $args['text_color_custom'] !== '' ) {
2526
+        $styles['color'] = esc_attr( $args['text_color_custom'] );
2527
+    }
2528
+
2529
+    // font line height
2530
+    if ( ! empty( $args['font_line_height'] ) && $args['font_line_height'] !== '' ) {
2531
+        $styles['line-height'] = esc_attr( $args['font_line_height'] );
2532
+    }
2533
+
2534
+    // max height
2535
+    if ( ! empty( $args['max_height'] ) && $args['max_height'] !== '' ) {
2536
+        $styles['max-height'] = esc_attr( $args['max_height'] );
2537
+    }
2538
+
2539
+    $style_string = '';
2540
+    if ( ! empty( $styles ) ) {
2541
+        foreach ( $styles as $key => $val ) {
2542
+            $style_string .= esc_attr( $key ) . ':' . esc_attr( $val ) . ';';
2543
+        }
2544
+    }
2545
+
2546
+    return $style_string;
2547 2547
 
2548 2548
 }
2549 2549
 
@@ -2556,34 +2556,34 @@  discard block
 block discarded – undo
2556 2556
  * @return string
2557 2557
  */
2558 2558
 function sd_build_hover_styles( $args, $is_preview = false ) {
2559
-	$rules = '';
2560
-	// text color
2561
-	if ( ! empty( $args['styleid'] ) ) {
2562
-		$styleid = $is_preview ? 'html .editor-styles-wrapper .' . esc_attr( $args['styleid'] ) : 'html .' . esc_attr( $args['styleid'] );
2563
-
2564
-		// text
2565
-		if ( ! empty( $args['text_color_hover'] ) ) {
2566
-			$key    = 'custom' === $args['text_color_hover'] && ! empty( $args['text_color_hover_custom'] ) ? 'text_color_hover_custom' : 'text_color_hover';
2567
-			$color  = sd_get_color_from_var( $args[ $key ] );
2568
-			$rules .= $styleid . ':hover {color: ' . $color . ' !important;} ';
2569
-		}
2570
-
2571
-		// bg
2572
-		if ( ! empty( $args['bg_hover'] ) ) {
2573
-			if ( 'custom-gradient' === $args['bg_hover'] ) {
2574
-				$color  = $args['bg_hover_gradient'];
2575
-				$rules .= $styleid . ':hover {background-image: ' . $color . ' !important;} ';
2576
-				$rules .= $styleid . '.btn:hover {border-color: transparent !important;} ';
2577
-			} else {
2578
-				$key    = 'custom-color' === $args['bg_hover'] ? 'bg_hover_color' : 'bg_hover';
2579
-				$color  = sd_get_color_from_var( $args[ $key ] );
2580
-				$rules .= $styleid . ':hover {background: ' . $color . ' !important;} ';
2581
-				$rules .= $styleid . '.btn:hover {border-color: ' . $color . ' !important;} ';
2582
-			}
2583
-		}
2584
-	}
2585
-
2586
-	return $rules ? '<style>' . $rules . '</style>' : '';
2559
+    $rules = '';
2560
+    // text color
2561
+    if ( ! empty( $args['styleid'] ) ) {
2562
+        $styleid = $is_preview ? 'html .editor-styles-wrapper .' . esc_attr( $args['styleid'] ) : 'html .' . esc_attr( $args['styleid'] );
2563
+
2564
+        // text
2565
+        if ( ! empty( $args['text_color_hover'] ) ) {
2566
+            $key    = 'custom' === $args['text_color_hover'] && ! empty( $args['text_color_hover_custom'] ) ? 'text_color_hover_custom' : 'text_color_hover';
2567
+            $color  = sd_get_color_from_var( $args[ $key ] );
2568
+            $rules .= $styleid . ':hover {color: ' . $color . ' !important;} ';
2569
+        }
2570
+
2571
+        // bg
2572
+        if ( ! empty( $args['bg_hover'] ) ) {
2573
+            if ( 'custom-gradient' === $args['bg_hover'] ) {
2574
+                $color  = $args['bg_hover_gradient'];
2575
+                $rules .= $styleid . ':hover {background-image: ' . $color . ' !important;} ';
2576
+                $rules .= $styleid . '.btn:hover {border-color: transparent !important;} ';
2577
+            } else {
2578
+                $key    = 'custom-color' === $args['bg_hover'] ? 'bg_hover_color' : 'bg_hover';
2579
+                $color  = sd_get_color_from_var( $args[ $key ] );
2580
+                $rules .= $styleid . ':hover {background: ' . $color . ' !important;} ';
2581
+                $rules .= $styleid . '.btn:hover {border-color: ' . $color . ' !important;} ';
2582
+            }
2583
+        }
2584
+    }
2585
+
2586
+    return $rules ? '<style>' . $rules . '</style>' : '';
2587 2587
 }
2588 2588
 
2589 2589
 /**
@@ -2595,12 +2595,12 @@  discard block
 block discarded – undo
2595 2595
  */
2596 2596
 function sd_get_color_from_var( $var ) {
2597 2597
 
2598
-	//sanitize_hex_color() @todo this does not cover transparency
2599
-	if ( strpos( $var, '#' ) === false ) {
2600
-		$var = defined( 'BLOCKSTRAP_BLOCKS_VERSION' ) ? 'var(--wp--preset--color--' . esc_attr( $var ) . ')' : 'var(--' . esc_attr( $var ) . ')';
2601
-	}
2598
+    //sanitize_hex_color() @todo this does not cover transparency
2599
+    if ( strpos( $var, '#' ) === false ) {
2600
+        $var = defined( 'BLOCKSTRAP_BLOCKS_VERSION' ) ? 'var(--wp--preset--color--' . esc_attr( $var ) . ')' : 'var(--' . esc_attr( $var ) . ')';
2601
+    }
2602 2602
 
2603
-	return $var;
2603
+    return $var;
2604 2604
 }
2605 2605
 
2606 2606
 /**
@@ -2612,19 +2612,19 @@  discard block
 block discarded – undo
2612 2612
  * @return string
2613 2613
  */
2614 2614
 function sd_sanitize_html_classes( $classes, $sep = ' ' ) {
2615
-	$return = '';
2615
+    $return = '';
2616 2616
 
2617
-	if ( ! is_array( $classes ) ) {
2618
-		$classes = explode( $sep, $classes );
2619
-	}
2617
+    if ( ! is_array( $classes ) ) {
2618
+        $classes = explode( $sep, $classes );
2619
+    }
2620 2620
 
2621
-	if ( ! empty( $classes ) ) {
2622
-		foreach ( $classes as $class ) {
2623
-			$return .= sanitize_html_class( $class ) . ' ';
2624
-		}
2625
-	}
2621
+    if ( ! empty( $classes ) ) {
2622
+        foreach ( $classes as $class ) {
2623
+            $return .= sanitize_html_class( $class ) . ' ';
2624
+        }
2625
+    }
2626 2626
 
2627
-	return $return;
2627
+    return $return;
2628 2628
 }
2629 2629
 
2630 2630
 
@@ -2634,38 +2634,38 @@  discard block
 block discarded – undo
2634 2634
  * @return void
2635 2635
  */
2636 2636
 function sd_get_class_build_keys() {
2637
-	$keys = array(
2638
-		'container',
2639
-		'position',
2640
-		'flex_direction',
2641
-		'shadow',
2642
-		'rounded',
2643
-		'nav_style',
2644
-		'horizontal_alignment',
2645
-		'nav_fill',
2646
-		'width',
2647
-		'font_weight',
2648
-		'font_size',
2649
-		'font_case',
2650
-		'css_class',
2651
-		'flex_align_items-MTD',
2652
-		'flex_justify_content-MTD',
2653
-		'flex_align_self-MTD',
2654
-		'flex_order-MTD',
2655
-		'styleid',
2656
-		'border_opacity',
2657
-		'border_width',
2658
-		'border_type',
2659
-		'opacity',
2660
-		'zindex',
2661
-		'flex_wrap-MTD',
2662
-		'h100',
2663
-		'overflow',
2664
-		'scrollbars',
2665
-		'float-MTD'
2666
-	);
2667
-
2668
-	return apply_filters( 'sd_class_build_keys', $keys );
2637
+    $keys = array(
2638
+        'container',
2639
+        'position',
2640
+        'flex_direction',
2641
+        'shadow',
2642
+        'rounded',
2643
+        'nav_style',
2644
+        'horizontal_alignment',
2645
+        'nav_fill',
2646
+        'width',
2647
+        'font_weight',
2648
+        'font_size',
2649
+        'font_case',
2650
+        'css_class',
2651
+        'flex_align_items-MTD',
2652
+        'flex_justify_content-MTD',
2653
+        'flex_align_self-MTD',
2654
+        'flex_order-MTD',
2655
+        'styleid',
2656
+        'border_opacity',
2657
+        'border_width',
2658
+        'border_type',
2659
+        'opacity',
2660
+        'zindex',
2661
+        'flex_wrap-MTD',
2662
+        'h100',
2663
+        'overflow',
2664
+        'scrollbars',
2665
+        'float-MTD'
2666
+    );
2667
+
2668
+    return apply_filters( 'sd_class_build_keys', $keys );
2669 2669
 }
2670 2670
 
2671 2671
 /**
@@ -2677,18 +2677,18 @@  discard block
 block discarded – undo
2677 2677
  * @return array
2678 2678
  */
2679 2679
 function sd_get_visibility_conditions_input( $type = 'visibility_conditions', $overwrite = array() ) {
2680
-	$defaults = array(
2681
-		'type'         => 'visibility_conditions',
2682
-		'title'        => __( 'Block Visibility', 'super-duper' ),
2683
-		'button_title' => __( 'Set Block Visibility', 'super-duper' ),
2684
-		'default'      => '',
2685
-		'desc_tip'     => true,
2686
-		'group'        => __( 'Visibility Conditions', 'super-duper' ),
2687
-	);
2680
+    $defaults = array(
2681
+        'type'         => 'visibility_conditions',
2682
+        'title'        => __( 'Block Visibility', 'super-duper' ),
2683
+        'button_title' => __( 'Set Block Visibility', 'super-duper' ),
2684
+        'default'      => '',
2685
+        'desc_tip'     => true,
2686
+        'group'        => __( 'Visibility Conditions', 'super-duper' ),
2687
+    );
2688 2688
 
2689
-	$input = wp_parse_args( $overwrite, $defaults );
2689
+    $input = wp_parse_args( $overwrite, $defaults );
2690 2690
 
2691
-	return $input;
2691
+    return $input;
2692 2692
 }
2693 2693
 
2694 2694
 /**
@@ -2700,21 +2700,21 @@  discard block
 block discarded – undo
2700 2700
  * @return array An array of roles.
2701 2701
  */
2702 2702
 function sd_user_roles_options( $exclude = array() ) {
2703
-	$user_roles = array();
2703
+    $user_roles = array();
2704 2704
 
2705
-	if ( !function_exists('get_editable_roles') ) {
2706
-		require_once( ABSPATH . '/wp-admin/includes/user.php' );
2707
-	}
2705
+    if ( !function_exists('get_editable_roles') ) {
2706
+        require_once( ABSPATH . '/wp-admin/includes/user.php' );
2707
+    }
2708 2708
 
2709
-	$roles = get_editable_roles();
2709
+    $roles = get_editable_roles();
2710 2710
 
2711
-	foreach ( $roles as $role => $data ) {
2712
-		if ( ! ( ! empty( $exclude ) && in_array( $role, $exclude ) ) ) {
2713
-			$user_roles[ esc_attr( $role ) ] = translate_user_role( $data['name'] );
2714
-		}
2715
-	}
2711
+    foreach ( $roles as $role => $data ) {
2712
+        if ( ! ( ! empty( $exclude ) && in_array( $role, $exclude ) ) ) {
2713
+            $user_roles[ esc_attr( $role ) ] = translate_user_role( $data['name'] );
2714
+        }
2715
+    }
2716 2716
 
2717
-	return apply_filters( 'sd_user_roles_options', $user_roles );
2717
+    return apply_filters( 'sd_user_roles_options', $user_roles );
2718 2718
 }
2719 2719
 
2720 2720
 /**
@@ -2725,17 +2725,17 @@  discard block
 block discarded – undo
2725 2725
  * @return array Rule options.
2726 2726
  */
2727 2727
 function sd_visibility_rules_options() {
2728
-	$options = array(
2729
-		'logged_in'  => __( 'Logged In', 'super-duper' ),
2730
-		'logged_out' => __( 'Logged Out', 'super-duper' ),
2731
-		'user_roles' => __( 'Specific User Roles', 'super-duper' )
2732
-	);
2728
+    $options = array(
2729
+        'logged_in'  => __( 'Logged In', 'super-duper' ),
2730
+        'logged_out' => __( 'Logged Out', 'super-duper' ),
2731
+        'user_roles' => __( 'Specific User Roles', 'super-duper' )
2732
+    );
2733 2733
 
2734
-	if ( class_exists( 'GeoDirectory' ) ) {
2735
-		$options['gd_field'] = __( 'GD Field', 'super-duper' );
2736
-	}
2734
+    if ( class_exists( 'GeoDirectory' ) ) {
2735
+        $options['gd_field'] = __( 'GD Field', 'super-duper' );
2736
+    }
2737 2737
 
2738
-	return apply_filters( 'sd_visibility_rules_options', $options );
2738
+    return apply_filters( 'sd_visibility_rules_options', $options );
2739 2739
 }
2740 2740
 
2741 2741
 /**
@@ -2744,37 +2744,37 @@  discard block
 block discarded – undo
2744 2744
  * @return array
2745 2745
  */
2746 2746
 function sd_visibility_gd_field_options(){
2747
-	$fields = geodir_post_custom_fields( '', 'all', 'all', 'none' );
2747
+    $fields = geodir_post_custom_fields( '', 'all', 'all', 'none' );
2748 2748
 
2749
-	$keys = array();
2750
-	if ( ! empty( $fields ) ) {
2751
-		foreach( $fields as $field ) {
2752
-			if ( apply_filters( 'geodir_badge_field_skip_key', false, $field ) ) {
2753
-				continue;
2754
-			}
2749
+    $keys = array();
2750
+    if ( ! empty( $fields ) ) {
2751
+        foreach( $fields as $field ) {
2752
+            if ( apply_filters( 'geodir_badge_field_skip_key', false, $field ) ) {
2753
+                continue;
2754
+            }
2755 2755
 
2756
-			$keys[ $field['htmlvar_name'] ] = $field['htmlvar_name'] . ' ( ' . __( $field['admin_title'], 'geodirectory' ) . ' )';
2756
+            $keys[ $field['htmlvar_name'] ] = $field['htmlvar_name'] . ' ( ' . __( $field['admin_title'], 'geodirectory' ) . ' )';
2757 2757
 
2758
-			// Extra address fields
2759
-			if ( $field['htmlvar_name'] == 'address' && ( $address_fields = geodir_post_meta_address_fields( '' ) ) ) {
2760
-				foreach ( $address_fields as $_field => $args ) {
2761
-					if ( $_field != 'map_directions' && $_field != 'street' ) {
2762
-						$keys[ $_field ] = $_field . ' ( ' . $args['frontend_title'] . ' )';
2763
-					}
2764
-				}
2765
-			}
2766
-		}
2767
-	}
2758
+            // Extra address fields
2759
+            if ( $field['htmlvar_name'] == 'address' && ( $address_fields = geodir_post_meta_address_fields( '' ) ) ) {
2760
+                foreach ( $address_fields as $_field => $args ) {
2761
+                    if ( $_field != 'map_directions' && $_field != 'street' ) {
2762
+                        $keys[ $_field ] = $_field . ' ( ' . $args['frontend_title'] . ' )';
2763
+                    }
2764
+                }
2765
+            }
2766
+        }
2767
+    }
2768 2768
 
2769
-	$keys['post_date'] = 'post_date ( ' . __( 'post date', 'geodirectory' ) . ' )';
2770
-	$keys['post_modified'] = 'post_modified ( ' . __( 'post modified', 'geodirectory' ) . ' )';
2771
-	$keys['default_category'] = 'default_category ( ' . __( 'Default Category', 'geodirectory' ) . ' )';
2772
-	$keys['post_id'] = 'post_id ( ' . __( 'post id', 'geodirectory' ) . ' )';
2773
-	$keys['post_status'] = 'post_status ( ' . __( 'Post Status', 'geodirectory' ) . ' )';
2769
+    $keys['post_date'] = 'post_date ( ' . __( 'post date', 'geodirectory' ) . ' )';
2770
+    $keys['post_modified'] = 'post_modified ( ' . __( 'post modified', 'geodirectory' ) . ' )';
2771
+    $keys['default_category'] = 'default_category ( ' . __( 'Default Category', 'geodirectory' ) . ' )';
2772
+    $keys['post_id'] = 'post_id ( ' . __( 'post id', 'geodirectory' ) . ' )';
2773
+    $keys['post_status'] = 'post_status ( ' . __( 'Post Status', 'geodirectory' ) . ' )';
2774 2774
 
2775
-	$options = apply_filters( 'geodir_badge_field_keys', $keys );
2775
+    $options = apply_filters( 'geodir_badge_field_keys', $keys );
2776 2776
 
2777
-	return apply_filters( 'sd_visibility_gd_field_options', $options );
2777
+    return apply_filters( 'sd_visibility_gd_field_options', $options );
2778 2778
 }
2779 2779
 
2780 2780
 /**
@@ -2783,18 +2783,18 @@  discard block
 block discarded – undo
2783 2783
  * @return array
2784 2784
  */
2785 2785
 function sd_visibility_field_condition_options(){
2786
-	$options = array(
2787
-		'is_empty' => __( 'is empty', 'super-duper' ),
2788
-		'is_not_empty' => __( 'is not empty', 'super-duper' ),
2789
-		'is_equal' => __( 'is equal', 'super-duper' ),
2790
-		'is_not_equal' => __( 'is not equal', 'super-duper' ),
2791
-		'is_greater_than' => __( 'is greater than', 'super-duper' ),
2792
-		'is_less_than' => __( 'is less than', 'super-duper' ),
2793
-		'is_contains' => __( 'is contains', 'super-duper' ),
2794
-		'is_not_contains' => __( 'is not contains', 'super-duper' ),
2795
-	);
2786
+    $options = array(
2787
+        'is_empty' => __( 'is empty', 'super-duper' ),
2788
+        'is_not_empty' => __( 'is not empty', 'super-duper' ),
2789
+        'is_equal' => __( 'is equal', 'super-duper' ),
2790
+        'is_not_equal' => __( 'is not equal', 'super-duper' ),
2791
+        'is_greater_than' => __( 'is greater than', 'super-duper' ),
2792
+        'is_less_than' => __( 'is less than', 'super-duper' ),
2793
+        'is_contains' => __( 'is contains', 'super-duper' ),
2794
+        'is_not_contains' => __( 'is not contains', 'super-duper' ),
2795
+    );
2796 2796
 
2797
-	return apply_filters( 'sd_visibility_field_condition_options', $options );
2797
+    return apply_filters( 'sd_visibility_field_condition_options', $options );
2798 2798
 }
2799 2799
 
2800 2800
 /**
@@ -2805,14 +2805,14 @@  discard block
 block discarded – undo
2805 2805
  * @return array Template type options.
2806 2806
  */
2807 2807
 function sd_visibility_output_options() {
2808
-	$options = array(
2809
-		'hide'          => __( 'Hide Block', 'super-duper' ),
2810
-		'message'       => __( 'Show Custom Message', 'super-duper' ),
2811
-		'page'          => __( 'Show Page Content', 'super-duper' ),
2812
-		'template_part' => __( 'Show Template Part', 'super-duper' ),
2813
-	);
2808
+    $options = array(
2809
+        'hide'          => __( 'Hide Block', 'super-duper' ),
2810
+        'message'       => __( 'Show Custom Message', 'super-duper' ),
2811
+        'page'          => __( 'Show Page Content', 'super-duper' ),
2812
+        'template_part' => __( 'Show Template Part', 'super-duper' ),
2813
+    );
2814 2814
 
2815
-	return apply_filters( 'sd_visibility_output_options', $options );
2815
+    return apply_filters( 'sd_visibility_output_options', $options );
2816 2816
 }
2817 2817
 
2818 2818
 /**
@@ -2824,45 +2824,45 @@  discard block
 block discarded – undo
2824 2824
  * @return array Template page options.
2825 2825
  */
2826 2826
 function sd_template_page_options( $args = array() ) {
2827
-	global $sd_tmpl_page_options;
2827
+    global $sd_tmpl_page_options;
2828 2828
 
2829
-	if ( ! empty( $sd_tmpl_page_options ) ) {
2830
-		return $sd_tmpl_page_options;
2831
-	}
2829
+    if ( ! empty( $sd_tmpl_page_options ) ) {
2830
+        return $sd_tmpl_page_options;
2831
+    }
2832 2832
 
2833
-	$args = wp_parse_args( $args, array(
2834
-		'child_of'    => 0,
2835
-		'sort_column' => 'post_title',
2836
-		'sort_order'  => 'ASC'
2837
-	) );
2833
+    $args = wp_parse_args( $args, array(
2834
+        'child_of'    => 0,
2835
+        'sort_column' => 'post_title',
2836
+        'sort_order'  => 'ASC'
2837
+    ) );
2838 2838
 
2839
-	$exclude_pages = array();
2840
-	if ( $page_on_front = get_option( 'page_on_front' ) ) {
2841
-		$exclude_pages[] = $page_on_front;
2842
-	}
2839
+    $exclude_pages = array();
2840
+    if ( $page_on_front = get_option( 'page_on_front' ) ) {
2841
+        $exclude_pages[] = $page_on_front;
2842
+    }
2843 2843
 
2844
-	if ( $page_for_posts = get_option( 'page_for_posts' ) ) {
2845
-		$exclude_pages[] = $page_for_posts;
2846
-	}
2844
+    if ( $page_for_posts = get_option( 'page_for_posts' ) ) {
2845
+        $exclude_pages[] = $page_for_posts;
2846
+    }
2847 2847
 
2848
-	if ( ! empty( $exclude_pages ) ) {
2849
-		$args['exclude'] = $exclude_pages;
2850
-	}
2848
+    if ( ! empty( $exclude_pages ) ) {
2849
+        $args['exclude'] = $exclude_pages;
2850
+    }
2851 2851
 
2852
-	$pages = get_pages( $args );
2852
+    $pages = get_pages( $args );
2853 2853
 
2854
-	$options = array( '' => __( 'Select Page...', 'super-duper' ) );
2855
-	if ( ! empty( $pages ) ) {
2856
-		foreach ( $pages as $page ) {
2857
-			if ( ! empty( $page->ID ) && ! empty( $page->post_title ) ) {
2858
-				$options[ $page->ID ] = $page->post_title . ' (#' . $page->ID . ')';
2859
-			}
2860
-		}
2861
-	}
2854
+    $options = array( '' => __( 'Select Page...', 'super-duper' ) );
2855
+    if ( ! empty( $pages ) ) {
2856
+        foreach ( $pages as $page ) {
2857
+            if ( ! empty( $page->ID ) && ! empty( $page->post_title ) ) {
2858
+                $options[ $page->ID ] = $page->post_title . ' (#' . $page->ID . ')';
2859
+            }
2860
+        }
2861
+    }
2862 2862
 
2863
-	$sd_tmpl_page_options = $options;
2863
+    $sd_tmpl_page_options = $options;
2864 2864
 
2865
-	return apply_filters( 'sd_template_page_options', $options );
2865
+    return apply_filters( 'sd_template_page_options', $options );
2866 2866
 }
2867 2867
 
2868 2868
 /**
@@ -2874,25 +2874,25 @@  discard block
 block discarded – undo
2874 2874
  * @return array Template part options.
2875 2875
  */
2876 2876
 function sd_template_part_options( $args = array() ) {
2877
-	global $sd_tmpl_part_options;
2877
+    global $sd_tmpl_part_options;
2878 2878
 
2879
-	if ( ! empty( $sd_tmpl_part_options ) ) {
2880
-		return $sd_tmpl_part_options;
2881
-	}
2879
+    if ( ! empty( $sd_tmpl_part_options ) ) {
2880
+        return $sd_tmpl_part_options;
2881
+    }
2882 2882
 
2883
-	$options = array( '' => __( 'Select Template Part...', 'super-duper' ) );
2883
+    $options = array( '' => __( 'Select Template Part...', 'super-duper' ) );
2884 2884
 
2885
-	$parts = get_block_templates( array(), 'wp_template_part' );
2885
+    $parts = get_block_templates( array(), 'wp_template_part' );
2886 2886
 
2887
-	if ( ! empty( $parts ) ) {
2888
-		foreach ( $parts as $part ) {
2889
-			$options[ $part->slug ] = $part->title . ' (#' . $part->slug . ')';
2890
-		}
2891
-	}
2887
+    if ( ! empty( $parts ) ) {
2888
+        foreach ( $parts as $part ) {
2889
+            $options[ $part->slug ] = $part->title . ' (#' . $part->slug . ')';
2890
+        }
2891
+    }
2892 2892
 
2893
-	$sd_tmpl_part_options = $options;
2893
+    $sd_tmpl_part_options = $options;
2894 2894
 
2895
-	return apply_filters( 'sd_template_part_options', $options, $args );
2895
+    return apply_filters( 'sd_template_part_options', $options, $args );
2896 2896
 }
2897 2897
 
2898 2898
 /**
@@ -2904,25 +2904,25 @@  discard block
 block discarded – undo
2904 2904
  * @return array Template part object.
2905 2905
  */
2906 2906
 function sd_get_template_part_by_slug( $slug ) {
2907
-	global $bs_tmpl_part_by_slug;
2907
+    global $bs_tmpl_part_by_slug;
2908 2908
 
2909
-	if ( empty( $bs_tmpl_part_by_slug ) ) {
2910
-		$bs_tmpl_part_by_slug = array();
2911
-	}
2909
+    if ( empty( $bs_tmpl_part_by_slug ) ) {
2910
+        $bs_tmpl_part_by_slug = array();
2911
+    }
2912 2912
 
2913
-	if ( isset( $bs_tmpl_part_by_slug[ $slug ] ) ) {
2914
-		return $bs_tmpl_part_by_slug[ $slug ];
2915
-	}
2913
+    if ( isset( $bs_tmpl_part_by_slug[ $slug ] ) ) {
2914
+        return $bs_tmpl_part_by_slug[ $slug ];
2915
+    }
2916 2916
 
2917
-	$template_query = get_block_templates( array( 'slug__in' => array( $slug ) ), 'wp_template_part' );
2917
+    $template_query = get_block_templates( array( 'slug__in' => array( $slug ) ), 'wp_template_part' );
2918 2918
 
2919
-	$query_post = ! empty( $template_query ) ? $template_query[0] : array();
2919
+    $query_post = ! empty( $template_query ) ? $template_query[0] : array();
2920 2920
 
2921
-	$template_part = ! empty( $query_post ) && $query_post->status == 'publish' ? $query_post : array();
2921
+    $template_part = ! empty( $query_post ) && $query_post->status == 'publish' ? $query_post : array();
2922 2922
 
2923
-	$bs_tmpl_part_by_slug[ $slug ] = $template_part;
2923
+    $bs_tmpl_part_by_slug[ $slug ] = $template_part;
2924 2924
 
2925
-	return apply_filters( 'sd_get_template_part_by_slug', $template_part, $slug );
2925
+    return apply_filters( 'sd_get_template_part_by_slug', $template_part, $slug );
2926 2926
 }
2927 2927
 
2928 2928
 /**
@@ -2935,364 +2935,364 @@  discard block
 block discarded – undo
2935 2935
  * @param WP_Block $instance      The block instance.
2936 2936
  */
2937 2937
 function sd_render_block( $block_content, $block, $instance = '' ) {
2938
-	// No block visibility conditions set.
2939
-	if ( empty( $block['attrs']['visibility_conditions'] ) ) {
2940
-		return $block_content;
2941
-	}
2942
-
2943
-	$attributes = json_decode( $block['attrs']['visibility_conditions'], true );
2944
-	$rules = ! empty( $attributes ) ? sd_block_parse_rules( $attributes ) : array();
2945
-
2946
-	// No rules set.
2947
-	if ( empty( $rules ) ) {
2948
-		return $block_content;
2949
-	}
2950
-
2951
-	$_block_content = $block_content;
2952
-
2953
-	if ( ! empty( $rules ) && sd_block_check_rules( $rules ) ) {
2954
-		if ( ! empty( $attributes['output']['type'] ) ) {
2955
-			switch ( $attributes['output']['type'] ) {
2956
-				case 'hide':
2957
-					$valid_type = true;
2958
-					$content = '';
2959
-
2960
-					break;
2961
-				case 'message':
2962
-					$valid_type = true;
2963
-
2964
-					if ( isset( $attributes['output']['message'] ) ) {
2965
-						$content = $attributes['output']['message'] != '' ? __( stripslashes( $attributes['output']['message'] ), 'super-duper' ) : $attributes['output']['message'];
2966
-
2967
-						if ( ! empty( $attributes['output']['message_type'] ) ) {
2968
-							$content = aui()->alert( array(
2969
-									'type'=> $attributes['output']['message_type'],
2970
-									'content'=> $content
2971
-								)
2972
-							);
2973
-						}
2974
-					}
2975
-
2976
-					break;
2977
-				case 'page':
2978
-					$valid_type = true;
2979
-
2980
-					$page_id = ! empty( $attributes['output']['page'] ) ? absint( $attributes['output']['page'] ) : 0;
2981
-					$content = sd_get_page_content( $page_id );
2982
-
2983
-					break;
2984
-				case 'template_part':
2985
-					$valid_type = true;
2986
-
2987
-					$template_part = ! empty( $attributes['output']['template_part'] ) ? $attributes['output']['template_part'] : '';
2988
-					$content = sd_get_template_part_content( $template_part );
2989
-
2990
-					break;
2991
-				default:
2992
-					$valid_type = false;
2993
-					break;
2994
-			}
2995
-
2996
-			if ( $valid_type ) {
2997
-				$block_content = '<div class="' . esc_attr( wp_get_block_default_classname( $instance->name ) ) . ' sd-block-has-rule">' . $content . '</div>';
2998
-			}
2999
-		}
3000
-	}
3001
-
3002
-	return apply_filters( 'sd_render_block_visibility_content', $block_content, $_block_content, $attributes, $block, $instance );
2938
+    // No block visibility conditions set.
2939
+    if ( empty( $block['attrs']['visibility_conditions'] ) ) {
2940
+        return $block_content;
2941
+    }
2942
+
2943
+    $attributes = json_decode( $block['attrs']['visibility_conditions'], true );
2944
+    $rules = ! empty( $attributes ) ? sd_block_parse_rules( $attributes ) : array();
2945
+
2946
+    // No rules set.
2947
+    if ( empty( $rules ) ) {
2948
+        return $block_content;
2949
+    }
2950
+
2951
+    $_block_content = $block_content;
2952
+
2953
+    if ( ! empty( $rules ) && sd_block_check_rules( $rules ) ) {
2954
+        if ( ! empty( $attributes['output']['type'] ) ) {
2955
+            switch ( $attributes['output']['type'] ) {
2956
+                case 'hide':
2957
+                    $valid_type = true;
2958
+                    $content = '';
2959
+
2960
+                    break;
2961
+                case 'message':
2962
+                    $valid_type = true;
2963
+
2964
+                    if ( isset( $attributes['output']['message'] ) ) {
2965
+                        $content = $attributes['output']['message'] != '' ? __( stripslashes( $attributes['output']['message'] ), 'super-duper' ) : $attributes['output']['message'];
2966
+
2967
+                        if ( ! empty( $attributes['output']['message_type'] ) ) {
2968
+                            $content = aui()->alert( array(
2969
+                                    'type'=> $attributes['output']['message_type'],
2970
+                                    'content'=> $content
2971
+                                )
2972
+                            );
2973
+                        }
2974
+                    }
2975
+
2976
+                    break;
2977
+                case 'page':
2978
+                    $valid_type = true;
2979
+
2980
+                    $page_id = ! empty( $attributes['output']['page'] ) ? absint( $attributes['output']['page'] ) : 0;
2981
+                    $content = sd_get_page_content( $page_id );
2982
+
2983
+                    break;
2984
+                case 'template_part':
2985
+                    $valid_type = true;
2986
+
2987
+                    $template_part = ! empty( $attributes['output']['template_part'] ) ? $attributes['output']['template_part'] : '';
2988
+                    $content = sd_get_template_part_content( $template_part );
2989
+
2990
+                    break;
2991
+                default:
2992
+                    $valid_type = false;
2993
+                    break;
2994
+            }
2995
+
2996
+            if ( $valid_type ) {
2997
+                $block_content = '<div class="' . esc_attr( wp_get_block_default_classname( $instance->name ) ) . ' sd-block-has-rule">' . $content . '</div>';
2998
+            }
2999
+        }
3000
+    }
3001
+
3002
+    return apply_filters( 'sd_render_block_visibility_content', $block_content, $_block_content, $attributes, $block, $instance );
3003 3003
 }
3004 3004
 add_filter( 'render_block', 'sd_render_block', 9, 3 );
3005 3005
 
3006 3006
 function sd_get_page_content( $page_id ) {
3007
-	$content = $page_id > 0 ? get_post_field( 'post_content', (int) $page_id ) : '';
3007
+    $content = $page_id > 0 ? get_post_field( 'post_content', (int) $page_id ) : '';
3008 3008
 
3009
-	// Maybe bypass content
3010
-	$bypass_content = apply_filters( 'sd_bypass_page_content', '', $content, $page_id );
3011
-	if ( $bypass_content ) {
3012
-		return $bypass_content;
3013
-	}
3009
+    // Maybe bypass content
3010
+    $bypass_content = apply_filters( 'sd_bypass_page_content', '', $content, $page_id );
3011
+    if ( $bypass_content ) {
3012
+        return $bypass_content;
3013
+    }
3014 3014
 
3015
-	// Run the shortcodes on the content.
3016
-	$content = do_shortcode( $content );
3015
+    // Run the shortcodes on the content.
3016
+    $content = do_shortcode( $content );
3017 3017
 
3018
-	// Run block content if its available.
3019
-	if ( function_exists( 'do_blocks' ) ) {
3020
-		$content = do_blocks( $content );
3021
-	}
3018
+    // Run block content if its available.
3019
+    if ( function_exists( 'do_blocks' ) ) {
3020
+        $content = do_blocks( $content );
3021
+    }
3022 3022
 
3023
-	return apply_filters( 'sd_get_page_content', $content, $page_id );
3023
+    return apply_filters( 'sd_get_page_content', $content, $page_id );
3024 3024
 }
3025 3025
 
3026 3026
 function sd_get_template_part_content( $template_part ) {
3027
-	$template_part_post = $template_part ? sd_get_template_part_by_slug( $template_part ) : array();
3028
-	$content = ! empty( $template_part_post ) ? $template_part_post->content : '';
3027
+    $template_part_post = $template_part ? sd_get_template_part_by_slug( $template_part ) : array();
3028
+    $content = ! empty( $template_part_post ) ? $template_part_post->content : '';
3029 3029
 
3030
-	// Maybe bypass content
3031
-	$bypass_content = apply_filters( 'sd_bypass_template_part_content', '', $content, $template_part );
3032
-	if ( $bypass_content ) {
3033
-		return $bypass_content;
3034
-	}
3030
+    // Maybe bypass content
3031
+    $bypass_content = apply_filters( 'sd_bypass_template_part_content', '', $content, $template_part );
3032
+    if ( $bypass_content ) {
3033
+        return $bypass_content;
3034
+    }
3035 3035
 
3036
-	// Run the shortcodes on the content.
3037
-	$content = do_shortcode( $content );
3036
+    // Run the shortcodes on the content.
3037
+    $content = do_shortcode( $content );
3038 3038
 
3039
-	// Run block content if its available.
3040
-	if ( function_exists( 'do_blocks' ) ) {
3041
-		$content = do_blocks( $content );
3042
-	}
3039
+    // Run block content if its available.
3040
+    if ( function_exists( 'do_blocks' ) ) {
3041
+        $content = do_blocks( $content );
3042
+    }
3043 3043
 
3044
-	return apply_filters( 'sd_get_template_part_content', $content, $template_part );
3044
+    return apply_filters( 'sd_get_template_part_content', $content, $template_part );
3045 3045
 }
3046 3046
 
3047 3047
 function sd_block_parse_rules( $attrs ) {
3048
-	$rules = array();
3048
+    $rules = array();
3049 3049
 
3050
-	if ( ! empty( $attrs ) && is_array( $attrs ) ) {
3051
-		$attrs_keys = array_keys( $attrs );
3050
+    if ( ! empty( $attrs ) && is_array( $attrs ) ) {
3051
+        $attrs_keys = array_keys( $attrs );
3052 3052
 
3053
-		for ( $i = 1; $i <= count( $attrs_keys ); $i++ ) {
3054
-			if ( ! empty( $attrs[ 'rule' . $i ] ) && is_array( $attrs[ 'rule' . $i ] ) ) {
3055
-				$rules[] = $attrs[ 'rule' . $i ];
3056
-			}
3057
-		}
3058
-	}
3053
+        for ( $i = 1; $i <= count( $attrs_keys ); $i++ ) {
3054
+            if ( ! empty( $attrs[ 'rule' . $i ] ) && is_array( $attrs[ 'rule' . $i ] ) ) {
3055
+                $rules[] = $attrs[ 'rule' . $i ];
3056
+            }
3057
+        }
3058
+    }
3059 3059
 
3060
-	return apply_filters( 'sd_block_parse_rules', $rules, $attrs );
3060
+    return apply_filters( 'sd_block_parse_rules', $rules, $attrs );
3061 3061
 }
3062 3062
 
3063 3063
 function sd_block_check_rules( $rules ) {
3064
-	if ( ! ( is_array( $rules ) && ! empty( $rules ) ) ) {
3065
-		return true;
3066
-	}
3064
+    if ( ! ( is_array( $rules ) && ! empty( $rules ) ) ) {
3065
+        return true;
3066
+    }
3067 3067
 
3068
-	foreach ( $rules as $key => $rule ) {
3069
-		$match = apply_filters( 'sd_block_check_rule', true, $rule );
3068
+    foreach ( $rules as $key => $rule ) {
3069
+        $match = apply_filters( 'sd_block_check_rule', true, $rule );
3070 3070
 
3071
-		if ( ! $match ) {
3072
-			break;
3073
-		}
3074
-	}
3071
+        if ( ! $match ) {
3072
+            break;
3073
+        }
3074
+    }
3075 3075
 
3076
-	return apply_filters( 'sd_block_check_rules', $match, $rules );
3076
+    return apply_filters( 'sd_block_check_rules', $match, $rules );
3077 3077
 }
3078 3078
 
3079 3079
 function sd_block_check_rule( $match, $rule ) {
3080
-	if ( $match && ! empty( $rule['type'] ) ) {
3081
-		switch ( $rule['type'] ) {
3082
-			case 'logged_in':
3083
-				$match = (bool) is_user_logged_in();
3080
+    if ( $match && ! empty( $rule['type'] ) ) {
3081
+        switch ( $rule['type'] ) {
3082
+            case 'logged_in':
3083
+                $match = (bool) is_user_logged_in();
3084 3084
 
3085
-				break;
3086
-			case 'logged_out':
3087
-				$match = ! is_user_logged_in();
3085
+                break;
3086
+            case 'logged_out':
3087
+                $match = ! is_user_logged_in();
3088 3088
 
3089
-				break;
3090
-			case 'user_roles':
3091
-				$match = false;
3089
+                break;
3090
+            case 'user_roles':
3091
+                $match = false;
3092 3092
 
3093
-				if ( ! empty( $rule['user_roles'] ) ) {
3094
-					$user_roles = is_scalar( $rule['user_roles'] ) ? explode( ",", $rule['user_roles'] ) : $rule['user_roles'];
3093
+                if ( ! empty( $rule['user_roles'] ) ) {
3094
+                    $user_roles = is_scalar( $rule['user_roles'] ) ? explode( ",", $rule['user_roles'] ) : $rule['user_roles'];
3095 3095
 
3096
-					if ( is_array( $user_roles ) ) {
3097
-						$user_roles = array_filter( array_map( 'trim', $user_roles ) );
3098
-					}
3096
+                    if ( is_array( $user_roles ) ) {
3097
+                        $user_roles = array_filter( array_map( 'trim', $user_roles ) );
3098
+                    }
3099 3099
 
3100
-					if ( ! empty( $user_roles ) && is_array( $user_roles ) && is_user_logged_in() && ( $current_user = wp_get_current_user() ) ) {
3101
-						$current_user_roles = $current_user->roles;
3100
+                    if ( ! empty( $user_roles ) && is_array( $user_roles ) && is_user_logged_in() && ( $current_user = wp_get_current_user() ) ) {
3101
+                        $current_user_roles = $current_user->roles;
3102 3102
 
3103
-						foreach ( $user_roles as $role ) {
3104
-							if ( in_array( $role, $current_user_roles ) ) {
3105
-								$match = true;
3106
-							}
3107
-						}
3108
-					}
3109
-				}
3103
+                        foreach ( $user_roles as $role ) {
3104
+                            if ( in_array( $role, $current_user_roles ) ) {
3105
+                                $match = true;
3106
+                            }
3107
+                        }
3108
+                    }
3109
+                }
3110 3110
 
3111
-				break;
3112
-			case 'gd_field':
3113
-				$match = sd_block_check_rule_gd_field( $rule );
3111
+                break;
3112
+            case 'gd_field':
3113
+                $match = sd_block_check_rule_gd_field( $rule );
3114 3114
 
3115
-				break;
3116
-		}
3117
-	}
3115
+                break;
3116
+        }
3117
+    }
3118 3118
 
3119
-	return $match;
3119
+    return $match;
3120 3120
 }
3121 3121
 add_filter( 'sd_block_check_rule', 'sd_block_check_rule', 10, 2 );
3122 3122
 
3123 3123
 function sd_block_check_rule_gd_field( $rule ) {
3124
-	global $gd_post;
3125
-
3126
-	$match_found = false;
3127
-
3128
-	if ( class_exists( 'GeoDirectory' ) && ! empty( $gd_post->ID ) && ! empty( $rule['field'] ) && ! empty( $rule['condition'] ) ) {
3129
-		$args['block_visibility'] = true;
3130
-		$args['key'] = $rule['field'];
3131
-		$args['condition'] = $rule['condition'];
3132
-		$args['search'] = isset( $rule['search'] ) ? $rule['search'] : '';
3133
-
3134
-		if ( $args['key'] == 'street' ) {
3135
-			$args['key'] = 'address';
3136
-		}
3137
-
3138
-		$match_field = $_match_field = $args['key'];
3139
-
3140
-		if ( $match_field == 'address' ) {
3141
-			$match_field = 'street';
3142
-		} elseif ( $match_field == 'post_images' ) {
3143
-			$match_field = 'featured_image';
3144
-		}
3145
-
3146
-		$find_post = $gd_post;
3147
-		$find_post_keys = ! empty( $find_post ) ? array_keys( (array) $find_post ) : array();
3148
-
3149
-		if ( ! empty( $find_post->ID ) && ! in_array( 'post_category', $find_post_keys ) ) {
3150
-			$find_post = geodir_get_post_info( (int) $find_post->ID );
3151
-			$find_post_keys = ! empty( $find_post ) ? array_keys( (array) $find_post ) : array();
3152
-		}
3153
-
3154
-		if ( $match_field === '' || ( ! empty( $find_post_keys ) && ( in_array( $match_field, $find_post_keys ) || in_array( $_match_field, $find_post_keys ) ) ) ) {
3155
-			$address_fields = array( 'street2', 'neighbourhood', 'city', 'region', 'country', 'zip', 'latitude', 'longitude' ); // Address fields
3156
-			$field = array();
3157
-
3158
-			if ( $match_field && ! in_array( $match_field, array( 'post_date', 'post_modified', 'default_category', 'post_id', 'post_status' ) ) && ! in_array( $match_field, $address_fields ) ) {
3159
-				$package_id = geodir_get_post_package_id( $find_post->ID, $find_post->post_type );
3160
-				$fields = geodir_post_custom_fields( $package_id, 'all', $find_post->post_type, 'none' );
3161
-
3162
-				foreach ( $fields as $field_info ) {
3163
-					if ( $match_field == $field_info['htmlvar_name'] ) {
3164
-						$field = $field_info;
3165
-						break;
3166
-					} elseif( $_match_field == $field_info['htmlvar_name'] ) {
3167
-						$field = $field_info;
3168
-						break;
3169
-					}
3170
-				}
3171
-
3172
-				if ( empty( $field ) ) {
3173
-					return false;
3174
-				}
3175
-			}
3176
-
3177
-			// Parse search.
3178
-			$search = sd_gd_field_rule_search( $args['search'], $find_post->post_type, $rule );
3179
-
3180
-			// Address fields.
3181
-			if ( in_array( $match_field, $address_fields ) && ( $address_fields = geodir_post_meta_address_fields( '' ) ) ) {
3182
-				if ( ! empty( $address_fields[ $match_field ] ) ) {
3183
-					$field = $address_fields[ $match_field ];
3184
-				}
3185
-			}
3186
-
3187
-			$is_date = ( ! empty( $field['type'] ) && $field['type'] == 'datepicker' ) || in_array( $match_field, array( 'post_date', 'post_modified' ) ) ? true : false;
3188
-			$is_date = apply_filters( 'geodir_post_badge_is_date', $is_date, $match_field, $field, $args, $find_post );
3189
-
3190
-			$match_value = isset($find_post->{$match_field}) ? esc_attr( trim( $find_post->{$match_field} ) ) : '';
3191
-			$match_found = $match_field === '' ? true : false;
3192
-
3193
-			if ( ! $match_found ) {
3194
-				if ( ( $match_field == 'post_date' || $match_field == 'post_modified' ) && ( empty( $args['condition'] ) || $args['condition'] == 'is_greater_than' || $args['condition'] == 'is_less_than' ) ) {
3195
-					if ( strpos( $search, '+' ) === false && strpos( $search, '-' ) === false ) {
3196
-						$search = '+' . $search;
3197
-					}
3198
-					$the_time = $match_field == 'post_modified' ? get_the_modified_date( 'Y-m-d', $find_post ) : get_the_time( 'Y-m-d', $find_post );
3199
-					$until_time = strtotime( $the_time . ' ' . $search . ' days' );
3200
-					$now_time   = strtotime( date_i18n( 'Y-m-d', current_time( 'timestamp' ) ) );
3201
-					if ( ( empty( $args['condition'] ) || $args['condition'] == 'is_less_than' ) && $until_time > $now_time ) {
3202
-						$match_found = true;
3203
-					} elseif ( $args['condition'] == 'is_greater_than' && $until_time < $now_time ) {
3204
-						$match_found = true;
3205
-					}
3206
-				} else {
3207
-					switch ( $args['condition'] ) {
3208
-						case 'is_equal':
3209
-							$match_found = (bool) ( $search != '' && $match_value == $search );
3210
-							break;
3211
-						case 'is_not_equal':
3212
-							$match_found = (bool) ( $search != '' && $match_value != $search );
3213
-							break;
3214
-						case 'is_greater_than':
3215
-							$match_found = (bool) ( $search != '' && ( is_float( $search ) || is_numeric( $search ) ) && ( is_float( $match_value ) || is_numeric( $match_value ) ) && $match_value > $search );
3216
-							break;
3217
-						case 'is_less_than':
3218
-							$match_found = (bool) ( $search != '' && ( is_float( $search ) || is_numeric( $search ) ) && ( is_float( $match_value ) || is_numeric( $match_value ) ) && $match_value < $search );
3219
-							break;
3220
-						case 'is_empty':
3221
-							$match_found = (bool) ( $match_value === '' || $match_value === false || $match_value === '0' || is_null( $match_value ) );
3222
-							break;
3223
-						case 'is_not_empty':
3224
-							$match_found = (bool) ( $match_value !== '' && $match_value !== false && $match_value !== '0' && ! is_null( $match_value ) );
3225
-							break;
3226
-						case 'is_contains':
3227
-							$match_found = (bool) ( $search != '' && stripos( $match_value, $search ) !== false );
3228
-							break;
3229
-						case 'is_not_contains':
3230
-							$match_found = (bool) ( $search != '' && stripos( $match_value, $search ) === false );
3231
-							break;
3232
-					}
3233
-				}
3234
-			}
3235
-
3236
-			$match_found = apply_filters( 'geodir_post_badge_check_match_found', $match_found, $args, $find_post );
3237
-		}
3238
-	}
3239
-
3240
-	return $match_found;
3124
+    global $gd_post;
3125
+
3126
+    $match_found = false;
3127
+
3128
+    if ( class_exists( 'GeoDirectory' ) && ! empty( $gd_post->ID ) && ! empty( $rule['field'] ) && ! empty( $rule['condition'] ) ) {
3129
+        $args['block_visibility'] = true;
3130
+        $args['key'] = $rule['field'];
3131
+        $args['condition'] = $rule['condition'];
3132
+        $args['search'] = isset( $rule['search'] ) ? $rule['search'] : '';
3133
+
3134
+        if ( $args['key'] == 'street' ) {
3135
+            $args['key'] = 'address';
3136
+        }
3137
+
3138
+        $match_field = $_match_field = $args['key'];
3139
+
3140
+        if ( $match_field == 'address' ) {
3141
+            $match_field = 'street';
3142
+        } elseif ( $match_field == 'post_images' ) {
3143
+            $match_field = 'featured_image';
3144
+        }
3145
+
3146
+        $find_post = $gd_post;
3147
+        $find_post_keys = ! empty( $find_post ) ? array_keys( (array) $find_post ) : array();
3148
+
3149
+        if ( ! empty( $find_post->ID ) && ! in_array( 'post_category', $find_post_keys ) ) {
3150
+            $find_post = geodir_get_post_info( (int) $find_post->ID );
3151
+            $find_post_keys = ! empty( $find_post ) ? array_keys( (array) $find_post ) : array();
3152
+        }
3153
+
3154
+        if ( $match_field === '' || ( ! empty( $find_post_keys ) && ( in_array( $match_field, $find_post_keys ) || in_array( $_match_field, $find_post_keys ) ) ) ) {
3155
+            $address_fields = array( 'street2', 'neighbourhood', 'city', 'region', 'country', 'zip', 'latitude', 'longitude' ); // Address fields
3156
+            $field = array();
3157
+
3158
+            if ( $match_field && ! in_array( $match_field, array( 'post_date', 'post_modified', 'default_category', 'post_id', 'post_status' ) ) && ! in_array( $match_field, $address_fields ) ) {
3159
+                $package_id = geodir_get_post_package_id( $find_post->ID, $find_post->post_type );
3160
+                $fields = geodir_post_custom_fields( $package_id, 'all', $find_post->post_type, 'none' );
3161
+
3162
+                foreach ( $fields as $field_info ) {
3163
+                    if ( $match_field == $field_info['htmlvar_name'] ) {
3164
+                        $field = $field_info;
3165
+                        break;
3166
+                    } elseif( $_match_field == $field_info['htmlvar_name'] ) {
3167
+                        $field = $field_info;
3168
+                        break;
3169
+                    }
3170
+                }
3171
+
3172
+                if ( empty( $field ) ) {
3173
+                    return false;
3174
+                }
3175
+            }
3176
+
3177
+            // Parse search.
3178
+            $search = sd_gd_field_rule_search( $args['search'], $find_post->post_type, $rule );
3179
+
3180
+            // Address fields.
3181
+            if ( in_array( $match_field, $address_fields ) && ( $address_fields = geodir_post_meta_address_fields( '' ) ) ) {
3182
+                if ( ! empty( $address_fields[ $match_field ] ) ) {
3183
+                    $field = $address_fields[ $match_field ];
3184
+                }
3185
+            }
3186
+
3187
+            $is_date = ( ! empty( $field['type'] ) && $field['type'] == 'datepicker' ) || in_array( $match_field, array( 'post_date', 'post_modified' ) ) ? true : false;
3188
+            $is_date = apply_filters( 'geodir_post_badge_is_date', $is_date, $match_field, $field, $args, $find_post );
3189
+
3190
+            $match_value = isset($find_post->{$match_field}) ? esc_attr( trim( $find_post->{$match_field} ) ) : '';
3191
+            $match_found = $match_field === '' ? true : false;
3192
+
3193
+            if ( ! $match_found ) {
3194
+                if ( ( $match_field == 'post_date' || $match_field == 'post_modified' ) && ( empty( $args['condition'] ) || $args['condition'] == 'is_greater_than' || $args['condition'] == 'is_less_than' ) ) {
3195
+                    if ( strpos( $search, '+' ) === false && strpos( $search, '-' ) === false ) {
3196
+                        $search = '+' . $search;
3197
+                    }
3198
+                    $the_time = $match_field == 'post_modified' ? get_the_modified_date( 'Y-m-d', $find_post ) : get_the_time( 'Y-m-d', $find_post );
3199
+                    $until_time = strtotime( $the_time . ' ' . $search . ' days' );
3200
+                    $now_time   = strtotime( date_i18n( 'Y-m-d', current_time( 'timestamp' ) ) );
3201
+                    if ( ( empty( $args['condition'] ) || $args['condition'] == 'is_less_than' ) && $until_time > $now_time ) {
3202
+                        $match_found = true;
3203
+                    } elseif ( $args['condition'] == 'is_greater_than' && $until_time < $now_time ) {
3204
+                        $match_found = true;
3205
+                    }
3206
+                } else {
3207
+                    switch ( $args['condition'] ) {
3208
+                        case 'is_equal':
3209
+                            $match_found = (bool) ( $search != '' && $match_value == $search );
3210
+                            break;
3211
+                        case 'is_not_equal':
3212
+                            $match_found = (bool) ( $search != '' && $match_value != $search );
3213
+                            break;
3214
+                        case 'is_greater_than':
3215
+                            $match_found = (bool) ( $search != '' && ( is_float( $search ) || is_numeric( $search ) ) && ( is_float( $match_value ) || is_numeric( $match_value ) ) && $match_value > $search );
3216
+                            break;
3217
+                        case 'is_less_than':
3218
+                            $match_found = (bool) ( $search != '' && ( is_float( $search ) || is_numeric( $search ) ) && ( is_float( $match_value ) || is_numeric( $match_value ) ) && $match_value < $search );
3219
+                            break;
3220
+                        case 'is_empty':
3221
+                            $match_found = (bool) ( $match_value === '' || $match_value === false || $match_value === '0' || is_null( $match_value ) );
3222
+                            break;
3223
+                        case 'is_not_empty':
3224
+                            $match_found = (bool) ( $match_value !== '' && $match_value !== false && $match_value !== '0' && ! is_null( $match_value ) );
3225
+                            break;
3226
+                        case 'is_contains':
3227
+                            $match_found = (bool) ( $search != '' && stripos( $match_value, $search ) !== false );
3228
+                            break;
3229
+                        case 'is_not_contains':
3230
+                            $match_found = (bool) ( $search != '' && stripos( $match_value, $search ) === false );
3231
+                            break;
3232
+                    }
3233
+                }
3234
+            }
3235
+
3236
+            $match_found = apply_filters( 'geodir_post_badge_check_match_found', $match_found, $args, $find_post );
3237
+        }
3238
+    }
3239
+
3240
+    return $match_found;
3241 3241
 }
3242 3242
 
3243 3243
 function sd_gd_field_rule_search( $search, $post_type, $rule ) {
3244
-	if ( ! $search ) {
3245
-		return $search;
3246
-	}
3247
-
3248
-	$orig_search = $search;
3249
-	$_search = strtolower( $search );
3250
-
3251
-	if ( $_search == 'date_today' ) {
3252
-		$search = date( 'Y-m-d' );
3253
-	} else if ( $_search == 'date_tomorrow' ) {
3254
-		$search = date( 'Y-m-d', strtotime( "+1 day" ) );
3255
-	} else if ( $_search == 'date_yesterday' ) {
3256
-		$search = date( 'Y-m-d', strtotime( "-1 day" ) );
3257
-	} else if ( $_search == 'time_his' ) {
3258
-		$search = date( 'H:i:s' );
3259
-	} else if ( $_search == 'time_hi' ) {
3260
-		$search = date( 'H:i' );
3261
-	} else if ( $_search == 'datetime_now' ) {
3262
-		$search = date( 'Y-m-d H:i:s' );
3263
-	} else if ( strpos( $_search, 'datetime_after_' ) === 0 ) {
3264
-		$_searches = explode( 'datetime_after_', $_search, 2 );
3265
-
3266
-		if ( ! empty( $_searches[1] ) ) {
3267
-			$search = date( 'Y-m-d H:i:s', strtotime( "+ " . str_replace( "_", " ", $_searches[1] ) ) );
3268
-		} else {
3269
-			$search = date( 'Y-m-d H:i:s' );
3270
-		}
3271
-	} else if ( strpos( $_search, 'datetime_before_' ) === 0 ) {
3272
-		$_searches = explode( 'datetime_before_', $_search, 2 );
3273
-
3274
-		if ( ! empty( $_searches[1] ) ) {
3275
-			$search = date( 'Y-m-d H:i:s', strtotime( "- " . str_replace( "_", " ", $_searches[1] ) ) );
3276
-		} else {
3277
-			$search = date( 'Y-m-d H:i:s' );
3278
-		}
3279
-	} else if ( strpos( $_search, 'date_after_' ) === 0 ) {
3280
-		$_searches = explode( 'date_after_', $_search, 2 );
3281
-
3282
-		if ( ! empty( $_searches[1] ) ) {
3283
-			$search = date( 'Y-m-d', strtotime( "+ " . str_replace( "_", " ", $_searches[1] ) ) );
3284
-		} else {
3285
-			$search = date( 'Y-m-d' );
3286
-		}
3287
-	} else if ( strpos( $_search, 'date_before_' ) === 0 ) {
3288
-		$_searches = explode( 'date_before_', $_search, 2 );
3289
-
3290
-		if ( ! empty( $_searches[1] ) ) {
3291
-			$search = date( 'Y-m-d', strtotime( "- " . str_replace( "_", " ", $_searches[1] ) ) );
3292
-		} else {
3293
-			$search = date( 'Y-m-d' );
3294
-		}
3295
-	}
3296
-
3297
-	return apply_filters( 'sd_gd_field_rule_search', $search, $post_type, $rule, $orig_search );
3244
+    if ( ! $search ) {
3245
+        return $search;
3246
+    }
3247
+
3248
+    $orig_search = $search;
3249
+    $_search = strtolower( $search );
3250
+
3251
+    if ( $_search == 'date_today' ) {
3252
+        $search = date( 'Y-m-d' );
3253
+    } else if ( $_search == 'date_tomorrow' ) {
3254
+        $search = date( 'Y-m-d', strtotime( "+1 day" ) );
3255
+    } else if ( $_search == 'date_yesterday' ) {
3256
+        $search = date( 'Y-m-d', strtotime( "-1 day" ) );
3257
+    } else if ( $_search == 'time_his' ) {
3258
+        $search = date( 'H:i:s' );
3259
+    } else if ( $_search == 'time_hi' ) {
3260
+        $search = date( 'H:i' );
3261
+    } else if ( $_search == 'datetime_now' ) {
3262
+        $search = date( 'Y-m-d H:i:s' );
3263
+    } else if ( strpos( $_search, 'datetime_after_' ) === 0 ) {
3264
+        $_searches = explode( 'datetime_after_', $_search, 2 );
3265
+
3266
+        if ( ! empty( $_searches[1] ) ) {
3267
+            $search = date( 'Y-m-d H:i:s', strtotime( "+ " . str_replace( "_", " ", $_searches[1] ) ) );
3268
+        } else {
3269
+            $search = date( 'Y-m-d H:i:s' );
3270
+        }
3271
+    } else if ( strpos( $_search, 'datetime_before_' ) === 0 ) {
3272
+        $_searches = explode( 'datetime_before_', $_search, 2 );
3273
+
3274
+        if ( ! empty( $_searches[1] ) ) {
3275
+            $search = date( 'Y-m-d H:i:s', strtotime( "- " . str_replace( "_", " ", $_searches[1] ) ) );
3276
+        } else {
3277
+            $search = date( 'Y-m-d H:i:s' );
3278
+        }
3279
+    } else if ( strpos( $_search, 'date_after_' ) === 0 ) {
3280
+        $_searches = explode( 'date_after_', $_search, 2 );
3281
+
3282
+        if ( ! empty( $_searches[1] ) ) {
3283
+            $search = date( 'Y-m-d', strtotime( "+ " . str_replace( "_", " ", $_searches[1] ) ) );
3284
+        } else {
3285
+            $search = date( 'Y-m-d' );
3286
+        }
3287
+    } else if ( strpos( $_search, 'date_before_' ) === 0 ) {
3288
+        $_searches = explode( 'date_before_', $_search, 2 );
3289
+
3290
+        if ( ! empty( $_searches[1] ) ) {
3291
+            $search = date( 'Y-m-d', strtotime( "- " . str_replace( "_", " ", $_searches[1] ) ) );
3292
+        } else {
3293
+            $search = date( 'Y-m-d' );
3294
+        }
3295
+    }
3296
+
3297
+    return apply_filters( 'sd_gd_field_rule_search', $search, $post_type, $rule, $orig_search );
3298 3298
 }
3299 3299
\ No newline at end of file
Please login to merge, or discard this patch.
vendor/ayecode/wp-font-awesome-settings/wp-font-awesome-settings.php 1 patch
Indentation   +805 added lines, -805 removed lines patch added patch discarded remove patch
@@ -13,7 +13,7 @@  discard block
 block discarded – undo
13 13
  * Bail if we are not in WP.
14 14
  */
15 15
 if ( ! defined( 'ABSPATH' ) ) {
16
-	exit;
16
+    exit;
17 17
 }
18 18
 
19 19
 /**
@@ -21,416 +21,416 @@  discard block
 block discarded – undo
21 21
  */
22 22
 if ( ! class_exists( 'WP_Font_Awesome_Settings' ) ) {
23 23
 
24
-	/**
25
-	 * A Class to be able to change settings for Font Awesome.
26
-	 *
27
-	 * Class WP_Font_Awesome_Settings
28
-	 * @since 1.0.10 Now able to pass wp.org theme check.
29
-	 * @since 1.0.11 Font Awesome Pro now supported.
30
-	 * @since 1.0.11 Font Awesome Kits now supported.
31
-	 * @since 1.0.13 RTL language support added.
32
-	 * @since 1.0.14 Warning added for v6 pro requires kit and will now not work if official FA plugin installed.
33
-	 * @since 1.0.15 Font Awesome will now load in the FSE if enable din the backend.
34
-	 * @since 1.1.0 Option added to load FontAwesome locally.
35
-	 * @since 1.1.1 Requires to re-save settings to load locally when option does not exists - FIXED.
36
-	 * @since 1.1.2 Bumped the latest version to 6.3.0 - CHANGED.
24
+    /**
25
+     * A Class to be able to change settings for Font Awesome.
26
+     *
27
+     * Class WP_Font_Awesome_Settings
28
+     * @since 1.0.10 Now able to pass wp.org theme check.
29
+     * @since 1.0.11 Font Awesome Pro now supported.
30
+     * @since 1.0.11 Font Awesome Kits now supported.
31
+     * @since 1.0.13 RTL language support added.
32
+     * @since 1.0.14 Warning added for v6 pro requires kit and will now not work if official FA plugin installed.
33
+     * @since 1.0.15 Font Awesome will now load in the FSE if enable din the backend.
34
+     * @since 1.1.0 Option added to load FontAwesome locally.
35
+     * @since 1.1.1 Requires to re-save settings to load locally when option does not exists - FIXED.
36
+     * @since 1.1.2 Bumped the latest version to 6.3.0 - CHANGED.
37 37
      * @since 1.1.3 Added JS files for iconpicker and added constant for URL for AyeCode-UI - ADDED.
38 38
      * @since 1.1.5 Added constant for when pro enabled - ADDED.
39 39
      * @since 1.1.6 Calling FA in wp_footer can cause issues on frontend - REVERTED
40
-	 * @ver 1.1.6
41
-	 * @todo decide how to implement textdomain
42
-	 */
43
-	class WP_Font_Awesome_Settings {
44
-
45
-		/**
46
-		 * Class version version.
47
-		 *
48
-		 * @var string
49
-		 */
50
-		public $version = '1.1.6';
51
-
52
-		/**
53
-		 * Class textdomain.
54
-		 *
55
-		 * @var string
56
-		 */
57
-		public $textdomain = 'font-awesome-settings';
58
-
59
-		/**
60
-		 * Latest version of Font Awesome at time of publish published.
61
-		 *
62
-		 * @var string
63
-		 */
64
-		public $latest = "6.4.2";
65
-
66
-		/**
67
-		 * The title.
68
-		 *
69
-		 * @var string
70
-		 */
71
-		public $name = 'Font Awesome';
72
-
73
-		/**
74
-		 * Holds the settings values.
75
-		 *
76
-		 * @var array
77
-		 */
78
-		private $settings;
79
-
80
-		/**
81
-		 * WP_Font_Awesome_Settings instance.
82
-		 *
83
-		 * @access private
84
-		 * @since  1.0.0
85
-		 * @var    WP_Font_Awesome_Settings There can be only one!
86
-		 */
87
-		private static $instance = null;
88
-
89
-		/**
90
-		 * Main WP_Font_Awesome_Settings Instance.
91
-		 *
92
-		 * Ensures only one instance of WP_Font_Awesome_Settings is loaded or can be loaded.
93
-		 *
94
-		 * @since 1.0.0
95
-		 * @static
96
-		 * @return WP_Font_Awesome_Settings - Main instance.
97
-		 */
98
-		public static function instance() {
99
-			if ( ! isset( self::$instance ) && ! ( self::$instance instanceof WP_Font_Awesome_Settings ) ) {
100
-				self::$instance = new WP_Font_Awesome_Settings;
101
-
102
-				add_action( 'init', array( self::$instance, 'init' ) ); // set settings
103
-
104
-				if ( is_admin() ) {
105
-					add_action( 'admin_menu', array( self::$instance, 'menu_item' ) );
106
-					add_action( 'admin_init', array( self::$instance, 'register_settings' ) );
107
-					add_action( 'admin_init', array( self::$instance, 'constants' ) );
108
-					add_action( 'admin_notices', array( self::$instance, 'admin_notices' ) );
109
-				}
110
-
111
-				do_action( 'wp_font_awesome_settings_loaded' );
112
-			}
113
-
114
-			return self::$instance;
115
-		}
116
-
117
-		/**
40
+     * @ver 1.1.6
41
+     * @todo decide how to implement textdomain
42
+     */
43
+    class WP_Font_Awesome_Settings {
44
+
45
+        /**
46
+         * Class version version.
47
+         *
48
+         * @var string
49
+         */
50
+        public $version = '1.1.6';
51
+
52
+        /**
53
+         * Class textdomain.
54
+         *
55
+         * @var string
56
+         */
57
+        public $textdomain = 'font-awesome-settings';
58
+
59
+        /**
60
+         * Latest version of Font Awesome at time of publish published.
61
+         *
62
+         * @var string
63
+         */
64
+        public $latest = "6.4.2";
65
+
66
+        /**
67
+         * The title.
68
+         *
69
+         * @var string
70
+         */
71
+        public $name = 'Font Awesome';
72
+
73
+        /**
74
+         * Holds the settings values.
75
+         *
76
+         * @var array
77
+         */
78
+        private $settings;
79
+
80
+        /**
81
+         * WP_Font_Awesome_Settings instance.
82
+         *
83
+         * @access private
84
+         * @since  1.0.0
85
+         * @var    WP_Font_Awesome_Settings There can be only one!
86
+         */
87
+        private static $instance = null;
88
+
89
+        /**
90
+         * Main WP_Font_Awesome_Settings Instance.
91
+         *
92
+         * Ensures only one instance of WP_Font_Awesome_Settings is loaded or can be loaded.
93
+         *
94
+         * @since 1.0.0
95
+         * @static
96
+         * @return WP_Font_Awesome_Settings - Main instance.
97
+         */
98
+        public static function instance() {
99
+            if ( ! isset( self::$instance ) && ! ( self::$instance instanceof WP_Font_Awesome_Settings ) ) {
100
+                self::$instance = new WP_Font_Awesome_Settings;
101
+
102
+                add_action( 'init', array( self::$instance, 'init' ) ); // set settings
103
+
104
+                if ( is_admin() ) {
105
+                    add_action( 'admin_menu', array( self::$instance, 'menu_item' ) );
106
+                    add_action( 'admin_init', array( self::$instance, 'register_settings' ) );
107
+                    add_action( 'admin_init', array( self::$instance, 'constants' ) );
108
+                    add_action( 'admin_notices', array( self::$instance, 'admin_notices' ) );
109
+                }
110
+
111
+                do_action( 'wp_font_awesome_settings_loaded' );
112
+            }
113
+
114
+            return self::$instance;
115
+        }
116
+
117
+        /**
118 118
          * Define any constants that may be needed by other packages.
119 119
          *
120
-		 * @return void
121
-		 */
122
-		public function constants(){
120
+         * @return void
121
+         */
122
+        public function constants(){
123 123
 
124
-			// register iconpicker constant
125
-			if ( ! defined( 'FAS_ICONPICKER_JS_URL' ) ) {
126
-				$url = $this->get_path_url();
127
-				$version = $this->settings['version'];
124
+            // register iconpicker constant
125
+            if ( ! defined( 'FAS_ICONPICKER_JS_URL' ) ) {
126
+                $url = $this->get_path_url();
127
+                $version = $this->settings['version'];
128 128
 
129
-				if( !$version || version_compare($version,'5.999','>')){
130
-					$url .= 'assets/js/fa-iconpicker-v6.min.js';
131
-				}else{
132
-					$url .= 'assets/js/fa-iconpicker-v5.min.js';
133
-				}
129
+                if( !$version || version_compare($version,'5.999','>')){
130
+                    $url .= 'assets/js/fa-iconpicker-v6.min.js';
131
+                }else{
132
+                    $url .= 'assets/js/fa-iconpicker-v5.min.js';
133
+                }
134 134
 
135
-				define( 'FAS_ICONPICKER_JS_URL', $url );
135
+                define( 'FAS_ICONPICKER_JS_URL', $url );
136 136
 
137
-			}
137
+            }
138 138
 
139 139
             // Set a constant if pro enbaled
140
-			if ( ! defined( 'FAS_PRO' ) && $this->settings['pro'] ) {
141
-				define( 'FAS_PRO', true );
142
-			}
143
-		}
144
-
145
-		/**
146
-		 * Get the url path to the current folder.
147
-		 *
148
-		 * @return string
149
-		 */
150
-		public function get_path_url() {
151
-			$content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) );
152
-			$content_url = untrailingslashit( WP_CONTENT_URL );
153
-
154
-			// Replace http:// to https://.
155
-			if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) {
156
-				$content_url = str_replace( 'http://', 'https://', $content_url );
157
-			}
158
-
159
-			// Check if we are inside a plugin
160
-			$file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) );
161
-			$url = str_replace( $content_dir, $content_url, $file_dir );
162
-
163
-			return trailingslashit( $url );
164
-		}
165
-
166
-		/**
167
-		 * Initiate the settings and add the required action hooks.
168
-		 *
169
-		 * @since 1.0.8 Settings name wrong - FIXED
170
-		 */
171
-		public function init() {
172
-			// Download fontawesome locally.
173
-			add_action( 'add_option_wp-font-awesome-settings', array( $this, 'add_option_wp_font_awesome_settings' ), 10, 2 );
174
-			add_action( 'update_option_wp-font-awesome-settings', array( $this, 'update_option_wp_font_awesome_settings' ), 10, 2 );
175
-
176
-			$this->settings = $this->get_settings();
177
-
178
-			// check if the official plugin is active and use that instead if so.
179
-			if ( ! defined( 'FONTAWESOME_PLUGIN_FILE' ) ) {
180
-
181
-				if ( $this->settings['type'] == 'CSS' ) {
182
-
183
-					if ( $this->settings['enqueue'] == '' || $this->settings['enqueue'] == 'frontend' ) {
184
-						add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_style' ), 5000 );
140
+            if ( ! defined( 'FAS_PRO' ) && $this->settings['pro'] ) {
141
+                define( 'FAS_PRO', true );
142
+            }
143
+        }
144
+
145
+        /**
146
+         * Get the url path to the current folder.
147
+         *
148
+         * @return string
149
+         */
150
+        public function get_path_url() {
151
+            $content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) );
152
+            $content_url = untrailingslashit( WP_CONTENT_URL );
153
+
154
+            // Replace http:// to https://.
155
+            if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) {
156
+                $content_url = str_replace( 'http://', 'https://', $content_url );
157
+            }
158
+
159
+            // Check if we are inside a plugin
160
+            $file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) );
161
+            $url = str_replace( $content_dir, $content_url, $file_dir );
162
+
163
+            return trailingslashit( $url );
164
+        }
165
+
166
+        /**
167
+         * Initiate the settings and add the required action hooks.
168
+         *
169
+         * @since 1.0.8 Settings name wrong - FIXED
170
+         */
171
+        public function init() {
172
+            // Download fontawesome locally.
173
+            add_action( 'add_option_wp-font-awesome-settings', array( $this, 'add_option_wp_font_awesome_settings' ), 10, 2 );
174
+            add_action( 'update_option_wp-font-awesome-settings', array( $this, 'update_option_wp_font_awesome_settings' ), 10, 2 );
175
+
176
+            $this->settings = $this->get_settings();
177
+
178
+            // check if the official plugin is active and use that instead if so.
179
+            if ( ! defined( 'FONTAWESOME_PLUGIN_FILE' ) ) {
180
+
181
+                if ( $this->settings['type'] == 'CSS' ) {
182
+
183
+                    if ( $this->settings['enqueue'] == '' || $this->settings['enqueue'] == 'frontend' ) {
184
+                        add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_style' ), 5000 );
185 185
 //						add_action( 'wp_footer', array( $this, 'enqueue_style' ), 5000 ); // not sure why this was added, seems to break frontend
186
-					}
187
-
188
-					if ( $this->settings['enqueue'] == '' || $this->settings['enqueue'] == 'backend' ) {
189
-						add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_style' ), 5000 );
190
-						add_filter( 'block_editor_settings_all', array( $this, 'enqueue_editor_styles' ), 10, 2 );
191
-					}
192
-
193
-				} else {
194
-
195
-					if ( $this->settings['enqueue'] == '' || $this->settings['enqueue'] == 'frontend' ) {
196
-						add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), 5000 );
197
-					}
198
-
199
-					if ( $this->settings['enqueue'] == '' || $this->settings['enqueue'] == 'backend' ) {
200
-						add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ), 5000 );
201
-						add_filter( 'block_editor_settings_all', array( $this, 'enqueue_editor_scripts' ), 10, 2 );
202
-					}
203
-				}
204
-
205
-				// remove font awesome if set to do so
206
-				if ( $this->settings['dequeue'] == '1' ) {
207
-					add_action( 'clean_url', array( $this, 'remove_font_awesome' ), 5000, 3 );
208
-				}
209
-			}
210
-
211
-		}
212
-
213
-		/**
214
-		 * Add FA to the FSE.
215
-		 *
216
-		 * @param $editor_settings
217
-		 * @param $block_editor_context
218
-		 *
219
-		 * @return array
220
-		 */
221
-		public function enqueue_editor_styles( $editor_settings, $block_editor_context ){
222
-
223
-			if ( ! empty( $editor_settings['__unstableResolvedAssets']['styles'] ) ) {
224
-				$url = $this->get_url();
225
-				$editor_settings['__unstableResolvedAssets']['styles'] .= "<link rel='stylesheet' id='font-awesome-css'  href='$url' media='all' />";
226
-			}
227
-
228
-			return $editor_settings;
229
-		}
230
-
231
-		/**
232
-		 * Add FA to the FSE.
233
-		 *
234
-		 * @param $editor_settings
235
-		 * @param $block_editor_context
236
-		 *
237
-		 * @return array
238
-		 */
239
-		public function enqueue_editor_scripts( $editor_settings, $block_editor_context ){
240
-
241
-			$url = $this->get_url();
242
-			$editor_settings['__unstableResolvedAssets']['scripts'] .= "<script src='$url' id='font-awesome-js'></script>";
243
-
244
-			return $editor_settings;
245
-		}
246
-
247
-		/**
248
-		 * Adds the Font Awesome styles.
249
-		 */
250
-		public function enqueue_style() {
251
-			// build url
252
-			$url = $this->get_url();
253
-			$version = ! empty( $this->settings['local'] ) && empty( $this->settings['pro'] ) ? strip_tags( $this->settings['local_version'] ) : null;
254
-
255
-			wp_deregister_style( 'font-awesome' ); // deregister in case its already there
256
-			wp_register_style( 'font-awesome', $url, array(), $version );
257
-			wp_enqueue_style( 'font-awesome' );
258
-
259
-			// RTL language support CSS.
260
-			if ( is_rtl() ) {
261
-				wp_add_inline_style( 'font-awesome', $this->rtl_inline_css() );
262
-			}
263
-
264
-			if ( $this->settings['shims'] ) {
265
-				$url = $this->get_url( true );
266
-				wp_deregister_style( 'font-awesome-shims' ); // deregister in case its already there
267
-				wp_register_style( 'font-awesome-shims', $url, array(), $version );
268
-				wp_enqueue_style( 'font-awesome-shims' );
269
-			}
270
-		}
271
-
272
-		/**
273
-		 * Adds the Font Awesome JS.
274
-		 */
275
-		public function enqueue_scripts() {
276
-			// build url
277
-			$url = $this->get_url();
278
-
279
-			$deregister_function = 'wp' . '_' . 'deregister' . '_' . 'script';
280
-			call_user_func( $deregister_function, 'font-awesome' ); // deregister in case its already there
281
-			wp_register_script( 'font-awesome', $url, array(), null );
282
-			wp_enqueue_script( 'font-awesome' );
283
-
284
-			if ( $this->settings['shims'] ) {
285
-				$url = $this->get_url( true );
286
-				call_user_func( $deregister_function, 'font-awesome-shims' ); // deregister in case its already there
287
-				wp_register_script( 'font-awesome-shims', $url, array(), null );
288
-				wp_enqueue_script( 'font-awesome-shims' );
289
-			}
290
-		}
291
-
292
-		/**
293
-		 * Get the url of the Font Awesome files.
294
-		 *
295
-		 * @param bool $shims If this is a shim file or not.
296
-		 * @param bool $local Load locally if allowed.
297
-		 *
298
-		 * @return string The url to the file.
299
-		 */
300
-		public function get_url( $shims = false, $local = true ) {
301
-			$script  = $shims ? 'v4-shims' : 'all';
302
-			$sub     = $this->settings['pro'] ? 'pro' : 'use';
303
-			$type    = $this->settings['type'];
304
-			$version = $this->settings['version'];
305
-			$kit_url = $this->settings['kit-url'] ? esc_url( $this->settings['kit-url'] ) : '';
306
-			$url     = '';
307
-
308
-			if ( $type == 'KIT' && $kit_url ) {
309
-				if ( $shims ) {
310
-					// if its a kit then we don't add shims here
311
-					return '';
312
-				}
313
-				$url .= $kit_url; // CDN
314
-				$url .= "?wpfas=true"; // set our var so our version is not removed
315
-			} else {
316
-				$v = '';
317
-				// Check and load locally.
318
-				if ( $local && $this->has_local() ) {
319
-					$script .= ".min";
320
-					$v .= '&ver=' . strip_tags( $this->settings['local_version'] );
321
-					$url .= $this->get_fonts_url(); // Local fonts url.
322
-				} else {
323
-					$url .= "https://$sub.fontawesome.com/releases/"; // CDN
324
-					$url .= ! empty( $version ) ? "v" . $version . '/' : "v" . $this->get_latest_version() . '/'; // version
325
-				}
326
-				$url .= $type == 'CSS' ? 'css/' : 'js/'; // type
327
-				$url .= $type == 'CSS' ? $script . '.css' : $script . '.js'; // type
328
-				$url .= "?wpfas=true" . $v; // set our var so our version is not removed
329
-			}
330
-
331
-			return $url;
332
-		}
333
-
334
-		/**
335
-		 * Try and remove any other versions of Font Awesome added by other plugins/themes.
336
-		 *
337
-		 * Uses the clean_url filter to try and remove any other Font Awesome files added, it can also add pseudo-elements flag for the JS version.
338
-		 *
339
-		 * @param $url
340
-		 * @param $original_url
341
-		 * @param $_context
342
-		 *
343
-		 * @return string The filtered url.
344
-		 */
345
-		public function remove_font_awesome( $url, $original_url, $_context ) {
346
-
347
-			if ( $_context == 'display'
348
-			     && ( strstr( $url, "fontawesome" ) !== false || strstr( $url, "font-awesome" ) !== false )
349
-			     && ( strstr( $url, ".js" ) !== false || strstr( $url, ".css" ) !== false )
350
-			) {// it's a font-awesome-url (probably)
351
-
352
-				if ( strstr( $url, "wpfas=true" ) !== false ) {
353
-					if ( $this->settings['type'] == 'JS' ) {
354
-						if ( $this->settings['js-pseudo'] ) {
355
-							$url .= "' data-search-pseudo-elements defer='defer";
356
-						} else {
357
-							$url .= "' defer='defer";
358
-						}
359
-					}
360
-				} else {
361
-					$url = ''; // removing the url removes the file
362
-				}
363
-
364
-			}
365
-
366
-			return $url;
367
-		}
368
-
369
-		/**
370
-		 * Register the database settings with WordPress.
371
-		 */
372
-		public function register_settings() {
373
-			register_setting( 'wp-font-awesome-settings', 'wp-font-awesome-settings' );
374
-		}
375
-
376
-		/**
377
-		 * Add the WordPress settings menu item.
378
-		 * @since 1.0.10 Calling function name direct will fail theme check so we don't.
379
-		 */
380
-		public function menu_item() {
381
-			$menu_function = 'add' . '_' . 'options' . '_' . 'page'; // won't pass theme check if function name present in theme
382
-			call_user_func( $menu_function, $this->name, $this->name, 'manage_options', 'wp-font-awesome-settings', array(
383
-				$this,
384
-				'settings_page'
385
-			) );
386
-		}
387
-
388
-		/**
389
-		 * Get the current Font Awesome output settings.
390
-		 *
391
-		 * @return array The array of settings.
392
-		 */
393
-		public function get_settings() {
394
-			$db_settings = get_option( 'wp-font-awesome-settings' );
395
-
396
-			$defaults = array(
397
-				'type'      => 'CSS', // type to use, CSS or JS or KIT
398
-				'version'   => '', // latest
399
-				'enqueue'   => '', // front and backend
400
-				'shims'     => '0', // default OFF now in 2020
401
-				'js-pseudo' => '0', // if the pseudo elements flag should be set (CPU intensive)
402
-				'dequeue'   => '0', // if we should try to remove other versions added by other plugins/themes
403
-				'pro'       => '0', // if pro CDN url should be used
404
-				'local'     => '0', // Store fonts locally.
405
-				'local_version' => '', // Local fonts version.
406
-				'kit-url'   => '', // the kit url
407
-			);
408
-
409
-			$settings = wp_parse_args( $db_settings, $defaults );
410
-
411
-			/**
412
-			 * Filter the Font Awesome settings.
413
-			 *
414
-			 * @todo if we add this filer people might use it and then it defeates the purpose of this class :/
415
-			 */
416
-			return $this->settings = apply_filters( 'wp-font-awesome-settings', $settings, $db_settings, $defaults );
417
-		}
418
-
419
-		/**
420
-		 * The settings page html output.
421
-		 */
422
-		public function settings_page() {
423
-			if ( ! current_user_can( 'manage_options' ) ) {
424
-				wp_die( __( 'You do not have sufficient permissions to access this page.', 'font-awesome-settings' ) );
425
-			}
426
-
427
-			// a hidden way to force the update of the version number via api instead of waiting the 48 hours
428
-			if ( isset( $_REQUEST['force-version-check'] ) ) {
429
-				$this->get_latest_version( $force_api = true );
430
-			}
431
-
432
-			if ( ! defined( 'FONTAWESOME_PLUGIN_FILE' ) ) {
433
-				?>
186
+                    }
187
+
188
+                    if ( $this->settings['enqueue'] == '' || $this->settings['enqueue'] == 'backend' ) {
189
+                        add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_style' ), 5000 );
190
+                        add_filter( 'block_editor_settings_all', array( $this, 'enqueue_editor_styles' ), 10, 2 );
191
+                    }
192
+
193
+                } else {
194
+
195
+                    if ( $this->settings['enqueue'] == '' || $this->settings['enqueue'] == 'frontend' ) {
196
+                        add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), 5000 );
197
+                    }
198
+
199
+                    if ( $this->settings['enqueue'] == '' || $this->settings['enqueue'] == 'backend' ) {
200
+                        add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ), 5000 );
201
+                        add_filter( 'block_editor_settings_all', array( $this, 'enqueue_editor_scripts' ), 10, 2 );
202
+                    }
203
+                }
204
+
205
+                // remove font awesome if set to do so
206
+                if ( $this->settings['dequeue'] == '1' ) {
207
+                    add_action( 'clean_url', array( $this, 'remove_font_awesome' ), 5000, 3 );
208
+                }
209
+            }
210
+
211
+        }
212
+
213
+        /**
214
+         * Add FA to the FSE.
215
+         *
216
+         * @param $editor_settings
217
+         * @param $block_editor_context
218
+         *
219
+         * @return array
220
+         */
221
+        public function enqueue_editor_styles( $editor_settings, $block_editor_context ){
222
+
223
+            if ( ! empty( $editor_settings['__unstableResolvedAssets']['styles'] ) ) {
224
+                $url = $this->get_url();
225
+                $editor_settings['__unstableResolvedAssets']['styles'] .= "<link rel='stylesheet' id='font-awesome-css'  href='$url' media='all' />";
226
+            }
227
+
228
+            return $editor_settings;
229
+        }
230
+
231
+        /**
232
+         * Add FA to the FSE.
233
+         *
234
+         * @param $editor_settings
235
+         * @param $block_editor_context
236
+         *
237
+         * @return array
238
+         */
239
+        public function enqueue_editor_scripts( $editor_settings, $block_editor_context ){
240
+
241
+            $url = $this->get_url();
242
+            $editor_settings['__unstableResolvedAssets']['scripts'] .= "<script src='$url' id='font-awesome-js'></script>";
243
+
244
+            return $editor_settings;
245
+        }
246
+
247
+        /**
248
+         * Adds the Font Awesome styles.
249
+         */
250
+        public function enqueue_style() {
251
+            // build url
252
+            $url = $this->get_url();
253
+            $version = ! empty( $this->settings['local'] ) && empty( $this->settings['pro'] ) ? strip_tags( $this->settings['local_version'] ) : null;
254
+
255
+            wp_deregister_style( 'font-awesome' ); // deregister in case its already there
256
+            wp_register_style( 'font-awesome', $url, array(), $version );
257
+            wp_enqueue_style( 'font-awesome' );
258
+
259
+            // RTL language support CSS.
260
+            if ( is_rtl() ) {
261
+                wp_add_inline_style( 'font-awesome', $this->rtl_inline_css() );
262
+            }
263
+
264
+            if ( $this->settings['shims'] ) {
265
+                $url = $this->get_url( true );
266
+                wp_deregister_style( 'font-awesome-shims' ); // deregister in case its already there
267
+                wp_register_style( 'font-awesome-shims', $url, array(), $version );
268
+                wp_enqueue_style( 'font-awesome-shims' );
269
+            }
270
+        }
271
+
272
+        /**
273
+         * Adds the Font Awesome JS.
274
+         */
275
+        public function enqueue_scripts() {
276
+            // build url
277
+            $url = $this->get_url();
278
+
279
+            $deregister_function = 'wp' . '_' . 'deregister' . '_' . 'script';
280
+            call_user_func( $deregister_function, 'font-awesome' ); // deregister in case its already there
281
+            wp_register_script( 'font-awesome', $url, array(), null );
282
+            wp_enqueue_script( 'font-awesome' );
283
+
284
+            if ( $this->settings['shims'] ) {
285
+                $url = $this->get_url( true );
286
+                call_user_func( $deregister_function, 'font-awesome-shims' ); // deregister in case its already there
287
+                wp_register_script( 'font-awesome-shims', $url, array(), null );
288
+                wp_enqueue_script( 'font-awesome-shims' );
289
+            }
290
+        }
291
+
292
+        /**
293
+         * Get the url of the Font Awesome files.
294
+         *
295
+         * @param bool $shims If this is a shim file or not.
296
+         * @param bool $local Load locally if allowed.
297
+         *
298
+         * @return string The url to the file.
299
+         */
300
+        public function get_url( $shims = false, $local = true ) {
301
+            $script  = $shims ? 'v4-shims' : 'all';
302
+            $sub     = $this->settings['pro'] ? 'pro' : 'use';
303
+            $type    = $this->settings['type'];
304
+            $version = $this->settings['version'];
305
+            $kit_url = $this->settings['kit-url'] ? esc_url( $this->settings['kit-url'] ) : '';
306
+            $url     = '';
307
+
308
+            if ( $type == 'KIT' && $kit_url ) {
309
+                if ( $shims ) {
310
+                    // if its a kit then we don't add shims here
311
+                    return '';
312
+                }
313
+                $url .= $kit_url; // CDN
314
+                $url .= "?wpfas=true"; // set our var so our version is not removed
315
+            } else {
316
+                $v = '';
317
+                // Check and load locally.
318
+                if ( $local && $this->has_local() ) {
319
+                    $script .= ".min";
320
+                    $v .= '&ver=' . strip_tags( $this->settings['local_version'] );
321
+                    $url .= $this->get_fonts_url(); // Local fonts url.
322
+                } else {
323
+                    $url .= "https://$sub.fontawesome.com/releases/"; // CDN
324
+                    $url .= ! empty( $version ) ? "v" . $version . '/' : "v" . $this->get_latest_version() . '/'; // version
325
+                }
326
+                $url .= $type == 'CSS' ? 'css/' : 'js/'; // type
327
+                $url .= $type == 'CSS' ? $script . '.css' : $script . '.js'; // type
328
+                $url .= "?wpfas=true" . $v; // set our var so our version is not removed
329
+            }
330
+
331
+            return $url;
332
+        }
333
+
334
+        /**
335
+         * Try and remove any other versions of Font Awesome added by other plugins/themes.
336
+         *
337
+         * Uses the clean_url filter to try and remove any other Font Awesome files added, it can also add pseudo-elements flag for the JS version.
338
+         *
339
+         * @param $url
340
+         * @param $original_url
341
+         * @param $_context
342
+         *
343
+         * @return string The filtered url.
344
+         */
345
+        public function remove_font_awesome( $url, $original_url, $_context ) {
346
+
347
+            if ( $_context == 'display'
348
+                 && ( strstr( $url, "fontawesome" ) !== false || strstr( $url, "font-awesome" ) !== false )
349
+                 && ( strstr( $url, ".js" ) !== false || strstr( $url, ".css" ) !== false )
350
+            ) {// it's a font-awesome-url (probably)
351
+
352
+                if ( strstr( $url, "wpfas=true" ) !== false ) {
353
+                    if ( $this->settings['type'] == 'JS' ) {
354
+                        if ( $this->settings['js-pseudo'] ) {
355
+                            $url .= "' data-search-pseudo-elements defer='defer";
356
+                        } else {
357
+                            $url .= "' defer='defer";
358
+                        }
359
+                    }
360
+                } else {
361
+                    $url = ''; // removing the url removes the file
362
+                }
363
+
364
+            }
365
+
366
+            return $url;
367
+        }
368
+
369
+        /**
370
+         * Register the database settings with WordPress.
371
+         */
372
+        public function register_settings() {
373
+            register_setting( 'wp-font-awesome-settings', 'wp-font-awesome-settings' );
374
+        }
375
+
376
+        /**
377
+         * Add the WordPress settings menu item.
378
+         * @since 1.0.10 Calling function name direct will fail theme check so we don't.
379
+         */
380
+        public function menu_item() {
381
+            $menu_function = 'add' . '_' . 'options' . '_' . 'page'; // won't pass theme check if function name present in theme
382
+            call_user_func( $menu_function, $this->name, $this->name, 'manage_options', 'wp-font-awesome-settings', array(
383
+                $this,
384
+                'settings_page'
385
+            ) );
386
+        }
387
+
388
+        /**
389
+         * Get the current Font Awesome output settings.
390
+         *
391
+         * @return array The array of settings.
392
+         */
393
+        public function get_settings() {
394
+            $db_settings = get_option( 'wp-font-awesome-settings' );
395
+
396
+            $defaults = array(
397
+                'type'      => 'CSS', // type to use, CSS or JS or KIT
398
+                'version'   => '', // latest
399
+                'enqueue'   => '', // front and backend
400
+                'shims'     => '0', // default OFF now in 2020
401
+                'js-pseudo' => '0', // if the pseudo elements flag should be set (CPU intensive)
402
+                'dequeue'   => '0', // if we should try to remove other versions added by other plugins/themes
403
+                'pro'       => '0', // if pro CDN url should be used
404
+                'local'     => '0', // Store fonts locally.
405
+                'local_version' => '', // Local fonts version.
406
+                'kit-url'   => '', // the kit url
407
+            );
408
+
409
+            $settings = wp_parse_args( $db_settings, $defaults );
410
+
411
+            /**
412
+             * Filter the Font Awesome settings.
413
+             *
414
+             * @todo if we add this filer people might use it and then it defeates the purpose of this class :/
415
+             */
416
+            return $this->settings = apply_filters( 'wp-font-awesome-settings', $settings, $db_settings, $defaults );
417
+        }
418
+
419
+        /**
420
+         * The settings page html output.
421
+         */
422
+        public function settings_page() {
423
+            if ( ! current_user_can( 'manage_options' ) ) {
424
+                wp_die( __( 'You do not have sufficient permissions to access this page.', 'font-awesome-settings' ) );
425
+            }
426
+
427
+            // a hidden way to force the update of the version number via api instead of waiting the 48 hours
428
+            if ( isset( $_REQUEST['force-version-check'] ) ) {
429
+                $this->get_latest_version( $force_api = true );
430
+            }
431
+
432
+            if ( ! defined( 'FONTAWESOME_PLUGIN_FILE' ) ) {
433
+                ?>
434 434
                 <style>
435 435
                     .wpfas-kit-show {
436 436
                         display: none;
@@ -456,16 +456,16 @@  discard block
 block discarded – undo
456 456
                     <h1><?php echo $this->name; ?></h1>
457 457
                     <form method="post" action="options.php" class="fas-settings-form">
458 458
 						<?php
459
-						settings_fields( 'wp-font-awesome-settings' );
460
-						do_settings_sections( 'wp-font-awesome-settings' );
461
-						$table_class = '';
462
-						if ( $this->settings['type'] ) {
463
-							$table_class .= 'wpfas-' . sanitize_html_class( strtolower( $this->settings['type'] ) ) . '-set';
464
-						}
465
-						if ( ! empty( $this->settings['pro'] ) ) {
466
-							$table_class .= ' wpfas-has-pro';
467
-						}
468
-						?>
459
+                        settings_fields( 'wp-font-awesome-settings' );
460
+                        do_settings_sections( 'wp-font-awesome-settings' );
461
+                        $table_class = '';
462
+                        if ( $this->settings['type'] ) {
463
+                            $table_class .= 'wpfas-' . sanitize_html_class( strtolower( $this->settings['type'] ) ) . '-set';
464
+                        }
465
+                        if ( ! empty( $this->settings['pro'] ) ) {
466
+                            $table_class .= ' wpfas-has-pro';
467
+                        }
468
+                        ?>
469 469
 						<?php if ( $this->settings['type'] != 'KIT' && ! empty( $this->settings['local'] ) && empty( $this->settings['pro'] ) ) { ?>
470 470
 							<?php if ( $this->has_local() ) { ?>
471 471
                                 <div class="notice notice-info"><p><strong><?php _e( 'Font Awesome fonts are loading locally.', 'font-awesome-settings' ); ?></strong></p></div>
@@ -490,12 +490,12 @@  discard block
 block discarded – undo
490 490
                                 <td>
491 491
                                     <input class="regular-text" id="wpfas-kit-url" type="url" name="wp-font-awesome-settings[kit-url]" value="<?php echo esc_attr( $this->settings['kit-url'] ); ?>" placeholder="<?php echo 'https://kit.font';echo 'awesome.com/123abc.js'; // this won't pass theme check :(?>"/>
492 492
                                     <span><?php
493
-										echo sprintf(
494
-											__( 'Requires a free account with Font Awesome. %sGet kit url%s', 'font-awesome-settings' ),
495
-											'<a rel="noopener noreferrer" target="_blank" href="https://fontawesome.com/kits"><i class="fas fa-external-link-alt"></i>',
496
-											'</a>'
497
-										);
498
-										?></span>
493
+                                        echo sprintf(
494
+                                            __( 'Requires a free account with Font Awesome. %sGet kit url%s', 'font-awesome-settings' ),
495
+                                            '<a rel="noopener noreferrer" target="_blank" href="https://fontawesome.com/kits"><i class="fas fa-external-link-alt"></i>',
496
+                                            '</a>'
497
+                                        );
498
+                                        ?></span>
499 499
                                 </td>
500 500
                             </tr>
501 501
 
@@ -536,14 +536,14 @@  discard block
 block discarded – undo
536 536
                                     <input type="hidden" name="wp-font-awesome-settings[pro]" value="0"/>
537 537
                                     <input type="checkbox" name="wp-font-awesome-settings[pro]" value="1" <?php checked( $this->settings['pro'], '1' ); ?> id="wpfas-pro" onchange="if(jQuery(this).is(':checked')){jQuery('.wpfas-table-settings').addClass('wpfas-has-pro')}else{jQuery('.wpfas-table-settings').removeClass('wpfas-has-pro')}"/>
538 538
                                     <span><?php
539
-										echo wp_sprintf(
540
-											__( 'Requires a subscription. %sLearn more%s  %sManage my allowed domains%s', 'font-awesome-settings' ),
541
-											'<a rel="noopener noreferrer" target="_blank" href="https://fontawesome.com/referral?a=c9b89e1418">',
542
-											' <i class="fas fa-external-link-alt"></i></a>',
543
-											'<a rel="noopener noreferrer" target="_blank" href="https://fontawesome.com/account/cdn">',
544
-											' <i class="fas fa-external-link-alt"></i></a>'
545
-										);
546
-										?></span>
539
+                                        echo wp_sprintf(
540
+                                            __( 'Requires a subscription. %sLearn more%s  %sManage my allowed domains%s', 'font-awesome-settings' ),
541
+                                            '<a rel="noopener noreferrer" target="_blank" href="https://fontawesome.com/referral?a=c9b89e1418">',
542
+                                            ' <i class="fas fa-external-link-alt"></i></a>',
543
+                                            '<a rel="noopener noreferrer" target="_blank" href="https://fontawesome.com/account/cdn">',
544
+                                            ' <i class="fas fa-external-link-alt"></i></a>'
545
+                                        );
546
+                                        ?></span>
547 547
                                 </td>
548 548
                             </tr>
549 549
 
@@ -597,8 +597,8 @@  discard block
 block discarded – undo
597 597
                         </table>
598 598
                         <div class="fas-buttons">
599 599
 							<?php
600
-							submit_button();
601
-							?>
600
+                            submit_button();
601
+                            ?>
602 602
                             <p class="submit"><a href="https://fontawesome.com/referral?a=c9b89e1418" class="button button-secondary"><?php _e('Get 24,000+ more icons with Font Awesome Pro','font-awesome-settings'); ?> <i class="fas fa-external-link-alt"></i></a></p>
603 603
 
604 604
                         </div>
@@ -607,392 +607,392 @@  discard block
 block discarded – undo
607 607
                     <div id="wpfas-version"><?php echo sprintf(__( 'Version: %s (affiliate links provided)', 'font-awesome-settings' ), $this->version ); ?></div>
608 608
                 </div>
609 609
 				<?php
610
-			}
611
-		}
612
-
613
-		/**
614
-		 * Check a version number is valid and if so return it or else return an empty string.
615
-		 *
616
-		 * @param $version string The version number to check.
617
-		 *
618
-		 * @since 1.0.6
619
-		 *
620
-		 * @return string Either a valid version number or an empty string.
621
-		 */
622
-		public function validate_version_number( $version ) {
623
-
624
-			if ( version_compare( $version, '0.0.1', '>=' ) >= 0 ) {
625
-				// valid
626
-			} else {
627
-				$version = '';// not validated
628
-			}
629
-
630
-			return $version;
631
-		}
632
-
633
-
634
-		/**
635
-		 * Get the latest version of Font Awesome.
636
-		 *
637
-		 * We check for a cached version and if none we will check for a live version via API and then cache it for 48 hours.
638
-		 *
639
-		 * @since 1.0.7
640
-		 * @return mixed|string The latest version number found.
641
-		 */
642
-		public function get_latest_version( $force_api = false ) {
643
-			$latest_version = $this->latest;
644
-
645
-			$cache = get_transient( 'wp-font-awesome-settings-version' );
646
-
647
-			if ( $cache === false || $force_api ) { // its not set
648
-				$api_ver = $this->get_latest_version_from_api();
649
-				if ( version_compare( $api_ver, $this->latest, '>=' ) >= 0 ) {
650
-					$latest_version = $api_ver;
651
-					set_transient( 'wp-font-awesome-settings-version', $api_ver, 48 * HOUR_IN_SECONDS );
652
-				}
653
-			} elseif ( $this->validate_version_number( $cache ) ) {
654
-				if ( version_compare( $cache, $this->latest, '>=' ) >= 0 ) {
655
-					$latest_version = $cache;
656
-				}
657
-			}
658
-
659
-			// Check and auto download fonts locally.
660
-			if ( empty( $this->settings['pro'] ) && empty( $this->settings['version'] ) && $this->settings['type'] != 'KIT' && ! empty( $this->settings['local'] ) && ! empty( $this->settings['local_version'] ) && ! empty( $latest_version ) ) {
661
-				if ( version_compare( $latest_version, $this->settings['local_version'], '>' ) && is_admin() && ! wp_doing_ajax() ) {
662
-					$this->download_package( $latest_version );
663
-				}
664
-			}
665
-
666
-			return $latest_version;
667
-		}
668
-
669
-		/**
670
-		 * Get the latest Font Awesome version from the github API.
671
-		 *
672
-		 * @since 1.0.7
673
-		 * @return string The latest version number or `0` on API fail.
674
-		 */
675
-		public function get_latest_version_from_api() {
676
-			$version  = "0";
677
-			$response = wp_remote_get( "https://api.github.com/repos/FortAwesome/Font-Awesome/releases/latest" );
678
-			if ( ! is_wp_error( $response ) && is_array( $response ) ) {
679
-				$api_response = json_decode( wp_remote_retrieve_body( $response ), true );
680
-				if ( isset( $api_response['tag_name'] ) && version_compare( $api_response['tag_name'], $this->latest, '>=' ) >= 0 && empty( $api_response['prerelease'] ) ) {
681
-					$version = $api_response['tag_name'];
682
-				}
683
-			}
684
-
685
-			return $version;
686
-		}
687
-
688
-		/**
689
-		 * Inline CSS for RTL language support.
690
-		 *
691
-		 * @since 1.0.13
692
-		 * @return string Inline CSS.
693
-		 */
694
-		public function rtl_inline_css() {
695
-			$inline_css = '[dir=rtl] .fa-address,[dir=rtl] .fa-address-card,[dir=rtl] .fa-adjust,[dir=rtl] .fa-alarm-clock,[dir=rtl] .fa-align-left,[dir=rtl] .fa-align-right,[dir=rtl] .fa-analytics,[dir=rtl] .fa-angle-double-left,[dir=rtl] .fa-angle-double-right,[dir=rtl] .fa-angle-left,[dir=rtl] .fa-angle-right,[dir=rtl] .fa-arrow-alt-circle-left,[dir=rtl] .fa-arrow-alt-circle-right,[dir=rtl] .fa-arrow-alt-from-left,[dir=rtl] .fa-arrow-alt-from-right,[dir=rtl] .fa-arrow-alt-left,[dir=rtl] .fa-arrow-alt-right,[dir=rtl] .fa-arrow-alt-square-left,[dir=rtl] .fa-arrow-alt-square-right,[dir=rtl] .fa-arrow-alt-to-left,[dir=rtl] .fa-arrow-alt-to-right,[dir=rtl] .fa-arrow-circle-left,[dir=rtl] .fa-arrow-circle-right,[dir=rtl] .fa-arrow-from-left,[dir=rtl] .fa-arrow-from-right,[dir=rtl] .fa-arrow-left,[dir=rtl] .fa-arrow-right,[dir=rtl] .fa-arrow-square-left,[dir=rtl] .fa-arrow-square-right,[dir=rtl] .fa-arrow-to-left,[dir=rtl] .fa-arrow-to-right,[dir=rtl] .fa-balance-scale-left,[dir=rtl] .fa-balance-scale-right,[dir=rtl] .fa-bed,[dir=rtl] .fa-bed-bunk,[dir=rtl] .fa-bed-empty,[dir=rtl] .fa-border-left,[dir=rtl] .fa-border-right,[dir=rtl] .fa-calendar-check,[dir=rtl] .fa-caret-circle-left,[dir=rtl] .fa-caret-circle-right,[dir=rtl] .fa-caret-left,[dir=rtl] .fa-caret-right,[dir=rtl] .fa-caret-square-left,[dir=rtl] .fa-caret-square-right,[dir=rtl] .fa-cart-arrow-down,[dir=rtl] .fa-cart-plus,[dir=rtl] .fa-chart-area,[dir=rtl] .fa-chart-bar,[dir=rtl] .fa-chart-line,[dir=rtl] .fa-chart-line-down,[dir=rtl] .fa-chart-network,[dir=rtl] .fa-chart-pie,[dir=rtl] .fa-chart-pie-alt,[dir=rtl] .fa-chart-scatter,[dir=rtl] .fa-check-circle,[dir=rtl] .fa-check-square,[dir=rtl] .fa-chevron-circle-left,[dir=rtl] .fa-chevron-circle-right,[dir=rtl] .fa-chevron-double-left,[dir=rtl] .fa-chevron-double-right,[dir=rtl] .fa-chevron-left,[dir=rtl] .fa-chevron-right,[dir=rtl] .fa-chevron-square-left,[dir=rtl] .fa-chevron-square-right,[dir=rtl] .fa-clock,[dir=rtl] .fa-file,[dir=rtl] .fa-file-alt,[dir=rtl] .fa-file-archive,[dir=rtl] .fa-file-audio,[dir=rtl] .fa-file-chart-line,[dir=rtl] .fa-file-chart-pie,[dir=rtl] .fa-file-code,[dir=rtl] .fa-file-excel,[dir=rtl] .fa-file-image,[dir=rtl] .fa-file-pdf,[dir=rtl] .fa-file-powerpoint,[dir=rtl] .fa-file-video,[dir=rtl] .fa-file-word,[dir=rtl] .fa-flag,[dir=rtl] .fa-folder,[dir=rtl] .fa-folder-open,[dir=rtl] .fa-hand-lizard,[dir=rtl] .fa-hand-point-down,[dir=rtl] .fa-hand-point-left,[dir=rtl] .fa-hand-point-right,[dir=rtl] .fa-hand-point-up,[dir=rtl] .fa-hand-scissors,[dir=rtl] .fa-image,[dir=rtl] .fa-long-arrow-alt-left,[dir=rtl] .fa-long-arrow-alt-right,[dir=rtl] .fa-long-arrow-left,[dir=rtl] .fa-long-arrow-right,[dir=rtl] .fa-luggage-cart,[dir=rtl] .fa-moon,[dir=rtl] .fa-pencil,[dir=rtl] .fa-pencil-alt,[dir=rtl] .fa-play-circle,[dir=rtl] .fa-project-diagram,[dir=rtl] .fa-quote-left,[dir=rtl] .fa-quote-right,[dir=rtl] .fa-shopping-cart,[dir=rtl] .fa-thumbs-down,[dir=rtl] .fa-thumbs-up,[dir=rtl] .fa-user-chart{filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);transform:scale(-1,1)}[dir=rtl] .fa-spin{animation-direction:reverse}';
696
-
697
-			return $inline_css;
698
-		}
699
-
700
-		/**
701
-		 * Show any warnings as an admin notice.
702
-		 *
703
-		 * @return void
704
-		 */
705
-		public function admin_notices() {
706
-			$settings = $this->settings;
707
-
708
-			if ( defined( 'FONTAWESOME_PLUGIN_FILE' ) ) {
709
-				if ( ! empty( $_REQUEST['page'] ) && $_REQUEST['page'] == 'wp-font-awesome-settings' ) {
710
-					?>
610
+            }
611
+        }
612
+
613
+        /**
614
+         * Check a version number is valid and if so return it or else return an empty string.
615
+         *
616
+         * @param $version string The version number to check.
617
+         *
618
+         * @since 1.0.6
619
+         *
620
+         * @return string Either a valid version number or an empty string.
621
+         */
622
+        public function validate_version_number( $version ) {
623
+
624
+            if ( version_compare( $version, '0.0.1', '>=' ) >= 0 ) {
625
+                // valid
626
+            } else {
627
+                $version = '';// not validated
628
+            }
629
+
630
+            return $version;
631
+        }
632
+
633
+
634
+        /**
635
+         * Get the latest version of Font Awesome.
636
+         *
637
+         * We check for a cached version and if none we will check for a live version via API and then cache it for 48 hours.
638
+         *
639
+         * @since 1.0.7
640
+         * @return mixed|string The latest version number found.
641
+         */
642
+        public function get_latest_version( $force_api = false ) {
643
+            $latest_version = $this->latest;
644
+
645
+            $cache = get_transient( 'wp-font-awesome-settings-version' );
646
+
647
+            if ( $cache === false || $force_api ) { // its not set
648
+                $api_ver = $this->get_latest_version_from_api();
649
+                if ( version_compare( $api_ver, $this->latest, '>=' ) >= 0 ) {
650
+                    $latest_version = $api_ver;
651
+                    set_transient( 'wp-font-awesome-settings-version', $api_ver, 48 * HOUR_IN_SECONDS );
652
+                }
653
+            } elseif ( $this->validate_version_number( $cache ) ) {
654
+                if ( version_compare( $cache, $this->latest, '>=' ) >= 0 ) {
655
+                    $latest_version = $cache;
656
+                }
657
+            }
658
+
659
+            // Check and auto download fonts locally.
660
+            if ( empty( $this->settings['pro'] ) && empty( $this->settings['version'] ) && $this->settings['type'] != 'KIT' && ! empty( $this->settings['local'] ) && ! empty( $this->settings['local_version'] ) && ! empty( $latest_version ) ) {
661
+                if ( version_compare( $latest_version, $this->settings['local_version'], '>' ) && is_admin() && ! wp_doing_ajax() ) {
662
+                    $this->download_package( $latest_version );
663
+                }
664
+            }
665
+
666
+            return $latest_version;
667
+        }
668
+
669
+        /**
670
+         * Get the latest Font Awesome version from the github API.
671
+         *
672
+         * @since 1.0.7
673
+         * @return string The latest version number or `0` on API fail.
674
+         */
675
+        public function get_latest_version_from_api() {
676
+            $version  = "0";
677
+            $response = wp_remote_get( "https://api.github.com/repos/FortAwesome/Font-Awesome/releases/latest" );
678
+            if ( ! is_wp_error( $response ) && is_array( $response ) ) {
679
+                $api_response = json_decode( wp_remote_retrieve_body( $response ), true );
680
+                if ( isset( $api_response['tag_name'] ) && version_compare( $api_response['tag_name'], $this->latest, '>=' ) >= 0 && empty( $api_response['prerelease'] ) ) {
681
+                    $version = $api_response['tag_name'];
682
+                }
683
+            }
684
+
685
+            return $version;
686
+        }
687
+
688
+        /**
689
+         * Inline CSS for RTL language support.
690
+         *
691
+         * @since 1.0.13
692
+         * @return string Inline CSS.
693
+         */
694
+        public function rtl_inline_css() {
695
+            $inline_css = '[dir=rtl] .fa-address,[dir=rtl] .fa-address-card,[dir=rtl] .fa-adjust,[dir=rtl] .fa-alarm-clock,[dir=rtl] .fa-align-left,[dir=rtl] .fa-align-right,[dir=rtl] .fa-analytics,[dir=rtl] .fa-angle-double-left,[dir=rtl] .fa-angle-double-right,[dir=rtl] .fa-angle-left,[dir=rtl] .fa-angle-right,[dir=rtl] .fa-arrow-alt-circle-left,[dir=rtl] .fa-arrow-alt-circle-right,[dir=rtl] .fa-arrow-alt-from-left,[dir=rtl] .fa-arrow-alt-from-right,[dir=rtl] .fa-arrow-alt-left,[dir=rtl] .fa-arrow-alt-right,[dir=rtl] .fa-arrow-alt-square-left,[dir=rtl] .fa-arrow-alt-square-right,[dir=rtl] .fa-arrow-alt-to-left,[dir=rtl] .fa-arrow-alt-to-right,[dir=rtl] .fa-arrow-circle-left,[dir=rtl] .fa-arrow-circle-right,[dir=rtl] .fa-arrow-from-left,[dir=rtl] .fa-arrow-from-right,[dir=rtl] .fa-arrow-left,[dir=rtl] .fa-arrow-right,[dir=rtl] .fa-arrow-square-left,[dir=rtl] .fa-arrow-square-right,[dir=rtl] .fa-arrow-to-left,[dir=rtl] .fa-arrow-to-right,[dir=rtl] .fa-balance-scale-left,[dir=rtl] .fa-balance-scale-right,[dir=rtl] .fa-bed,[dir=rtl] .fa-bed-bunk,[dir=rtl] .fa-bed-empty,[dir=rtl] .fa-border-left,[dir=rtl] .fa-border-right,[dir=rtl] .fa-calendar-check,[dir=rtl] .fa-caret-circle-left,[dir=rtl] .fa-caret-circle-right,[dir=rtl] .fa-caret-left,[dir=rtl] .fa-caret-right,[dir=rtl] .fa-caret-square-left,[dir=rtl] .fa-caret-square-right,[dir=rtl] .fa-cart-arrow-down,[dir=rtl] .fa-cart-plus,[dir=rtl] .fa-chart-area,[dir=rtl] .fa-chart-bar,[dir=rtl] .fa-chart-line,[dir=rtl] .fa-chart-line-down,[dir=rtl] .fa-chart-network,[dir=rtl] .fa-chart-pie,[dir=rtl] .fa-chart-pie-alt,[dir=rtl] .fa-chart-scatter,[dir=rtl] .fa-check-circle,[dir=rtl] .fa-check-square,[dir=rtl] .fa-chevron-circle-left,[dir=rtl] .fa-chevron-circle-right,[dir=rtl] .fa-chevron-double-left,[dir=rtl] .fa-chevron-double-right,[dir=rtl] .fa-chevron-left,[dir=rtl] .fa-chevron-right,[dir=rtl] .fa-chevron-square-left,[dir=rtl] .fa-chevron-square-right,[dir=rtl] .fa-clock,[dir=rtl] .fa-file,[dir=rtl] .fa-file-alt,[dir=rtl] .fa-file-archive,[dir=rtl] .fa-file-audio,[dir=rtl] .fa-file-chart-line,[dir=rtl] .fa-file-chart-pie,[dir=rtl] .fa-file-code,[dir=rtl] .fa-file-excel,[dir=rtl] .fa-file-image,[dir=rtl] .fa-file-pdf,[dir=rtl] .fa-file-powerpoint,[dir=rtl] .fa-file-video,[dir=rtl] .fa-file-word,[dir=rtl] .fa-flag,[dir=rtl] .fa-folder,[dir=rtl] .fa-folder-open,[dir=rtl] .fa-hand-lizard,[dir=rtl] .fa-hand-point-down,[dir=rtl] .fa-hand-point-left,[dir=rtl] .fa-hand-point-right,[dir=rtl] .fa-hand-point-up,[dir=rtl] .fa-hand-scissors,[dir=rtl] .fa-image,[dir=rtl] .fa-long-arrow-alt-left,[dir=rtl] .fa-long-arrow-alt-right,[dir=rtl] .fa-long-arrow-left,[dir=rtl] .fa-long-arrow-right,[dir=rtl] .fa-luggage-cart,[dir=rtl] .fa-moon,[dir=rtl] .fa-pencil,[dir=rtl] .fa-pencil-alt,[dir=rtl] .fa-play-circle,[dir=rtl] .fa-project-diagram,[dir=rtl] .fa-quote-left,[dir=rtl] .fa-quote-right,[dir=rtl] .fa-shopping-cart,[dir=rtl] .fa-thumbs-down,[dir=rtl] .fa-thumbs-up,[dir=rtl] .fa-user-chart{filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);transform:scale(-1,1)}[dir=rtl] .fa-spin{animation-direction:reverse}';
696
+
697
+            return $inline_css;
698
+        }
699
+
700
+        /**
701
+         * Show any warnings as an admin notice.
702
+         *
703
+         * @return void
704
+         */
705
+        public function admin_notices() {
706
+            $settings = $this->settings;
707
+
708
+            if ( defined( 'FONTAWESOME_PLUGIN_FILE' ) ) {
709
+                if ( ! empty( $_REQUEST['page'] ) && $_REQUEST['page'] == 'wp-font-awesome-settings' ) {
710
+                    ?>
711 711
                     <div class="notice  notice-error is-dismissible">
712 712
                         <p><?php _e( 'The Official Font Awesome Plugin is active, please adjust your settings there.', 'font-awesome-settings' ); ?></p>
713 713
                     </div>
714 714
 					<?php
715
-				}
716
-			} else {
717
-				if ( ! empty( $settings ) ) {
718
-					if ( $settings['type'] != 'KIT' && $settings['pro'] && ( $settings['version'] == '' || version_compare( $settings['version'], '6', '>=' ) ) ) {
719
-						$link = admin_url('options-general.php?page=wp-font-awesome-settings');
720
-						?>
715
+                }
716
+            } else {
717
+                if ( ! empty( $settings ) ) {
718
+                    if ( $settings['type'] != 'KIT' && $settings['pro'] && ( $settings['version'] == '' || version_compare( $settings['version'], '6', '>=' ) ) ) {
719
+                        $link = admin_url('options-general.php?page=wp-font-awesome-settings');
720
+                        ?>
721 721
                         <div class="notice  notice-error is-dismissible">
722 722
                             <p><?php echo sprintf( __( 'Font Awesome Pro v6 requires the use of a kit, please setup your kit in %ssettings.%s', 'font-awesome-settings' ),"<a href='". esc_url_raw( $link )."'>","</a>" ); ?></p>
723 723
                         </div>
724 724
 						<?php
725
-					}
726
-				}
727
-			}
728
-		}
729
-
730
-		/**
731
-		 * Handle fontawesome add settings to download fontawesome to store locally.
732
-		 *
733
-		 * @since 1.1.1
734
-		 *
735
-		 * @param string $option The option name.
736
-		 * @param mixed  $value  The option value.
737
-		 */
738
-		public function add_option_wp_font_awesome_settings( $option, $value ) {
739
-			// Do nothing if WordPress is being installed.
740
-			if ( wp_installing() ) {
741
-				return;
742
-			}
743
-
744
-			if ( ! empty( $value['local'] ) && empty( $value['pro'] ) && ! ( ! empty( $value['type'] ) && $value['type'] == 'KIT' ) ) {
745
-				$version = isset( $value['version'] ) && $value['version'] ? $value['version'] : $this->get_latest_version();
746
-
747
-				if ( ! empty( $version ) ) {
748
-					$response = $this->download_package( $version, $value );
749
-
750
-					if ( is_wp_error( $response ) ) {
751
-						add_settings_error( 'general', 'fontawesome_download', __( 'ERROR:', 'font-awesome-settings' ) . ' ' . $response->get_error_message(), 'error' );
752
-					}
753
-				}
754
-			}
755
-		}
756
-
757
-		/**
758
-		 * Handle fontawesome update settings to download fontawesome to store locally.
759
-		 *
760
-		 * @since 1.1.0
761
-		 *
762
-		 * @param mixed $old_value The old option value.
763
-		 * @param mixed $value     The new option value.
764
-		 */
765
-		public function update_option_wp_font_awesome_settings( $old_value, $new_value ) {
766
-			// Do nothing if WordPress is being installed.
767
-			if ( wp_installing() ) {
768
-				return;
769
-			}
770
-
771
-			if ( ! empty( $new_value['local'] ) && empty( $new_value['pro'] ) && ! ( ! empty( $new_value['type'] ) && $new_value['type'] == 'KIT' ) ) {
772
-				// Old values
773
-				$old_version = isset( $old_value['version'] ) && $old_value['version'] ? $old_value['version'] : ( isset( $old_value['local_version'] ) ? $old_value['local_version'] : '' );
774
-				$old_local = isset( $old_value['local'] ) ? (int) $old_value['local'] : 0;
775
-
776
-				// New values
777
-				$new_version = isset( $new_value['version'] ) && $new_value['version'] ? $new_value['version'] : $this->get_latest_version();
778
-
779
-				if ( empty( $old_local ) || $old_version !== $new_version || ! file_exists( $this->get_fonts_dir() . 'css' . DIRECTORY_SEPARATOR . 'all.css' ) ) {
780
-					$response = $this->download_package( $new_version, $new_value );
781
-
782
-					if ( is_wp_error( $response ) ) {
783
-						add_settings_error( 'general', 'fontawesome_download', __( 'ERROR:', 'font-awesome-settings' ) . ' ' . $response->get_error_message(), 'error' );
784
-					}
785
-				}
786
-			}
787
-		}
788
-
789
-		/**
790
-		 * Get the fonts directory local path.
791
-		 *
792
-		 * @since 1.1.0
793
-		 *
794
-		 * @param string Fonts directory local path.
795
-		 */
796
-		public function get_fonts_dir() {
797
-			$upload_dir = wp_upload_dir( null, false );
798
-
799
-			return $upload_dir['basedir'] . DIRECTORY_SEPARATOR .  'ayefonts' . DIRECTORY_SEPARATOR . 'fa' . DIRECTORY_SEPARATOR;
800
-		}
801
-
802
-		/**
803
-		 * Get the fonts directory local url.
804
-		 *
805
-		 * @since 1.1.0
806
-		 *
807
-		 * @param string Fonts directory local url.
808
-		 */
809
-		public function get_fonts_url() {
810
-			$upload_dir = wp_upload_dir( null, false );
811
-
812
-			return $upload_dir['baseurl'] .  '/ayefonts/fa/';
813
-		}
814
-
815
-		/**
816
-		 * Check whether load locally active.
817
-		 *
818
-		 * @since 1.1.0
819
-		 *
820
-		 * @return bool True if active else false.
821
-		 */
822
-		public function has_local() {
823
-			if ( ! empty( $this->settings['local'] ) && empty( $this->settings['pro'] ) && file_exists( $this->get_fonts_dir() . 'css' . DIRECTORY_SEPARATOR . 'all.css' ) ) {
824
-				return true;
825
-			}
826
-
827
-			return false;
828
-		}
829
-
830
-		/**
831
-		 * Get the WP Filesystem access.
832
-		 *
833
-		 * @since 1.1.0
834
-		 *
835
-		 * @return object The WP Filesystem.
836
-		 */
837
-		public function get_wp_filesystem() {
838
-			if ( ! function_exists( 'get_filesystem_method' ) ) {
839
-				require_once( ABSPATH . "/wp-admin/includes/file.php" );
840
-			}
841
-
842
-			$access_type = get_filesystem_method();
843
-
844
-			if ( $access_type === 'direct' ) {
845
-				/* You can safely run request_filesystem_credentials() without any issues and don't need to worry about passing in a URL */
846
-				$creds = request_filesystem_credentials( trailingslashit( site_url() ) . 'wp-admin/', '', false, false, array() );
847
-
848
-				/* Initialize the API */
849
-				if ( ! WP_Filesystem( $creds ) ) {
850
-					/* Any problems and we exit */
851
-					return false;
852
-				}
853
-
854
-				global $wp_filesystem;
855
-
856
-				return $wp_filesystem;
857
-				/* Do our file manipulations below */
858
-			} else if ( defined( 'FTP_USER' ) ) {
859
-				$creds = request_filesystem_credentials( trailingslashit( site_url() ) . 'wp-admin/', '', false, false, array() );
860
-
861
-				/* Initialize the API */
862
-				if ( ! WP_Filesystem( $creds ) ) {
863
-					/* Any problems and we exit */
864
-					return false;
865
-				}
866
-
867
-				global $wp_filesystem;
868
-
869
-				return $wp_filesystem;
870
-			} else {
871
-				/* Don't have direct write access. Prompt user with our notice */
872
-				return false;
873
-			}
874
-		}
875
-
876
-		/**
877
-		 * Download the fontawesome package file.
878
-		 *
879
-		 * @since 1.1.0
880
-		 *
881
-		 * @param mixed $version The font awesome.
882
-		 * @param array $option Fontawesome settings.
883
-		 * @return WP_ERROR|bool Error on fail and true on success.
884
-		 */
885
-		public function download_package( $version, $option = array() ) {
886
-			$filename = 'fontawesome-free-' . $version . '-web';
887
-			$url = 'https://use.fontawesome.com/releases/v' . $version . '/' . $filename . '.zip';
888
-
889
-			if ( ! function_exists( 'wp_handle_upload' ) ) {
890
-				require_once ABSPATH . 'wp-admin/includes/file.php';
891
-			}
892
-
893
-			$download_file = download_url( esc_url_raw( $url ) );
894
-
895
-			if ( is_wp_error( $download_file ) ) {
896
-				return new WP_Error( 'fontawesome_download_failed', __( $download_file->get_error_message(), 'font-awesome-settings' ) );
897
-			} else if ( empty( $download_file ) ) {
898
-				return new WP_Error( 'fontawesome_download_failed', __( 'Something went wrong in downloading the font awesome to store locally.', 'font-awesome-settings' ) );
899
-			}
900
-
901
-			$response = $this->extract_package( $download_file, $filename, true );
902
-
903
-			// Update local version.
904
-			if ( is_wp_error( $response ) ) {
905
-				return $response;
906
-			} else if ( $response ) {
907
-				if ( empty( $option ) ) {
908
-					$option = get_option( 'wp-font-awesome-settings' );
909
-				}
910
-
911
-				$option['local_version'] = $version;
912
-
913
-				// Remove action to prevent looping.
914
-				remove_action( 'update_option_wp-font-awesome-settings', array( $this, 'update_option_wp_font_awesome_settings' ), 10, 2 );
915
-
916
-				update_option( 'wp-font-awesome-settings', $option );
917
-
918
-				return true;
919
-			}
920
-
921
-			return false;
922
-		}
923
-
924
-		/**
925
-		 * Extract the fontawesome package file.
926
-		 *
927
-		 * @since 1.1.0
928
-		 *
929
-		 * @param string $package The package file path.
930
-		 * @param string $dirname Package file name.
931
-		 * @param bool   $delete_package Delete temp file or not.
932
-		 * @return WP_Error|bool True on success WP_Error on fail.
933
-		 */
934
-		public function extract_package( $package, $dirname = '', $delete_package = false ) {
935
-			global $wp_filesystem;
936
-
937
-			$wp_filesystem = $this->get_wp_filesystem();
938
-
939
-			if ( empty( $wp_filesystem ) && isset( $wp_filesystem->errors ) && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {
940
-				return new WP_Error( 'fontawesome_filesystem_error', __( $wp_filesystem->errors->get_error_message(), 'font-awesome-settings' ) );
941
-			} else if ( empty( $wp_filesystem ) ) {
942
-				return new WP_Error( 'fontawesome_filesystem_error', __( 'Failed to initialise WP_Filesystem while trying to download the Font Awesome package.', 'font-awesome-settings' ) );
943
-			}
944
-
945
-			$fonts_dir = $this->get_fonts_dir();
946
-			$fonts_tmp_dir = dirname( $fonts_dir ) . DIRECTORY_SEPARATOR . 'fa-tmp' . DIRECTORY_SEPARATOR;
947
-
948
-			if ( $wp_filesystem->is_dir( $fonts_tmp_dir ) ) {
949
-				$wp_filesystem->delete( $fonts_tmp_dir, true );
950
-			}
951
-
952
-			// Unzip package to working directory.
953
-			$result = unzip_file( $package, $fonts_tmp_dir );
954
-
955
-			if ( is_wp_error( $result ) ) {
956
-				$wp_filesystem->delete( $fonts_tmp_dir, true );
957
-
958
-				if ( 'incompatible_archive' === $result->get_error_code() ) {
959
-					return new WP_Error( 'fontawesome_incompatible_archive', __( $result->get_error_message(), 'font-awesome-settings' ) );
960
-				}
961
-
962
-				return $result;
963
-			}
964
-
965
-			if ( $wp_filesystem->is_dir( $fonts_dir ) ) {
966
-				$wp_filesystem->delete( $fonts_dir, true );
967
-			}
968
-
969
-			$extract_dir = $fonts_tmp_dir;
970
-
971
-			if ( $dirname && $wp_filesystem->is_dir( $extract_dir . $dirname . DIRECTORY_SEPARATOR ) ) {
972
-				$extract_dir .= $dirname . DIRECTORY_SEPARATOR;
973
-			}
974
-
975
-			try {
976
-				$return = $wp_filesystem->move( $extract_dir, $fonts_dir, true );
977
-			} catch ( Exception $e ) {
978
-				$return = new WP_Error( 'fontawesome_move_package', __( 'Fail to move font awesome package!', 'font-awesome-settings' ) );
979
-			}
980
-
981
-			if ( $wp_filesystem->is_dir( $fonts_tmp_dir ) ) {
982
-				$wp_filesystem->delete( $fonts_tmp_dir, true );
983
-			}
984
-
985
-			// Once extracted, delete the package if required.
986
-			if ( $delete_package ) {
987
-				unlink( $package );
988
-			}
989
-
990
-			return $return;
991
-		}
992
-	}
993
-
994
-	/**
995
-	 * Run the class if found.
996
-	 */
997
-	WP_Font_Awesome_Settings::instance();
725
+                    }
726
+                }
727
+            }
728
+        }
729
+
730
+        /**
731
+         * Handle fontawesome add settings to download fontawesome to store locally.
732
+         *
733
+         * @since 1.1.1
734
+         *
735
+         * @param string $option The option name.
736
+         * @param mixed  $value  The option value.
737
+         */
738
+        public function add_option_wp_font_awesome_settings( $option, $value ) {
739
+            // Do nothing if WordPress is being installed.
740
+            if ( wp_installing() ) {
741
+                return;
742
+            }
743
+
744
+            if ( ! empty( $value['local'] ) && empty( $value['pro'] ) && ! ( ! empty( $value['type'] ) && $value['type'] == 'KIT' ) ) {
745
+                $version = isset( $value['version'] ) && $value['version'] ? $value['version'] : $this->get_latest_version();
746
+
747
+                if ( ! empty( $version ) ) {
748
+                    $response = $this->download_package( $version, $value );
749
+
750
+                    if ( is_wp_error( $response ) ) {
751
+                        add_settings_error( 'general', 'fontawesome_download', __( 'ERROR:', 'font-awesome-settings' ) . ' ' . $response->get_error_message(), 'error' );
752
+                    }
753
+                }
754
+            }
755
+        }
756
+
757
+        /**
758
+         * Handle fontawesome update settings to download fontawesome to store locally.
759
+         *
760
+         * @since 1.1.0
761
+         *
762
+         * @param mixed $old_value The old option value.
763
+         * @param mixed $value     The new option value.
764
+         */
765
+        public function update_option_wp_font_awesome_settings( $old_value, $new_value ) {
766
+            // Do nothing if WordPress is being installed.
767
+            if ( wp_installing() ) {
768
+                return;
769
+            }
770
+
771
+            if ( ! empty( $new_value['local'] ) && empty( $new_value['pro'] ) && ! ( ! empty( $new_value['type'] ) && $new_value['type'] == 'KIT' ) ) {
772
+                // Old values
773
+                $old_version = isset( $old_value['version'] ) && $old_value['version'] ? $old_value['version'] : ( isset( $old_value['local_version'] ) ? $old_value['local_version'] : '' );
774
+                $old_local = isset( $old_value['local'] ) ? (int) $old_value['local'] : 0;
775
+
776
+                // New values
777
+                $new_version = isset( $new_value['version'] ) && $new_value['version'] ? $new_value['version'] : $this->get_latest_version();
778
+
779
+                if ( empty( $old_local ) || $old_version !== $new_version || ! file_exists( $this->get_fonts_dir() . 'css' . DIRECTORY_SEPARATOR . 'all.css' ) ) {
780
+                    $response = $this->download_package( $new_version, $new_value );
781
+
782
+                    if ( is_wp_error( $response ) ) {
783
+                        add_settings_error( 'general', 'fontawesome_download', __( 'ERROR:', 'font-awesome-settings' ) . ' ' . $response->get_error_message(), 'error' );
784
+                    }
785
+                }
786
+            }
787
+        }
788
+
789
+        /**
790
+         * Get the fonts directory local path.
791
+         *
792
+         * @since 1.1.0
793
+         *
794
+         * @param string Fonts directory local path.
795
+         */
796
+        public function get_fonts_dir() {
797
+            $upload_dir = wp_upload_dir( null, false );
798
+
799
+            return $upload_dir['basedir'] . DIRECTORY_SEPARATOR .  'ayefonts' . DIRECTORY_SEPARATOR . 'fa' . DIRECTORY_SEPARATOR;
800
+        }
801
+
802
+        /**
803
+         * Get the fonts directory local url.
804
+         *
805
+         * @since 1.1.0
806
+         *
807
+         * @param string Fonts directory local url.
808
+         */
809
+        public function get_fonts_url() {
810
+            $upload_dir = wp_upload_dir( null, false );
811
+
812
+            return $upload_dir['baseurl'] .  '/ayefonts/fa/';
813
+        }
814
+
815
+        /**
816
+         * Check whether load locally active.
817
+         *
818
+         * @since 1.1.0
819
+         *
820
+         * @return bool True if active else false.
821
+         */
822
+        public function has_local() {
823
+            if ( ! empty( $this->settings['local'] ) && empty( $this->settings['pro'] ) && file_exists( $this->get_fonts_dir() . 'css' . DIRECTORY_SEPARATOR . 'all.css' ) ) {
824
+                return true;
825
+            }
826
+
827
+            return false;
828
+        }
829
+
830
+        /**
831
+         * Get the WP Filesystem access.
832
+         *
833
+         * @since 1.1.0
834
+         *
835
+         * @return object The WP Filesystem.
836
+         */
837
+        public function get_wp_filesystem() {
838
+            if ( ! function_exists( 'get_filesystem_method' ) ) {
839
+                require_once( ABSPATH . "/wp-admin/includes/file.php" );
840
+            }
841
+
842
+            $access_type = get_filesystem_method();
843
+
844
+            if ( $access_type === 'direct' ) {
845
+                /* You can safely run request_filesystem_credentials() without any issues and don't need to worry about passing in a URL */
846
+                $creds = request_filesystem_credentials( trailingslashit( site_url() ) . 'wp-admin/', '', false, false, array() );
847
+
848
+                /* Initialize the API */
849
+                if ( ! WP_Filesystem( $creds ) ) {
850
+                    /* Any problems and we exit */
851
+                    return false;
852
+                }
853
+
854
+                global $wp_filesystem;
855
+
856
+                return $wp_filesystem;
857
+                /* Do our file manipulations below */
858
+            } else if ( defined( 'FTP_USER' ) ) {
859
+                $creds = request_filesystem_credentials( trailingslashit( site_url() ) . 'wp-admin/', '', false, false, array() );
860
+
861
+                /* Initialize the API */
862
+                if ( ! WP_Filesystem( $creds ) ) {
863
+                    /* Any problems and we exit */
864
+                    return false;
865
+                }
866
+
867
+                global $wp_filesystem;
868
+
869
+                return $wp_filesystem;
870
+            } else {
871
+                /* Don't have direct write access. Prompt user with our notice */
872
+                return false;
873
+            }
874
+        }
875
+
876
+        /**
877
+         * Download the fontawesome package file.
878
+         *
879
+         * @since 1.1.0
880
+         *
881
+         * @param mixed $version The font awesome.
882
+         * @param array $option Fontawesome settings.
883
+         * @return WP_ERROR|bool Error on fail and true on success.
884
+         */
885
+        public function download_package( $version, $option = array() ) {
886
+            $filename = 'fontawesome-free-' . $version . '-web';
887
+            $url = 'https://use.fontawesome.com/releases/v' . $version . '/' . $filename . '.zip';
888
+
889
+            if ( ! function_exists( 'wp_handle_upload' ) ) {
890
+                require_once ABSPATH . 'wp-admin/includes/file.php';
891
+            }
892
+
893
+            $download_file = download_url( esc_url_raw( $url ) );
894
+
895
+            if ( is_wp_error( $download_file ) ) {
896
+                return new WP_Error( 'fontawesome_download_failed', __( $download_file->get_error_message(), 'font-awesome-settings' ) );
897
+            } else if ( empty( $download_file ) ) {
898
+                return new WP_Error( 'fontawesome_download_failed', __( 'Something went wrong in downloading the font awesome to store locally.', 'font-awesome-settings' ) );
899
+            }
900
+
901
+            $response = $this->extract_package( $download_file, $filename, true );
902
+
903
+            // Update local version.
904
+            if ( is_wp_error( $response ) ) {
905
+                return $response;
906
+            } else if ( $response ) {
907
+                if ( empty( $option ) ) {
908
+                    $option = get_option( 'wp-font-awesome-settings' );
909
+                }
910
+
911
+                $option['local_version'] = $version;
912
+
913
+                // Remove action to prevent looping.
914
+                remove_action( 'update_option_wp-font-awesome-settings', array( $this, 'update_option_wp_font_awesome_settings' ), 10, 2 );
915
+
916
+                update_option( 'wp-font-awesome-settings', $option );
917
+
918
+                return true;
919
+            }
920
+
921
+            return false;
922
+        }
923
+
924
+        /**
925
+         * Extract the fontawesome package file.
926
+         *
927
+         * @since 1.1.0
928
+         *
929
+         * @param string $package The package file path.
930
+         * @param string $dirname Package file name.
931
+         * @param bool   $delete_package Delete temp file or not.
932
+         * @return WP_Error|bool True on success WP_Error on fail.
933
+         */
934
+        public function extract_package( $package, $dirname = '', $delete_package = false ) {
935
+            global $wp_filesystem;
936
+
937
+            $wp_filesystem = $this->get_wp_filesystem();
938
+
939
+            if ( empty( $wp_filesystem ) && isset( $wp_filesystem->errors ) && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {
940
+                return new WP_Error( 'fontawesome_filesystem_error', __( $wp_filesystem->errors->get_error_message(), 'font-awesome-settings' ) );
941
+            } else if ( empty( $wp_filesystem ) ) {
942
+                return new WP_Error( 'fontawesome_filesystem_error', __( 'Failed to initialise WP_Filesystem while trying to download the Font Awesome package.', 'font-awesome-settings' ) );
943
+            }
944
+
945
+            $fonts_dir = $this->get_fonts_dir();
946
+            $fonts_tmp_dir = dirname( $fonts_dir ) . DIRECTORY_SEPARATOR . 'fa-tmp' . DIRECTORY_SEPARATOR;
947
+
948
+            if ( $wp_filesystem->is_dir( $fonts_tmp_dir ) ) {
949
+                $wp_filesystem->delete( $fonts_tmp_dir, true );
950
+            }
951
+
952
+            // Unzip package to working directory.
953
+            $result = unzip_file( $package, $fonts_tmp_dir );
954
+
955
+            if ( is_wp_error( $result ) ) {
956
+                $wp_filesystem->delete( $fonts_tmp_dir, true );
957
+
958
+                if ( 'incompatible_archive' === $result->get_error_code() ) {
959
+                    return new WP_Error( 'fontawesome_incompatible_archive', __( $result->get_error_message(), 'font-awesome-settings' ) );
960
+                }
961
+
962
+                return $result;
963
+            }
964
+
965
+            if ( $wp_filesystem->is_dir( $fonts_dir ) ) {
966
+                $wp_filesystem->delete( $fonts_dir, true );
967
+            }
968
+
969
+            $extract_dir = $fonts_tmp_dir;
970
+
971
+            if ( $dirname && $wp_filesystem->is_dir( $extract_dir . $dirname . DIRECTORY_SEPARATOR ) ) {
972
+                $extract_dir .= $dirname . DIRECTORY_SEPARATOR;
973
+            }
974
+
975
+            try {
976
+                $return = $wp_filesystem->move( $extract_dir, $fonts_dir, true );
977
+            } catch ( Exception $e ) {
978
+                $return = new WP_Error( 'fontawesome_move_package', __( 'Fail to move font awesome package!', 'font-awesome-settings' ) );
979
+            }
980
+
981
+            if ( $wp_filesystem->is_dir( $fonts_tmp_dir ) ) {
982
+                $wp_filesystem->delete( $fonts_tmp_dir, true );
983
+            }
984
+
985
+            // Once extracted, delete the package if required.
986
+            if ( $delete_package ) {
987
+                unlink( $package );
988
+            }
989
+
990
+            return $return;
991
+        }
992
+    }
993
+
994
+    /**
995
+     * Run the class if found.
996
+     */
997
+    WP_Font_Awesome_Settings::instance();
998 998
 }
Please login to merge, or discard this patch.
vendor/ayecode/wp-ayecode-ui/includes/ayecode-ui-settings.php 1 patch
Indentation   +1921 added lines, -1921 removed lines patch added patch discarded remove patch
@@ -13,7 +13,7 @@  discard block
 block discarded – undo
13 13
  * Bail if we are not in WP.
14 14
  */
15 15
 if ( ! defined( 'ABSPATH' ) ) {
16
-	exit;
16
+    exit;
17 17
 }
18 18
 
19 19
 /**
@@ -21,480 +21,480 @@  discard block
 block discarded – undo
21 21
  */
22 22
 if ( ! class_exists( 'AyeCode_UI_Settings' ) ) {
23 23
 
24
-	/**
25
-	 * A Class to be able to change settings for Font Awesome.
26
-	 *
27
-	 * Class AyeCode_UI_Settings
28
-	 * @ver 1.0.0
29
-	 * @todo decide how to implement textdomain
30
-	 */
31
-	class AyeCode_UI_Settings {
32
-
33
-		/**
34
-		 * Class version version.
35
-		 *
36
-		 * @var string
37
-		 */
38
-		public $version = '0.2.0';
39
-
40
-		/**
41
-		 * Class textdomain.
42
-		 *
43
-		 * @var string
44
-		 */
45
-		public $textdomain = 'aui';
46
-
47
-		/**
48
-		 * Latest version of Bootstrap at time of publish published.
49
-		 *
50
-		 * @var string
51
-		 */
52
-		public $latest = "5.2.2";
53
-
54
-		/**
55
-		 * Current version of select2 being used.
56
-		 *
57
-		 * @var string
58
-		 */
59
-		public $select2_version = "4.0.11";
60
-
61
-		/**
62
-		 * The title.
63
-		 *
64
-		 * @var string
65
-		 */
66
-		public $name = 'AyeCode UI';
67
-
68
-		/**
69
-		 * The relative url to the assets.
70
-		 *
71
-		 * @var string
72
-		 */
73
-		public $url = '';
74
-
75
-		/**
76
-		 * Holds the settings values.
77
-		 *
78
-		 * @var array
79
-		 */
80
-		private $settings;
81
-
82
-		/**
83
-		 * AyeCode_UI_Settings instance.
84
-		 *
85
-		 * @access private
86
-		 * @since  1.0.0
87
-		 * @var    AyeCode_UI_Settings There can be only one!
88
-		 */
89
-		private static $instance = null;
90
-
91
-
92
-		/**
93
-		 * Main AyeCode_UI_Settings Instance.
94
-		 *
95
-		 * Ensures only one instance of AyeCode_UI_Settings is loaded or can be loaded.
96
-		 *
97
-		 * @since 1.0.0
98
-		 * @static
99
-		 * @return AyeCode_UI_Settings - Main instance.
100
-		 */
101
-		public static function instance() {
102
-			if ( ! isset( self::$instance ) && ! ( self::$instance instanceof AyeCode_UI_Settings ) ) {
103
-
104
-				self::$instance = new AyeCode_UI_Settings;
105
-
106
-				add_action( 'init', array( self::$instance, 'init' ) ); // set settings
107
-
108
-				if ( is_admin() ) {
109
-					add_action( 'admin_menu', array( self::$instance, 'menu_item' ) );
110
-					add_action( 'admin_init', array( self::$instance, 'register_settings' ) );
111
-
112
-					// Maybe show example page
113
-					add_action( 'template_redirect', array( self::$instance,'maybe_show_examples' ) );
114
-
115
-					if ( defined( 'BLOCKSTRAP_VERSION' ) ) {
116
-						add_filter( 'sd_aui_colors', array( self::$instance,'sd_aui_colors' ), 10, 3 );
117
-					}
118
-				}
24
+    /**
25
+     * A Class to be able to change settings for Font Awesome.
26
+     *
27
+     * Class AyeCode_UI_Settings
28
+     * @ver 1.0.0
29
+     * @todo decide how to implement textdomain
30
+     */
31
+    class AyeCode_UI_Settings {
32
+
33
+        /**
34
+         * Class version version.
35
+         *
36
+         * @var string
37
+         */
38
+        public $version = '0.2.0';
39
+
40
+        /**
41
+         * Class textdomain.
42
+         *
43
+         * @var string
44
+         */
45
+        public $textdomain = 'aui';
46
+
47
+        /**
48
+         * Latest version of Bootstrap at time of publish published.
49
+         *
50
+         * @var string
51
+         */
52
+        public $latest = "5.2.2";
53
+
54
+        /**
55
+         * Current version of select2 being used.
56
+         *
57
+         * @var string
58
+         */
59
+        public $select2_version = "4.0.11";
60
+
61
+        /**
62
+         * The title.
63
+         *
64
+         * @var string
65
+         */
66
+        public $name = 'AyeCode UI';
67
+
68
+        /**
69
+         * The relative url to the assets.
70
+         *
71
+         * @var string
72
+         */
73
+        public $url = '';
74
+
75
+        /**
76
+         * Holds the settings values.
77
+         *
78
+         * @var array
79
+         */
80
+        private $settings;
81
+
82
+        /**
83
+         * AyeCode_UI_Settings instance.
84
+         *
85
+         * @access private
86
+         * @since  1.0.0
87
+         * @var    AyeCode_UI_Settings There can be only one!
88
+         */
89
+        private static $instance = null;
90
+
91
+
92
+        /**
93
+         * Main AyeCode_UI_Settings Instance.
94
+         *
95
+         * Ensures only one instance of AyeCode_UI_Settings is loaded or can be loaded.
96
+         *
97
+         * @since 1.0.0
98
+         * @static
99
+         * @return AyeCode_UI_Settings - Main instance.
100
+         */
101
+        public static function instance() {
102
+            if ( ! isset( self::$instance ) && ! ( self::$instance instanceof AyeCode_UI_Settings ) ) {
103
+
104
+                self::$instance = new AyeCode_UI_Settings;
105
+
106
+                add_action( 'init', array( self::$instance, 'init' ) ); // set settings
107
+
108
+                if ( is_admin() ) {
109
+                    add_action( 'admin_menu', array( self::$instance, 'menu_item' ) );
110
+                    add_action( 'admin_init', array( self::$instance, 'register_settings' ) );
111
+
112
+                    // Maybe show example page
113
+                    add_action( 'template_redirect', array( self::$instance,'maybe_show_examples' ) );
114
+
115
+                    if ( defined( 'BLOCKSTRAP_VERSION' ) ) {
116
+                        add_filter( 'sd_aui_colors', array( self::$instance,'sd_aui_colors' ), 10, 3 );
117
+                    }
118
+                }
119 119
 
120
-				add_action( 'customize_register', array( self::$instance, 'customizer_settings' ));
120
+                add_action( 'customize_register', array( self::$instance, 'customizer_settings' ));
121 121
 
122
-				do_action( 'ayecode_ui_settings_loaded' );
123
-			}
122
+                do_action( 'ayecode_ui_settings_loaded' );
123
+            }
124 124
 
125
-			return self::$instance;
126
-		}
125
+            return self::$instance;
126
+        }
127 127
 
128
-		/**
129
-		 * Add custom colors to the color selector.
130
-		 *
131
-		 * @param $theme_colors
132
-		 * @param $include_outlines
133
-		 * @param $include_branding
134
-		 *
135
-		 * @return mixed
136
-		 */
137
-		public function sd_aui_colors( $theme_colors, $include_outlines, $include_branding ){
128
+        /**
129
+         * Add custom colors to the color selector.
130
+         *
131
+         * @param $theme_colors
132
+         * @param $include_outlines
133
+         * @param $include_branding
134
+         *
135
+         * @return mixed
136
+         */
137
+        public function sd_aui_colors( $theme_colors, $include_outlines, $include_branding ){
138 138
 
139 139
 
140
-			$setting = wp_get_global_settings();
140
+            $setting = wp_get_global_settings();
141 141
 
142
-			if(!empty($setting['color']['palette']['custom'])){
143
-				foreach($setting['color']['palette']['custom'] as $color){
144
-					$theme_colors[$color['slug']] = esc_attr($color['name']);
145
-				}
146
-			}
147
-
148
-			return $theme_colors;
149
-		}
150
-
151
-		/**
152
-		 * Setup some constants.
153
-		 */
154
-		public function constants(){
155
-			define( 'AUI_PRIMARY_COLOR_ORIGINAL', "#1e73be" );
156
-			define( 'AUI_SECONDARY_COLOR_ORIGINAL', '#6c757d' );
157
-			define( 'AUI_INFO_COLOR_ORIGINAL', '#17a2b8' );
158
-			define( 'AUI_WARNING_COLOR_ORIGINAL', '#ffc107' );
159
-			define( 'AUI_DANGER_COLOR_ORIGINAL', '#dc3545' );
160
-			define( 'AUI_SUCCESS_COLOR_ORIGINAL', '#44c553' );
161
-			define( 'AUI_LIGHT_COLOR_ORIGINAL', '#f8f9fa' );
162
-			define( 'AUI_DARK_COLOR_ORIGINAL', '#343a40' );
163
-			define( 'AUI_WHITE_COLOR_ORIGINAL', '#fff' );
164
-			define( 'AUI_PURPLE_COLOR_ORIGINAL', '#ad6edd' );
165
-			define( 'AUI_SALMON_COLOR_ORIGINAL', '#ff977a' );
166
-			define( 'AUI_CYAN_COLOR_ORIGINAL', '#35bdff' );
167
-			define( 'AUI_GRAY_COLOR_ORIGINAL', '#ced4da' );
168
-			define( 'AUI_INDIGO_COLOR_ORIGINAL', '#502c6c' );
169
-			define( 'AUI_ORANGE_COLOR_ORIGINAL', '#orange' );
170
-			define( 'AUI_BLACK_COLOR_ORIGINAL', '#000' );
171
-
172
-			if ( ! defined( 'AUI_PRIMARY_COLOR' ) ) {
173
-				define( 'AUI_PRIMARY_COLOR', AUI_PRIMARY_COLOR_ORIGINAL );
174
-			}
175
-			if ( ! defined( 'AUI_SECONDARY_COLOR' ) ) {
176
-				define( 'AUI_SECONDARY_COLOR', AUI_SECONDARY_COLOR_ORIGINAL );
177
-			}
178
-			if ( ! defined( 'AUI_INFO_COLOR' ) ) {
179
-				define( 'AUI_INFO_COLOR', AUI_INFO_COLOR_ORIGINAL );
180
-			}
181
-			if ( ! defined( 'AUI_WARNING_COLOR' ) ) {
182
-				define( 'AUI_WARNING_COLOR', AUI_WARNING_COLOR_ORIGINAL );
183
-			}
184
-			if ( ! defined( 'AUI_DANGER_COLOR' ) ) {
185
-				define( 'AUI_DANGER_COLOR', AUI_DANGER_COLOR_ORIGINAL );
186
-			}
187
-			if ( ! defined( 'AUI_SUCCESS_COLOR' ) ) {
188
-				define( 'AUI_SUCCESS_COLOR', AUI_SUCCESS_COLOR_ORIGINAL );
189
-			}
190
-			if ( ! defined( 'AUI_LIGHT_COLOR' ) ) {
191
-				define( 'AUI_LIGHT_COLOR', AUI_LIGHT_COLOR_ORIGINAL );
192
-			}
193
-			if ( ! defined( 'AUI_DARK_COLOR' ) ) {
194
-				define( 'AUI_DARK_COLOR', AUI_DARK_COLOR_ORIGINAL );
195
-			}
196
-			if ( ! defined( 'AUI_WHITE_COLOR' ) ) {
197
-				define( 'AUI_WHITE_COLOR', AUI_WHITE_COLOR_ORIGINAL );
198
-			}
199
-			if ( ! defined( 'AUI_PURPLE_COLOR' ) ) {
200
-				define( 'AUI_PURPLE_COLOR', AUI_PURPLE_COLOR_ORIGINAL );
201
-			}
202
-			if ( ! defined( 'AUI_SALMON_COLOR' ) ) {
203
-				define( 'AUI_SALMON_COLOR', AUI_SALMON_COLOR_ORIGINAL );
204
-			}
205
-			if ( ! defined( 'AUI_CYAN_COLOR' ) ) {
206
-				define( 'AUI_CYAN_COLOR', AUI_CYAN_COLOR_ORIGINAL );
207
-			}
208
-			if ( ! defined( 'AUI_GRAY_COLOR' ) ) {
209
-				define( 'AUI_GRAY_COLOR', AUI_GRAY_COLOR_ORIGINAL );
210
-			}
211
-			if ( ! defined( 'AUI_INDIGO_COLOR' ) ) {
212
-				define( 'AUI_INDIGO_COLOR', AUI_INDIGO_COLOR_ORIGINAL );
213
-			}
214
-			if ( ! defined( 'AUI_ORANGE_COLOR' ) ) {
215
-				define( 'AUI_ORANGE_COLOR', AUI_ORANGE_COLOR_ORIGINAL );
216
-			}
217
-			if ( ! defined( 'AUI_BLACK_COLOR' ) ) {
218
-				define( 'AUI_BLACK_COLOR', AUI_BLACK_COLOR_ORIGINAL );
219
-			}
220
-
221
-		}
222
-
223
-		public static function get_colors( $original = false){
224
-
225
-			if ( ! defined( 'AUI_PRIMARY_COLOR' ) ) {
226
-				return array();
227
-			}
228
-			if ( $original ) {
229
-				return array(
230
-					'primary'   => AUI_PRIMARY_COLOR_ORIGINAL,
231
-					'secondary' => AUI_SECONDARY_COLOR_ORIGINAL,
232
-					'info'      => AUI_INFO_COLOR_ORIGINAL,
233
-					'warning'   => AUI_WARNING_COLOR_ORIGINAL,
234
-					'danger'    => AUI_DANGER_COLOR_ORIGINAL,
235
-					'success'   => AUI_SUCCESS_COLOR_ORIGINAL,
236
-					'light'     => AUI_LIGHT_COLOR_ORIGINAL,
237
-					'dark'      => AUI_DARK_COLOR_ORIGINAL,
238
-					'white'     => AUI_WHITE_COLOR_ORIGINAL,
239
-					'purple'    => AUI_PURPLE_COLOR_ORIGINAL,
240
-					'salmon'    => AUI_SALMON_COLOR_ORIGINAL,
241
-					'cyan'      => AUI_CYAN_COLOR_ORIGINAL,
242
-					'gray'      => AUI_GRAY_COLOR_ORIGINAL,
243
-					'indigo'    => AUI_INDIGO_COLOR_ORIGINAL,
244
-					'orange'    => AUI_ORANGE_COLOR_ORIGINAL,
245
-					'black'     => AUI_BLACK_COLOR_ORIGINAL,
246
-				);
247
-			}
248
-
249
-			return array(
250
-				'primary'   => AUI_PRIMARY_COLOR,
251
-				'secondary' => AUI_SECONDARY_COLOR,
252
-				'info'      => AUI_INFO_COLOR,
253
-				'warning'   => AUI_WARNING_COLOR,
254
-				'danger'    => AUI_DANGER_COLOR,
255
-				'success'   => AUI_SUCCESS_COLOR,
256
-				'light'     => AUI_LIGHT_COLOR,
257
-				'dark'      => AUI_DARK_COLOR,
258
-				'white'     => AUI_WHITE_COLOR,
259
-				'purple'    => AUI_PURPLE_COLOR,
260
-				'salmon'    => AUI_SALMON_COLOR,
261
-				'cyan'      => AUI_CYAN_COLOR,
262
-				'gray'      => AUI_GRAY_COLOR,
263
-				'indigo'    => AUI_INDIGO_COLOR,
264
-				'orange'    => AUI_ORANGE_COLOR,
265
-				'black'     => AUI_BLACK_COLOR,
266
-			);
267
-		}
268
-
269
-		/**
270
-		 * Add admin body class to show when BS5 is active.
271
-		 *
272
-		 * @param $classes
273
-		 *
274
-		 * @return mixed
275
-		 */
276
-		public function add_bs5_admin_body_class( $classes = '' ) {
277
-			$classes .= ' aui_bs5';
278
-
279
-			return $classes;
280
-		}
281
-
282
-		/**
283
-		 * Add a body class to show when BS5 is active.
284
-		 *
285
-		 * @param $classes
286
-		 *
287
-		 * @return mixed
288
-		 */
289
-		public function add_bs5_body_class( $classes ) {
290
-			$classes[] = 'aui_bs5';
291
-
292
-			return $classes;
293
-		}
294
-
295
-		/**
296
-		 * Initiate the settings and add the required action hooks.
297
-		 */
298
-		public function init() {
142
+            if(!empty($setting['color']['palette']['custom'])){
143
+                foreach($setting['color']['palette']['custom'] as $color){
144
+                    $theme_colors[$color['slug']] = esc_attr($color['name']);
145
+                }
146
+            }
147
+
148
+            return $theme_colors;
149
+        }
150
+
151
+        /**
152
+         * Setup some constants.
153
+         */
154
+        public function constants(){
155
+            define( 'AUI_PRIMARY_COLOR_ORIGINAL', "#1e73be" );
156
+            define( 'AUI_SECONDARY_COLOR_ORIGINAL', '#6c757d' );
157
+            define( 'AUI_INFO_COLOR_ORIGINAL', '#17a2b8' );
158
+            define( 'AUI_WARNING_COLOR_ORIGINAL', '#ffc107' );
159
+            define( 'AUI_DANGER_COLOR_ORIGINAL', '#dc3545' );
160
+            define( 'AUI_SUCCESS_COLOR_ORIGINAL', '#44c553' );
161
+            define( 'AUI_LIGHT_COLOR_ORIGINAL', '#f8f9fa' );
162
+            define( 'AUI_DARK_COLOR_ORIGINAL', '#343a40' );
163
+            define( 'AUI_WHITE_COLOR_ORIGINAL', '#fff' );
164
+            define( 'AUI_PURPLE_COLOR_ORIGINAL', '#ad6edd' );
165
+            define( 'AUI_SALMON_COLOR_ORIGINAL', '#ff977a' );
166
+            define( 'AUI_CYAN_COLOR_ORIGINAL', '#35bdff' );
167
+            define( 'AUI_GRAY_COLOR_ORIGINAL', '#ced4da' );
168
+            define( 'AUI_INDIGO_COLOR_ORIGINAL', '#502c6c' );
169
+            define( 'AUI_ORANGE_COLOR_ORIGINAL', '#orange' );
170
+            define( 'AUI_BLACK_COLOR_ORIGINAL', '#000' );
171
+
172
+            if ( ! defined( 'AUI_PRIMARY_COLOR' ) ) {
173
+                define( 'AUI_PRIMARY_COLOR', AUI_PRIMARY_COLOR_ORIGINAL );
174
+            }
175
+            if ( ! defined( 'AUI_SECONDARY_COLOR' ) ) {
176
+                define( 'AUI_SECONDARY_COLOR', AUI_SECONDARY_COLOR_ORIGINAL );
177
+            }
178
+            if ( ! defined( 'AUI_INFO_COLOR' ) ) {
179
+                define( 'AUI_INFO_COLOR', AUI_INFO_COLOR_ORIGINAL );
180
+            }
181
+            if ( ! defined( 'AUI_WARNING_COLOR' ) ) {
182
+                define( 'AUI_WARNING_COLOR', AUI_WARNING_COLOR_ORIGINAL );
183
+            }
184
+            if ( ! defined( 'AUI_DANGER_COLOR' ) ) {
185
+                define( 'AUI_DANGER_COLOR', AUI_DANGER_COLOR_ORIGINAL );
186
+            }
187
+            if ( ! defined( 'AUI_SUCCESS_COLOR' ) ) {
188
+                define( 'AUI_SUCCESS_COLOR', AUI_SUCCESS_COLOR_ORIGINAL );
189
+            }
190
+            if ( ! defined( 'AUI_LIGHT_COLOR' ) ) {
191
+                define( 'AUI_LIGHT_COLOR', AUI_LIGHT_COLOR_ORIGINAL );
192
+            }
193
+            if ( ! defined( 'AUI_DARK_COLOR' ) ) {
194
+                define( 'AUI_DARK_COLOR', AUI_DARK_COLOR_ORIGINAL );
195
+            }
196
+            if ( ! defined( 'AUI_WHITE_COLOR' ) ) {
197
+                define( 'AUI_WHITE_COLOR', AUI_WHITE_COLOR_ORIGINAL );
198
+            }
199
+            if ( ! defined( 'AUI_PURPLE_COLOR' ) ) {
200
+                define( 'AUI_PURPLE_COLOR', AUI_PURPLE_COLOR_ORIGINAL );
201
+            }
202
+            if ( ! defined( 'AUI_SALMON_COLOR' ) ) {
203
+                define( 'AUI_SALMON_COLOR', AUI_SALMON_COLOR_ORIGINAL );
204
+            }
205
+            if ( ! defined( 'AUI_CYAN_COLOR' ) ) {
206
+                define( 'AUI_CYAN_COLOR', AUI_CYAN_COLOR_ORIGINAL );
207
+            }
208
+            if ( ! defined( 'AUI_GRAY_COLOR' ) ) {
209
+                define( 'AUI_GRAY_COLOR', AUI_GRAY_COLOR_ORIGINAL );
210
+            }
211
+            if ( ! defined( 'AUI_INDIGO_COLOR' ) ) {
212
+                define( 'AUI_INDIGO_COLOR', AUI_INDIGO_COLOR_ORIGINAL );
213
+            }
214
+            if ( ! defined( 'AUI_ORANGE_COLOR' ) ) {
215
+                define( 'AUI_ORANGE_COLOR', AUI_ORANGE_COLOR_ORIGINAL );
216
+            }
217
+            if ( ! defined( 'AUI_BLACK_COLOR' ) ) {
218
+                define( 'AUI_BLACK_COLOR', AUI_BLACK_COLOR_ORIGINAL );
219
+            }
220
+
221
+        }
222
+
223
+        public static function get_colors( $original = false){
224
+
225
+            if ( ! defined( 'AUI_PRIMARY_COLOR' ) ) {
226
+                return array();
227
+            }
228
+            if ( $original ) {
229
+                return array(
230
+                    'primary'   => AUI_PRIMARY_COLOR_ORIGINAL,
231
+                    'secondary' => AUI_SECONDARY_COLOR_ORIGINAL,
232
+                    'info'      => AUI_INFO_COLOR_ORIGINAL,
233
+                    'warning'   => AUI_WARNING_COLOR_ORIGINAL,
234
+                    'danger'    => AUI_DANGER_COLOR_ORIGINAL,
235
+                    'success'   => AUI_SUCCESS_COLOR_ORIGINAL,
236
+                    'light'     => AUI_LIGHT_COLOR_ORIGINAL,
237
+                    'dark'      => AUI_DARK_COLOR_ORIGINAL,
238
+                    'white'     => AUI_WHITE_COLOR_ORIGINAL,
239
+                    'purple'    => AUI_PURPLE_COLOR_ORIGINAL,
240
+                    'salmon'    => AUI_SALMON_COLOR_ORIGINAL,
241
+                    'cyan'      => AUI_CYAN_COLOR_ORIGINAL,
242
+                    'gray'      => AUI_GRAY_COLOR_ORIGINAL,
243
+                    'indigo'    => AUI_INDIGO_COLOR_ORIGINAL,
244
+                    'orange'    => AUI_ORANGE_COLOR_ORIGINAL,
245
+                    'black'     => AUI_BLACK_COLOR_ORIGINAL,
246
+                );
247
+            }
248
+
249
+            return array(
250
+                'primary'   => AUI_PRIMARY_COLOR,
251
+                'secondary' => AUI_SECONDARY_COLOR,
252
+                'info'      => AUI_INFO_COLOR,
253
+                'warning'   => AUI_WARNING_COLOR,
254
+                'danger'    => AUI_DANGER_COLOR,
255
+                'success'   => AUI_SUCCESS_COLOR,
256
+                'light'     => AUI_LIGHT_COLOR,
257
+                'dark'      => AUI_DARK_COLOR,
258
+                'white'     => AUI_WHITE_COLOR,
259
+                'purple'    => AUI_PURPLE_COLOR,
260
+                'salmon'    => AUI_SALMON_COLOR,
261
+                'cyan'      => AUI_CYAN_COLOR,
262
+                'gray'      => AUI_GRAY_COLOR,
263
+                'indigo'    => AUI_INDIGO_COLOR,
264
+                'orange'    => AUI_ORANGE_COLOR,
265
+                'black'     => AUI_BLACK_COLOR,
266
+            );
267
+        }
268
+
269
+        /**
270
+         * Add admin body class to show when BS5 is active.
271
+         *
272
+         * @param $classes
273
+         *
274
+         * @return mixed
275
+         */
276
+        public function add_bs5_admin_body_class( $classes = '' ) {
277
+            $classes .= ' aui_bs5';
278
+
279
+            return $classes;
280
+        }
281
+
282
+        /**
283
+         * Add a body class to show when BS5 is active.
284
+         *
285
+         * @param $classes
286
+         *
287
+         * @return mixed
288
+         */
289
+        public function add_bs5_body_class( $classes ) {
290
+            $classes[] = 'aui_bs5';
291
+
292
+            return $classes;
293
+        }
294
+
295
+        /**
296
+         * Initiate the settings and add the required action hooks.
297
+         */
298
+        public function init() {
299 299
             global $aui_bs5;
300 300
 
301
-			// Maybe fix settings
302
-			if ( ! empty( $_REQUEST['aui-fix-admin'] ) && !empty($_REQUEST['nonce']) && wp_verify_nonce( $_REQUEST['nonce'], "aui-fix-admin" ) ) {
303
-				$db_settings = get_option( 'ayecode-ui-settings' );
304
-				if ( ! empty( $db_settings ) ) {
305
-					$db_settings['css_backend'] = 'compatibility';
306
-					$db_settings['js_backend'] = 'core-popper';
307
-					update_option( 'ayecode-ui-settings', $db_settings );
308
-					wp_safe_redirect(admin_url("options-general.php?page=ayecode-ui-settings&updated=true"));
309
-				}
310
-			}
301
+            // Maybe fix settings
302
+            if ( ! empty( $_REQUEST['aui-fix-admin'] ) && !empty($_REQUEST['nonce']) && wp_verify_nonce( $_REQUEST['nonce'], "aui-fix-admin" ) ) {
303
+                $db_settings = get_option( 'ayecode-ui-settings' );
304
+                if ( ! empty( $db_settings ) ) {
305
+                    $db_settings['css_backend'] = 'compatibility';
306
+                    $db_settings['js_backend'] = 'core-popper';
307
+                    update_option( 'ayecode-ui-settings', $db_settings );
308
+                    wp_safe_redirect(admin_url("options-general.php?page=ayecode-ui-settings&updated=true"));
309
+                }
310
+            }
311 311
 
312
-			$this->constants();
313
-			$this->settings = $this->get_settings();
314
-			$this->url = $this->get_url();
312
+            $this->constants();
313
+            $this->settings = $this->get_settings();
314
+            $this->url = $this->get_url();
315 315
 
316 316
             // define the version
317
-			$aui_bs5 = $this->settings['bs_ver'] === '5';
318
-
319
-			if ( $aui_bs5 ) {
320
-				include_once( dirname( __FILE__ ) . '/inc/bs-conversion.php' );
321
-				add_filter( 'admin_body_class', array( $this, 'add_bs5_admin_body_class' ), 99, 1 );
322
-				add_filter( 'body_class', array( $this, 'add_bs5_body_class' ) );
323
-			}
324
-
325
-			/**
326
-			 * Maybe load CSS
327
-			 *
328
-			 * We load super early in case there is a theme version that might change the colors
329
-			 */
330
-			if ( $this->settings['css'] ) {
331
-				$priority = $this->is_bs3_compat() ? 100 : 1;
317
+            $aui_bs5 = $this->settings['bs_ver'] === '5';
318
+
319
+            if ( $aui_bs5 ) {
320
+                include_once( dirname( __FILE__ ) . '/inc/bs-conversion.php' );
321
+                add_filter( 'admin_body_class', array( $this, 'add_bs5_admin_body_class' ), 99, 1 );
322
+                add_filter( 'body_class', array( $this, 'add_bs5_body_class' ) );
323
+            }
324
+
325
+            /**
326
+             * Maybe load CSS
327
+             *
328
+             * We load super early in case there is a theme version that might change the colors
329
+             */
330
+            if ( $this->settings['css'] ) {
331
+                $priority = $this->is_bs3_compat() ? 100 : 1;
332 332
                 $priority = $aui_bs5 ? 10 : $priority;
333
-				add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_style' ), $priority );
334
-			}
335
-			if ( $this->settings['css_backend'] && $this->load_admin_scripts() ) {
336
-				add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_style' ), 1 );
337
-			}
338
-
339
-			// maybe load JS
340
-			if ( $this->settings['js'] ) {
341
-				$priority = $this->is_bs3_compat() ? 100 : 1;
342
-				add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), $priority );
343
-			}
344
-			if ( $this->settings['js_backend'] && $this->load_admin_scripts() ) {
345
-				add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ), 1 );
346
-			}
347
-
348
-			// Maybe set the HTML font size
349
-			if ( $this->settings['html_font_size'] ) {
350
-				add_action( 'wp_footer', array( $this, 'html_font_size' ), 10 );
351
-			}
352
-
353
-			// Maybe show backend style error
354
-			if( $this->settings['css_backend'] != 'compatibility' || $this->settings['js_backend'] != 'core-popper' ){
355
-				add_action( 'admin_notices', array( $this, 'show_admin_style_notice' ) );
356
-			}
357
-
358
-		}
359
-
360
-		/**
361
-		 * Show admin notice if backend scripts not loaded.
362
-		 */
363
-		public function show_admin_style_notice(){
364
-			$fix_url = admin_url("options-general.php?page=ayecode-ui-settings&aui-fix-admin=true&nonce=".wp_create_nonce('aui-fix-admin'));
365
-			$button = '<a href="'.esc_url($fix_url).'" class="button-primary">Fix Now</a>';
366
-			$message = __( '<b>Style Issue:</b> AyeCode UI is disable or set wrong.')." " .$button;
367
-			echo '<div class="notice notice-error aui-settings-error-notice"><p>'.$message.'</p></div>';
368
-		}
369
-
370
-		/**
371
-		 * Check if we should load the admin scripts or not.
372
-		 *
373
-		 * @return bool
374
-		 */
375
-		public function load_admin_scripts(){
376
-			$result = true;
377
-
378
-			// check if specifically disabled
379
-			if(!empty($this->settings['disable_admin'])){
380
-				$url_parts = explode("\n",$this->settings['disable_admin']);
381
-				foreach($url_parts as $part){
382
-					if( strpos($_SERVER['REQUEST_URI'], trim($part)) !== false ){
383
-						return false; // return early, no point checking further
384
-					}
385
-				}
386
-			}
387
-
388
-			return $result;
389
-		}
390
-
391
-		/**
392
-		 * Add a html font size to the footer.
393
-		 */
394
-		public function html_font_size(){
395
-			$this->settings = $this->get_settings();
396
-			echo "<style>html{font-size:".absint($this->settings['html_font_size'])."px;}</style>";
397
-		}
398
-
399
-		/**
400
-		 * Check if the current admin screen should load scripts.
401
-		 *
402
-		 * @return bool
403
-		 */
404
-		public function is_aui_screen(){
333
+                add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_style' ), $priority );
334
+            }
335
+            if ( $this->settings['css_backend'] && $this->load_admin_scripts() ) {
336
+                add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_style' ), 1 );
337
+            }
338
+
339
+            // maybe load JS
340
+            if ( $this->settings['js'] ) {
341
+                $priority = $this->is_bs3_compat() ? 100 : 1;
342
+                add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), $priority );
343
+            }
344
+            if ( $this->settings['js_backend'] && $this->load_admin_scripts() ) {
345
+                add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ), 1 );
346
+            }
347
+
348
+            // Maybe set the HTML font size
349
+            if ( $this->settings['html_font_size'] ) {
350
+                add_action( 'wp_footer', array( $this, 'html_font_size' ), 10 );
351
+            }
352
+
353
+            // Maybe show backend style error
354
+            if( $this->settings['css_backend'] != 'compatibility' || $this->settings['js_backend'] != 'core-popper' ){
355
+                add_action( 'admin_notices', array( $this, 'show_admin_style_notice' ) );
356
+            }
357
+
358
+        }
359
+
360
+        /**
361
+         * Show admin notice if backend scripts not loaded.
362
+         */
363
+        public function show_admin_style_notice(){
364
+            $fix_url = admin_url("options-general.php?page=ayecode-ui-settings&aui-fix-admin=true&nonce=".wp_create_nonce('aui-fix-admin'));
365
+            $button = '<a href="'.esc_url($fix_url).'" class="button-primary">Fix Now</a>';
366
+            $message = __( '<b>Style Issue:</b> AyeCode UI is disable or set wrong.')." " .$button;
367
+            echo '<div class="notice notice-error aui-settings-error-notice"><p>'.$message.'</p></div>';
368
+        }
369
+
370
+        /**
371
+         * Check if we should load the admin scripts or not.
372
+         *
373
+         * @return bool
374
+         */
375
+        public function load_admin_scripts(){
376
+            $result = true;
377
+
378
+            // check if specifically disabled
379
+            if(!empty($this->settings['disable_admin'])){
380
+                $url_parts = explode("\n",$this->settings['disable_admin']);
381
+                foreach($url_parts as $part){
382
+                    if( strpos($_SERVER['REQUEST_URI'], trim($part)) !== false ){
383
+                        return false; // return early, no point checking further
384
+                    }
385
+                }
386
+            }
387
+
388
+            return $result;
389
+        }
390
+
391
+        /**
392
+         * Add a html font size to the footer.
393
+         */
394
+        public function html_font_size(){
395
+            $this->settings = $this->get_settings();
396
+            echo "<style>html{font-size:".absint($this->settings['html_font_size'])."px;}</style>";
397
+        }
398
+
399
+        /**
400
+         * Check if the current admin screen should load scripts.
401
+         *
402
+         * @return bool
403
+         */
404
+        public function is_aui_screen(){
405 405
 //			echo '###';exit;
406
-			$load = false;
407
-			// check if we should load or not
408
-			if ( is_admin() ) {
409
-				// Only enable on set pages
410
-				$aui_screens = array(
411
-					'page',
406
+            $load = false;
407
+            // check if we should load or not
408
+            if ( is_admin() ) {
409
+                // Only enable on set pages
410
+                $aui_screens = array(
411
+                    'page',
412 412
                     //'docs',
413
-					'post',
414
-					'settings_page_ayecode-ui-settings',
415
-					'appearance_page_gutenberg-widgets',
416
-					'widgets',
417
-					'ayecode-ui-settings',
418
-					'site-editor'
419
-				);
420
-				$screen_ids = apply_filters( 'aui_screen_ids', $aui_screens );
413
+                    'post',
414
+                    'settings_page_ayecode-ui-settings',
415
+                    'appearance_page_gutenberg-widgets',
416
+                    'widgets',
417
+                    'ayecode-ui-settings',
418
+                    'site-editor'
419
+                );
420
+                $screen_ids = apply_filters( 'aui_screen_ids', $aui_screens );
421 421
 
422
-				$screen = get_current_screen();
422
+                $screen = get_current_screen();
423 423
 
424 424
 //				echo '###'.$screen->id;
425 425
 
426
-				// check if we are on a AUI screen
427
-				if ( $screen && in_array( $screen->id, $screen_ids ) ) {
428
-					$load = true;
429
-				}
426
+                // check if we are on a AUI screen
427
+                if ( $screen && in_array( $screen->id, $screen_ids ) ) {
428
+                    $load = true;
429
+                }
430 430
 
431
-				//load for widget previews in WP 5.8
432
-				if( !empty($_REQUEST['legacy-widget-preview'])){
433
-					$load = true;
434
-				}
435
-			}
431
+                //load for widget previews in WP 5.8
432
+                if( !empty($_REQUEST['legacy-widget-preview'])){
433
+                    $load = true;
434
+                }
435
+            }
436 436
 
437 437
 
438 438
 
439
-			return apply_filters( 'aui_load_on_admin' , $load );
440
-		}
439
+            return apply_filters( 'aui_load_on_admin' , $load );
440
+        }
441 441
 
442
-		/**
443
-		 * Check if the current theme is a block theme.
444
-		 *
445
-		 * @return bool
446
-		 */
447
-		public static function is_block_theme() {
448
-			if ( function_exists( 'wp_is_block_theme' && wp_is_block_theme() ) ) {
449
-				return true;
450
-			}
442
+        /**
443
+         * Check if the current theme is a block theme.
444
+         *
445
+         * @return bool
446
+         */
447
+        public static function is_block_theme() {
448
+            if ( function_exists( 'wp_is_block_theme' && wp_is_block_theme() ) ) {
449
+                return true;
450
+            }
451 451
 
452
-			return false;
453
-		}
452
+            return false;
453
+        }
454 454
 
455
-		/**
456
-		 * Adds the styles.
457
-		 */
458
-		public function enqueue_style() {
455
+        /**
456
+         * Adds the styles.
457
+         */
458
+        public function enqueue_style() {
459 459
             global $aui_bs5;
460 460
 
461 461
             $load_fse = false;
462 462
 
463
-			if( is_admin() && !$this->is_aui_screen()){
464
-				// don't add wp-admin scripts if not requested to
465
-			}else{
466
-				$css_setting = current_action() == 'wp_enqueue_scripts' ? 'css' : 'css_backend';
463
+            if( is_admin() && !$this->is_aui_screen()){
464
+                // don't add wp-admin scripts if not requested to
465
+            }else{
466
+                $css_setting = current_action() == 'wp_enqueue_scripts' ? 'css' : 'css_backend';
467 467
 
468
-				$rtl = is_rtl() && ! $aui_bs5 ? '-rtl' : '';
468
+                $rtl = is_rtl() && ! $aui_bs5 ? '-rtl' : '';
469 469
 
470 470
                 $bs_ver = $this->settings['bs_ver'] == '5' ? '-v5' : '';
471 471
 
472
-				if($this->settings[$css_setting]){
473
-					$compatibility = $this->settings[$css_setting]=='core' ? false : true;
474
-					$url = $this->settings[$css_setting]=='core' ? $this->url.'assets'.$bs_ver.'/css/ayecode-ui'.$rtl.'.css' : $this->url.'assets'.$bs_ver.'/css/ayecode-ui-compatibility'.$rtl.'.css';
472
+                if($this->settings[$css_setting]){
473
+                    $compatibility = $this->settings[$css_setting]=='core' ? false : true;
474
+                    $url = $this->settings[$css_setting]=='core' ? $this->url.'assets'.$bs_ver.'/css/ayecode-ui'.$rtl.'.css' : $this->url.'assets'.$bs_ver.'/css/ayecode-ui-compatibility'.$rtl.'.css';
475 475
 
476 476
 
477 477
 
478
-					wp_register_style( 'ayecode-ui', $url, array(), $this->version );
479
-					wp_enqueue_style( 'ayecode-ui' );
478
+                    wp_register_style( 'ayecode-ui', $url, array(), $this->version );
479
+                    wp_enqueue_style( 'ayecode-ui' );
480 480
 
481
-					$current_screen = function_exists('get_current_screen' ) ? get_current_screen() : '';
481
+                    $current_screen = function_exists('get_current_screen' ) ? get_current_screen() : '';
482 482
 
483 483
 //					if ( is_admin() && !empty($_REQUEST['postType']) ) {
484
-					if ( is_admin() && ( !empty($_REQUEST['postType']) || $current_screen->is_block_editor() ) && ( defined( 'BLOCKSTRAP_VERSION' ) || defined( 'AUI_FSE' ) )  ) {
485
-						$url = $this->url.'assets'.$bs_ver.'/css/ayecode-ui-fse.css';
486
-						wp_register_style( 'ayecode-ui-fse', $url, array(), $this->version );
487
-						wp_enqueue_style( 'ayecode-ui-fse' );
488
-						$load_fse = true;
489
-					}
484
+                    if ( is_admin() && ( !empty($_REQUEST['postType']) || $current_screen->is_block_editor() ) && ( defined( 'BLOCKSTRAP_VERSION' ) || defined( 'AUI_FSE' ) )  ) {
485
+                        $url = $this->url.'assets'.$bs_ver.'/css/ayecode-ui-fse.css';
486
+                        wp_register_style( 'ayecode-ui-fse', $url, array(), $this->version );
487
+                        wp_enqueue_style( 'ayecode-ui-fse' );
488
+                        $load_fse = true;
489
+                    }
490 490
 
491 491
 
492
-					// flatpickr
493
-					wp_register_style( 'flatpickr', $this->url.'assets'.$bs_ver.'/css/flatpickr.min.css', array(), $this->version );
492
+                    // flatpickr
493
+                    wp_register_style( 'flatpickr', $this->url.'assets'.$bs_ver.'/css/flatpickr.min.css', array(), $this->version );
494 494
 
495
-					// fix some wp-admin issues
496
-					if(is_admin()){
497
-						$custom_css = "
495
+                    // fix some wp-admin issues
496
+                    if(is_admin()){
497
+                        $custom_css = "
498 498
                 body{
499 499
                     background-color: #f1f1f1;
500 500
                     font-family: -apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;
@@ -540,67 +540,67 @@  discard block
 block discarded – undo
540 540
 				}
541 541
                 ";
542 542
 
543
-						// @todo, remove once fixed :: fix for this bug https://github.com/WordPress/gutenberg/issues/14377
544
-						$custom_css .= "
543
+                        // @todo, remove once fixed :: fix for this bug https://github.com/WordPress/gutenberg/issues/14377
544
+                        $custom_css .= "
545 545
 						.edit-post-sidebar input[type=color].components-text-control__input{
546 546
 						    padding: 0;
547 547
 						}
548 548
 					";
549
-						wp_add_inline_style( 'ayecode-ui', $custom_css );
550
-					}
549
+                        wp_add_inline_style( 'ayecode-ui', $custom_css );
550
+                    }
551 551
 
552
-					// custom changes
553
-					if ( $load_fse ) {
554
-						wp_add_inline_style( 'ayecode-ui-fse', self::custom_css($compatibility) );
555
-					}else{
556
-						wp_add_inline_style( 'ayecode-ui', self::custom_css($compatibility) );
552
+                    // custom changes
553
+                    if ( $load_fse ) {
554
+                        wp_add_inline_style( 'ayecode-ui-fse', self::custom_css($compatibility) );
555
+                    }else{
556
+                        wp_add_inline_style( 'ayecode-ui', self::custom_css($compatibility) );
557 557
 
558
-					}
558
+                    }
559 559
 
560
-				}
561
-			}
560
+                }
561
+            }
562 562
 
563 563
 
564
-		}
564
+        }
565 565
 
566
-		/**
567
-		 * Get inline script used if bootstrap enqueued
568
-		 *
569
-		 * If this remains small then its best to use this than to add another JS file.
570
-		 */
571
-		public function inline_script() {
566
+        /**
567
+         * Get inline script used if bootstrap enqueued
568
+         *
569
+         * If this remains small then its best to use this than to add another JS file.
570
+         */
571
+        public function inline_script() {
572 572
             global $aui_bs5;
573
-			// Flatpickr calendar locale
574
-			$flatpickr_locale = self::flatpickr_locale();
575
-
576
-			ob_start();
577
-			if ( $aui_bs5 ) {
578
-				include_once( dirname( __FILE__ ) . '/inc/bs5-js.php' );
579
-			}else{
580
-				include_once( dirname( __FILE__ ) . '/inc/bs4-js.php' );
573
+            // Flatpickr calendar locale
574
+            $flatpickr_locale = self::flatpickr_locale();
575
+
576
+            ob_start();
577
+            if ( $aui_bs5 ) {
578
+                include_once( dirname( __FILE__ ) . '/inc/bs5-js.php' );
579
+            }else{
580
+                include_once( dirname( __FILE__ ) . '/inc/bs4-js.php' );
581 581
             }
582 582
 
583
-			$output = ob_get_clean();
583
+            $output = ob_get_clean();
584 584
 
585
-			/*
585
+            /*
586 586
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
587 587
 			 */
588
-			return str_replace( array(
589
-				'<script>',
590
-				'</script>'
591
-			), '', self::minify_js($output) );
592
-		}
593
-
594
-
595
-		/**
596
-		 * JS to help with conflict issues with other plugins and themes using bootstrap v3.
597
-		 *
598
-		 * @TODO we may need this when other conflicts arrise.
599
-		 * @return mixed
600
-		 */
601
-		public static function bs3_compat_js() {
602
-			ob_start();
603
-			?>
588
+            return str_replace( array(
589
+                '<script>',
590
+                '</script>'
591
+            ), '', self::minify_js($output) );
592
+        }
593
+
594
+
595
+        /**
596
+         * JS to help with conflict issues with other plugins and themes using bootstrap v3.
597
+         *
598
+         * @TODO we may need this when other conflicts arrise.
599
+         * @return mixed
600
+         */
601
+        public static function bs3_compat_js() {
602
+            ob_start();
603
+            ?>
604 604
             <script>
605 605
 				<?php if( defined( 'FUSION_BUILDER_VERSION' ) ){ ?>
606 606
                 /* With Avada builder */
@@ -608,20 +608,20 @@  discard block
 block discarded – undo
608 608
 				<?php } ?>
609 609
             </script>
610 610
 			<?php
611
-			return str_replace( array(
612
-				'<script>',
613
-				'</script>'
614
-			), '', ob_get_clean());
615
-		}
616
-
617
-		/**
618
-		 * Get inline script used if bootstrap file browser enqueued.
619
-		 *
620
-		 * If this remains small then its best to use this than to add another JS file.
621
-		 */
622
-		public function inline_script_file_browser(){
623
-			ob_start();
624
-			?>
611
+            return str_replace( array(
612
+                '<script>',
613
+                '</script>'
614
+            ), '', ob_get_clean());
615
+        }
616
+
617
+        /**
618
+         * Get inline script used if bootstrap file browser enqueued.
619
+         *
620
+         * If this remains small then its best to use this than to add another JS file.
621
+         */
622
+        public function inline_script_file_browser(){
623
+            ob_start();
624
+            ?>
625 625
             <script>
626 626
                 // run on doc ready
627 627
                 jQuery(document).ready(function () {
@@ -629,247 +629,247 @@  discard block
 block discarded – undo
629 629
                 });
630 630
             </script>
631 631
 			<?php
632
-			$output = ob_get_clean();
632
+            $output = ob_get_clean();
633 633
 
634
-			/*
634
+            /*
635 635
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
636 636
 			 */
637
-			return str_replace( array(
638
-				'<script>',
639
-				'</script>'
640
-			), '', $output );
641
-		}
637
+            return str_replace( array(
638
+                '<script>',
639
+                '</script>'
640
+            ), '', $output );
641
+        }
642 642
 
643
-		/**
644
-		 * Adds the Font Awesome JS.
645
-		 */
646
-		public function enqueue_scripts() {
643
+        /**
644
+         * Adds the Font Awesome JS.
645
+         */
646
+        public function enqueue_scripts() {
647 647
 
648
-			if( is_admin() && !$this->is_aui_screen()){
649
-				// don't add wp-admin scripts if not requested to
650
-			}else {
648
+            if( is_admin() && !$this->is_aui_screen()){
649
+                // don't add wp-admin scripts if not requested to
650
+            }else {
651 651
 
652
-				$js_setting = current_action() == 'wp_enqueue_scripts' ? 'js' : 'js_backend';
652
+                $js_setting = current_action() == 'wp_enqueue_scripts' ? 'js' : 'js_backend';
653 653
 
654
-				$bs_ver = $this->settings['bs_ver'] == '5' ? '-v5' : '';
654
+                $bs_ver = $this->settings['bs_ver'] == '5' ? '-v5' : '';
655 655
 
656
-				// select2
657
-				wp_register_script( 'select2', $this->url . 'assets/js/select2.min.js', array( 'jquery' ), $this->select2_version );
656
+                // select2
657
+                wp_register_script( 'select2', $this->url . 'assets/js/select2.min.js', array( 'jquery' ), $this->select2_version );
658 658
 
659
-				// flatpickr
660
-				wp_register_script( 'flatpickr', $this->url . 'assets/js/flatpickr.min.js', array(), $this->version );
659
+                // flatpickr
660
+                wp_register_script( 'flatpickr', $this->url . 'assets/js/flatpickr.min.js', array(), $this->version );
661 661
 
662
-				// iconpicker
663
-				if ( defined( 'FAS_ICONPICKER_JS_URL' ) ) {
664
-					wp_register_script( 'iconpicker', FAS_ICONPICKER_JS_URL, array(), $this->version );
665
-				}else{
666
-					wp_register_script( 'iconpicker', $this->url . 'assets/js/fa-iconpicker.min.js', array(), $this->version );
667
-				}
662
+                // iconpicker
663
+                if ( defined( 'FAS_ICONPICKER_JS_URL' ) ) {
664
+                    wp_register_script( 'iconpicker', FAS_ICONPICKER_JS_URL, array(), $this->version );
665
+                }else{
666
+                    wp_register_script( 'iconpicker', $this->url . 'assets/js/fa-iconpicker.min.js', array(), $this->version );
667
+                }
668 668
 
669
-				// Bootstrap file browser
670
-				wp_register_script( 'aui-custom-file-input', $url = $this->url . 'assets/js/bs-custom-file-input.min.js', array( 'jquery' ), $this->select2_version );
671
-				wp_add_inline_script( 'aui-custom-file-input', $this->inline_script_file_browser() );
672
-
673
-				$load_inline = false;
674
-
675
-				if ( $this->settings[ $js_setting ] == 'core-popper' ) {
676
-					// Bootstrap bundle
677
-					$url = $this->url . 'assets' . $bs_ver . '/js/bootstrap.bundle.min.js';
678
-					wp_register_script( 'bootstrap-js-bundle', $url, array(
679
-						'select2',
680
-						'jquery'
681
-					), $this->version, $this->is_bs3_compat() );
682
-					// if in admin then add to footer for compatibility.
683
-					is_admin() ? wp_enqueue_script( 'bootstrap-js-bundle', '', null, null, true ) : wp_enqueue_script( 'bootstrap-js-bundle' );
684
-					$script = $this->inline_script();
685
-					wp_add_inline_script( 'bootstrap-js-bundle', $script );
686
-				} elseif ( $this->settings[ $js_setting ] == 'popper' ) {
687
-					$url = $this->url . 'assets/js/popper.min.js'; //@todo we need to update this to bs5
688
-					wp_register_script( 'bootstrap-js-popper', $url, array( 'select2', 'jquery' ), $this->version );
689
-					wp_enqueue_script( 'bootstrap-js-popper' );
690
-					$load_inline = true;
691
-				} else {
692
-					$load_inline = true;
693
-				}
669
+                // Bootstrap file browser
670
+                wp_register_script( 'aui-custom-file-input', $url = $this->url . 'assets/js/bs-custom-file-input.min.js', array( 'jquery' ), $this->select2_version );
671
+                wp_add_inline_script( 'aui-custom-file-input', $this->inline_script_file_browser() );
672
+
673
+                $load_inline = false;
674
+
675
+                if ( $this->settings[ $js_setting ] == 'core-popper' ) {
676
+                    // Bootstrap bundle
677
+                    $url = $this->url . 'assets' . $bs_ver . '/js/bootstrap.bundle.min.js';
678
+                    wp_register_script( 'bootstrap-js-bundle', $url, array(
679
+                        'select2',
680
+                        'jquery'
681
+                    ), $this->version, $this->is_bs3_compat() );
682
+                    // if in admin then add to footer for compatibility.
683
+                    is_admin() ? wp_enqueue_script( 'bootstrap-js-bundle', '', null, null, true ) : wp_enqueue_script( 'bootstrap-js-bundle' );
684
+                    $script = $this->inline_script();
685
+                    wp_add_inline_script( 'bootstrap-js-bundle', $script );
686
+                } elseif ( $this->settings[ $js_setting ] == 'popper' ) {
687
+                    $url = $this->url . 'assets/js/popper.min.js'; //@todo we need to update this to bs5
688
+                    wp_register_script( 'bootstrap-js-popper', $url, array( 'select2', 'jquery' ), $this->version );
689
+                    wp_enqueue_script( 'bootstrap-js-popper' );
690
+                    $load_inline = true;
691
+                } else {
692
+                    $load_inline = true;
693
+                }
694 694
 
695
-				// Load needed inline scripts by faking the loading of a script if the main script is not being loaded
696
-				if ( $load_inline ) {
697
-					wp_register_script( 'bootstrap-dummy', '', array( 'select2', 'jquery' ) );
698
-					wp_enqueue_script( 'bootstrap-dummy' );
699
-					$script = $this->inline_script();
700
-					wp_add_inline_script( 'bootstrap-dummy', $script );
701
-				}
702
-			}
703
-
704
-		}
705
-
706
-		/**
707
-		 * Enqueue flatpickr if called.
708
-		 */
709
-		public function enqueue_flatpickr(){
710
-			wp_enqueue_style( 'flatpickr' );
711
-			wp_enqueue_script( 'flatpickr' );
712
-		}
713
-
714
-		/**
715
-		 * Enqueue iconpicker if called.
716
-		 */
717
-		public function enqueue_iconpicker(){
718
-			wp_enqueue_style( 'iconpicker' );
719
-			wp_enqueue_script( 'iconpicker' );
720
-		}
721
-
722
-		/**
723
-		 * Get the url path to the current folder.
724
-		 *
725
-		 * @return string
726
-		 */
727
-		public function get_url() {
728
-			$content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) );
729
-			$content_url = untrailingslashit( WP_CONTENT_URL );
730
-
731
-			// Replace http:// to https://.
732
-			if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) {
733
-				$content_url = str_replace( 'http://', 'https://', $content_url );
734
-			}
735
-
736
-			// Check if we are inside a plugin
737
-			$file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) );
738
-			$url = str_replace( $content_dir, $content_url, $file_dir );
739
-
740
-			return trailingslashit( $url );
741
-		}
742
-
743
-		/**
744
-		 * Get the url path to the current folder.
745
-		 *
746
-		 * @return string
747
-		 */
748
-		public function get_url_old() {
749
-
750
-			$url = '';
751
-			// check if we are inside a plugin
752
-			$file_dir = str_replace( "/includes","", wp_normalize_path( dirname( __FILE__ ) ) );
753
-
754
-			// add check in-case user has changed wp-content dir name.
755
-			$wp_content_folder_name = basename(WP_CONTENT_DIR);
756
-			$dir_parts = explode("/$wp_content_folder_name/",$file_dir);
757
-			$url_parts = explode("/$wp_content_folder_name/",plugins_url());
758
-
759
-			if(!empty($url_parts[0]) && !empty($dir_parts[1])){
760
-				$url = trailingslashit( $url_parts[0]."/$wp_content_folder_name/".$dir_parts[1] );
761
-			}
762
-
763
-			return $url;
764
-		}
765
-
766
-		/**
767
-		 * Register the database settings with WordPress.
768
-		 */
769
-		public function register_settings() {
770
-			register_setting( 'ayecode-ui-settings', 'ayecode-ui-settings' );
771
-		}
772
-
773
-		/**
774
-		 * Add the WordPress settings menu item.
775
-		 * @since 1.0.10 Calling function name direct will fail theme check so we don't.
776
-		 */
777
-		public function menu_item() {
778
-			$menu_function = 'add' . '_' . 'options' . '_' . 'page'; // won't pass theme check if function name present in theme
779
-			call_user_func( $menu_function, $this->name, $this->name, 'manage_options', 'ayecode-ui-settings', array(
780
-				$this,
781
-				'settings_page'
782
-			) );
783
-		}
784
-
785
-		/**
786
-		 * Get a list of themes and their default JS settings.
787
-		 *
788
-		 * @return array
789
-		 */
790
-		public function theme_js_settings(){
791
-			return array(
792
-				'ayetheme' => 'popper',
793
-				'listimia' => 'required',
794
-				'listimia_backend' => 'core-popper',
795
-				//'avada'    => 'required', // removed as we now add compatibility
796
-			);
797
-		}
798
-
799
-		/**
800
-		 * Get the current Font Awesome output settings.
801
-		 *
802
-		 * @return array The array of settings.
803
-		 */
804
-		public function get_settings() {
805
-
806
-			$db_settings = get_option( 'ayecode-ui-settings' );
807
-			$js_default = 'core-popper';
808
-			$js_default_backend = $js_default;
809
-
810
-			// maybe set defaults (if no settings set)
811
-			if(empty($db_settings)){
812
-				$active_theme = strtolower( get_template() ); // active parent theme.
813
-				$theme_js_settings = self::theme_js_settings();
814
-				if(isset($theme_js_settings[$active_theme])){
815
-					$js_default = $theme_js_settings[$active_theme];
816
-					$js_default_backend = isset($theme_js_settings[$active_theme."_backend"]) ? $theme_js_settings[$active_theme."_backend"] : $js_default;
817
-				}
818
-			}
695
+                // Load needed inline scripts by faking the loading of a script if the main script is not being loaded
696
+                if ( $load_inline ) {
697
+                    wp_register_script( 'bootstrap-dummy', '', array( 'select2', 'jquery' ) );
698
+                    wp_enqueue_script( 'bootstrap-dummy' );
699
+                    $script = $this->inline_script();
700
+                    wp_add_inline_script( 'bootstrap-dummy', $script );
701
+                }
702
+            }
819 703
 
820
-			/**
821
-			 * Filter the default settings.
822
-			 */
823
-			$defaults = apply_filters( 'ayecode-ui-default-settings', array(
824
-				'css'            => 'compatibility', // core, compatibility
825
-				'js'             => $js_default, // js to load, core-popper, popper
826
-				'html_font_size' => '16', // js to load, core-popper, popper
827
-				'css_backend'    => 'compatibility', // core, compatibility
828
-				'js_backend'     => $js_default_backend, // js to load, core-popper, popper
829
-				'disable_admin'  => '', // URL snippets to disable loading on admin
704
+        }
705
+
706
+        /**
707
+         * Enqueue flatpickr if called.
708
+         */
709
+        public function enqueue_flatpickr(){
710
+            wp_enqueue_style( 'flatpickr' );
711
+            wp_enqueue_script( 'flatpickr' );
712
+        }
713
+
714
+        /**
715
+         * Enqueue iconpicker if called.
716
+         */
717
+        public function enqueue_iconpicker(){
718
+            wp_enqueue_style( 'iconpicker' );
719
+            wp_enqueue_script( 'iconpicker' );
720
+        }
721
+
722
+        /**
723
+         * Get the url path to the current folder.
724
+         *
725
+         * @return string
726
+         */
727
+        public function get_url() {
728
+            $content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) );
729
+            $content_url = untrailingslashit( WP_CONTENT_URL );
730
+
731
+            // Replace http:// to https://.
732
+            if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) {
733
+                $content_url = str_replace( 'http://', 'https://', $content_url );
734
+            }
735
+
736
+            // Check if we are inside a plugin
737
+            $file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) );
738
+            $url = str_replace( $content_dir, $content_url, $file_dir );
739
+
740
+            return trailingslashit( $url );
741
+        }
742
+
743
+        /**
744
+         * Get the url path to the current folder.
745
+         *
746
+         * @return string
747
+         */
748
+        public function get_url_old() {
749
+
750
+            $url = '';
751
+            // check if we are inside a plugin
752
+            $file_dir = str_replace( "/includes","", wp_normalize_path( dirname( __FILE__ ) ) );
753
+
754
+            // add check in-case user has changed wp-content dir name.
755
+            $wp_content_folder_name = basename(WP_CONTENT_DIR);
756
+            $dir_parts = explode("/$wp_content_folder_name/",$file_dir);
757
+            $url_parts = explode("/$wp_content_folder_name/",plugins_url());
758
+
759
+            if(!empty($url_parts[0]) && !empty($dir_parts[1])){
760
+                $url = trailingslashit( $url_parts[0]."/$wp_content_folder_name/".$dir_parts[1] );
761
+            }
762
+
763
+            return $url;
764
+        }
765
+
766
+        /**
767
+         * Register the database settings with WordPress.
768
+         */
769
+        public function register_settings() {
770
+            register_setting( 'ayecode-ui-settings', 'ayecode-ui-settings' );
771
+        }
772
+
773
+        /**
774
+         * Add the WordPress settings menu item.
775
+         * @since 1.0.10 Calling function name direct will fail theme check so we don't.
776
+         */
777
+        public function menu_item() {
778
+            $menu_function = 'add' . '_' . 'options' . '_' . 'page'; // won't pass theme check if function name present in theme
779
+            call_user_func( $menu_function, $this->name, $this->name, 'manage_options', 'ayecode-ui-settings', array(
780
+                $this,
781
+                'settings_page'
782
+            ) );
783
+        }
784
+
785
+        /**
786
+         * Get a list of themes and their default JS settings.
787
+         *
788
+         * @return array
789
+         */
790
+        public function theme_js_settings(){
791
+            return array(
792
+                'ayetheme' => 'popper',
793
+                'listimia' => 'required',
794
+                'listimia_backend' => 'core-popper',
795
+                //'avada'    => 'required', // removed as we now add compatibility
796
+            );
797
+        }
798
+
799
+        /**
800
+         * Get the current Font Awesome output settings.
801
+         *
802
+         * @return array The array of settings.
803
+         */
804
+        public function get_settings() {
805
+
806
+            $db_settings = get_option( 'ayecode-ui-settings' );
807
+            $js_default = 'core-popper';
808
+            $js_default_backend = $js_default;
809
+
810
+            // maybe set defaults (if no settings set)
811
+            if(empty($db_settings)){
812
+                $active_theme = strtolower( get_template() ); // active parent theme.
813
+                $theme_js_settings = self::theme_js_settings();
814
+                if(isset($theme_js_settings[$active_theme])){
815
+                    $js_default = $theme_js_settings[$active_theme];
816
+                    $js_default_backend = isset($theme_js_settings[$active_theme."_backend"]) ? $theme_js_settings[$active_theme."_backend"] : $js_default;
817
+                }
818
+            }
819
+
820
+            /**
821
+             * Filter the default settings.
822
+             */
823
+            $defaults = apply_filters( 'ayecode-ui-default-settings', array(
824
+                'css'            => 'compatibility', // core, compatibility
825
+                'js'             => $js_default, // js to load, core-popper, popper
826
+                'html_font_size' => '16', // js to load, core-popper, popper
827
+                'css_backend'    => 'compatibility', // core, compatibility
828
+                'js_backend'     => $js_default_backend, // js to load, core-popper, popper
829
+                'disable_admin'  => '', // URL snippets to disable loading on admin
830 830
                 'bs_ver'         => '4', // The default bootstrap version to sue by default
831
-			), $db_settings );
831
+            ), $db_settings );
832 832
 
833
-			$settings = wp_parse_args( $db_settings, $defaults );
833
+            $settings = wp_parse_args( $db_settings, $defaults );
834 834
 
835
-			/**
836
-			 * Filter the Bootstrap settings.
837
-			 *
838
-			 * @todo if we add this filer people might use it and then it defeates the purpose of this class :/
839
-			 */
840
-			return $this->settings = apply_filters( 'ayecode-ui-settings', $settings, $db_settings, $defaults );
841
-		}
835
+            /**
836
+             * Filter the Bootstrap settings.
837
+             *
838
+             * @todo if we add this filer people might use it and then it defeates the purpose of this class :/
839
+             */
840
+            return $this->settings = apply_filters( 'ayecode-ui-settings', $settings, $db_settings, $defaults );
841
+        }
842 842
 
843 843
 
844
-		/**
845
-		 * The settings page html output.
846
-		 */
847
-		public function settings_page() {
848
-			if ( ! current_user_can( 'manage_options' ) ) {
849
-				wp_die( __( 'You do not have sufficient permissions to access this page.', 'aui' ) );
850
-			}
844
+        /**
845
+         * The settings page html output.
846
+         */
847
+        public function settings_page() {
848
+            if ( ! current_user_can( 'manage_options' ) ) {
849
+                wp_die( __( 'You do not have sufficient permissions to access this page.', 'aui' ) );
850
+            }
851 851
             $overrides = apply_filters( 'ayecode-ui-settings', array(), array(), array() );
852 852
 
853
-			?>
853
+            ?>
854 854
             <div class="wrap">
855 855
                 <h1><?php echo $this->name; ?></h1>
856 856
                 <p><?php echo apply_filters( 'ayecode-ui-settings-message', __("Here you can adjust settings if you are having compatibility issues.",'aui') );?></p>
857 857
                 <form method="post" action="options.php">
858 858
 					<?php
859
-					settings_fields( 'ayecode-ui-settings' );
860
-					do_settings_sections( 'ayecode-ui-settings' );
861
-					?>
859
+                    settings_fields( 'ayecode-ui-settings' );
860
+                    do_settings_sections( 'ayecode-ui-settings' );
861
+                    ?>
862 862
 
863 863
                     <h2><?php _e( 'BootStrap Version', 'aui' ); ?></h2>
864 864
                     <p><?php echo apply_filters( 'ayecode-ui-version-settings-message', __("V5 is recommended, however if you have another plugin installed using v4, you may need to use v4 also.",'aui') );?></p>
865 865
 	                <div class="bsui"><?php
866
-	                if ( ! empty( $overrides ) ) {
867
-		                echo aui()->alert(array(
868
-			                'type'=> 'info',
869
-			                'content'=> __("Some options are disabled as your current theme is overriding them.",'aui')
870
-		                ));
871
-	                }
872
-	                ?>
866
+                    if ( ! empty( $overrides ) ) {
867
+                        echo aui()->alert(array(
868
+                            'type'=> 'info',
869
+                            'content'=> __("Some options are disabled as your current theme is overriding them.",'aui')
870
+                        ));
871
+                    }
872
+                    ?>
873 873
                     </div>
874 874
                     <table class="form-table wpbs-table-version-settings">
875 875
                         <tr valign="top">
@@ -962,79 +962,79 @@  discard block
 block discarded – undo
962 962
                     </table>
963 963
 
964 964
 					<?php
965
-					submit_button();
966
-					?>
965
+                    submit_button();
966
+                    ?>
967 967
                 </form>
968 968
 
969 969
                 <div id="wpbs-version" data-aui-source="<?php echo esc_attr( $this->get_load_source() ); ?>"><?php echo $this->version; ?></div>
970 970
             </div>
971 971
 
972 972
 			<?php
973
-		}
973
+        }
974 974
 
975 975
         public function get_load_source(){
976
-	        $file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) );
977
-	        $plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) );
978
-
979
-	        // Find source plugin/theme of SD
980
-	        $source = array();
981
-	        if ( strpos( $file, $plugins_dir ) !== false ) {
982
-		        $source = explode( "/", plugin_basename( $file ) );
983
-	        } else if ( function_exists( 'get_theme_root' ) ) {
984
-		        $themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) );
985
-
986
-		        if ( strpos( $file, $themes_dir ) !== false ) {
987
-			        $source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) );
988
-		        }
989
-	        }
976
+            $file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) );
977
+            $plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) );
978
+
979
+            // Find source plugin/theme of SD
980
+            $source = array();
981
+            if ( strpos( $file, $plugins_dir ) !== false ) {
982
+                $source = explode( "/", plugin_basename( $file ) );
983
+            } else if ( function_exists( 'get_theme_root' ) ) {
984
+                $themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) );
985
+
986
+                if ( strpos( $file, $themes_dir ) !== false ) {
987
+                    $source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) );
988
+                }
989
+            }
990 990
 
991 991
             return isset($source[0]) ? esc_attr($source[0]) : '';
992 992
         }
993 993
 
994
-		public function customizer_settings($wp_customize){
995
-			$wp_customize->add_section('aui_settings', array(
996
-				'title'    => __('AyeCode UI','aui'),
997
-				'priority' => 120,
998
-			));
999
-
1000
-			//  =============================
1001
-			//  = Color Picker              =
1002
-			//  =============================
1003
-			$wp_customize->add_setting('aui_options[color_primary]', array(
1004
-				'default'           => AUI_PRIMARY_COLOR,
1005
-				'sanitize_callback' => 'sanitize_hex_color',
1006
-				'capability'        => 'edit_theme_options',
1007
-				'type'              => 'option',
1008
-				'transport'         => 'refresh',
1009
-			));
1010
-			$wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_primary', array(
1011
-				'label'    => __('Primary Color','aui'),
1012
-				'section'  => 'aui_settings',
1013
-				'settings' => 'aui_options[color_primary]',
1014
-			)));
1015
-
1016
-			$wp_customize->add_setting('aui_options[color_secondary]', array(
1017
-				'default'           => '#6c757d',
1018
-				'sanitize_callback' => 'sanitize_hex_color',
1019
-				'capability'        => 'edit_theme_options',
1020
-				'type'              => 'option',
1021
-				'transport'         => 'refresh',
1022
-			));
1023
-			$wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_secondary', array(
1024
-				'label'    => __('Secondary Color','aui'),
1025
-				'section'  => 'aui_settings',
1026
-				'settings' => 'aui_options[color_secondary]',
1027
-			)));
1028
-		}
1029
-
1030
-		/**
1031
-		 * CSS to help with conflict issues with other plugins and themes using bootstrap v3.
1032
-		 *
1033
-		 * @return mixed
1034
-		 */
1035
-		public static function bs3_compat_css() {
1036
-			ob_start();
1037
-			?>
994
+        public function customizer_settings($wp_customize){
995
+            $wp_customize->add_section('aui_settings', array(
996
+                'title'    => __('AyeCode UI','aui'),
997
+                'priority' => 120,
998
+            ));
999
+
1000
+            //  =============================
1001
+            //  = Color Picker              =
1002
+            //  =============================
1003
+            $wp_customize->add_setting('aui_options[color_primary]', array(
1004
+                'default'           => AUI_PRIMARY_COLOR,
1005
+                'sanitize_callback' => 'sanitize_hex_color',
1006
+                'capability'        => 'edit_theme_options',
1007
+                'type'              => 'option',
1008
+                'transport'         => 'refresh',
1009
+            ));
1010
+            $wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_primary', array(
1011
+                'label'    => __('Primary Color','aui'),
1012
+                'section'  => 'aui_settings',
1013
+                'settings' => 'aui_options[color_primary]',
1014
+            )));
1015
+
1016
+            $wp_customize->add_setting('aui_options[color_secondary]', array(
1017
+                'default'           => '#6c757d',
1018
+                'sanitize_callback' => 'sanitize_hex_color',
1019
+                'capability'        => 'edit_theme_options',
1020
+                'type'              => 'option',
1021
+                'transport'         => 'refresh',
1022
+            ));
1023
+            $wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_secondary', array(
1024
+                'label'    => __('Secondary Color','aui'),
1025
+                'section'  => 'aui_settings',
1026
+                'settings' => 'aui_options[color_secondary]',
1027
+            )));
1028
+        }
1029
+
1030
+        /**
1031
+         * CSS to help with conflict issues with other plugins and themes using bootstrap v3.
1032
+         *
1033
+         * @return mixed
1034
+         */
1035
+        public static function bs3_compat_css() {
1036
+            ob_start();
1037
+            ?>
1038 1038
             <style>
1039 1039
                 /* Bootstrap 3 compatibility */
1040 1040
                 body.modal-open .modal-backdrop.show:not(.in) {opacity:0.5;}
@@ -1063,58 +1063,58 @@  discard block
 block discarded – undo
1063 1063
                 <?php } ?>
1064 1064
             </style>
1065 1065
 			<?php
1066
-			return str_replace( array(
1067
-				'<style>',
1068
-				'</style>'
1069
-			), '', self::minify_css( ob_get_clean() ) );
1070
-		}
1066
+            return str_replace( array(
1067
+                '<style>',
1068
+                '</style>'
1069
+            ), '', self::minify_css( ob_get_clean() ) );
1070
+        }
1071 1071
 
1072 1072
 
1073
-		public static function custom_css($compatibility = true) {
1073
+        public static function custom_css($compatibility = true) {
1074 1074
             global $aui_bs5;
1075 1075
 
1076
-			$colors = array();
1077
-			if ( defined( 'BLOCKSTRAP_VERSION' ) ) {
1076
+            $colors = array();
1077
+            if ( defined( 'BLOCKSTRAP_VERSION' ) ) {
1078 1078
 
1079 1079
 
1080
-				$setting = wp_get_global_settings();
1080
+                $setting = wp_get_global_settings();
1081 1081
 
1082 1082
 //                print_r(wp_get_global_styles());//exit;
1083 1083
 //                print_r(get_default_block_editor_settings());exit;
1084 1084
 
1085 1085
 //                print_r($setting);echo  '###';exit;
1086
-				if(!empty($setting['color']['palette']['theme'])){
1087
-					foreach($setting['color']['palette']['theme'] as $color){
1088
-						$colors[$color['slug']] = esc_attr($color['color']);
1089
-					}
1090
-				}
1086
+                if(!empty($setting['color']['palette']['theme'])){
1087
+                    foreach($setting['color']['palette']['theme'] as $color){
1088
+                        $colors[$color['slug']] = esc_attr($color['color']);
1089
+                    }
1090
+                }
1091 1091
 
1092
-				if(!empty($setting['color']['palette']['custom'])){
1093
-					foreach($setting['color']['palette']['custom'] as $color){
1094
-						$colors[$color['slug']] = esc_attr($color['color']);
1095
-					}
1096
-				}
1097
-			}else{
1098
-				$settings = get_option('aui_options');
1099
-				$colors = array(
1100
-					'primary'   => ! empty( $settings['color_primary'] ) ? $settings['color_primary'] : AUI_PRIMARY_COLOR,
1101
-					'secondary' => ! empty( $settings['color_secondary'] ) ? $settings['color_secondary'] : AUI_SECONDARY_COLOR
1102
-				);
1103
-			}
1092
+                if(!empty($setting['color']['palette']['custom'])){
1093
+                    foreach($setting['color']['palette']['custom'] as $color){
1094
+                        $colors[$color['slug']] = esc_attr($color['color']);
1095
+                    }
1096
+                }
1097
+            }else{
1098
+                $settings = get_option('aui_options');
1099
+                $colors = array(
1100
+                    'primary'   => ! empty( $settings['color_primary'] ) ? $settings['color_primary'] : AUI_PRIMARY_COLOR,
1101
+                    'secondary' => ! empty( $settings['color_secondary'] ) ? $settings['color_secondary'] : AUI_SECONDARY_COLOR
1102
+                );
1103
+            }
1104 1104
 
1105
-			ob_start();
1105
+            ob_start();
1106 1106
 
1107
-			?>
1107
+            ?>
1108 1108
             <style>
1109 1109
                 <?php
1110 1110
 
1111
-					// BS v3 compat
1112
-					if( self::is_bs3_compat() ){
1113
-						echo self::bs3_compat_css();
1114
-					}
1111
+                    // BS v3 compat
1112
+                    if( self::is_bs3_compat() ){
1113
+                        echo self::bs3_compat_css();
1114
+                    }
1115 1115
 
1116
-					if(!empty($colors)){
1117
-						$d_colors = self::get_colors(true);
1116
+                    if(!empty($colors)){
1117
+                        $d_colors = self::get_colors(true);
1118 1118
 
1119 1119
                         $current_screen = function_exists('get_current_screen' ) ? get_current_screen() : '';
1120 1120
                         $is_fse = false;
@@ -1123,22 +1123,22 @@  discard block
 block discarded – undo
1123 1123
                         }
1124 1124
 
1125 1125
 //						$is_fse = !empty($_REQUEST['postType']) && $_REQUEST['postType']=='wp_template';
1126
-						foreach($colors as $key => $color ){
1127
-							if((empty( $d_colors[$key]) ||  $d_colors[$key] != $color) || $is_fse ) {
1128
-								$var = $is_fse ? "var(--wp--preset--color--$key)" : $color;
1129
-								$compat = $is_fse ? '.editor-styles-wrapper' : $compatibility;
1130
-								echo $aui_bs5 ? self::css_overwrite_bs5($key,$var,$compat,$color) : self::css_overwrite($key,$var,$compat,$color);
1131
-							}
1132
-						}
1133
-					   // exit;
1134
-					}
1126
+                        foreach($colors as $key => $color ){
1127
+                            if((empty( $d_colors[$key]) ||  $d_colors[$key] != $color) || $is_fse ) {
1128
+                                $var = $is_fse ? "var(--wp--preset--color--$key)" : $color;
1129
+                                $compat = $is_fse ? '.editor-styles-wrapper' : $compatibility;
1130
+                                echo $aui_bs5 ? self::css_overwrite_bs5($key,$var,$compat,$color) : self::css_overwrite($key,$var,$compat,$color);
1131
+                            }
1132
+                        }
1133
+                        // exit;
1134
+                    }
1135 1135
 
1136
-					// Set admin bar z-index lower when modal is open.
1137
-					echo ' body.modal-open #wpadminbar{z-index:999}.embed-responsive-16by9 .fluid-width-video-wrapper{padding:0 !important;position:initial}';
1136
+                    // Set admin bar z-index lower when modal is open.
1137
+                    echo ' body.modal-open #wpadminbar{z-index:999}.embed-responsive-16by9 .fluid-width-video-wrapper{padding:0 !important;position:initial}';
1138 1138
 
1139
-					if(is_admin()){
1140
-						echo ' body.modal-open #adminmenuwrap{z-index:999} body.modal-open #wpadminbar{z-index:1025}';
1141
-					}
1139
+                    if(is_admin()){
1140
+                        echo ' body.modal-open #adminmenuwrap{z-index:999} body.modal-open #wpadminbar{z-index:1025}';
1141
+                    }
1142 1142
 
1143 1143
                     if( $aui_bs5 && defined( 'BLOCKSTRAP_VERSION' ) ){
1144 1144
                         $css = '';
@@ -1158,171 +1158,171 @@  discard block
 block discarded – undo
1158 1158
                             echo 'body{' . $css . '}';
1159 1159
                         }
1160 1160
                     }
1161
-				?>
1161
+                ?>
1162 1162
             </style>
1163 1163
 			<?php
1164 1164
 
1165 1165
 
1166
-			/*
1166
+            /*
1167 1167
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
1168 1168
 			 */
1169
-			return str_replace( array(
1170
-				'<style>',
1171
-				'</style>'
1172
-			), '', self::minify_css( ob_get_clean() ) );
1173
-		}
1174
-
1175
-
1176
-
1177
-		/**
1178
-		 * Check if we should add booststrap 3 compatibility changes.
1179
-		 *
1180
-		 * @return bool
1181
-		 */
1182
-		public static function is_bs3_compat(){
1183
-			return defined('AYECODE_UI_BS3_COMPAT') || defined('SVQ_THEME_VERSION') || defined('FUSION_BUILDER_VERSION');
1184
-		}
1185
-
1186
-		public static function hex_to_rgb($hex) {
1187
-			// Remove '#' if present
1188
-			$hex = str_replace('#', '', $hex);
1189
-
1190
-			// Convert 3-digit hex to 6-digit hex
1191
-			if(strlen($hex) == 3) {
1192
-				$hex = str_repeat(substr($hex, 0, 1), 2) . str_repeat(substr($hex, 1, 1), 2) . str_repeat(substr($hex, 2, 1), 2);
1193
-			}
1194
-
1195
-			// Convert hex to RGB
1196
-			$r = hexdec(substr($hex, 0, 2));
1197
-			$g = hexdec(substr($hex, 2, 2));
1198
-			$b = hexdec(substr($hex, 4, 2));
1199
-
1200
-			// Return RGB values as an array
1201
-			return $r . ',' . $g . ',' . $b;
1202
-		}
1203
-
1204
-		/**
1205
-		 * Build the CSS to overwrite a bootstrap color variable.
1206
-		 *
1207
-		 * @param $type
1208
-		 * @param $color_code
1209
-		 * @param $compatibility
1210
-		 *
1211
-		 * @return string
1212
-		 */
1213
-		public static function css_overwrite_bs5($type,$color_code,$compatibility, $hex = '' ){
1214
-			global $aui_bs5;
1215
-
1216
-			$is_var = false;
1217
-			$is_custom = strpos($type, 'custom-') !== false ? true : false;
1218
-			if(!$color_code){return '';}
1219
-			if(strpos($color_code, 'var') !== false){
1220
-				//if(!sanitize_hex_color($color_code)){
1221
-				$color_code = esc_attr($color_code);
1222
-				$is_var = true;
1169
+            return str_replace( array(
1170
+                '<style>',
1171
+                '</style>'
1172
+            ), '', self::minify_css( ob_get_clean() ) );
1173
+        }
1174
+
1175
+
1176
+
1177
+        /**
1178
+         * Check if we should add booststrap 3 compatibility changes.
1179
+         *
1180
+         * @return bool
1181
+         */
1182
+        public static function is_bs3_compat(){
1183
+            return defined('AYECODE_UI_BS3_COMPAT') || defined('SVQ_THEME_VERSION') || defined('FUSION_BUILDER_VERSION');
1184
+        }
1185
+
1186
+        public static function hex_to_rgb($hex) {
1187
+            // Remove '#' if present
1188
+            $hex = str_replace('#', '', $hex);
1189
+
1190
+            // Convert 3-digit hex to 6-digit hex
1191
+            if(strlen($hex) == 3) {
1192
+                $hex = str_repeat(substr($hex, 0, 1), 2) . str_repeat(substr($hex, 1, 1), 2) . str_repeat(substr($hex, 2, 1), 2);
1193
+            }
1194
+
1195
+            // Convert hex to RGB
1196
+            $r = hexdec(substr($hex, 0, 2));
1197
+            $g = hexdec(substr($hex, 2, 2));
1198
+            $b = hexdec(substr($hex, 4, 2));
1199
+
1200
+            // Return RGB values as an array
1201
+            return $r . ',' . $g . ',' . $b;
1202
+        }
1203
+
1204
+        /**
1205
+         * Build the CSS to overwrite a bootstrap color variable.
1206
+         *
1207
+         * @param $type
1208
+         * @param $color_code
1209
+         * @param $compatibility
1210
+         *
1211
+         * @return string
1212
+         */
1213
+        public static function css_overwrite_bs5($type,$color_code,$compatibility, $hex = '' ){
1214
+            global $aui_bs5;
1215
+
1216
+            $is_var = false;
1217
+            $is_custom = strpos($type, 'custom-') !== false ? true : false;
1218
+            if(!$color_code){return '';}
1219
+            if(strpos($color_code, 'var') !== false){
1220
+                //if(!sanitize_hex_color($color_code)){
1221
+                $color_code = esc_attr($color_code);
1222
+                $is_var = true;
1223 1223
 //				$color_code = "rgba($color_code, 0.5)";
1224 1224
 //                echo '###1'.$color_code.'###';//exit;
1225
-			}
1225
+            }
1226 1226
 
1227 1227
 //            echo '@@@'.$color_code.'==='.self::hex_to_rgb($color_code);exit;
1228 1228
 
1229
-			if(!$color_code){return '';}
1229
+            if(!$color_code){return '';}
1230 1230
 
1231
-			$rgb = self::hex_to_rgb($hex);
1231
+            $rgb = self::hex_to_rgb($hex);
1232 1232
 
1233
-			if($compatibility===true || $compatibility===1){
1234
-				$compatibility = '.bsui';
1235
-			}elseif(!$compatibility){
1236
-				$compatibility = '';
1237
-			}else{
1238
-				$compatibility = esc_attr($compatibility);
1239
-			}
1233
+            if($compatibility===true || $compatibility===1){
1234
+                $compatibility = '.bsui';
1235
+            }elseif(!$compatibility){
1236
+                $compatibility = '';
1237
+            }else{
1238
+                $compatibility = esc_attr($compatibility);
1239
+            }
1240 1240
 
1241
-			$prefix = $compatibility ? $compatibility . " " : "";
1241
+            $prefix = $compatibility ? $compatibility . " " : "";
1242 1242
 
1243 1243
 
1244 1244
             $output = '';
1245 1245
 
1246 1246
 //            echo '####'.$color_code;exit;
1247 1247
 
1248
-			$type = sanitize_html_class($type);
1248
+            $type = sanitize_html_class($type);
1249
+
1250
+            /**
1251
+             * c = color, b = background color, o = border-color, f = fill
1252
+             */
1253
+            $selectors = array(
1254
+                ".btn-{$type}"                                              => array( 'b', 'o' ),
1255
+                ".btn-{$type}.disabled"                                     => array( 'b', 'o' ),
1256
+                ".btn-{$type}:disabled"                                     => array( 'b', 'o' ),
1257
+                ".btn-outline-{$type}"                                      => array( 'c', 'o' ),
1258
+                ".btn-outline-{$type}:hover"                                => array( 'b', 'o' ),
1259
+                ".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ),
1260
+                ".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ),
1261
+                ".show>.btn-outline-{$type}.dropdown-toggle"                => array( 'b', 'o' ),
1262
+                ".badge-{$type}"                                            => array( 'b' ),
1263
+                ".alert-{$type}"                                            => array( 'b', 'o' ),
1264
+                ".bg-{$type}"                                               => array( 'b', 'f' ),
1265
+                ".btn-link.btn-{$type}"                                     => array( 'c' ),
1266
+                ".text-{$type}"                                     => array( 'c' ),
1267
+            );
1268
+
1269
+            if ( $aui_bs5 ) {
1270
+                unset($selectors[".alert-{$type}" ]);
1271
+            }
1249 1272
 
1250
-			/**
1251
-			 * c = color, b = background color, o = border-color, f = fill
1252
-			 */
1253
-			$selectors = array(
1254
-				".btn-{$type}"                                              => array( 'b', 'o' ),
1255
-				".btn-{$type}.disabled"                                     => array( 'b', 'o' ),
1256
-				".btn-{$type}:disabled"                                     => array( 'b', 'o' ),
1257
-				".btn-outline-{$type}"                                      => array( 'c', 'o' ),
1258
-				".btn-outline-{$type}:hover"                                => array( 'b', 'o' ),
1259
-				".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ),
1260
-				".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ),
1261
-				".show>.btn-outline-{$type}.dropdown-toggle"                => array( 'b', 'o' ),
1262
-				".badge-{$type}"                                            => array( 'b' ),
1263
-				".alert-{$type}"                                            => array( 'b', 'o' ),
1264
-				".bg-{$type}"                                               => array( 'b', 'f' ),
1265
-				".btn-link.btn-{$type}"                                     => array( 'c' ),
1266
-				".text-{$type}"                                     => array( 'c' ),
1267
-			);
1268
-
1269
-			if ( $aui_bs5 ) {
1270
-				unset($selectors[".alert-{$type}" ]);
1271
-			}
1272
-
1273
-			if ( $type == 'primary' ) {
1274
-				$selectors = $selectors + array(
1275
-						'a'                                                                                                    => array( 'c' ),
1276
-						'.btn-link'                                                                                            => array( 'c' ),
1277
-						'.dropdown-item.active'                                                                                => array( 'b' ),
1278
-						'.custom-control-input:checked~.custom-control-label::before'                                          => array(
1279
-							'b',
1280
-							'o'
1281
-						),
1282
-						'.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before'                   => array(
1283
-							'b',
1284
-							'o'
1285
-						),
1286
-						'.nav-pills .nav-link.active'                                                                          => array( 'b' ),
1287
-						'.nav-pills .show>.nav-link'                                                                           => array( 'b' ),
1288
-						'.page-link'                                                                                           => array( 'c' ),
1289
-						'.page-item.active .page-link'                                                                         => array(
1290
-							'b',
1291
-							'o'
1292
-						),
1293
-						'.progress-bar'                                                                                        => array( 'b' ),
1294
-						'.list-group-item.active'                                                                              => array(
1295
-							'b',
1296
-							'o'
1297
-						),
1298
-						'.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ),
1299
-					);
1300
-			}
1273
+            if ( $type == 'primary' ) {
1274
+                $selectors = $selectors + array(
1275
+                        'a'                                                                                                    => array( 'c' ),
1276
+                        '.btn-link'                                                                                            => array( 'c' ),
1277
+                        '.dropdown-item.active'                                                                                => array( 'b' ),
1278
+                        '.custom-control-input:checked~.custom-control-label::before'                                          => array(
1279
+                            'b',
1280
+                            'o'
1281
+                        ),
1282
+                        '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before'                   => array(
1283
+                            'b',
1284
+                            'o'
1285
+                        ),
1286
+                        '.nav-pills .nav-link.active'                                                                          => array( 'b' ),
1287
+                        '.nav-pills .show>.nav-link'                                                                           => array( 'b' ),
1288
+                        '.page-link'                                                                                           => array( 'c' ),
1289
+                        '.page-item.active .page-link'                                                                         => array(
1290
+                            'b',
1291
+                            'o'
1292
+                        ),
1293
+                        '.progress-bar'                                                                                        => array( 'b' ),
1294
+                        '.list-group-item.active'                                                                              => array(
1295
+                            'b',
1296
+                            'o'
1297
+                        ),
1298
+                        '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ),
1299
+                    );
1300
+            }
1301 1301
 
1302 1302
 
1303 1303
 
1304 1304
             // link
1305
-			if ( $type === 'primary' ) {
1306
-				$output .= 'html body {--bs-link-hover-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .75); --bs-link-color: var(--bs-'.esc_attr($type).'); }';
1307
-				$output .= $prefix . ' .breadcrumb{--bs-breadcrumb-item-active-color: '.esc_attr($color_code).';  }';
1308
-				$output .= $prefix . ' .navbar { --bs-nav-link-hover-color: '.esc_attr($color_code).'; --bs-navbar-hover-color: '.esc_attr($color_code).'; --bs-navbar-active-color: '.esc_attr($color_code).'; }';
1305
+            if ( $type === 'primary' ) {
1306
+                $output .= 'html body {--bs-link-hover-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .75); --bs-link-color: var(--bs-'.esc_attr($type).'); }';
1307
+                $output .= $prefix . ' .breadcrumb{--bs-breadcrumb-item-active-color: '.esc_attr($color_code).';  }';
1308
+                $output .= $prefix . ' .navbar { --bs-nav-link-hover-color: '.esc_attr($color_code).'; --bs-navbar-hover-color: '.esc_attr($color_code).'; --bs-navbar-active-color: '.esc_attr($color_code).'; }';
1309 1309
 
1310
-				$output .= $prefix . ' a{color: var(--bs-'.esc_attr($type).');}';
1311
-				$output .= $prefix . ' .text-primary{color: var(--bs-'.esc_attr($type).') !important;}';
1310
+                $output .= $prefix . ' a{color: var(--bs-'.esc_attr($type).');}';
1311
+                $output .= $prefix . ' .text-primary{color: var(--bs-'.esc_attr($type).') !important;}';
1312 1312
 
1313 1313
                 // dropdown
1314
-				$output .= $prefix . ' .dropdown-menu{--bs-dropdown-link-hover-color: var(--bs-'.esc_attr($type).'); --bs-dropdown-link-active-color: var(--bs-'.esc_attr($type).');}';
1314
+                $output .= $prefix . ' .dropdown-menu{--bs-dropdown-link-hover-color: var(--bs-'.esc_attr($type).'); --bs-dropdown-link-active-color: var(--bs-'.esc_attr($type).');}';
1315 1315
 
1316 1316
                 // pagination
1317
-				$output .= $prefix . ' .pagination{--bs-pagination-hover-color: var(--bs-'.esc_attr($type).'); --bs-pagination-active-bg: var(--bs-'.esc_attr($type).');}';
1317
+                $output .= $prefix . ' .pagination{--bs-pagination-hover-color: var(--bs-'.esc_attr($type).'); --bs-pagination-active-bg: var(--bs-'.esc_attr($type).');}';
1318 1318
 
1319
-			}
1319
+            }
1320 1320
 
1321
-			$output .= $prefix . ' .link-'.esc_attr($type).':hover {color: rgba(var(--bs-'.esc_attr($type).'-rgb), .8) !important;}';
1321
+            $output .= $prefix . ' .link-'.esc_attr($type).':hover {color: rgba(var(--bs-'.esc_attr($type).'-rgb), .8) !important;}';
1322 1322
 
1323
-			//  buttons
1324
-			$output .= $prefix . ' .btn-'.esc_attr($type).'{';
1325
-			$output .= ' 
1323
+            //  buttons
1324
+            $output .= $prefix . ' .btn-'.esc_attr($type).'{';
1325
+            $output .= ' 
1326 1326
             --bs-btn-bg: '.esc_attr($color_code).';
1327 1327
             --bs-btn-border-color: '.esc_attr($color_code).';
1328 1328
             --bs-btn-hover-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .9);
@@ -1340,11 +1340,11 @@  discard block
 block discarded – undo
1340 1340
 //			--bs-btn-active-color: #fff;
1341 1341
 //			--bs-btn-disabled-color: #fff;
1342 1342
 //            ';
1343
-			$output .= '}';
1343
+            $output .= '}';
1344 1344
 
1345
-			//  buttons outline
1346
-			$output .= $prefix . ' .btn-outline-'.esc_attr($type).'{';
1347
-			$output .= ' 
1345
+            //  buttons outline
1346
+            $output .= $prefix . ' .btn-outline-'.esc_attr($type).'{';
1347
+            $output .= ' 
1348 1348
             --bs-btn-border-color: '.esc_attr($color_code).';
1349 1349
             --bs-btn-hover-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .9);
1350 1350
             --bs-btn-hover-border-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .9);
@@ -1361,37 +1361,37 @@  discard block
 block discarded – undo
1361 1361
 //			--bs-btn-active-color: #fff;
1362 1362
 //			--bs-btn-disabled-color: #fff;
1363 1363
 //            ';
1364
-			$output .= '}';
1364
+            $output .= '}';
1365 1365
 
1366 1366
 
1367 1367
             // button hover
1368
-			$output .= $prefix . ' .btn-'.esc_attr($type).':hover{';
1369
-			$output .= ' 
1368
+            $output .= $prefix . ' .btn-'.esc_attr($type).':hover{';
1369
+            $output .= ' 
1370 1370
             box-shadow: 0 0.25rem 0.25rem 0.125rem rgb(var(--bs-'.esc_attr($type).'-rgb), .1), 0 0.375rem 0.75rem -0.125rem rgb(var(--bs-'.esc_attr($type).'-rgb) , .4);
1371 1371
             }
1372 1372
             ';
1373 1373
 
1374 1374
 
1375
-			if ( $aui_bs5 ) {
1375
+            if ( $aui_bs5 ) {
1376 1376
 //				$output .= $is_var ? 'html body {--bs-'.esc_attr($type).'-rgb: '.$color_code.'; }' : 'html body {--bs-'.esc_attr($type).'-rgb: '.self::hex_to_rgb($color_code).'; }';
1377
-				$output .= 'html body {--bs-'.esc_attr($type).': '.esc_attr($color_code).'; }';
1378
-				$output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }';
1379
-			}
1377
+                $output .= 'html body {--bs-'.esc_attr($type).': '.esc_attr($color_code).'; }';
1378
+                $output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }';
1379
+            }
1380 1380
 
1381 1381
 
1382
-			if ( $is_custom ) {
1382
+            if ( $is_custom ) {
1383 1383
 
1384 1384
 //				echo '###'.$type;exit;
1385 1385
 
1386
-				// build rules into each type
1387
-				foreach($selectors as $selector => $types){
1388
-					$selector = $compatibility ? $compatibility . " ".$selector : $selector;
1389
-					$types = array_combine($types,$types);
1390
-					if(isset($types['c'])){$color[] = $selector;}
1391
-					if(isset($types['b'])){$background[] = $selector;}
1392
-					if(isset($types['o'])){$border[] = $selector;}
1393
-					if(isset($types['f'])){$fill[] = $selector;}
1394
-				}
1386
+                // build rules into each type
1387
+                foreach($selectors as $selector => $types){
1388
+                    $selector = $compatibility ? $compatibility . " ".$selector : $selector;
1389
+                    $types = array_combine($types,$types);
1390
+                    if(isset($types['c'])){$color[] = $selector;}
1391
+                    if(isset($types['b'])){$background[] = $selector;}
1392
+                    if(isset($types['o'])){$border[] = $selector;}
1393
+                    if(isset($types['f'])){$fill[] = $selector;}
1394
+                }
1395 1395
 
1396 1396
 //				// build rules into each type
1397 1397
 //				foreach($important_selectors as $selector => $types){
@@ -1403,67 +1403,67 @@  discard block
 block discarded – undo
1403 1403
 //					if(isset($types['f'])){$fill_i[] = $selector;}
1404 1404
 //				}
1405 1405
 
1406
-				// add any color rules
1407
-				if(!empty($color)){
1408
-					$output .= implode(",",$color) . "{color: $color_code;} ";
1409
-				}
1410
-				if(!empty($color_i)){
1411
-					$output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1412
-				}
1406
+                // add any color rules
1407
+                if(!empty($color)){
1408
+                    $output .= implode(",",$color) . "{color: $color_code;} ";
1409
+                }
1410
+                if(!empty($color_i)){
1411
+                    $output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1412
+                }
1413 1413
 
1414
-				// add any background color rules
1415
-				if(!empty($background)){
1416
-					$output .= implode(",",$background) . "{background-color: $color_code;} ";
1417
-				}
1418
-				if(!empty($background_i)){
1419
-					$output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} ";
1414
+                // add any background color rules
1415
+                if(!empty($background)){
1416
+                    $output .= implode(",",$background) . "{background-color: $color_code;} ";
1417
+                }
1418
+                if(!empty($background_i)){
1419
+                    $output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} ";
1420 1420
 //				$output .= implode(",",$background_i) . "{background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;} ";
1421
-				}
1421
+                }
1422 1422
 
1423
-				// add any border color rules
1424
-				if(!empty($border)){
1425
-					$output .= implode(",",$border) . "{border-color: $color_code;} ";
1426
-				}
1427
-				if(!empty($border_i)){
1428
-					$output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1429
-				}
1423
+                // add any border color rules
1424
+                if(!empty($border)){
1425
+                    $output .= implode(",",$border) . "{border-color: $color_code;} ";
1426
+                }
1427
+                if(!empty($border_i)){
1428
+                    $output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1429
+                }
1430 1430
 
1431
-				// add any fill color rules
1432
-				if(!empty($fill)){
1433
-					$output .= implode(",",$fill) . "{fill: $color_code;} ";
1434
-				}
1435
-				if(!empty($fill_i)){
1436
-					$output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1437
-				}
1431
+                // add any fill color rules
1432
+                if(!empty($fill)){
1433
+                    $output .= implode(",",$fill) . "{fill: $color_code;} ";
1434
+                }
1435
+                if(!empty($fill_i)){
1436
+                    $output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1437
+                }
1438 1438
 
1439
-			}
1439
+            }
1440 1440
 
1441 1441
 
1442 1442
 
1443 1443
 
1444
-			$transition = $is_var ? 'transition: color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,filter 0.15s ease-in-out;' : '';
1445
-			// darken
1446
-			$darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075");
1447
-			$darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10");
1448
-			$darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125");
1449
-			$darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4");
1444
+            $transition = $is_var ? 'transition: color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,filter 0.15s ease-in-out;' : '';
1445
+            // darken
1446
+            $darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075");
1447
+            $darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10");
1448
+            $darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125");
1449
+            $darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4");
1450 1450
 
1451
-			// lighten
1452
-			$lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25");
1451
+            // lighten
1452
+            $lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25");
1453 1453
 
1454
-			// opacity see https://css-tricks.com/8-digit-hex-codes/
1455
-			$op_25 = $color_code."40"; // 25% opacity
1454
+            // opacity see https://css-tricks.com/8-digit-hex-codes/
1455
+            $op_25 = $color_code."40"; // 25% opacity
1456 1456
 
1457 1457
 
1458
-			// button states
1459
-			$output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : '';
1460
-			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1458
+            // button states
1459
+            $output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : '';
1460
+            $output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1461 1461
 //			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: #000;    border-color: #000;} ";
1462
-			$output .= $prefix ." .btn-outline-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-{$type}.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1463
-			$output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active, $prefix .btn-{$type}:not(:disabled):not(.disabled).active, .show>$prefix .btn-{$type}.dropdown-toggle{background-color: ".$darker_10.";    border-color: ".$darker_125.";} ";
1464
-			$output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-{$type}.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} ";
1462
+            $output .= $prefix ." .btn-outline-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-{$type}.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1463
+            $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active, $prefix .btn-{$type}:not(:disabled):not(.disabled).active, .show>$prefix .btn-{$type}.dropdown-toggle{background-color: ".$darker_10.";    border-color: ".$darker_125.";} ";
1464
+            $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-{$type}.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} ";
1465 1465
 
1466
-			// text
1466
+            // text
1467 1467
 //			$output .= $prefix .".xxx, .text-{$type} {color: var(--bs-".esc_attr($type).");} ";
1468 1468
 
1469 1469
 
@@ -1478,773 +1478,773 @@  discard block
 block discarded – undo
1478 1478
 //				$output .= $prefix . " .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1479 1479
 //			}
1480 1480
 
1481
-			// alerts
1482
-			if ( $aui_bs5 ) {
1481
+            // alerts
1482
+            if ( $aui_bs5 ) {
1483 1483
 //				$output .= $is_var ? '' : $prefix ." .alert-{$type} {background-color: ".$color_code."20;    border-color: ".$color_code."30;color:$darker_40} ";
1484
-				$output .= $prefix ." .alert-{$type} {--bs-alert-bg: rgba(var(--bs-{$type}-rgb), .1 ) !important;--bs-alert-border-color: rgba(var(--bs-{$type}-rgb), .25 ) !important;--bs-alert-color: rgba(var(--bs-{$type}-rgb), 1 ) !important;} ";
1485
-			}
1486
-
1487
-			return $output;
1488
-		}
1489
-
1490
-		/**
1491
-		 * Build the CSS to overwrite a bootstrap color variable.
1492
-		 *
1493
-		 * @param $type
1494
-		 * @param $color_code
1495
-		 * @param $compatibility
1496
-		 *
1497
-		 * @return string
1498
-		 */
1499
-		public static function css_overwrite($type,$color_code,$compatibility, $hex = '' ){
1484
+                $output .= $prefix ." .alert-{$type} {--bs-alert-bg: rgba(var(--bs-{$type}-rgb), .1 ) !important;--bs-alert-border-color: rgba(var(--bs-{$type}-rgb), .25 ) !important;--bs-alert-color: rgba(var(--bs-{$type}-rgb), 1 ) !important;} ";
1485
+            }
1486
+
1487
+            return $output;
1488
+        }
1489
+
1490
+        /**
1491
+         * Build the CSS to overwrite a bootstrap color variable.
1492
+         *
1493
+         * @param $type
1494
+         * @param $color_code
1495
+         * @param $compatibility
1496
+         *
1497
+         * @return string
1498
+         */
1499
+        public static function css_overwrite($type,$color_code,$compatibility, $hex = '' ){
1500 1500
             global $aui_bs5;
1501 1501
 
1502
-			$is_var = false;
1503
-			if(!$color_code){return '';}
1504
-			if(strpos($color_code, 'var') !== false){
1505
-				//if(!sanitize_hex_color($color_code)){
1506
-				$color_code = esc_attr($color_code);
1507
-				$is_var = true;
1502
+            $is_var = false;
1503
+            if(!$color_code){return '';}
1504
+            if(strpos($color_code, 'var') !== false){
1505
+                //if(!sanitize_hex_color($color_code)){
1506
+                $color_code = esc_attr($color_code);
1507
+                $is_var = true;
1508 1508
 //				$color_code = "rgba($color_code, 0.5)";
1509 1509
 //                echo '###1'.$color_code.'###';//exit;
1510
-			}
1510
+            }
1511 1511
 
1512 1512
 //            echo '@@@'.$color_code.'==='.self::hex_to_rgb($color_code);exit;
1513 1513
 
1514
-			if(!$color_code){return '';}
1514
+            if(!$color_code){return '';}
1515 1515
 
1516 1516
             $rgb = self::hex_to_rgb($hex);
1517 1517
 
1518
-			if($compatibility===true || $compatibility===1){
1519
-				$compatibility = '.bsui';
1520
-			}elseif(!$compatibility){
1521
-				$compatibility = '';
1522
-			}else{
1523
-				$compatibility = esc_attr($compatibility);
1524
-			}
1518
+            if($compatibility===true || $compatibility===1){
1519
+                $compatibility = '.bsui';
1520
+            }elseif(!$compatibility){
1521
+                $compatibility = '';
1522
+            }else{
1523
+                $compatibility = esc_attr($compatibility);
1524
+            }
1525 1525
 
1526 1526
 
1527 1527
 
1528 1528
 //            echo '####'.$color_code;exit;
1529 1529
 
1530
-			$type = sanitize_html_class($type);
1531
-
1532
-			/**
1533
-			 * c = color, b = background color, o = border-color, f = fill
1534
-			 */
1535
-			$selectors = array(
1536
-				".btn-{$type}"                                              => array( 'b', 'o' ),
1537
-				".btn-{$type}.disabled"                                     => array( 'b', 'o' ),
1538
-				".btn-{$type}:disabled"                                     => array( 'b', 'o' ),
1539
-				".btn-outline-{$type}"                                      => array( 'c', 'o' ),
1540
-				".btn-outline-{$type}:hover"                                => array( 'b', 'o' ),
1541
-				".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ),
1542
-				".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ),
1543
-				".show>.btn-outline-{$type}.dropdown-toggle"                => array( 'b', 'o' ),
1544
-				".badge-{$type}"                                            => array( 'b' ),
1545
-				".alert-{$type}"                                            => array( 'b', 'o' ),
1546
-				".bg-{$type}"                                               => array( 'b', 'f' ),
1547
-				".btn-link.btn-{$type}"                                     => array( 'c' ),
1548
-			);
1549
-
1550
-			if ( $aui_bs5 ) {
1530
+            $type = sanitize_html_class($type);
1531
+
1532
+            /**
1533
+             * c = color, b = background color, o = border-color, f = fill
1534
+             */
1535
+            $selectors = array(
1536
+                ".btn-{$type}"                                              => array( 'b', 'o' ),
1537
+                ".btn-{$type}.disabled"                                     => array( 'b', 'o' ),
1538
+                ".btn-{$type}:disabled"                                     => array( 'b', 'o' ),
1539
+                ".btn-outline-{$type}"                                      => array( 'c', 'o' ),
1540
+                ".btn-outline-{$type}:hover"                                => array( 'b', 'o' ),
1541
+                ".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ),
1542
+                ".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ),
1543
+                ".show>.btn-outline-{$type}.dropdown-toggle"                => array( 'b', 'o' ),
1544
+                ".badge-{$type}"                                            => array( 'b' ),
1545
+                ".alert-{$type}"                                            => array( 'b', 'o' ),
1546
+                ".bg-{$type}"                                               => array( 'b', 'f' ),
1547
+                ".btn-link.btn-{$type}"                                     => array( 'c' ),
1548
+            );
1549
+
1550
+            if ( $aui_bs5 ) {
1551 1551
                 unset($selectors[".alert-{$type}" ]);
1552
-			}
1553
-
1554
-			if ( $type == 'primary' ) {
1555
-				$selectors = $selectors + array(
1556
-						'a'                                                                                                    => array( 'c' ),
1557
-						'.btn-link'                                                                                            => array( 'c' ),
1558
-						'.dropdown-item.active'                                                                                => array( 'b' ),
1559
-						'.custom-control-input:checked~.custom-control-label::before'                                          => array(
1560
-							'b',
1561
-							'o'
1562
-						),
1563
-						'.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before'                   => array(
1564
-							'b',
1565
-							'o'
1566
-						),
1567
-						'.nav-pills .nav-link.active'                                                                          => array( 'b' ),
1568
-						'.nav-pills .show>.nav-link'                                                                           => array( 'b' ),
1569
-						'.page-link'                                                                                           => array( 'c' ),
1570
-						'.page-item.active .page-link'                                                                         => array(
1571
-							'b',
1572
-							'o'
1573
-						),
1574
-						'.progress-bar'                                                                                        => array( 'b' ),
1575
-						'.list-group-item.active'                                                                              => array(
1576
-							'b',
1577
-							'o'
1578
-						),
1579
-						'.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ),
1552
+            }
1553
+
1554
+            if ( $type == 'primary' ) {
1555
+                $selectors = $selectors + array(
1556
+                        'a'                                                                                                    => array( 'c' ),
1557
+                        '.btn-link'                                                                                            => array( 'c' ),
1558
+                        '.dropdown-item.active'                                                                                => array( 'b' ),
1559
+                        '.custom-control-input:checked~.custom-control-label::before'                                          => array(
1560
+                            'b',
1561
+                            'o'
1562
+                        ),
1563
+                        '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before'                   => array(
1564
+                            'b',
1565
+                            'o'
1566
+                        ),
1567
+                        '.nav-pills .nav-link.active'                                                                          => array( 'b' ),
1568
+                        '.nav-pills .show>.nav-link'                                                                           => array( 'b' ),
1569
+                        '.page-link'                                                                                           => array( 'c' ),
1570
+                        '.page-item.active .page-link'                                                                         => array(
1571
+                            'b',
1572
+                            'o'
1573
+                        ),
1574
+                        '.progress-bar'                                                                                        => array( 'b' ),
1575
+                        '.list-group-item.active'                                                                              => array(
1576
+                            'b',
1577
+                            'o'
1578
+                        ),
1579
+                        '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ),
1580 1580
 //				    '.custom-range::-webkit-slider-thumb' => array('b'), // these break the inline rules...
1581 1581
 //				    '.custom-range::-moz-range-thumb' => array('b'),
1582 1582
 //				    '.custom-range::-ms-thumb' => array('b'),
1583
-					);
1584
-			}
1585
-
1586
-			$important_selectors = array(
1587
-				".bg-{$type}" => array('b','f'),
1588
-				".border-{$type}" => array('o'),
1589
-				".text-{$type}" => array('c'),
1590
-			);
1591
-
1592
-			$color = array();
1593
-			$color_i = array();
1594
-			$background = array();
1595
-			$background_i = array();
1596
-			$border = array();
1597
-			$border_i = array();
1598
-			$fill = array();
1599
-			$fill_i = array();
1600
-
1601
-			$output = '';
1602
-
1603
-			if ( $aui_bs5 ) {
1583
+                    );
1584
+            }
1585
+
1586
+            $important_selectors = array(
1587
+                ".bg-{$type}" => array('b','f'),
1588
+                ".border-{$type}" => array('o'),
1589
+                ".text-{$type}" => array('c'),
1590
+            );
1591
+
1592
+            $color = array();
1593
+            $color_i = array();
1594
+            $background = array();
1595
+            $background_i = array();
1596
+            $border = array();
1597
+            $border_i = array();
1598
+            $fill = array();
1599
+            $fill_i = array();
1600
+
1601
+            $output = '';
1602
+
1603
+            if ( $aui_bs5 ) {
1604 1604
 //				$output .= $is_var ? 'html body {--bs-'.esc_attr($type).'-rgb: '.$color_code.'; }' : 'html body {--bs-'.esc_attr($type).'-rgb: '.self::hex_to_rgb($color_code).'; }';
1605
-				$output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }';
1606
-			}
1607
-
1608
-			// build rules into each type
1609
-			foreach($selectors as $selector => $types){
1610
-				$selector = $compatibility ? $compatibility . " ".$selector : $selector;
1611
-				$types = array_combine($types,$types);
1612
-				if(isset($types['c'])){$color[] = $selector;}
1613
-				if(isset($types['b'])){$background[] = $selector;}
1614
-				if(isset($types['o'])){$border[] = $selector;}
1615
-				if(isset($types['f'])){$fill[] = $selector;}
1616
-			}
1617
-
1618
-			// build rules into each type
1619
-			foreach($important_selectors as $selector => $types){
1620
-				$selector = $compatibility ? $compatibility . " ".$selector : $selector;
1621
-				$types = array_combine($types,$types);
1622
-				if(isset($types['c'])){$color_i[] = $selector;}
1623
-				if(isset($types['b'])){$background_i[] = $selector;}
1624
-				if(isset($types['o'])){$border_i[] = $selector;}
1625
-				if(isset($types['f'])){$fill_i[] = $selector;}
1626
-			}
1627
-
1628
-			// add any color rules
1629
-			if(!empty($color)){
1630
-				$output .= implode(",",$color) . "{color: $color_code;} ";
1631
-			}
1632
-			if(!empty($color_i)){
1633
-				$output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1634
-			}
1635
-
1636
-			// add any background color rules
1637
-			if(!empty($background)){
1638
-				$output .= implode(",",$background) . "{background-color: $color_code;} ";
1639
-			}
1640
-			if(!empty($background_i)){
1641
-				$output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} ";
1605
+                $output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }';
1606
+            }
1607
+
1608
+            // build rules into each type
1609
+            foreach($selectors as $selector => $types){
1610
+                $selector = $compatibility ? $compatibility . " ".$selector : $selector;
1611
+                $types = array_combine($types,$types);
1612
+                if(isset($types['c'])){$color[] = $selector;}
1613
+                if(isset($types['b'])){$background[] = $selector;}
1614
+                if(isset($types['o'])){$border[] = $selector;}
1615
+                if(isset($types['f'])){$fill[] = $selector;}
1616
+            }
1617
+
1618
+            // build rules into each type
1619
+            foreach($important_selectors as $selector => $types){
1620
+                $selector = $compatibility ? $compatibility . " ".$selector : $selector;
1621
+                $types = array_combine($types,$types);
1622
+                if(isset($types['c'])){$color_i[] = $selector;}
1623
+                if(isset($types['b'])){$background_i[] = $selector;}
1624
+                if(isset($types['o'])){$border_i[] = $selector;}
1625
+                if(isset($types['f'])){$fill_i[] = $selector;}
1626
+            }
1627
+
1628
+            // add any color rules
1629
+            if(!empty($color)){
1630
+                $output .= implode(",",$color) . "{color: $color_code;} ";
1631
+            }
1632
+            if(!empty($color_i)){
1633
+                $output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1634
+            }
1635
+
1636
+            // add any background color rules
1637
+            if(!empty($background)){
1638
+                $output .= implode(",",$background) . "{background-color: $color_code;} ";
1639
+            }
1640
+            if(!empty($background_i)){
1641
+                $output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} ";
1642 1642
 //				$output .= implode(",",$background_i) . "{background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;} ";
1643
-			}
1643
+            }
1644 1644
 
1645
-			// add any border color rules
1646
-			if(!empty($border)){
1647
-				$output .= implode(",",$border) . "{border-color: $color_code;} ";
1648
-			}
1649
-			if(!empty($border_i)){
1650
-				$output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1651
-			}
1645
+            // add any border color rules
1646
+            if(!empty($border)){
1647
+                $output .= implode(",",$border) . "{border-color: $color_code;} ";
1648
+            }
1649
+            if(!empty($border_i)){
1650
+                $output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1651
+            }
1652 1652
 
1653
-			// add any fill color rules
1654
-			if(!empty($fill)){
1655
-				$output .= implode(",",$fill) . "{fill: $color_code;} ";
1656
-			}
1657
-			if(!empty($fill_i)){
1658
-				$output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1659
-			}
1653
+            // add any fill color rules
1654
+            if(!empty($fill)){
1655
+                $output .= implode(",",$fill) . "{fill: $color_code;} ";
1656
+            }
1657
+            if(!empty($fill_i)){
1658
+                $output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1659
+            }
1660 1660
 
1661 1661
 
1662
-			$prefix = $compatibility ? $compatibility . " " : "";
1662
+            $prefix = $compatibility ? $compatibility . " " : "";
1663 1663
 
1664
-			$transition = $is_var ? 'transition: color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,filter 0.15s ease-in-out;' : '';
1665
-			// darken
1666
-			$darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075");
1667
-			$darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10");
1668
-			$darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125");
1669
-			$darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4");
1664
+            $transition = $is_var ? 'transition: color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,filter 0.15s ease-in-out;' : '';
1665
+            // darken
1666
+            $darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075");
1667
+            $darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10");
1668
+            $darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125");
1669
+            $darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4");
1670 1670
 
1671
-			// lighten
1672
-			$lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25");
1671
+            // lighten
1672
+            $lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25");
1673 1673
 
1674
-			// opacity see https://css-tricks.com/8-digit-hex-codes/
1675
-			$op_25 = $color_code."40"; // 25% opacity
1674
+            // opacity see https://css-tricks.com/8-digit-hex-codes/
1675
+            $op_25 = $color_code."40"; // 25% opacity
1676 1676
 
1677 1677
 
1678
-			// button states
1679
-			$output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : '';
1680
-			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1678
+            // button states
1679
+            $output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : '';
1680
+            $output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1681 1681
 //			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: #000;    border-color: #000;} ";
1682
-			$output .= $prefix ." .btn-outline-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-{$type}.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1683
-			$output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active, $prefix .btn-{$type}:not(:disabled):not(.disabled).active, .show>$prefix .btn-{$type}.dropdown-toggle{background-color: ".$darker_10.";    border-color: ".$darker_125.";} ";
1684
-			$output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-{$type}.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} ";
1682
+            $output .= $prefix ." .btn-outline-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-{$type}.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1683
+            $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active, $prefix .btn-{$type}:not(:disabled):not(.disabled).active, .show>$prefix .btn-{$type}.dropdown-toggle{background-color: ".$darker_10.";    border-color: ".$darker_125.";} ";
1684
+            $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-{$type}.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} ";
1685 1685
 
1686
-			if ( $type == 'primary' ) {
1687
-				// dropdown's
1688
-				$output .= $prefix . " .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
1686
+            if ( $type == 'primary' ) {
1687
+                // dropdown's
1688
+                $output .= $prefix . " .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
1689 1689
 
1690
-				// input states
1691
-				$output .= $prefix . " .form-control:focus{border-color: " . $lighten_25 . ";box-shadow: 0 0 0 0.2rem $op_25;} ";
1690
+                // input states
1691
+                $output .= $prefix . " .form-control:focus{border-color: " . $lighten_25 . ";box-shadow: 0 0 0 0.2rem $op_25;} ";
1692 1692
 
1693
-				// page link
1694
-				$output .= $prefix . " .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1695
-			}
1693
+                // page link
1694
+                $output .= $prefix . " .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1695
+            }
1696 1696
 
1697 1697
             // alerts
1698
-			if ( $aui_bs5 ) {
1698
+            if ( $aui_bs5 ) {
1699 1699
 //				$output .= $is_var ? '' : $prefix ." .alert-{$type} {background-color: ".$color_code."20;    border-color: ".$color_code."30;color:$darker_40} ";
1700
-				$output .= $prefix ." .alert-{$type} {--bs-alert-bg: rgba(var(--bs-{$type}-rgb), .1 ) !important;--bs-alert-border-color: rgba(var(--bs-{$type}-rgb), .25 ) !important;--bs-alert-color: rgba(var(--bs-{$type}-rgb), 1 ) !important;} ";
1701
-			}
1702
-
1703
-			return $output;
1704
-		}
1705
-
1706
-		/**
1707
-		 *
1708
-		 * @deprecated 0.1.76 Use css_overwrite()
1709
-		 *
1710
-		 * @param $color_code
1711
-		 * @param $compatibility
1712
-		 * @param $use_variable
1713
-		 *
1714
-		 * @return string
1715
-		 */
1716
-		public static function css_primary($color_code,$compatibility, $use_variable = false){
1717
-
1718
-			if(!$use_variable){
1719
-				$color_code = sanitize_hex_color($color_code);
1720
-				if(!$color_code){return '';}
1721
-			}
1722
-
1723
-			/**
1724
-			 * c = color, b = background color, o = border-color, f = fill
1725
-			 */
1726
-			$selectors = array(
1727
-				'a' => array('c'),
1728
-				'.btn-primary' => array('b','o'),
1729
-				'.btn-primary.disabled' => array('b','o'),
1730
-				'.btn-primary:disabled' => array('b','o'),
1731
-				'.btn-outline-primary' => array('c','o'),
1732
-				'.btn-outline-primary:hover' => array('b','o'),
1733
-				'.btn-outline-primary:not(:disabled):not(.disabled).active' => array('b','o'),
1734
-				'.btn-outline-primary:not(:disabled):not(.disabled):active' => array('b','o'),
1735
-				'.show>.btn-outline-primary.dropdown-toggle' => array('b','o'),
1736
-				'.btn-link' => array('c'),
1737
-				'.dropdown-item.active' => array('b'),
1738
-				'.custom-control-input:checked~.custom-control-label::before' => array('b','o'),
1739
-				'.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before' => array('b','o'),
1700
+                $output .= $prefix ." .alert-{$type} {--bs-alert-bg: rgba(var(--bs-{$type}-rgb), .1 ) !important;--bs-alert-border-color: rgba(var(--bs-{$type}-rgb), .25 ) !important;--bs-alert-color: rgba(var(--bs-{$type}-rgb), 1 ) !important;} ";
1701
+            }
1702
+
1703
+            return $output;
1704
+        }
1705
+
1706
+        /**
1707
+         *
1708
+         * @deprecated 0.1.76 Use css_overwrite()
1709
+         *
1710
+         * @param $color_code
1711
+         * @param $compatibility
1712
+         * @param $use_variable
1713
+         *
1714
+         * @return string
1715
+         */
1716
+        public static function css_primary($color_code,$compatibility, $use_variable = false){
1717
+
1718
+            if(!$use_variable){
1719
+                $color_code = sanitize_hex_color($color_code);
1720
+                if(!$color_code){return '';}
1721
+            }
1722
+
1723
+            /**
1724
+             * c = color, b = background color, o = border-color, f = fill
1725
+             */
1726
+            $selectors = array(
1727
+                'a' => array('c'),
1728
+                '.btn-primary' => array('b','o'),
1729
+                '.btn-primary.disabled' => array('b','o'),
1730
+                '.btn-primary:disabled' => array('b','o'),
1731
+                '.btn-outline-primary' => array('c','o'),
1732
+                '.btn-outline-primary:hover' => array('b','o'),
1733
+                '.btn-outline-primary:not(:disabled):not(.disabled).active' => array('b','o'),
1734
+                '.btn-outline-primary:not(:disabled):not(.disabled):active' => array('b','o'),
1735
+                '.show>.btn-outline-primary.dropdown-toggle' => array('b','o'),
1736
+                '.btn-link' => array('c'),
1737
+                '.dropdown-item.active' => array('b'),
1738
+                '.custom-control-input:checked~.custom-control-label::before' => array('b','o'),
1739
+                '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before' => array('b','o'),
1740 1740
 //				'.custom-range::-webkit-slider-thumb' => array('b'), // these break the inline rules...
1741 1741
 //				'.custom-range::-moz-range-thumb' => array('b'),
1742 1742
 //				'.custom-range::-ms-thumb' => array('b'),
1743
-				'.nav-pills .nav-link.active' => array('b'),
1744
-				'.nav-pills .show>.nav-link' => array('b'),
1745
-				'.page-link' => array('c'),
1746
-				'.page-item.active .page-link' => array('b','o'),
1747
-				'.badge-primary' => array('b'),
1748
-				'.alert-primary' => array('b','o'),
1749
-				'.progress-bar' => array('b'),
1750
-				'.list-group-item.active' => array('b','o'),
1751
-				'.bg-primary' => array('b','f'),
1752
-				'.btn-link.btn-primary' => array('c'),
1753
-				'.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array('b'),
1754
-			);
1755
-
1756
-			$important_selectors = array(
1757
-				'.bg-primary' => array('b','f'),
1758
-				'.border-primary' => array('o'),
1759
-				'.text-primary' => array('c'),
1760
-			);
1761
-
1762
-			$color = array();
1763
-			$color_i = array();
1764
-			$background = array();
1765
-			$background_i = array();
1766
-			$border = array();
1767
-			$border_i = array();
1768
-			$fill = array();
1769
-			$fill_i = array();
1770
-
1771
-			$output = '';
1772
-
1773
-			// build rules into each type
1774
-			foreach($selectors as $selector => $types){
1775
-				$selector = $compatibility ? ".bsui ".$selector : $selector;
1776
-				$types = array_combine($types,$types);
1777
-				if(isset($types['c'])){$color[] = $selector;}
1778
-				if(isset($types['b'])){$background[] = $selector;}
1779
-				if(isset($types['o'])){$border[] = $selector;}
1780
-				if(isset($types['f'])){$fill[] = $selector;}
1781
-			}
1782
-
1783
-			// build rules into each type
1784
-			foreach($important_selectors as $selector => $types){
1785
-				$selector = $compatibility ? ".bsui ".$selector : $selector;
1786
-				$types = array_combine($types,$types);
1787
-				if(isset($types['c'])){$color_i[] = $selector;}
1788
-				if(isset($types['b'])){$background_i[] = $selector;}
1789
-				if(isset($types['o'])){$border_i[] = $selector;}
1790
-				if(isset($types['f'])){$fill_i[] = $selector;}
1791
-			}
1792
-
1793
-			// add any color rules
1794
-			if(!empty($color)){
1795
-				$output .= implode(",",$color) . "{color: $color_code;} ";
1796
-			}
1797
-			if(!empty($color_i)){
1798
-				$output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1799
-			}
1800
-
1801
-			// add any background color rules
1802
-			if(!empty($background)){
1803
-				$output .= implode(",",$background) . "{background-color: $color_code;} ";
1804
-			}
1805
-			if(!empty($background_i)){
1806
-				$output .= implode(",",$background_i) . "{background-color: $color_code !important;} ";
1807
-			}
1808
-
1809
-			// add any border color rules
1810
-			if(!empty($border)){
1811
-				$output .= implode(",",$border) . "{border-color: $color_code;} ";
1812
-			}
1813
-			if(!empty($border_i)){
1814
-				$output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1815
-			}
1816
-
1817
-			// add any fill color rules
1818
-			if(!empty($fill)){
1819
-				$output .= implode(",",$fill) . "{fill: $color_code;} ";
1820
-			}
1821
-			if(!empty($fill_i)){
1822
-				$output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1823
-			}
1824
-
1825
-
1826
-			$prefix = $compatibility ? ".bsui " : "";
1827
-
1828
-			// darken
1829
-			$darker_075 = self::css_hex_lighten_darken($color_code,"-0.075");
1830
-			$darker_10 = self::css_hex_lighten_darken($color_code,"-0.10");
1831
-			$darker_125 = self::css_hex_lighten_darken($color_code,"-0.125");
1832
-
1833
-			// lighten
1834
-			$lighten_25 = self::css_hex_lighten_darken($color_code,"0.25");
1835
-
1836
-			// opacity see https://css-tricks.com/8-digit-hex-codes/
1837
-			$op_25 = $color_code."40"; // 25% opacity
1838
-
1839
-
1840
-			// button states
1841
-			$output .= $prefix ." .btn-primary:hover, $prefix .btn-primary:focus, $prefix .btn-primary.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1842
-			$output .= $prefix ." .btn-outline-primary:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-primary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-primary.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1843
-			$output .= $prefix ." .btn-primary:not(:disabled):not(.disabled):active, $prefix .btn-primary:not(:disabled):not(.disabled).active, .show>$prefix .btn-primary.dropdown-toggle{background-color: ".$darker_10.";    border-color: ".$darker_125.";} ";
1844
-			$output .= $prefix ." .btn-primary:not(:disabled):not(.disabled):active:focus, $prefix .btn-primary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-primary.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} ";
1845
-
1846
-
1847
-			// dropdown's
1848
-			$output .= $prefix ." .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
1849
-
1850
-
1851
-			// input states
1852
-			$output .= $prefix ." .form-control:focus{border-color: ".$lighten_25.";box-shadow: 0 0 0 0.2rem $op_25;} ";
1853
-
1854
-			// page link
1855
-			$output .= $prefix ." .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1856
-
1857
-			return $output;
1858
-		}
1859
-
1860
-		/**
1861
-		 *
1862
-		 * @deprecated 0.1.76 Use css_overwrite()
1863
-		 *
1864
-		 * @param $color_code
1865
-		 * @param $compatibility
1866
-		 *
1867
-		 * @return string
1868
-		 */
1869
-		public static function css_secondary($color_code,$compatibility){;
1870
-			$color_code = sanitize_hex_color($color_code);
1871
-			if(!$color_code){return '';}
1872
-			/**
1873
-			 * c = color, b = background color, o = border-color, f = fill
1874
-			 */
1875
-			$selectors = array(
1876
-				'.btn-secondary' => array('b','o'),
1877
-				'.btn-secondary.disabled' => array('b','o'),
1878
-				'.btn-secondary:disabled' => array('b','o'),
1879
-				'.btn-outline-secondary' => array('c','o'),
1880
-				'.btn-outline-secondary:hover' => array('b','o'),
1881
-				'.btn-outline-secondary.disabled' => array('c'),
1882
-				'.btn-outline-secondary:disabled' => array('c'),
1883
-				'.btn-outline-secondary:not(:disabled):not(.disabled):active' => array('b','o'),
1884
-				'.btn-outline-secondary:not(:disabled):not(.disabled).active' => array('b','o'),
1885
-				'.btn-outline-secondary.dropdown-toggle' => array('b','o'),
1886
-				'.badge-secondary' => array('b'),
1887
-				'.alert-secondary' => array('b','o'),
1888
-				'.btn-link.btn-secondary' => array('c'),
1889
-			);
1890
-
1891
-			$important_selectors = array(
1892
-				'.bg-secondary' => array('b','f'),
1893
-				'.border-secondary' => array('o'),
1894
-				'.text-secondary' => array('c'),
1895
-			);
1896
-
1897
-			$color = array();
1898
-			$color_i = array();
1899
-			$background = array();
1900
-			$background_i = array();
1901
-			$border = array();
1902
-			$border_i = array();
1903
-			$fill = array();
1904
-			$fill_i = array();
1905
-
1906
-			$output = '';
1907
-
1908
-			// build rules into each type
1909
-			foreach($selectors as $selector => $types){
1910
-				$selector = $compatibility ? ".bsui ".$selector : $selector;
1911
-				$types = array_combine($types,$types);
1912
-				if(isset($types['c'])){$color[] = $selector;}
1913
-				if(isset($types['b'])){$background[] = $selector;}
1914
-				if(isset($types['o'])){$border[] = $selector;}
1915
-				if(isset($types['f'])){$fill[] = $selector;}
1916
-			}
1917
-
1918
-			// build rules into each type
1919
-			foreach($important_selectors as $selector => $types){
1920
-				$selector = $compatibility ? ".bsui ".$selector : $selector;
1921
-				$types = array_combine($types,$types);
1922
-				if(isset($types['c'])){$color_i[] = $selector;}
1923
-				if(isset($types['b'])){$background_i[] = $selector;}
1924
-				if(isset($types['o'])){$border_i[] = $selector;}
1925
-				if(isset($types['f'])){$fill_i[] = $selector;}
1926
-			}
1927
-
1928
-			// add any color rules
1929
-			if(!empty($color)){
1930
-				$output .= implode(",",$color) . "{color: $color_code;} ";
1931
-			}
1932
-			if(!empty($color_i)){
1933
-				$output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1934
-			}
1935
-
1936
-			// add any background color rules
1937
-			if(!empty($background)){
1938
-				$output .= implode(",",$background) . "{background-color: $color_code;} ";
1939
-			}
1940
-			if(!empty($background_i)){
1941
-				$output .= implode(",",$background_i) . "{background-color: $color_code !important;} ";
1942
-			}
1943
-
1944
-			// add any border color rules
1945
-			if(!empty($border)){
1946
-				$output .= implode(",",$border) . "{border-color: $color_code;} ";
1947
-			}
1948
-			if(!empty($border_i)){
1949
-				$output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1950
-			}
1951
-
1952
-			// add any fill color rules
1953
-			if(!empty($fill)){
1954
-				$output .= implode(",",$fill) . "{fill: $color_code;} ";
1955
-			}
1956
-			if(!empty($fill_i)){
1957
-				$output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1958
-			}
1959
-
1960
-
1961
-			$prefix = $compatibility ? ".bsui " : "";
1962
-
1963
-			// darken
1964
-			$darker_075 = self::css_hex_lighten_darken($color_code,"-0.075");
1965
-			$darker_10 = self::css_hex_lighten_darken($color_code,"-0.10");
1966
-			$darker_125 = self::css_hex_lighten_darken($color_code,"-0.125");
1967
-
1968
-			// lighten
1969
-			$lighten_25 = self::css_hex_lighten_darken($color_code,"0.25");
1970
-
1971
-			// opacity see https://css-tricks.com/8-digit-hex-codes/
1972
-			$op_25 = $color_code."40"; // 25% opacity
1973
-
1974
-
1975
-			// button states
1976
-			$output .= $prefix ." .btn-secondary:hover{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1977
-			$output .= $prefix ." .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-secondary.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1978
-			$output .= $prefix ." .btn-secondary:not(:disabled):not(.disabled):active, $prefix .btn-secondary:not(:disabled):not(.disabled).active, .show>$prefix .btn-secondary.dropdown-toggle{background-color: ".$darker_10.";    border-color: ".$darker_125.";} ";
1979
-			$output .= $prefix ." .btn-secondary:not(:disabled):not(.disabled):active:focus, $prefix .btn-secondary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-secondary.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} ";
1980
-
1981
-
1982
-			return $output;
1983
-		}
1984
-
1985
-		/**
1986
-		 * Increases or decreases the brightness of a color by a percentage of the current brightness.
1987
-		 *
1988
-		 * @param   string  $hexCode        Supported formats: `#FFF`, `#FFFFFF`, `FFF`, `FFFFFF`
1989
-		 * @param   float   $adjustPercent  A number between -1 and 1. E.g. 0.3 = 30% lighter; -0.4 = 40% darker.
1990
-		 *
1991
-		 * @return  string
1992
-		 */
1993
-		public static function css_hex_lighten_darken($hexCode, $adjustPercent) {
1994
-			$hexCode = ltrim($hexCode, '#');
1995
-
1996
-			if (strlen($hexCode) == 3) {
1997
-				$hexCode = $hexCode[0] . $hexCode[0] . $hexCode[1] . $hexCode[1] . $hexCode[2] . $hexCode[2];
1998
-			}
1999
-
2000
-			$hexCode = array_map('hexdec', str_split($hexCode, 2));
2001
-
2002
-			foreach ($hexCode as & $color) {
2003
-				$adjustableLimit = $adjustPercent < 0 ? $color : 255 - $color;
2004
-				$adjustAmount = ceil($adjustableLimit * $adjustPercent);
2005
-
2006
-				$color = str_pad(dechex($color + $adjustAmount), 2, '0', STR_PAD_LEFT);
2007
-			}
2008
-
2009
-			return '#' . implode($hexCode);
2010
-		}
2011
-
2012
-		/**
2013
-		 * Check if we should display examples.
2014
-		 */
2015
-		public function maybe_show_examples(){
2016
-			if(current_user_can('manage_options') && isset($_REQUEST['preview-aui'])){
2017
-				echo "<head>";
2018
-				wp_head();
2019
-				echo "</head>";
2020
-				echo "<body>";
2021
-				echo $this->get_examples();
2022
-				echo "</body>";
2023
-				exit;
2024
-			}
2025
-		}
2026
-
2027
-		/**
2028
-		 * Get developer examples.
2029
-		 *
2030
-		 * @return string
2031
-		 */
2032
-		public function get_examples(){
2033
-			$output = '';
2034
-
2035
-
2036
-			// open form
2037
-			$output .= "<form class='p-5 m-5 border rounded'>";
2038
-
2039
-			// input example
2040
-			$output .= aui()->input(array(
2041
-				'type'  =>  'text',
2042
-				'id'    =>  'text-example',
2043
-				'name'    =>  'text-example',
2044
-				'placeholder'   => 'text placeholder',
2045
-				'title'   => 'Text input example',
2046
-				'value' =>  '',
2047
-				'required'  => false,
2048
-				'help_text' => 'help text',
2049
-				'label' => 'Text input example label'
2050
-			));
2051
-
2052
-			// input example
2053
-			$output .= aui()->input(array(
2054
-				'type'  =>  'url',
2055
-				'id'    =>  'text-example2',
2056
-				'name'    =>  'text-example',
2057
-				'placeholder'   => 'url placeholder',
2058
-				'title'   => 'Text input example',
2059
-				'value' =>  '',
2060
-				'required'  => false,
2061
-				'help_text' => 'help text',
2062
-				'label' => 'Text input example label'
2063
-			));
2064
-
2065
-			// checkbox example
2066
-			$output .= aui()->input(array(
2067
-				'type'  =>  'checkbox',
2068
-				'id'    =>  'checkbox-example',
2069
-				'name'    =>  'checkbox-example',
2070
-				'placeholder'   => 'checkbox-example',
2071
-				'title'   => 'Checkbox example',
2072
-				'value' =>  '1',
2073
-				'checked'   => true,
2074
-				'required'  => false,
2075
-				'help_text' => 'help text',
2076
-				'label' => 'Checkbox checked'
2077
-			));
2078
-
2079
-			// checkbox example
2080
-			$output .= aui()->input(array(
2081
-				'type'  =>  'checkbox',
2082
-				'id'    =>  'checkbox-example2',
2083
-				'name'    =>  'checkbox-example2',
2084
-				'placeholder'   => 'checkbox-example',
2085
-				'title'   => 'Checkbox example',
2086
-				'value' =>  '1',
2087
-				'checked'   => false,
2088
-				'required'  => false,
2089
-				'help_text' => 'help text',
2090
-				'label' => 'Checkbox un-checked'
2091
-			));
2092
-
2093
-			// switch example
2094
-			$output .= aui()->input(array(
2095
-				'type'  =>  'checkbox',
2096
-				'id'    =>  'switch-example',
2097
-				'name'    =>  'switch-example',
2098
-				'placeholder'   => 'checkbox-example',
2099
-				'title'   => 'Switch example',
2100
-				'value' =>  '1',
2101
-				'checked'   => true,
2102
-				'switch'    => true,
2103
-				'required'  => false,
2104
-				'help_text' => 'help text',
2105
-				'label' => 'Switch on'
2106
-			));
2107
-
2108
-			// switch example
2109
-			$output .= aui()->input(array(
2110
-				'type'  =>  'checkbox',
2111
-				'id'    =>  'switch-example2',
2112
-				'name'    =>  'switch-example2',
2113
-				'placeholder'   => 'checkbox-example',
2114
-				'title'   => 'Switch example',
2115
-				'value' =>  '1',
2116
-				'checked'   => false,
2117
-				'switch'    => true,
2118
-				'required'  => false,
2119
-				'help_text' => 'help text',
2120
-				'label' => 'Switch off'
2121
-			));
2122
-
2123
-			// close form
2124
-			$output .= "</form>";
2125
-
2126
-			return $output;
2127
-		}
2128
-
2129
-		/**
2130
-		 * Calendar params.
2131
-		 *
2132
-		 * @since 0.1.44
2133
-		 *
2134
-		 * @return array Calendar params.
2135
-		 */
2136
-		public static function calendar_params() {
2137
-			$params = array(
2138
-				'month_long_1' => __( 'January', 'aui' ),
2139
-				'month_long_2' => __( 'February', 'aui' ),
2140
-				'month_long_3' => __( 'March', 'aui' ),
2141
-				'month_long_4' => __( 'April', 'aui' ),
2142
-				'month_long_5' => __( 'May', 'aui' ),
2143
-				'month_long_6' => __( 'June', 'aui' ),
2144
-				'month_long_7' => __( 'July', 'aui' ),
2145
-				'month_long_8' => __( 'August', 'aui' ),
2146
-				'month_long_9' => __( 'September', 'aui' ),
2147
-				'month_long_10' => __( 'October', 'aui' ),
2148
-				'month_long_11' => __( 'November', 'aui' ),
2149
-				'month_long_12' => __( 'December', 'aui' ),
2150
-				'month_s_1' => _x( 'Jan', 'January abbreviation', 'aui' ),
2151
-				'month_s_2' => _x( 'Feb', 'February abbreviation', 'aui' ),
2152
-				'month_s_3' => _x( 'Mar', 'March abbreviation', 'aui' ),
2153
-				'month_s_4' => _x( 'Apr', 'April abbreviation', 'aui' ),
2154
-				'month_s_5' => _x( 'May', 'May abbreviation', 'aui' ),
2155
-				'month_s_6' => _x( 'Jun', 'June abbreviation', 'aui' ),
2156
-				'month_s_7' => _x( 'Jul', 'July abbreviation', 'aui' ),
2157
-				'month_s_8' => _x( 'Aug', 'August abbreviation', 'aui' ),
2158
-				'month_s_9' => _x( 'Sep', 'September abbreviation', 'aui' ),
2159
-				'month_s_10' => _x( 'Oct', 'October abbreviation', 'aui' ),
2160
-				'month_s_11' => _x( 'Nov', 'November abbreviation', 'aui' ),
2161
-				'month_s_12' => _x( 'Dec', 'December abbreviation', 'aui' ),
2162
-				'day_s1_1' => _x( 'S', 'Sunday initial', 'aui' ),
2163
-				'day_s1_2' => _x( 'M', 'Monday initial', 'aui' ),
2164
-				'day_s1_3' => _x( 'T', 'Tuesday initial', 'aui' ),
2165
-				'day_s1_4' => _x( 'W', 'Wednesday initial', 'aui' ),
2166
-				'day_s1_5' => _x( 'T', 'Friday initial', 'aui' ),
2167
-				'day_s1_6' => _x( 'F', 'Thursday initial', 'aui' ),
2168
-				'day_s1_7' => _x( 'S', 'Saturday initial', 'aui' ),
2169
-				'day_s2_1' => __( 'Su', 'aui' ),
2170
-				'day_s2_2' => __( 'Mo', 'aui' ),
2171
-				'day_s2_3' => __( 'Tu', 'aui' ),
2172
-				'day_s2_4' => __( 'We', 'aui' ),
2173
-				'day_s2_5' => __( 'Th', 'aui' ),
2174
-				'day_s2_6' => __( 'Fr', 'aui' ),
2175
-				'day_s2_7' => __( 'Sa', 'aui' ),
2176
-				'day_s3_1' => __( 'Sun', 'aui' ),
2177
-				'day_s3_2' => __( 'Mon', 'aui' ),
2178
-				'day_s3_3' => __( 'Tue', 'aui' ),
2179
-				'day_s3_4' => __( 'Wed', 'aui' ),
2180
-				'day_s3_5' => __( 'Thu', 'aui' ),
2181
-				'day_s3_6' => __( 'Fri', 'aui' ),
2182
-				'day_s3_7' => __( 'Sat', 'aui' ),
2183
-				'day_s5_1' => __( 'Sunday', 'aui' ),
2184
-				'day_s5_2' => __( 'Monday', 'aui' ),
2185
-				'day_s5_3' => __( 'Tuesday', 'aui' ),
2186
-				'day_s5_4' => __( 'Wednesday', 'aui' ),
2187
-				'day_s5_5' => __( 'Thursday', 'aui' ),
2188
-				'day_s5_6' => __( 'Friday', 'aui' ),
2189
-				'day_s5_7' => __( 'Saturday', 'aui' ),
2190
-				'am_lower' => __( 'am', 'aui' ),
2191
-				'pm_lower' => __( 'pm', 'aui' ),
2192
-				'am_upper' => __( 'AM', 'aui' ),
2193
-				'pm_upper' => __( 'PM', 'aui' ),
2194
-				'firstDayOfWeek' => (int) get_option( 'start_of_week' ),
2195
-				'time_24hr' => false,
2196
-				'year' => __( 'Year', 'aui' ),
2197
-				'hour' => __( 'Hour', 'aui' ),
2198
-				'minute' => __( 'Minute', 'aui' ),
2199
-				'weekAbbreviation' => __( 'Wk', 'aui' ),
2200
-				'rangeSeparator' => __( ' to ', 'aui' ),
2201
-				'scrollTitle' => __( 'Scroll to increment', 'aui' ),
2202
-				'toggleTitle' => __( 'Click to toggle', 'aui' )
2203
-			);
2204
-
2205
-			return apply_filters( 'ayecode_ui_calendar_params', $params );
2206
-		}
2207
-
2208
-		/**
2209
-		 * Flatpickr calendar localize.
2210
-		 *
2211
-		 * @since 0.1.44
2212
-		 *
2213
-		 * @return string Calendar locale.
2214
-		 */
2215
-		public static function flatpickr_locale() {
2216
-			$params = self::calendar_params();
2217
-
2218
-			if ( is_string( $params ) ) {
2219
-				$params = html_entity_decode( $params, ENT_QUOTES, 'UTF-8' );
2220
-			} else {
2221
-				foreach ( (array) $params as $key => $value ) {
2222
-					if ( ! is_scalar( $value ) ) {
2223
-						continue;
2224
-					}
2225
-
2226
-					$params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2227
-				}
2228
-			}
1743
+                '.nav-pills .nav-link.active' => array('b'),
1744
+                '.nav-pills .show>.nav-link' => array('b'),
1745
+                '.page-link' => array('c'),
1746
+                '.page-item.active .page-link' => array('b','o'),
1747
+                '.badge-primary' => array('b'),
1748
+                '.alert-primary' => array('b','o'),
1749
+                '.progress-bar' => array('b'),
1750
+                '.list-group-item.active' => array('b','o'),
1751
+                '.bg-primary' => array('b','f'),
1752
+                '.btn-link.btn-primary' => array('c'),
1753
+                '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array('b'),
1754
+            );
1755
+
1756
+            $important_selectors = array(
1757
+                '.bg-primary' => array('b','f'),
1758
+                '.border-primary' => array('o'),
1759
+                '.text-primary' => array('c'),
1760
+            );
1761
+
1762
+            $color = array();
1763
+            $color_i = array();
1764
+            $background = array();
1765
+            $background_i = array();
1766
+            $border = array();
1767
+            $border_i = array();
1768
+            $fill = array();
1769
+            $fill_i = array();
1770
+
1771
+            $output = '';
1772
+
1773
+            // build rules into each type
1774
+            foreach($selectors as $selector => $types){
1775
+                $selector = $compatibility ? ".bsui ".$selector : $selector;
1776
+                $types = array_combine($types,$types);
1777
+                if(isset($types['c'])){$color[] = $selector;}
1778
+                if(isset($types['b'])){$background[] = $selector;}
1779
+                if(isset($types['o'])){$border[] = $selector;}
1780
+                if(isset($types['f'])){$fill[] = $selector;}
1781
+            }
1782
+
1783
+            // build rules into each type
1784
+            foreach($important_selectors as $selector => $types){
1785
+                $selector = $compatibility ? ".bsui ".$selector : $selector;
1786
+                $types = array_combine($types,$types);
1787
+                if(isset($types['c'])){$color_i[] = $selector;}
1788
+                if(isset($types['b'])){$background_i[] = $selector;}
1789
+                if(isset($types['o'])){$border_i[] = $selector;}
1790
+                if(isset($types['f'])){$fill_i[] = $selector;}
1791
+            }
1792
+
1793
+            // add any color rules
1794
+            if(!empty($color)){
1795
+                $output .= implode(",",$color) . "{color: $color_code;} ";
1796
+            }
1797
+            if(!empty($color_i)){
1798
+                $output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1799
+            }
1800
+
1801
+            // add any background color rules
1802
+            if(!empty($background)){
1803
+                $output .= implode(",",$background) . "{background-color: $color_code;} ";
1804
+            }
1805
+            if(!empty($background_i)){
1806
+                $output .= implode(",",$background_i) . "{background-color: $color_code !important;} ";
1807
+            }
1808
+
1809
+            // add any border color rules
1810
+            if(!empty($border)){
1811
+                $output .= implode(",",$border) . "{border-color: $color_code;} ";
1812
+            }
1813
+            if(!empty($border_i)){
1814
+                $output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1815
+            }
1816
+
1817
+            // add any fill color rules
1818
+            if(!empty($fill)){
1819
+                $output .= implode(",",$fill) . "{fill: $color_code;} ";
1820
+            }
1821
+            if(!empty($fill_i)){
1822
+                $output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1823
+            }
1824
+
1825
+
1826
+            $prefix = $compatibility ? ".bsui " : "";
1827
+
1828
+            // darken
1829
+            $darker_075 = self::css_hex_lighten_darken($color_code,"-0.075");
1830
+            $darker_10 = self::css_hex_lighten_darken($color_code,"-0.10");
1831
+            $darker_125 = self::css_hex_lighten_darken($color_code,"-0.125");
1832
+
1833
+            // lighten
1834
+            $lighten_25 = self::css_hex_lighten_darken($color_code,"0.25");
1835
+
1836
+            // opacity see https://css-tricks.com/8-digit-hex-codes/
1837
+            $op_25 = $color_code."40"; // 25% opacity
1838
+
2229 1839
 
2230
-			$day_s3 = array();
2231
-			$day_s5 = array();
1840
+            // button states
1841
+            $output .= $prefix ." .btn-primary:hover, $prefix .btn-primary:focus, $prefix .btn-primary.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1842
+            $output .= $prefix ." .btn-outline-primary:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-primary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-primary.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1843
+            $output .= $prefix ." .btn-primary:not(:disabled):not(.disabled):active, $prefix .btn-primary:not(:disabled):not(.disabled).active, .show>$prefix .btn-primary.dropdown-toggle{background-color: ".$darker_10.";    border-color: ".$darker_125.";} ";
1844
+            $output .= $prefix ." .btn-primary:not(:disabled):not(.disabled):active:focus, $prefix .btn-primary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-primary.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} ";
2232 1845
 
2233
-			for ( $i = 1; $i <= 7; $i ++ ) {
2234
-				$day_s3[] = addslashes( $params[ 'day_s3_' . $i ] );
2235
-				$day_s5[] = addslashes( $params[ 'day_s3_' . $i ] );
2236
-			}
2237 1846
 
2238
-			$month_s = array();
2239
-			$month_long = array();
1847
+            // dropdown's
1848
+            $output .= $prefix ." .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
2240 1849
 
2241
-			for ( $i = 1; $i <= 12; $i ++ ) {
2242
-				$month_s[] = addslashes( $params[ 'month_s_' . $i ] );
2243
-				$month_long[] = addslashes( $params[ 'month_long_' . $i ] );
2244
-			}
2245 1850
 
2246
-			ob_start();
2247
-		if ( 0 ) { ?><script><?php } ?>
1851
+            // input states
1852
+            $output .= $prefix ." .form-control:focus{border-color: ".$lighten_25.";box-shadow: 0 0 0 0.2rem $op_25;} ";
1853
+
1854
+            // page link
1855
+            $output .= $prefix ." .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1856
+
1857
+            return $output;
1858
+        }
1859
+
1860
+        /**
1861
+         *
1862
+         * @deprecated 0.1.76 Use css_overwrite()
1863
+         *
1864
+         * @param $color_code
1865
+         * @param $compatibility
1866
+         *
1867
+         * @return string
1868
+         */
1869
+        public static function css_secondary($color_code,$compatibility){;
1870
+            $color_code = sanitize_hex_color($color_code);
1871
+            if(!$color_code){return '';}
1872
+            /**
1873
+             * c = color, b = background color, o = border-color, f = fill
1874
+             */
1875
+            $selectors = array(
1876
+                '.btn-secondary' => array('b','o'),
1877
+                '.btn-secondary.disabled' => array('b','o'),
1878
+                '.btn-secondary:disabled' => array('b','o'),
1879
+                '.btn-outline-secondary' => array('c','o'),
1880
+                '.btn-outline-secondary:hover' => array('b','o'),
1881
+                '.btn-outline-secondary.disabled' => array('c'),
1882
+                '.btn-outline-secondary:disabled' => array('c'),
1883
+                '.btn-outline-secondary:not(:disabled):not(.disabled):active' => array('b','o'),
1884
+                '.btn-outline-secondary:not(:disabled):not(.disabled).active' => array('b','o'),
1885
+                '.btn-outline-secondary.dropdown-toggle' => array('b','o'),
1886
+                '.badge-secondary' => array('b'),
1887
+                '.alert-secondary' => array('b','o'),
1888
+                '.btn-link.btn-secondary' => array('c'),
1889
+            );
1890
+
1891
+            $important_selectors = array(
1892
+                '.bg-secondary' => array('b','f'),
1893
+                '.border-secondary' => array('o'),
1894
+                '.text-secondary' => array('c'),
1895
+            );
1896
+
1897
+            $color = array();
1898
+            $color_i = array();
1899
+            $background = array();
1900
+            $background_i = array();
1901
+            $border = array();
1902
+            $border_i = array();
1903
+            $fill = array();
1904
+            $fill_i = array();
1905
+
1906
+            $output = '';
1907
+
1908
+            // build rules into each type
1909
+            foreach($selectors as $selector => $types){
1910
+                $selector = $compatibility ? ".bsui ".$selector : $selector;
1911
+                $types = array_combine($types,$types);
1912
+                if(isset($types['c'])){$color[] = $selector;}
1913
+                if(isset($types['b'])){$background[] = $selector;}
1914
+                if(isset($types['o'])){$border[] = $selector;}
1915
+                if(isset($types['f'])){$fill[] = $selector;}
1916
+            }
1917
+
1918
+            // build rules into each type
1919
+            foreach($important_selectors as $selector => $types){
1920
+                $selector = $compatibility ? ".bsui ".$selector : $selector;
1921
+                $types = array_combine($types,$types);
1922
+                if(isset($types['c'])){$color_i[] = $selector;}
1923
+                if(isset($types['b'])){$background_i[] = $selector;}
1924
+                if(isset($types['o'])){$border_i[] = $selector;}
1925
+                if(isset($types['f'])){$fill_i[] = $selector;}
1926
+            }
1927
+
1928
+            // add any color rules
1929
+            if(!empty($color)){
1930
+                $output .= implode(",",$color) . "{color: $color_code;} ";
1931
+            }
1932
+            if(!empty($color_i)){
1933
+                $output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1934
+            }
1935
+
1936
+            // add any background color rules
1937
+            if(!empty($background)){
1938
+                $output .= implode(",",$background) . "{background-color: $color_code;} ";
1939
+            }
1940
+            if(!empty($background_i)){
1941
+                $output .= implode(",",$background_i) . "{background-color: $color_code !important;} ";
1942
+            }
1943
+
1944
+            // add any border color rules
1945
+            if(!empty($border)){
1946
+                $output .= implode(",",$border) . "{border-color: $color_code;} ";
1947
+            }
1948
+            if(!empty($border_i)){
1949
+                $output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1950
+            }
1951
+
1952
+            // add any fill color rules
1953
+            if(!empty($fill)){
1954
+                $output .= implode(",",$fill) . "{fill: $color_code;} ";
1955
+            }
1956
+            if(!empty($fill_i)){
1957
+                $output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1958
+            }
1959
+
1960
+
1961
+            $prefix = $compatibility ? ".bsui " : "";
1962
+
1963
+            // darken
1964
+            $darker_075 = self::css_hex_lighten_darken($color_code,"-0.075");
1965
+            $darker_10 = self::css_hex_lighten_darken($color_code,"-0.10");
1966
+            $darker_125 = self::css_hex_lighten_darken($color_code,"-0.125");
1967
+
1968
+            // lighten
1969
+            $lighten_25 = self::css_hex_lighten_darken($color_code,"0.25");
1970
+
1971
+            // opacity see https://css-tricks.com/8-digit-hex-codes/
1972
+            $op_25 = $color_code."40"; // 25% opacity
1973
+
1974
+
1975
+            // button states
1976
+            $output .= $prefix ." .btn-secondary:hover{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1977
+            $output .= $prefix ." .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-secondary.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1978
+            $output .= $prefix ." .btn-secondary:not(:disabled):not(.disabled):active, $prefix .btn-secondary:not(:disabled):not(.disabled).active, .show>$prefix .btn-secondary.dropdown-toggle{background-color: ".$darker_10.";    border-color: ".$darker_125.";} ";
1979
+            $output .= $prefix ." .btn-secondary:not(:disabled):not(.disabled):active:focus, $prefix .btn-secondary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-secondary.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} ";
1980
+
1981
+
1982
+            return $output;
1983
+        }
1984
+
1985
+        /**
1986
+         * Increases or decreases the brightness of a color by a percentage of the current brightness.
1987
+         *
1988
+         * @param   string  $hexCode        Supported formats: `#FFF`, `#FFFFFF`, `FFF`, `FFFFFF`
1989
+         * @param   float   $adjustPercent  A number between -1 and 1. E.g. 0.3 = 30% lighter; -0.4 = 40% darker.
1990
+         *
1991
+         * @return  string
1992
+         */
1993
+        public static function css_hex_lighten_darken($hexCode, $adjustPercent) {
1994
+            $hexCode = ltrim($hexCode, '#');
1995
+
1996
+            if (strlen($hexCode) == 3) {
1997
+                $hexCode = $hexCode[0] . $hexCode[0] . $hexCode[1] . $hexCode[1] . $hexCode[2] . $hexCode[2];
1998
+            }
1999
+
2000
+            $hexCode = array_map('hexdec', str_split($hexCode, 2));
2001
+
2002
+            foreach ($hexCode as & $color) {
2003
+                $adjustableLimit = $adjustPercent < 0 ? $color : 255 - $color;
2004
+                $adjustAmount = ceil($adjustableLimit * $adjustPercent);
2005
+
2006
+                $color = str_pad(dechex($color + $adjustAmount), 2, '0', STR_PAD_LEFT);
2007
+            }
2008
+
2009
+            return '#' . implode($hexCode);
2010
+        }
2011
+
2012
+        /**
2013
+         * Check if we should display examples.
2014
+         */
2015
+        public function maybe_show_examples(){
2016
+            if(current_user_can('manage_options') && isset($_REQUEST['preview-aui'])){
2017
+                echo "<head>";
2018
+                wp_head();
2019
+                echo "</head>";
2020
+                echo "<body>";
2021
+                echo $this->get_examples();
2022
+                echo "</body>";
2023
+                exit;
2024
+            }
2025
+        }
2026
+
2027
+        /**
2028
+         * Get developer examples.
2029
+         *
2030
+         * @return string
2031
+         */
2032
+        public function get_examples(){
2033
+            $output = '';
2034
+
2035
+
2036
+            // open form
2037
+            $output .= "<form class='p-5 m-5 border rounded'>";
2038
+
2039
+            // input example
2040
+            $output .= aui()->input(array(
2041
+                'type'  =>  'text',
2042
+                'id'    =>  'text-example',
2043
+                'name'    =>  'text-example',
2044
+                'placeholder'   => 'text placeholder',
2045
+                'title'   => 'Text input example',
2046
+                'value' =>  '',
2047
+                'required'  => false,
2048
+                'help_text' => 'help text',
2049
+                'label' => 'Text input example label'
2050
+            ));
2051
+
2052
+            // input example
2053
+            $output .= aui()->input(array(
2054
+                'type'  =>  'url',
2055
+                'id'    =>  'text-example2',
2056
+                'name'    =>  'text-example',
2057
+                'placeholder'   => 'url placeholder',
2058
+                'title'   => 'Text input example',
2059
+                'value' =>  '',
2060
+                'required'  => false,
2061
+                'help_text' => 'help text',
2062
+                'label' => 'Text input example label'
2063
+            ));
2064
+
2065
+            // checkbox example
2066
+            $output .= aui()->input(array(
2067
+                'type'  =>  'checkbox',
2068
+                'id'    =>  'checkbox-example',
2069
+                'name'    =>  'checkbox-example',
2070
+                'placeholder'   => 'checkbox-example',
2071
+                'title'   => 'Checkbox example',
2072
+                'value' =>  '1',
2073
+                'checked'   => true,
2074
+                'required'  => false,
2075
+                'help_text' => 'help text',
2076
+                'label' => 'Checkbox checked'
2077
+            ));
2078
+
2079
+            // checkbox example
2080
+            $output .= aui()->input(array(
2081
+                'type'  =>  'checkbox',
2082
+                'id'    =>  'checkbox-example2',
2083
+                'name'    =>  'checkbox-example2',
2084
+                'placeholder'   => 'checkbox-example',
2085
+                'title'   => 'Checkbox example',
2086
+                'value' =>  '1',
2087
+                'checked'   => false,
2088
+                'required'  => false,
2089
+                'help_text' => 'help text',
2090
+                'label' => 'Checkbox un-checked'
2091
+            ));
2092
+
2093
+            // switch example
2094
+            $output .= aui()->input(array(
2095
+                'type'  =>  'checkbox',
2096
+                'id'    =>  'switch-example',
2097
+                'name'    =>  'switch-example',
2098
+                'placeholder'   => 'checkbox-example',
2099
+                'title'   => 'Switch example',
2100
+                'value' =>  '1',
2101
+                'checked'   => true,
2102
+                'switch'    => true,
2103
+                'required'  => false,
2104
+                'help_text' => 'help text',
2105
+                'label' => 'Switch on'
2106
+            ));
2107
+
2108
+            // switch example
2109
+            $output .= aui()->input(array(
2110
+                'type'  =>  'checkbox',
2111
+                'id'    =>  'switch-example2',
2112
+                'name'    =>  'switch-example2',
2113
+                'placeholder'   => 'checkbox-example',
2114
+                'title'   => 'Switch example',
2115
+                'value' =>  '1',
2116
+                'checked'   => false,
2117
+                'switch'    => true,
2118
+                'required'  => false,
2119
+                'help_text' => 'help text',
2120
+                'label' => 'Switch off'
2121
+            ));
2122
+
2123
+            // close form
2124
+            $output .= "</form>";
2125
+
2126
+            return $output;
2127
+        }
2128
+
2129
+        /**
2130
+         * Calendar params.
2131
+         *
2132
+         * @since 0.1.44
2133
+         *
2134
+         * @return array Calendar params.
2135
+         */
2136
+        public static function calendar_params() {
2137
+            $params = array(
2138
+                'month_long_1' => __( 'January', 'aui' ),
2139
+                'month_long_2' => __( 'February', 'aui' ),
2140
+                'month_long_3' => __( 'March', 'aui' ),
2141
+                'month_long_4' => __( 'April', 'aui' ),
2142
+                'month_long_5' => __( 'May', 'aui' ),
2143
+                'month_long_6' => __( 'June', 'aui' ),
2144
+                'month_long_7' => __( 'July', 'aui' ),
2145
+                'month_long_8' => __( 'August', 'aui' ),
2146
+                'month_long_9' => __( 'September', 'aui' ),
2147
+                'month_long_10' => __( 'October', 'aui' ),
2148
+                'month_long_11' => __( 'November', 'aui' ),
2149
+                'month_long_12' => __( 'December', 'aui' ),
2150
+                'month_s_1' => _x( 'Jan', 'January abbreviation', 'aui' ),
2151
+                'month_s_2' => _x( 'Feb', 'February abbreviation', 'aui' ),
2152
+                'month_s_3' => _x( 'Mar', 'March abbreviation', 'aui' ),
2153
+                'month_s_4' => _x( 'Apr', 'April abbreviation', 'aui' ),
2154
+                'month_s_5' => _x( 'May', 'May abbreviation', 'aui' ),
2155
+                'month_s_6' => _x( 'Jun', 'June abbreviation', 'aui' ),
2156
+                'month_s_7' => _x( 'Jul', 'July abbreviation', 'aui' ),
2157
+                'month_s_8' => _x( 'Aug', 'August abbreviation', 'aui' ),
2158
+                'month_s_9' => _x( 'Sep', 'September abbreviation', 'aui' ),
2159
+                'month_s_10' => _x( 'Oct', 'October abbreviation', 'aui' ),
2160
+                'month_s_11' => _x( 'Nov', 'November abbreviation', 'aui' ),
2161
+                'month_s_12' => _x( 'Dec', 'December abbreviation', 'aui' ),
2162
+                'day_s1_1' => _x( 'S', 'Sunday initial', 'aui' ),
2163
+                'day_s1_2' => _x( 'M', 'Monday initial', 'aui' ),
2164
+                'day_s1_3' => _x( 'T', 'Tuesday initial', 'aui' ),
2165
+                'day_s1_4' => _x( 'W', 'Wednesday initial', 'aui' ),
2166
+                'day_s1_5' => _x( 'T', 'Friday initial', 'aui' ),
2167
+                'day_s1_6' => _x( 'F', 'Thursday initial', 'aui' ),
2168
+                'day_s1_7' => _x( 'S', 'Saturday initial', 'aui' ),
2169
+                'day_s2_1' => __( 'Su', 'aui' ),
2170
+                'day_s2_2' => __( 'Mo', 'aui' ),
2171
+                'day_s2_3' => __( 'Tu', 'aui' ),
2172
+                'day_s2_4' => __( 'We', 'aui' ),
2173
+                'day_s2_5' => __( 'Th', 'aui' ),
2174
+                'day_s2_6' => __( 'Fr', 'aui' ),
2175
+                'day_s2_7' => __( 'Sa', 'aui' ),
2176
+                'day_s3_1' => __( 'Sun', 'aui' ),
2177
+                'day_s3_2' => __( 'Mon', 'aui' ),
2178
+                'day_s3_3' => __( 'Tue', 'aui' ),
2179
+                'day_s3_4' => __( 'Wed', 'aui' ),
2180
+                'day_s3_5' => __( 'Thu', 'aui' ),
2181
+                'day_s3_6' => __( 'Fri', 'aui' ),
2182
+                'day_s3_7' => __( 'Sat', 'aui' ),
2183
+                'day_s5_1' => __( 'Sunday', 'aui' ),
2184
+                'day_s5_2' => __( 'Monday', 'aui' ),
2185
+                'day_s5_3' => __( 'Tuesday', 'aui' ),
2186
+                'day_s5_4' => __( 'Wednesday', 'aui' ),
2187
+                'day_s5_5' => __( 'Thursday', 'aui' ),
2188
+                'day_s5_6' => __( 'Friday', 'aui' ),
2189
+                'day_s5_7' => __( 'Saturday', 'aui' ),
2190
+                'am_lower' => __( 'am', 'aui' ),
2191
+                'pm_lower' => __( 'pm', 'aui' ),
2192
+                'am_upper' => __( 'AM', 'aui' ),
2193
+                'pm_upper' => __( 'PM', 'aui' ),
2194
+                'firstDayOfWeek' => (int) get_option( 'start_of_week' ),
2195
+                'time_24hr' => false,
2196
+                'year' => __( 'Year', 'aui' ),
2197
+                'hour' => __( 'Hour', 'aui' ),
2198
+                'minute' => __( 'Minute', 'aui' ),
2199
+                'weekAbbreviation' => __( 'Wk', 'aui' ),
2200
+                'rangeSeparator' => __( ' to ', 'aui' ),
2201
+                'scrollTitle' => __( 'Scroll to increment', 'aui' ),
2202
+                'toggleTitle' => __( 'Click to toggle', 'aui' )
2203
+            );
2204
+
2205
+            return apply_filters( 'ayecode_ui_calendar_params', $params );
2206
+        }
2207
+
2208
+        /**
2209
+         * Flatpickr calendar localize.
2210
+         *
2211
+         * @since 0.1.44
2212
+         *
2213
+         * @return string Calendar locale.
2214
+         */
2215
+        public static function flatpickr_locale() {
2216
+            $params = self::calendar_params();
2217
+
2218
+            if ( is_string( $params ) ) {
2219
+                $params = html_entity_decode( $params, ENT_QUOTES, 'UTF-8' );
2220
+            } else {
2221
+                foreach ( (array) $params as $key => $value ) {
2222
+                    if ( ! is_scalar( $value ) ) {
2223
+                        continue;
2224
+                    }
2225
+
2226
+                    $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2227
+                }
2228
+            }
2229
+
2230
+            $day_s3 = array();
2231
+            $day_s5 = array();
2232
+
2233
+            for ( $i = 1; $i <= 7; $i ++ ) {
2234
+                $day_s3[] = addslashes( $params[ 'day_s3_' . $i ] );
2235
+                $day_s5[] = addslashes( $params[ 'day_s3_' . $i ] );
2236
+            }
2237
+
2238
+            $month_s = array();
2239
+            $month_long = array();
2240
+
2241
+            for ( $i = 1; $i <= 12; $i ++ ) {
2242
+                $month_s[] = addslashes( $params[ 'month_s_' . $i ] );
2243
+                $month_long[] = addslashes( $params[ 'month_long_' . $i ] );
2244
+            }
2245
+
2246
+            ob_start();
2247
+        if ( 0 ) { ?><script><?php } ?>
2248 2248
                 {
2249 2249
                     weekdays: {
2250 2250
                         shorthand: ['<?php echo implode( "','", $day_s3 ); ?>'],
@@ -2283,189 +2283,189 @@  discard block
 block discarded – undo
2283 2283
                 }
2284 2284
 				<?php if ( 0 ) { ?></script><?php } ?>
2285 2285
 			<?php
2286
-			$locale = ob_get_clean();
2287
-
2288
-			return apply_filters( 'ayecode_ui_flatpickr_locale', trim( $locale ) );
2289
-		}
2290
-
2291
-		/**
2292
-		 * Select2 JS params.
2293
-		 *
2294
-		 * @since 0.1.44
2295
-		 *
2296
-		 * @return array Select2 JS params.
2297
-		 */
2298
-		public static function select2_params() {
2299
-			$params = array(
2300
-				'i18n_select_state_text'    => esc_attr__( 'Select an option&hellip;', 'aui' ),
2301
-				'i18n_no_matches'           => _x( 'No matches found', 'enhanced select', 'aui' ),
2302
-				'i18n_ajax_error'           => _x( 'Loading failed', 'enhanced select', 'aui' ),
2303
-				'i18n_input_too_short_1'    => _x( 'Please enter 1 or more characters', 'enhanced select', 'aui' ),
2304
-				'i18n_input_too_short_n'    => _x( 'Please enter %item% or more characters', 'enhanced select', 'aui' ),
2305
-				'i18n_input_too_long_1'     => _x( 'Please delete 1 character', 'enhanced select', 'aui' ),
2306
-				'i18n_input_too_long_n'     => _x( 'Please delete %item% characters', 'enhanced select', 'aui' ),
2307
-				'i18n_selection_too_long_1' => _x( 'You can only select 1 item', 'enhanced select', 'aui' ),
2308
-				'i18n_selection_too_long_n' => _x( 'You can only select %item% items', 'enhanced select', 'aui' ),
2309
-				'i18n_load_more'            => _x( 'Loading more results&hellip;', 'enhanced select', 'aui' ),
2310
-				'i18n_searching'            => _x( 'Searching&hellip;', 'enhanced select', 'aui' )
2311
-			);
2312
-
2313
-			return apply_filters( 'ayecode_ui_select2_params', $params );
2314
-		}
2315
-
2316
-		/**
2317
-		 * Select2 JS localize.
2318
-		 *
2319
-		 * @since 0.1.44
2320
-		 *
2321
-		 * @return string Select2 JS locale.
2322
-		 */
2323
-		public static function select2_locale() {
2324
-			$params = self::select2_params();
2325
-
2326
-			foreach ( (array) $params as $key => $value ) {
2327
-				if ( ! is_scalar( $value ) ) {
2328
-					continue;
2329
-				}
2286
+            $locale = ob_get_clean();
2330 2287
 
2331
-				$params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2332
-			}
2333
-
2334
-			$locale = json_encode( $params );
2335
-
2336
-			return apply_filters( 'ayecode_ui_select2_locale', trim( $locale ) );
2337
-		}
2338
-
2339
-		/**
2340
-		 * Time ago JS localize.
2341
-		 *
2342
-		 * @since 0.1.47
2343
-		 *
2344
-		 * @return string Time ago JS locale.
2345
-		 */
2346
-		public static function timeago_locale() {
2347
-			$params = array(
2348
-				'prefix_ago' => '',
2349
-				'suffix_ago' => ' ' . _x( 'ago', 'time ago', 'aui' ),
2350
-				'prefix_after' => _x( 'after', 'time ago', 'aui' ) . ' ',
2351
-				'suffix_after' => '',
2352
-				'seconds' => _x( 'less than a minute', 'time ago', 'aui' ),
2353
-				'minute' => _x( 'about a minute', 'time ago', 'aui' ),
2354
-				'minutes' => _x( '%d minutes', 'time ago', 'aui' ),
2355
-				'hour' => _x( 'about an hour', 'time ago', 'aui' ),
2356
-				'hours' => _x( 'about %d hours', 'time ago', 'aui' ),
2357
-				'day' => _x( 'a day', 'time ago', 'aui' ),
2358
-				'days' => _x( '%d days', 'time ago', 'aui' ),
2359
-				'month' => _x( 'about a month', 'time ago', 'aui' ),
2360
-				'months' => _x( '%d months', 'time ago', 'aui' ),
2361
-				'year' => _x( 'about a year', 'time ago', 'aui' ),
2362
-				'years' => _x( '%d years', 'time ago', 'aui' ),
2363
-			);
2364
-
2365
-			$params = apply_filters( 'ayecode_ui_timeago_params', $params );
2366
-
2367
-			foreach ( (array) $params as $key => $value ) {
2368
-				if ( ! is_scalar( $value ) ) {
2369
-					continue;
2370
-				}
2288
+            return apply_filters( 'ayecode_ui_flatpickr_locale', trim( $locale ) );
2289
+        }
2371 2290
 
2372
-				$params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2373
-			}
2374
-
2375
-			$locale = json_encode( $params );
2376
-
2377
-			return apply_filters( 'ayecode_ui_timeago_locale', trim( $locale ) );
2378
-		}
2379
-
2380
-		/**
2381
-		 * JavaScript Minifier
2382
-		 *
2383
-		 * @param $input
2384
-		 *
2385
-		 * @return mixed
2386
-		 */
2387
-		public static function minify_js($input) {
2388
-			if(trim($input) === "") return $input;
2389
-			return preg_replace(
2390
-				array(
2391
-					// Remove comment(s)
2392
-					'#\s*("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')\s*|\s*\/\*(?!\!|@cc_on)(?>[\s\S]*?\*\/)\s*|\s*(?<![\:\=])\/\/.*(?=[\n\r]|$)|^\s*|\s*$#',
2393
-					// Remove white-space(s) outside the string and regex
2394
-					'#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/)|\/(?!\/)[^\n\r]*?\/(?=[\s.,;]|[gimuy]|$))|\s*([!%&*\(\)\-=+\[\]\{\}|;:,.<>?\/])\s*#s',
2395
-					// Remove the last semicolon
2396
-					'#;+\}#',
2397
-					// Minify object attribute(s) except JSON attribute(s). From `{'foo':'bar'}` to `{foo:'bar'}`
2398
-					'#([\{,])([\'])(\d+|[a-z_][a-z0-9_]*)\2(?=\:)#i',
2399
-					// --ibid. From `foo['bar']` to `foo.bar`
2400
-					'#([a-z0-9_\)\]])\[([\'"])([a-z_][a-z0-9_]*)\2\]#i'
2401
-				),
2402
-				array(
2403
-					'$1',
2404
-					'$1$2',
2405
-					'}',
2406
-					'$1$3',
2407
-					'$1.$3'
2408
-				),
2409
-				$input);
2410
-		}
2411
-
2412
-		/**
2413
-		 * Minify CSS
2414
-		 *
2415
-		 * @param $input
2416
-		 *
2417
-		 * @return mixed
2418
-		 */
2419
-		public static function minify_css($input) {
2420
-			if(trim($input) === "") return $input;
2421
-			return preg_replace(
2422
-				array(
2423
-					// Remove comment(s)
2424
-					'#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')|\/\*(?!\!)(?>.*?\*\/)|^\s*|\s*$#s',
2425
-					// Remove unused white-space(s)
2426
-					'#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/))|\s*+;\s*+(})\s*+|\s*+([*$~^|]?+=|[{};,>~]|\s(?![0-9\.])|!important\b)\s*+|([[(:])\s++|\s++([])])|\s++(:)\s*+(?!(?>[^{}"\']++|"(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')*+{)|^\s++|\s++\z|(\s)\s+#si',
2427
-					// Replace `0(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)` with `0`
2428
-					'#(?<=[\s:])(0)(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)#si',
2429
-					// Replace `:0 0 0 0` with `:0`
2430
-					'#:(0\s+0|0\s+0\s+0\s+0)(?=[;\}]|\!important)#i',
2431
-					// Replace `background-position:0` with `background-position:0 0`
2432
-					'#(background-position):0(?=[;\}])#si',
2433
-					// Replace `0.6` with `.6`, but only when preceded by `:`, `,`, `-` or a white-space
2434
-					'#(?<=[\s:,\-])0+\.(\d+)#s',
2435
-					// Minify string value
2436
-					'#(\/\*(?>.*?\*\/))|(?<!content\:)([\'"])([a-z_][a-z0-9\-_]*?)\2(?=[\s\{\}\];,])#si',
2437
-					'#(\/\*(?>.*?\*\/))|(\burl\()([\'"])([^\s]+?)\3(\))#si',
2438
-					// Minify HEX color code
2439
-					'#(?<=[\s:,\-]\#)([a-f0-6]+)\1([a-f0-6]+)\2([a-f0-6]+)\3#i',
2440
-					// Replace `(border|outline):none` with `(border|outline):0`
2441
-					'#(?<=[\{;])(border|outline):none(?=[;\}\!])#',
2442
-					// Remove empty selector(s)
2443
-					'#(\/\*(?>.*?\*\/))|(^|[\{\}])(?:[^\s\{\}]+)\{\}#s'
2444
-				),
2445
-				array(
2446
-					'$1',
2447
-					'$1$2$3$4$5$6$7',
2448
-					'$1',
2449
-					':0',
2450
-					'$1:0 0',
2451
-					'.$1',
2452
-					'$1$3',
2453
-					'$1$2$4$5',
2454
-					'$1$2$3',
2455
-					'$1:0',
2456
-					'$1$2'
2457
-				),
2458
-				$input);
2459
-		}
2460
-
2461
-		/**
2462
-		 * Get the conditional fields JavaScript.
2463
-		 *
2464
-		 * @return mixed
2465
-		 */
2466
-		public function conditional_fields_js() {
2467
-			ob_start();
2468
-			?>
2291
+        /**
2292
+         * Select2 JS params.
2293
+         *
2294
+         * @since 0.1.44
2295
+         *
2296
+         * @return array Select2 JS params.
2297
+         */
2298
+        public static function select2_params() {
2299
+            $params = array(
2300
+                'i18n_select_state_text'    => esc_attr__( 'Select an option&hellip;', 'aui' ),
2301
+                'i18n_no_matches'           => _x( 'No matches found', 'enhanced select', 'aui' ),
2302
+                'i18n_ajax_error'           => _x( 'Loading failed', 'enhanced select', 'aui' ),
2303
+                'i18n_input_too_short_1'    => _x( 'Please enter 1 or more characters', 'enhanced select', 'aui' ),
2304
+                'i18n_input_too_short_n'    => _x( 'Please enter %item% or more characters', 'enhanced select', 'aui' ),
2305
+                'i18n_input_too_long_1'     => _x( 'Please delete 1 character', 'enhanced select', 'aui' ),
2306
+                'i18n_input_too_long_n'     => _x( 'Please delete %item% characters', 'enhanced select', 'aui' ),
2307
+                'i18n_selection_too_long_1' => _x( 'You can only select 1 item', 'enhanced select', 'aui' ),
2308
+                'i18n_selection_too_long_n' => _x( 'You can only select %item% items', 'enhanced select', 'aui' ),
2309
+                'i18n_load_more'            => _x( 'Loading more results&hellip;', 'enhanced select', 'aui' ),
2310
+                'i18n_searching'            => _x( 'Searching&hellip;', 'enhanced select', 'aui' )
2311
+            );
2312
+
2313
+            return apply_filters( 'ayecode_ui_select2_params', $params );
2314
+        }
2315
+
2316
+        /**
2317
+         * Select2 JS localize.
2318
+         *
2319
+         * @since 0.1.44
2320
+         *
2321
+         * @return string Select2 JS locale.
2322
+         */
2323
+        public static function select2_locale() {
2324
+            $params = self::select2_params();
2325
+
2326
+            foreach ( (array) $params as $key => $value ) {
2327
+                if ( ! is_scalar( $value ) ) {
2328
+                    continue;
2329
+                }
2330
+
2331
+                $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2332
+            }
2333
+
2334
+            $locale = json_encode( $params );
2335
+
2336
+            return apply_filters( 'ayecode_ui_select2_locale', trim( $locale ) );
2337
+        }
2338
+
2339
+        /**
2340
+         * Time ago JS localize.
2341
+         *
2342
+         * @since 0.1.47
2343
+         *
2344
+         * @return string Time ago JS locale.
2345
+         */
2346
+        public static function timeago_locale() {
2347
+            $params = array(
2348
+                'prefix_ago' => '',
2349
+                'suffix_ago' => ' ' . _x( 'ago', 'time ago', 'aui' ),
2350
+                'prefix_after' => _x( 'after', 'time ago', 'aui' ) . ' ',
2351
+                'suffix_after' => '',
2352
+                'seconds' => _x( 'less than a minute', 'time ago', 'aui' ),
2353
+                'minute' => _x( 'about a minute', 'time ago', 'aui' ),
2354
+                'minutes' => _x( '%d minutes', 'time ago', 'aui' ),
2355
+                'hour' => _x( 'about an hour', 'time ago', 'aui' ),
2356
+                'hours' => _x( 'about %d hours', 'time ago', 'aui' ),
2357
+                'day' => _x( 'a day', 'time ago', 'aui' ),
2358
+                'days' => _x( '%d days', 'time ago', 'aui' ),
2359
+                'month' => _x( 'about a month', 'time ago', 'aui' ),
2360
+                'months' => _x( '%d months', 'time ago', 'aui' ),
2361
+                'year' => _x( 'about a year', 'time ago', 'aui' ),
2362
+                'years' => _x( '%d years', 'time ago', 'aui' ),
2363
+            );
2364
+
2365
+            $params = apply_filters( 'ayecode_ui_timeago_params', $params );
2366
+
2367
+            foreach ( (array) $params as $key => $value ) {
2368
+                if ( ! is_scalar( $value ) ) {
2369
+                    continue;
2370
+                }
2371
+
2372
+                $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2373
+            }
2374
+
2375
+            $locale = json_encode( $params );
2376
+
2377
+            return apply_filters( 'ayecode_ui_timeago_locale', trim( $locale ) );
2378
+        }
2379
+
2380
+        /**
2381
+         * JavaScript Minifier
2382
+         *
2383
+         * @param $input
2384
+         *
2385
+         * @return mixed
2386
+         */
2387
+        public static function minify_js($input) {
2388
+            if(trim($input) === "") return $input;
2389
+            return preg_replace(
2390
+                array(
2391
+                    // Remove comment(s)
2392
+                    '#\s*("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')\s*|\s*\/\*(?!\!|@cc_on)(?>[\s\S]*?\*\/)\s*|\s*(?<![\:\=])\/\/.*(?=[\n\r]|$)|^\s*|\s*$#',
2393
+                    // Remove white-space(s) outside the string and regex
2394
+                    '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/)|\/(?!\/)[^\n\r]*?\/(?=[\s.,;]|[gimuy]|$))|\s*([!%&*\(\)\-=+\[\]\{\}|;:,.<>?\/])\s*#s',
2395
+                    // Remove the last semicolon
2396
+                    '#;+\}#',
2397
+                    // Minify object attribute(s) except JSON attribute(s). From `{'foo':'bar'}` to `{foo:'bar'}`
2398
+                    '#([\{,])([\'])(\d+|[a-z_][a-z0-9_]*)\2(?=\:)#i',
2399
+                    // --ibid. From `foo['bar']` to `foo.bar`
2400
+                    '#([a-z0-9_\)\]])\[([\'"])([a-z_][a-z0-9_]*)\2\]#i'
2401
+                ),
2402
+                array(
2403
+                    '$1',
2404
+                    '$1$2',
2405
+                    '}',
2406
+                    '$1$3',
2407
+                    '$1.$3'
2408
+                ),
2409
+                $input);
2410
+        }
2411
+
2412
+        /**
2413
+         * Minify CSS
2414
+         *
2415
+         * @param $input
2416
+         *
2417
+         * @return mixed
2418
+         */
2419
+        public static function minify_css($input) {
2420
+            if(trim($input) === "") return $input;
2421
+            return preg_replace(
2422
+                array(
2423
+                    // Remove comment(s)
2424
+                    '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')|\/\*(?!\!)(?>.*?\*\/)|^\s*|\s*$#s',
2425
+                    // Remove unused white-space(s)
2426
+                    '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/))|\s*+;\s*+(})\s*+|\s*+([*$~^|]?+=|[{};,>~]|\s(?![0-9\.])|!important\b)\s*+|([[(:])\s++|\s++([])])|\s++(:)\s*+(?!(?>[^{}"\']++|"(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')*+{)|^\s++|\s++\z|(\s)\s+#si',
2427
+                    // Replace `0(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)` with `0`
2428
+                    '#(?<=[\s:])(0)(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)#si',
2429
+                    // Replace `:0 0 0 0` with `:0`
2430
+                    '#:(0\s+0|0\s+0\s+0\s+0)(?=[;\}]|\!important)#i',
2431
+                    // Replace `background-position:0` with `background-position:0 0`
2432
+                    '#(background-position):0(?=[;\}])#si',
2433
+                    // Replace `0.6` with `.6`, but only when preceded by `:`, `,`, `-` or a white-space
2434
+                    '#(?<=[\s:,\-])0+\.(\d+)#s',
2435
+                    // Minify string value
2436
+                    '#(\/\*(?>.*?\*\/))|(?<!content\:)([\'"])([a-z_][a-z0-9\-_]*?)\2(?=[\s\{\}\];,])#si',
2437
+                    '#(\/\*(?>.*?\*\/))|(\burl\()([\'"])([^\s]+?)\3(\))#si',
2438
+                    // Minify HEX color code
2439
+                    '#(?<=[\s:,\-]\#)([a-f0-6]+)\1([a-f0-6]+)\2([a-f0-6]+)\3#i',
2440
+                    // Replace `(border|outline):none` with `(border|outline):0`
2441
+                    '#(?<=[\{;])(border|outline):none(?=[;\}\!])#',
2442
+                    // Remove empty selector(s)
2443
+                    '#(\/\*(?>.*?\*\/))|(^|[\{\}])(?:[^\s\{\}]+)\{\}#s'
2444
+                ),
2445
+                array(
2446
+                    '$1',
2447
+                    '$1$2$3$4$5$6$7',
2448
+                    '$1',
2449
+                    ':0',
2450
+                    '$1:0 0',
2451
+                    '.$1',
2452
+                    '$1$3',
2453
+                    '$1$2$4$5',
2454
+                    '$1$2$3',
2455
+                    '$1:0',
2456
+                    '$1$2'
2457
+                ),
2458
+                $input);
2459
+        }
2460
+
2461
+        /**
2462
+         * Get the conditional fields JavaScript.
2463
+         *
2464
+         * @return mixed
2465
+         */
2466
+        public function conditional_fields_js() {
2467
+            ob_start();
2468
+            ?>
2469 2469
             <script>
2470 2470
                 /**
2471 2471
                  * Conditional Fields
@@ -2970,14 +2970,14 @@  discard block
 block discarded – undo
2970 2970
 				<?php do_action( 'aui_conditional_fields_js', $this ); ?>
2971 2971
             </script>
2972 2972
 			<?php
2973
-			$output = ob_get_clean();
2973
+            $output = ob_get_clean();
2974 2974
 
2975
-			return str_replace( array( '<script>', '</script>' ), '', self::minify_js( $output ) );
2976
-		}
2977
-	}
2975
+            return str_replace( array( '<script>', '</script>' ), '', self::minify_js( $output ) );
2976
+        }
2977
+    }
2978 2978
 
2979
-	/**
2980
-	 * Run the class if found.
2981
-	 */
2982
-	AyeCode_UI_Settings::instance();
2979
+    /**
2980
+     * Run the class if found.
2981
+     */
2982
+    AyeCode_UI_Settings::instance();
2983 2983
 }
2984 2984
\ No newline at end of file
Please login to merge, or discard this patch.
vendor/ayecode/wp-ayecode-ui/ayecode-ui-loader.php 1 patch
Indentation   +18 added lines, -18 removed lines patch added patch discarded remove patch
@@ -7,40 +7,40 @@
 block discarded – undo
7 7
  * Bail if we are not in WP.
8 8
  */
9 9
 if ( ! defined( 'ABSPATH' ) ) {
10
-	exit;
10
+    exit;
11 11
 }
12 12
 
13 13
 /**
14 14
  * Set the version only if its the current newest while loading.
15 15
  */
16 16
 add_action('after_setup_theme', function () {
17
-	global $ayecode_ui_version,$ayecode_ui_file_key;
18
-	$this_version = "0.2.0";
19
-	if(empty($ayecode_ui_version) || version_compare($this_version , $ayecode_ui_version, '>')){
20
-		$ayecode_ui_version = $this_version ;
21
-		$ayecode_ui_file_key = wp_hash( __FILE__ );
22
-	}
17
+    global $ayecode_ui_version,$ayecode_ui_file_key;
18
+    $this_version = "0.2.0";
19
+    if(empty($ayecode_ui_version) || version_compare($this_version , $ayecode_ui_version, '>')){
20
+        $ayecode_ui_version = $this_version ;
21
+        $ayecode_ui_file_key = wp_hash( __FILE__ );
22
+    }
23 23
 },0);
24 24
 
25 25
 /**
26 26
  * Load this version of WP Bootstrap Settings only if the file hash is the current one.
27 27
  */
28 28
 add_action('after_setup_theme', function () {
29
-	global $ayecode_ui_file_key;
30
-	if($ayecode_ui_file_key && $ayecode_ui_file_key == wp_hash( __FILE__ )){
31
-		include_once( dirname( __FILE__ ) . '/includes/class-aui.php' );
32
-		include_once( dirname( __FILE__ ) . '/includes/ayecode-ui-settings.php' );
33
-	}
29
+    global $ayecode_ui_file_key;
30
+    if($ayecode_ui_file_key && $ayecode_ui_file_key == wp_hash( __FILE__ )){
31
+        include_once( dirname( __FILE__ ) . '/includes/class-aui.php' );
32
+        include_once( dirname( __FILE__ ) . '/includes/ayecode-ui-settings.php' );
33
+    }
34 34
 },1);
35 35
 
36 36
 /**
37 37
  * Add the function that calls the class.
38 38
  */
39 39
 if(!function_exists('aui')){
40
-	function aui(){
41
-		if(!class_exists("AUI",false)){
42
-			return false;
43
-		}
44
-		return AUI::instance();
45
-	}
40
+    function aui(){
41
+        if(!class_exists("AUI",false)){
42
+            return false;
43
+        }
44
+        return AUI::instance();
45
+    }
46 46
 }
Please login to merge, or discard this patch.
includes/admin/admin-pages.php 1 patch
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -57,8 +57,8 @@  discard block
 block discarded – undo
57 57
             'getpaid-nonce',
58 58
             'getpaid-nonce'
59 59
         );
60
-		$anchor = __( 'Deactivate', 'invoicing' );
61
-		$title  = esc_attr__( 'Are you sure you want to deactivate this discount?', 'invoicing' );
60
+        $anchor = __( 'Deactivate', 'invoicing' );
61
+        $title  = esc_attr__( 'Are you sure you want to deactivate this discount?', 'invoicing' );
62 62
         $row_actions['deactivate'] = "<a href='$url' onclick='return confirm(\"$title\")'>$anchor</a>";
63 63
 
64 64
     } elseif ( in_array( strtolower( $discount->post_status ), array( 'pending', 'draft' ) ) && wpinv_current_user_can( 'activate_discount', array( 'discount' => (int) $discount->ID ) ) ) {
@@ -73,8 +73,8 @@  discard block
 block discarded – undo
73 73
             'getpaid-nonce',
74 74
             'getpaid-nonce'
75 75
         );
76
-		$anchor = __( 'Activate', 'invoicing' );
77
-		$title  = esc_attr__( 'Are you sure you want to activate this discount?', 'invoicing' );
76
+        $anchor = __( 'Activate', 'invoicing' );
77
+        $title  = esc_attr__( 'Are you sure you want to activate this discount?', 'invoicing' );
78 78
         $row_actions['activate'] = "<a href='$url' onclick='return confirm(\"$title\")'>$anchor</a>";
79 79
 
80 80
     }
@@ -121,13 +121,13 @@  discard block
 block discarded – undo
121 121
             $types = wpinv_get_discount_types();
122 122
 
123 123
             foreach ( $types as $name => $type ) {
124
-			echo '<option value="' . esc_attr( $name ) . '"';
124
+            echo '<option value="' . esc_attr( $name ) . '"';
125 125
 
126
-			if ( isset( $_GET['discount_type'] ) ) {
127
-				selected( $name, sanitize_text_field( $_GET['discount_type'] ) );
126
+            if ( isset( $_GET['discount_type'] ) ) {
127
+                selected( $name, sanitize_text_field( $_GET['discount_type'] ) );
128 128
                 }
129 129
 
130
-			echo '>' . esc_html__( $type, 'invoicing' ) . '</option>';
130
+            echo '>' . esc_html__( $type, 'invoicing' ) . '</option>';
131 131
             }
132 132
         ?>
133 133
     </select>
@@ -154,15 +154,15 @@  discard block
 block discarded – undo
154 154
         // Filter vat rule type
155 155
         if ( isset( $_GET['discount_type'] ) && $_GET['discount_type'] !== '' ) {
156 156
             $meta_query[] = array(
157
-				'key'     => '_wpi_discount_type',
158
-				'value'   => sanitize_key( urldecode( $_GET['discount_type'] ) ),
159
-				'compare' => '=',
160
-			);
161
-			}
157
+                'key'     => '_wpi_discount_type',
158
+                'value'   => sanitize_key( urldecode( $_GET['discount_type'] ) ),
159
+                'compare' => '=',
160
+            );
161
+            }
162 162
 
163 163
         if ( ! empty( $meta_query ) ) {
164 164
             $vars['meta_query'] = $meta_query;
165
-			}
165
+            }
166 166
     }
167 167
 
168 168
     return $vars;
Please login to merge, or discard this patch.
includes/admin/class-getpaid-post-types-admin.php 1 patch
Indentation   +795 added lines, -795 removed lines patch added patch discarded remove patch
@@ -13,741 +13,741 @@  discard block
 block discarded – undo
13 13
 class GetPaid_Post_Types_Admin {
14 14
 
15 15
     /**
16
-	 * Hook in methods.
17
-	 */
18
-	public static function init() {
19
-
20
-		// Init metaboxes.
21
-		GetPaid_Metaboxes::init();
22
-
23
-		// Filter the post updated messages.
24
-		add_filter( 'post_updated_messages', 'GetPaid_Post_Types_Admin::post_updated_messages' );
25
-
26
-		// Filter post actions.
27
-		add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::post_row_actions', 10, 2 );
28
-		add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::filter_invoice_row_actions', 90, 2 );
29
-
30
-		// Invoice table columns.
31
-		add_filter( 'manage_wpi_invoice_posts_columns', array( __CLASS__, 'invoice_columns' ), 100 );
32
-		add_action( 'manage_wpi_invoice_posts_custom_column', array( __CLASS__, 'display_invoice_columns' ), 10, 2 );
33
-		add_filter( 'bulk_actions-edit-wpi_invoice', array( __CLASS__, 'invoice_bulk_actions' ) );
34
-		add_filter( 'handle_bulk_actions-edit-wpi_invoice', array( __CLASS__, 'handle_invoice_bulk_actions' ), 10, 3 );
35
-
36
-		// Items table columns.
37
-		add_filter( 'manage_wpi_item_posts_columns', array( __CLASS__, 'item_columns' ), 100 );
38
-		add_filter( 'manage_edit-wpi_item_sortable_columns', array( __CLASS__, 'sortable_item_columns' ), 20 );
39
-		add_action( 'manage_wpi_item_posts_custom_column', array( __CLASS__, 'display_item_columns' ), 10, 2 );
40
-		add_action( 'restrict_manage_posts', array( __CLASS__, 'add_item_filters' ), 100 );
41
-		add_action( 'parse_query', array( __CLASS__, 'filter_item_query' ), 100 );
42
-		add_action( 'request', array( __CLASS__, 'reorder_items' ), 100 );
43
-
44
-		// Payment forms columns.
45
-		add_filter( 'manage_wpi_payment_form_posts_columns', array( __CLASS__, 'payment_form_columns' ), 100 );
46
-		add_action( 'manage_wpi_payment_form_posts_custom_column', array( __CLASS__, 'display_payment_form_columns' ), 10, 2 );
47
-		add_filter( 'display_post_states', array( __CLASS__, 'filter_payment_form_state' ), 10, 2 );
48
-
49
-		// Discount table columns.
50
-		add_filter( 'manage_wpi_discount_posts_columns', array( __CLASS__, 'discount_columns' ), 100 );
51
-		add_filter( 'bulk_actions-edit-wpi_discount', '__return_empty_array', 100 );
52
-
53
-		// Deleting posts.
54
-		add_action( 'delete_post', array( __CLASS__, 'delete_post' ) );
55
-		add_filter( 'display_post_states', array( __CLASS__, 'filter_discount_state' ), 10, 2 );
56
-
57
-		add_filter( 'display_post_states', array( __CLASS__, 'add_display_post_states' ), 10, 2 );
58
-	}
59
-
60
-	/**
61
-	 * Post updated messages.
62
-	 */
63
-	public static function post_updated_messages( $messages ) {
64
-		global $post;
65
-
66
-		$messages['wpi_discount'] = array(
67
-			0  => '',
68
-			1  => __( 'Discount updated.', 'invoicing' ),
69
-			2  => __( 'Custom field updated.', 'invoicing' ),
70
-			3  => __( 'Custom field deleted.', 'invoicing' ),
71
-			4  => __( 'Discount updated.', 'invoicing' ),
72
-			5  => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Discount restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
73
-			6  => __( 'Discount updated.', 'invoicing' ),
74
-			7  => __( 'Discount saved.', 'invoicing' ),
75
-			8  => __( 'Discount submitted.', 'invoicing' ),
76
-			9  => wp_sprintf( __( 'Discount scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ),
77
-			10 => __( 'Discount draft updated.', 'invoicing' ),
78
-		);
79
-
80
-		$messages['wpi_payment_form'] = array(
81
-			0  => '',
82
-			1  => __( 'Payment Form updated.', 'invoicing' ),
83
-			2  => __( 'Custom field updated.', 'invoicing' ),
84
-			3  => __( 'Custom field deleted.', 'invoicing' ),
85
-			4  => __( 'Payment Form updated.', 'invoicing' ),
86
-			5  => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Payment Form restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
87
-			6  => __( 'Payment Form updated.', 'invoicing' ),
88
-			7  => __( 'Payment Form saved.', 'invoicing' ),
89
-			8  => __( 'Payment Form submitted.', 'invoicing' ),
90
-			9  => wp_sprintf( __( 'Payment Form scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ),
91
-			10 => __( 'Payment Form draft updated.', 'invoicing' ),
92
-		);
93
-
94
-		return $messages;
95
-
96
-	}
97
-
98
-	/**
99
-	 * Post row actions.
100
-	 */
101
-	public static function post_row_actions( $actions, $post ) {
102
-
103
-		$post = get_post( $post );
104
-
105
-		// We do not want to edit the default payment form.
106
-		if ( 'wpi_payment_form' == $post->post_type ) {
107
-
108
-			if ( wpinv_get_default_payment_form() === $post->ID ) {
109
-				unset( $actions['trash'] );
110
-				unset( $actions['inline hide-if-no-js'] );
111
-			}
112
-
113
-			$actions['duplicate'] = sprintf(
114
-				'<a href="%1$s">%2$s</a>',
115
-				esc_url(
116
-					wp_nonce_url(
117
-						add_query_arg(
118
-							array(
119
-								'getpaid-admin-action' => 'duplicate_form',
120
-								'form_id'              => $post->ID,
121
-							)
122
-						),
123
-						'getpaid-nonce',
124
-						'getpaid-nonce'
125
-					)
126
-				),
127
-				esc_html( __( 'Duplicate', 'invoicing' ) )
128
-			);
129
-
130
-			$actions['reset'] = sprintf(
131
-				'<a href="%1$s" style="color: #800">%2$s</a>',
132
-				esc_url(
133
-					wp_nonce_url(
134
-						add_query_arg(
135
-							array(
136
-								'getpaid-admin-action' => 'reset_form_stats',
137
-								'form_id'              => $post->ID,
138
-							)
139
-						),
140
-						'getpaid-nonce',
141
-						'getpaid-nonce'
142
-					)
143
-				),
144
-				esc_html( __( 'Reset Stats', 'invoicing' ) )
145
-			);
146
-		}
147
-
148
-		// Link to item payment form.
149
-		if ( 'wpi_item' == $post->post_type ) {
150
-
151
-			if ( in_array( get_post_meta( $post->ID, '_wpinv_type', true ), array( '', 'fee', 'custom' ), true ) ) {
152
-
153
-				$actions['buy'] = sprintf(
154
-					'<a href="%1$s">%2$s</a>',
155
-					esc_url( getpaid_embed_url( false, $post->ID . '|0' ) ),
156
-					esc_html( __( 'Buy', 'invoicing' ) )
157
-				);
158
-
159
-			}
16
+     * Hook in methods.
17
+     */
18
+    public static function init() {
19
+
20
+        // Init metaboxes.
21
+        GetPaid_Metaboxes::init();
22
+
23
+        // Filter the post updated messages.
24
+        add_filter( 'post_updated_messages', 'GetPaid_Post_Types_Admin::post_updated_messages' );
25
+
26
+        // Filter post actions.
27
+        add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::post_row_actions', 10, 2 );
28
+        add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::filter_invoice_row_actions', 90, 2 );
29
+
30
+        // Invoice table columns.
31
+        add_filter( 'manage_wpi_invoice_posts_columns', array( __CLASS__, 'invoice_columns' ), 100 );
32
+        add_action( 'manage_wpi_invoice_posts_custom_column', array( __CLASS__, 'display_invoice_columns' ), 10, 2 );
33
+        add_filter( 'bulk_actions-edit-wpi_invoice', array( __CLASS__, 'invoice_bulk_actions' ) );
34
+        add_filter( 'handle_bulk_actions-edit-wpi_invoice', array( __CLASS__, 'handle_invoice_bulk_actions' ), 10, 3 );
35
+
36
+        // Items table columns.
37
+        add_filter( 'manage_wpi_item_posts_columns', array( __CLASS__, 'item_columns' ), 100 );
38
+        add_filter( 'manage_edit-wpi_item_sortable_columns', array( __CLASS__, 'sortable_item_columns' ), 20 );
39
+        add_action( 'manage_wpi_item_posts_custom_column', array( __CLASS__, 'display_item_columns' ), 10, 2 );
40
+        add_action( 'restrict_manage_posts', array( __CLASS__, 'add_item_filters' ), 100 );
41
+        add_action( 'parse_query', array( __CLASS__, 'filter_item_query' ), 100 );
42
+        add_action( 'request', array( __CLASS__, 'reorder_items' ), 100 );
43
+
44
+        // Payment forms columns.
45
+        add_filter( 'manage_wpi_payment_form_posts_columns', array( __CLASS__, 'payment_form_columns' ), 100 );
46
+        add_action( 'manage_wpi_payment_form_posts_custom_column', array( __CLASS__, 'display_payment_form_columns' ), 10, 2 );
47
+        add_filter( 'display_post_states', array( __CLASS__, 'filter_payment_form_state' ), 10, 2 );
48
+
49
+        // Discount table columns.
50
+        add_filter( 'manage_wpi_discount_posts_columns', array( __CLASS__, 'discount_columns' ), 100 );
51
+        add_filter( 'bulk_actions-edit-wpi_discount', '__return_empty_array', 100 );
52
+
53
+        // Deleting posts.
54
+        add_action( 'delete_post', array( __CLASS__, 'delete_post' ) );
55
+        add_filter( 'display_post_states', array( __CLASS__, 'filter_discount_state' ), 10, 2 );
56
+
57
+        add_filter( 'display_post_states', array( __CLASS__, 'add_display_post_states' ), 10, 2 );
58
+    }
59
+
60
+    /**
61
+     * Post updated messages.
62
+     */
63
+    public static function post_updated_messages( $messages ) {
64
+        global $post;
65
+
66
+        $messages['wpi_discount'] = array(
67
+            0  => '',
68
+            1  => __( 'Discount updated.', 'invoicing' ),
69
+            2  => __( 'Custom field updated.', 'invoicing' ),
70
+            3  => __( 'Custom field deleted.', 'invoicing' ),
71
+            4  => __( 'Discount updated.', 'invoicing' ),
72
+            5  => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Discount restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
73
+            6  => __( 'Discount updated.', 'invoicing' ),
74
+            7  => __( 'Discount saved.', 'invoicing' ),
75
+            8  => __( 'Discount submitted.', 'invoicing' ),
76
+            9  => wp_sprintf( __( 'Discount scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ),
77
+            10 => __( 'Discount draft updated.', 'invoicing' ),
78
+        );
79
+
80
+        $messages['wpi_payment_form'] = array(
81
+            0  => '',
82
+            1  => __( 'Payment Form updated.', 'invoicing' ),
83
+            2  => __( 'Custom field updated.', 'invoicing' ),
84
+            3  => __( 'Custom field deleted.', 'invoicing' ),
85
+            4  => __( 'Payment Form updated.', 'invoicing' ),
86
+            5  => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Payment Form restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
87
+            6  => __( 'Payment Form updated.', 'invoicing' ),
88
+            7  => __( 'Payment Form saved.', 'invoicing' ),
89
+            8  => __( 'Payment Form submitted.', 'invoicing' ),
90
+            9  => wp_sprintf( __( 'Payment Form scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ),
91
+            10 => __( 'Payment Form draft updated.', 'invoicing' ),
92
+        );
93
+
94
+        return $messages;
95
+
96
+    }
97
+
98
+    /**
99
+     * Post row actions.
100
+     */
101
+    public static function post_row_actions( $actions, $post ) {
102
+
103
+        $post = get_post( $post );
104
+
105
+        // We do not want to edit the default payment form.
106
+        if ( 'wpi_payment_form' == $post->post_type ) {
107
+
108
+            if ( wpinv_get_default_payment_form() === $post->ID ) {
109
+                unset( $actions['trash'] );
110
+                unset( $actions['inline hide-if-no-js'] );
111
+            }
112
+
113
+            $actions['duplicate'] = sprintf(
114
+                '<a href="%1$s">%2$s</a>',
115
+                esc_url(
116
+                    wp_nonce_url(
117
+                        add_query_arg(
118
+                            array(
119
+                                'getpaid-admin-action' => 'duplicate_form',
120
+                                'form_id'              => $post->ID,
121
+                            )
122
+                        ),
123
+                        'getpaid-nonce',
124
+                        'getpaid-nonce'
125
+                    )
126
+                ),
127
+                esc_html( __( 'Duplicate', 'invoicing' ) )
128
+            );
129
+
130
+            $actions['reset'] = sprintf(
131
+                '<a href="%1$s" style="color: #800">%2$s</a>',
132
+                esc_url(
133
+                    wp_nonce_url(
134
+                        add_query_arg(
135
+                            array(
136
+                                'getpaid-admin-action' => 'reset_form_stats',
137
+                                'form_id'              => $post->ID,
138
+                            )
139
+                        ),
140
+                        'getpaid-nonce',
141
+                        'getpaid-nonce'
142
+                    )
143
+                ),
144
+                esc_html( __( 'Reset Stats', 'invoicing' ) )
145
+            );
146
+        }
147
+
148
+        // Link to item payment form.
149
+        if ( 'wpi_item' == $post->post_type ) {
150
+
151
+            if ( in_array( get_post_meta( $post->ID, '_wpinv_type', true ), array( '', 'fee', 'custom' ), true ) ) {
152
+
153
+                $actions['buy'] = sprintf(
154
+                    '<a href="%1$s">%2$s</a>',
155
+                    esc_url( getpaid_embed_url( false, $post->ID . '|0' ) ),
156
+                    esc_html( __( 'Buy', 'invoicing' ) )
157
+                );
158
+
159
+            }
160 160
 }
161 161
 
162
-		return $actions;
163
-	}
162
+        return $actions;
163
+    }
164 164
 
165
-	/**
165
+    /**
166 166
      * Remove bulk edit option from admin side quote listing
167 167
      *
168 168
      * @since    1.0.0
169 169
      * @param array $actions post actions
170
-	 * @param WP_Post $post
170
+     * @param WP_Post $post
171 171
      * @return array $actions actions without edit option
172 172
      */
173 173
     public static function filter_invoice_row_actions( $actions, $post ) {
174 174
 
175 175
         if ( getpaid_is_invoice_post_type( $post->post_type ) ) {
176 176
 
177
-			$actions = array();
178
-			$invoice = new WPInv_Invoice( $post );
179
-
180
-			$actions['edit'] = sprintf(
181
-				'<a href="%1$s">%2$s</a>',
182
-				esc_url( get_edit_post_link( $invoice->get_id() ) ),
183
-				esc_html( __( 'Edit', 'invoicing' ) )
184
-			);
185
-
186
-			if ( ! $invoice->is_draft() ) {
187
-
188
-				$actions['view'] = sprintf(
189
-					'<a href="%1$s">%2$s</a>',
190
-					esc_url( $invoice->get_view_url() ),
191
-					sprintf(
192
-						// translators: %s is the invoice type
193
-						esc_html__( 'View %s', 'invoicing' ),
194
-						getpaid_get_post_type_label( $invoice->get_post_type(), false )
195
-					)
196
-				);
197
-
198
-				$actions['send'] = sprintf(
199
-					'<a href="%1$s">%2$s</a>',
200
-					esc_url(
201
-						wp_nonce_url(
202
-							add_query_arg(
203
-								array(
204
-									'getpaid-admin-action' => 'send_invoice',
205
-									'invoice_id'           => $invoice->get_id(),
206
-								)
207
-							),
208
-							'getpaid-nonce',
209
-							'getpaid-nonce'
210
-						)
211
-					),
212
-					esc_html( __( 'Send to Customer', 'invoicing' ) )
213
-				);
214
-
215
-			}
216
-
217
-			$actions['duplicate'] = sprintf(
218
-				'<a href="%1$s">%2$s</a>',
219
-				esc_url(
220
-					wp_nonce_url(
221
-						add_query_arg(
222
-							array(
223
-								'getpaid-admin-action' => 'duplicate_invoice',
224
-								'invoice_id'           => $post->ID,
225
-							)
226
-						),
227
-						'getpaid-nonce',
228
-						'getpaid-nonce'
229
-					)
230
-				),
231
-				esc_html( __( 'Duplicate', 'invoicing' ) )
232
-			);
177
+            $actions = array();
178
+            $invoice = new WPInv_Invoice( $post );
179
+
180
+            $actions['edit'] = sprintf(
181
+                '<a href="%1$s">%2$s</a>',
182
+                esc_url( get_edit_post_link( $invoice->get_id() ) ),
183
+                esc_html( __( 'Edit', 'invoicing' ) )
184
+            );
185
+
186
+            if ( ! $invoice->is_draft() ) {
187
+
188
+                $actions['view'] = sprintf(
189
+                    '<a href="%1$s">%2$s</a>',
190
+                    esc_url( $invoice->get_view_url() ),
191
+                    sprintf(
192
+                        // translators: %s is the invoice type
193
+                        esc_html__( 'View %s', 'invoicing' ),
194
+                        getpaid_get_post_type_label( $invoice->get_post_type(), false )
195
+                    )
196
+                );
197
+
198
+                $actions['send'] = sprintf(
199
+                    '<a href="%1$s">%2$s</a>',
200
+                    esc_url(
201
+                        wp_nonce_url(
202
+                            add_query_arg(
203
+                                array(
204
+                                    'getpaid-admin-action' => 'send_invoice',
205
+                                    'invoice_id'           => $invoice->get_id(),
206
+                                )
207
+                            ),
208
+                            'getpaid-nonce',
209
+                            'getpaid-nonce'
210
+                        )
211
+                    ),
212
+                    esc_html( __( 'Send to Customer', 'invoicing' ) )
213
+                );
214
+
215
+            }
216
+
217
+            $actions['duplicate'] = sprintf(
218
+                '<a href="%1$s">%2$s</a>',
219
+                esc_url(
220
+                    wp_nonce_url(
221
+                        add_query_arg(
222
+                            array(
223
+                                'getpaid-admin-action' => 'duplicate_invoice',
224
+                                'invoice_id'           => $post->ID,
225
+                            )
226
+                        ),
227
+                        'getpaid-nonce',
228
+                        'getpaid-nonce'
229
+                    )
230
+                ),
231
+                esc_html( __( 'Duplicate', 'invoicing' ) )
232
+            );
233 233
 
234 234
         }
235 235
 
236 236
         return $actions;
237
-	}
238
-
239
-	/**
240
-	 * Returns an array of invoice table columns.
241
-	 */
242
-	public static function invoice_columns( $columns ) {
243
-
244
-		$columns = array(
245
-			'cb'           => $columns['cb'],
246
-			'number'       => __( 'Invoice', 'invoicing' ),
247
-			'customer'     => __( 'Customer', 'invoicing' ),
248
-			'invoice_date' => __( 'Created', 'invoicing' ),
249
-			'payment_date' => __( 'Completed', 'invoicing' ),
250
-			'amount'       => __( 'Amount', 'invoicing' ),
251
-			'recurring'    => __( 'Recurring', 'invoicing' ),
252
-			'status'       => __( 'Status', 'invoicing' ),
253
-		);
254
-
255
-		return apply_filters( 'wpi_invoice_table_columns', $columns );
256
-	}
257
-
258
-	/**
259
-	 * Displays invoice table columns.
260
-	 */
261
-	public static function display_invoice_columns( $column_name, $post_id ) {
262
-
263
-		$invoice = new WPInv_Invoice( $post_id );
264
-
265
-		switch ( $column_name ) {
266
-
267
-			case 'invoice_date':
268
-				$date_time = esc_attr( $invoice->get_created_date() );
269
-				$date      = esc_html( getpaid_format_date_value( $date_time, '&mdash;', true ) );
270
-				echo wp_kses_post( "<span title='$date_time'>$date</span>" );
271
-				break;
272
-
273
-			case 'payment_date':
274
-				if ( $invoice->is_paid() ) {
275
-					$date_time = esc_attr( $invoice->get_completed_date() );
276
-					$date      = esc_html( getpaid_format_date_value( $date_time, '&mdash;', true ) );
277
-					echo wp_kses_post( "<span title='$date_time'>$date</span>" );
278
-				} else {
279
-					echo '&mdash;';
280
-				}
281
-
282
-				break;
283
-
284
-			case 'amount':
285
-				$amount = $invoice->get_total();
286
-				$formated_amount = wp_kses_post( wpinv_price( $amount, $invoice->get_currency() ) );
287
-
288
-				if ( $invoice->is_refunded() ) {
289
-					$refunded_amount = wpinv_price( 0, $invoice->get_currency() );
290
-					echo wp_kses_post( "<del>$formated_amount</del>&nbsp;<ins>$refunded_amount</ins>" );
291
-				} else {
292
-
293
-					$discount = $invoice->get_total_discount();
294
-
295
-					if ( ! empty( $discount ) ) {
296
-						$new_amount = wpinv_price( $amount + $discount, $invoice->get_currency() );
297
-						echo wp_kses_post( "<del>$new_amount</del>&nbsp;<ins>$formated_amount</ins>" );
298
-					} else {
299
-						echo wp_kses_post( $formated_amount );
300
-					}
301
-				}
302
-
303
-				break;
304
-
305
-			case 'status':
306
-				$status       = esc_html( $invoice->get_status() );
307
-				$status_label = esc_html( $invoice->get_status_nicename() );
308
-
309
-				// If it is paid, show the gateway title.
310
-				if ( $invoice->is_paid() ) {
311
-					$gateway = esc_html( $invoice->get_gateway_title() );
312
-					$gateway = wp_sprintf( esc_attr__( 'Paid via %s', 'invoicing' ), esc_html( $gateway ) );
313
-
314
-					echo wp_kses_post( "<mark class='wpi-help-tip getpaid-invoice-status $status' title='$gateway'><span>$status_label</span></mark>" );
315
-				} else {
316
-					echo wp_kses_post( "<mark class='getpaid-invoice-status $status'><span>$status_label</span></mark>" );
317
-				}
318
-
319
-				// If it is not paid, display the overdue and view status.
320
-				if ( ! $invoice->is_paid() && ! $invoice->is_refunded() ) {
321
-
322
-					// Invoice view status.
323
-					if ( wpinv_is_invoice_viewed( $invoice->get_id() ) ) {
324
-						echo '&nbsp;&nbsp;<i class="fa fa-eye wpi-help-tip" title="' . esc_attr__( 'Viewed by Customer', 'invoicing' ) . '"></i>';
325
-					} else {
326
-						echo '&nbsp;&nbsp;<i class="fa fa-eye-slash wpi-help-tip" title="' . esc_attr__( 'Not Viewed by Customer', 'invoicing' ) . '"></i>';
327
-					}
328
-
329
-					// Display the overview status.
330
-					if ( wpinv_get_option( 'overdue_active' ) ) {
331
-						$due_date = $invoice->get_due_date();
332
-						$fomatted = getpaid_format_date( $due_date );
333
-
334
-						if ( ! empty( $fomatted ) ) {
335
-							$date = wp_sprintf(
336
-								// translators: %s is the due date.
337
-								__( 'Due %s', 'invoicing' ),
338
-								$fomatted
339
-							);
340
-							echo wp_kses_post( "<p class='description' style='color: #888;' title='$due_date'>$fomatted</p>" );
341
-						}
342
-					}
343
-				}
344
-
345
-				break;
346
-
347
-			case 'recurring':
348
-				if ( $invoice->is_recurring() ) {
349
-					echo '<i class="fa fa-check" style="color:#43850a;"></i>';
350
-				} else {
351
-					echo '<i class="fa fa-times" style="color:#616161;"></i>';
352
-				}
353
-				break;
354
-
355
-			case 'number':
356
-				$edit_link       = esc_url( get_edit_post_link( $invoice->get_id() ) );
357
-				$invoice_number  = esc_html( $invoice->get_number() );
358
-				$invoice_details = esc_attr__( 'View Invoice Details', 'invoicing' );
359
-
360
-				echo wp_kses_post( "<a href='$edit_link' title='$invoice_details'><strong>$invoice_number</strong></a>" );
361
-
362
-				do_action( 'getpaid_admin_table_invoice_number_column', $invoice );
363
-				break;
364
-
365
-			case 'customer':
366
-				$customer_name = $invoice->get_user_full_name();
367
-
368
-				if ( empty( $customer_name ) ) {
369
-					$customer_name = $invoice->get_email();
370
-				}
371
-
372
-				if ( ! empty( $customer_name ) ) {
373
-					$customer_details = esc_attr__( 'View Customer Details', 'invoicing' );
374
-					$view_link        = esc_url( add_query_arg( 'user_id', $invoice->get_user_id(), admin_url( 'user-edit.php' ) ) );
375
-					echo wp_kses_post( "<a href='$view_link' title='$customer_details'><span>$customer_name</span></a>" );
376
-				} else {
377
-					echo '<div>&mdash;</div>';
378
-				}
379
-
380
-				break;
381
-
382
-		}
383
-
384
-	}
385
-
386
-	/**
387
-	 * Displays invoice bulk actions.
388
-	 */
389
-	public static function invoice_bulk_actions( $actions ) {
390
-		$actions['resend-invoice'] = __( 'Send to Customer', 'invoicing' );
391
-		return $actions;
392
-	}
393
-
394
-	/**
395
-	 * Processes invoice bulk actions.
396
-	 */
397
-	public static function handle_invoice_bulk_actions( $redirect_url, $action, $post_ids ) {
398
-
399
-		if ( 'resend-invoice' === $action ) {
400
-			foreach ( $post_ids as $post_id ) {
401
-				getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $post_id ), true );
402
-			}
403
-		}
404
-
405
-		return $redirect_url;
406
-
407
-	}
408
-
409
-	/**
410
-	 * Returns an array of payment forms table columns.
411
-	 */
412
-	public static function payment_form_columns( $columns ) {
413
-
414
-		$columns = array(
415
-			'cb'        => $columns['cb'],
416
-			'title'     => __( 'Name', 'invoicing' ),
417
-			'shortcode' => __( 'Shortcode', 'invoicing' ),
418
-			'earnings'  => __( 'Revenue', 'invoicing' ),
419
-			'refunds'   => __( 'Refunded', 'invoicing' ),
420
-			'items'     => __( 'Items', 'invoicing' ),
421
-			'date'      => __( 'Date', 'invoicing' ),
422
-		);
423
-
424
-		return apply_filters( 'wpi_payment_form_table_columns', $columns );
425
-
426
-	}
427
-
428
-	/**
429
-	 * Displays payment form table columns.
430
-	 */
431
-	public static function display_payment_form_columns( $column_name, $post_id ) {
432
-
433
-		// Retrieve the payment form.
434
-		$form = new GetPaid_Payment_Form( $post_id );
435
-
436
-		switch ( $column_name ) {
437
-
438
-			case 'earnings':
439
-				echo wp_kses_post( wpinv_price( $form->get_earned() ) );
440
-				break;
441
-
442
-			case 'refunds':
443
-				echo wp_kses_post( wpinv_price( $form->get_refunded() ) );
444
-				break;
445
-
446
-			case 'refunds':
447
-				echo wp_kses_post( wpinv_price( $form->get_refunded() ) );
448
-				break;
449
-
450
-			case 'shortcode':
451
-				if ( $form->is_default() ) {
452
-					echo '&mdash;';
453
-				} else {
454
-					echo '<input onClick="this.select()" type="text" value="[getpaid form=' . esc_attr( $form->get_id() ) . ']" style="width: 100%;" readonly/>';
455
-				}
456
-
457
-				break;
237
+    }
238
+
239
+    /**
240
+     * Returns an array of invoice table columns.
241
+     */
242
+    public static function invoice_columns( $columns ) {
243
+
244
+        $columns = array(
245
+            'cb'           => $columns['cb'],
246
+            'number'       => __( 'Invoice', 'invoicing' ),
247
+            'customer'     => __( 'Customer', 'invoicing' ),
248
+            'invoice_date' => __( 'Created', 'invoicing' ),
249
+            'payment_date' => __( 'Completed', 'invoicing' ),
250
+            'amount'       => __( 'Amount', 'invoicing' ),
251
+            'recurring'    => __( 'Recurring', 'invoicing' ),
252
+            'status'       => __( 'Status', 'invoicing' ),
253
+        );
254
+
255
+        return apply_filters( 'wpi_invoice_table_columns', $columns );
256
+    }
257
+
258
+    /**
259
+     * Displays invoice table columns.
260
+     */
261
+    public static function display_invoice_columns( $column_name, $post_id ) {
262
+
263
+        $invoice = new WPInv_Invoice( $post_id );
264
+
265
+        switch ( $column_name ) {
266
+
267
+            case 'invoice_date':
268
+                $date_time = esc_attr( $invoice->get_created_date() );
269
+                $date      = esc_html( getpaid_format_date_value( $date_time, '&mdash;', true ) );
270
+                echo wp_kses_post( "<span title='$date_time'>$date</span>" );
271
+                break;
272
+
273
+            case 'payment_date':
274
+                if ( $invoice->is_paid() ) {
275
+                    $date_time = esc_attr( $invoice->get_completed_date() );
276
+                    $date      = esc_html( getpaid_format_date_value( $date_time, '&mdash;', true ) );
277
+                    echo wp_kses_post( "<span title='$date_time'>$date</span>" );
278
+                } else {
279
+                    echo '&mdash;';
280
+                }
281
+
282
+                break;
283
+
284
+            case 'amount':
285
+                $amount = $invoice->get_total();
286
+                $formated_amount = wp_kses_post( wpinv_price( $amount, $invoice->get_currency() ) );
287
+
288
+                if ( $invoice->is_refunded() ) {
289
+                    $refunded_amount = wpinv_price( 0, $invoice->get_currency() );
290
+                    echo wp_kses_post( "<del>$formated_amount</del>&nbsp;<ins>$refunded_amount</ins>" );
291
+                } else {
292
+
293
+                    $discount = $invoice->get_total_discount();
294
+
295
+                    if ( ! empty( $discount ) ) {
296
+                        $new_amount = wpinv_price( $amount + $discount, $invoice->get_currency() );
297
+                        echo wp_kses_post( "<del>$new_amount</del>&nbsp;<ins>$formated_amount</ins>" );
298
+                    } else {
299
+                        echo wp_kses_post( $formated_amount );
300
+                    }
301
+                }
302
+
303
+                break;
304
+
305
+            case 'status':
306
+                $status       = esc_html( $invoice->get_status() );
307
+                $status_label = esc_html( $invoice->get_status_nicename() );
308
+
309
+                // If it is paid, show the gateway title.
310
+                if ( $invoice->is_paid() ) {
311
+                    $gateway = esc_html( $invoice->get_gateway_title() );
312
+                    $gateway = wp_sprintf( esc_attr__( 'Paid via %s', 'invoicing' ), esc_html( $gateway ) );
313
+
314
+                    echo wp_kses_post( "<mark class='wpi-help-tip getpaid-invoice-status $status' title='$gateway'><span>$status_label</span></mark>" );
315
+                } else {
316
+                    echo wp_kses_post( "<mark class='getpaid-invoice-status $status'><span>$status_label</span></mark>" );
317
+                }
318
+
319
+                // If it is not paid, display the overdue and view status.
320
+                if ( ! $invoice->is_paid() && ! $invoice->is_refunded() ) {
321
+
322
+                    // Invoice view status.
323
+                    if ( wpinv_is_invoice_viewed( $invoice->get_id() ) ) {
324
+                        echo '&nbsp;&nbsp;<i class="fa fa-eye wpi-help-tip" title="' . esc_attr__( 'Viewed by Customer', 'invoicing' ) . '"></i>';
325
+                    } else {
326
+                        echo '&nbsp;&nbsp;<i class="fa fa-eye-slash wpi-help-tip" title="' . esc_attr__( 'Not Viewed by Customer', 'invoicing' ) . '"></i>';
327
+                    }
328
+
329
+                    // Display the overview status.
330
+                    if ( wpinv_get_option( 'overdue_active' ) ) {
331
+                        $due_date = $invoice->get_due_date();
332
+                        $fomatted = getpaid_format_date( $due_date );
333
+
334
+                        if ( ! empty( $fomatted ) ) {
335
+                            $date = wp_sprintf(
336
+                                // translators: %s is the due date.
337
+                                __( 'Due %s', 'invoicing' ),
338
+                                $fomatted
339
+                            );
340
+                            echo wp_kses_post( "<p class='description' style='color: #888;' title='$due_date'>$fomatted</p>" );
341
+                        }
342
+                    }
343
+                }
344
+
345
+                break;
346
+
347
+            case 'recurring':
348
+                if ( $invoice->is_recurring() ) {
349
+                    echo '<i class="fa fa-check" style="color:#43850a;"></i>';
350
+                } else {
351
+                    echo '<i class="fa fa-times" style="color:#616161;"></i>';
352
+                }
353
+                break;
354
+
355
+            case 'number':
356
+                $edit_link       = esc_url( get_edit_post_link( $invoice->get_id() ) );
357
+                $invoice_number  = esc_html( $invoice->get_number() );
358
+                $invoice_details = esc_attr__( 'View Invoice Details', 'invoicing' );
359
+
360
+                echo wp_kses_post( "<a href='$edit_link' title='$invoice_details'><strong>$invoice_number</strong></a>" );
361
+
362
+                do_action( 'getpaid_admin_table_invoice_number_column', $invoice );
363
+                break;
364
+
365
+            case 'customer':
366
+                $customer_name = $invoice->get_user_full_name();
367
+
368
+                if ( empty( $customer_name ) ) {
369
+                    $customer_name = $invoice->get_email();
370
+                }
371
+
372
+                if ( ! empty( $customer_name ) ) {
373
+                    $customer_details = esc_attr__( 'View Customer Details', 'invoicing' );
374
+                    $view_link        = esc_url( add_query_arg( 'user_id', $invoice->get_user_id(), admin_url( 'user-edit.php' ) ) );
375
+                    echo wp_kses_post( "<a href='$view_link' title='$customer_details'><span>$customer_name</span></a>" );
376
+                } else {
377
+                    echo '<div>&mdash;</div>';
378
+                }
379
+
380
+                break;
458 381
 
459
-			case 'items':
460
-				$items = $form->get_items();
461
-
462
-				if ( $form->is_default() || empty( $items ) ) {
463
-					echo '&mdash;';
464
-					return;
465
-				}
466
-
467
-				$_items = array();
468
-
469
-				foreach ( $items as $item ) {
470
-					$url = $item->get_edit_url();
471
-
472
-					if ( empty( $url ) ) {
473
-						$_items[] = esc_html( $item->get_name() );
474
-					} else {
475
-						$_items[] = sprintf(
476
-							'<a href="%s">%s</a>',
477
-							esc_url( $url ),
478
-							esc_html( $item->get_name() )
479
-						);
480
-					}
382
+        }
383
+
384
+    }
385
+
386
+    /**
387
+     * Displays invoice bulk actions.
388
+     */
389
+    public static function invoice_bulk_actions( $actions ) {
390
+        $actions['resend-invoice'] = __( 'Send to Customer', 'invoicing' );
391
+        return $actions;
392
+    }
393
+
394
+    /**
395
+     * Processes invoice bulk actions.
396
+     */
397
+    public static function handle_invoice_bulk_actions( $redirect_url, $action, $post_ids ) {
398
+
399
+        if ( 'resend-invoice' === $action ) {
400
+            foreach ( $post_ids as $post_id ) {
401
+                getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $post_id ), true );
402
+            }
403
+        }
404
+
405
+        return $redirect_url;
406
+
407
+    }
408
+
409
+    /**
410
+     * Returns an array of payment forms table columns.
411
+     */
412
+    public static function payment_form_columns( $columns ) {
413
+
414
+        $columns = array(
415
+            'cb'        => $columns['cb'],
416
+            'title'     => __( 'Name', 'invoicing' ),
417
+            'shortcode' => __( 'Shortcode', 'invoicing' ),
418
+            'earnings'  => __( 'Revenue', 'invoicing' ),
419
+            'refunds'   => __( 'Refunded', 'invoicing' ),
420
+            'items'     => __( 'Items', 'invoicing' ),
421
+            'date'      => __( 'Date', 'invoicing' ),
422
+        );
423
+
424
+        return apply_filters( 'wpi_payment_form_table_columns', $columns );
425
+
426
+    }
427
+
428
+    /**
429
+     * Displays payment form table columns.
430
+     */
431
+    public static function display_payment_form_columns( $column_name, $post_id ) {
432
+
433
+        // Retrieve the payment form.
434
+        $form = new GetPaid_Payment_Form( $post_id );
435
+
436
+        switch ( $column_name ) {
437
+
438
+            case 'earnings':
439
+                echo wp_kses_post( wpinv_price( $form->get_earned() ) );
440
+                break;
441
+
442
+            case 'refunds':
443
+                echo wp_kses_post( wpinv_price( $form->get_refunded() ) );
444
+                break;
445
+
446
+            case 'refunds':
447
+                echo wp_kses_post( wpinv_price( $form->get_refunded() ) );
448
+                break;
449
+
450
+            case 'shortcode':
451
+                if ( $form->is_default() ) {
452
+                    echo '&mdash;';
453
+                } else {
454
+                    echo '<input onClick="this.select()" type="text" value="[getpaid form=' . esc_attr( $form->get_id() ) . ']" style="width: 100%;" readonly/>';
455
+                }
456
+
457
+                break;
458
+
459
+            case 'items':
460
+                $items = $form->get_items();
461
+
462
+                if ( $form->is_default() || empty( $items ) ) {
463
+                    echo '&mdash;';
464
+                    return;
465
+                }
466
+
467
+                $_items = array();
468
+
469
+                foreach ( $items as $item ) {
470
+                    $url = $item->get_edit_url();
471
+
472
+                    if ( empty( $url ) ) {
473
+                        $_items[] = esc_html( $item->get_name() );
474
+                    } else {
475
+                        $_items[] = sprintf(
476
+                            '<a href="%s">%s</a>',
477
+                            esc_url( $url ),
478
+                            esc_html( $item->get_name() )
479
+                        );
480
+                    }
481 481
 }
482 482
 
483
-				echo wp_kses_post( implode( '<br>', $_items ) );
483
+                echo wp_kses_post( implode( '<br>', $_items ) );
484
+
485
+                break;
486
+
487
+        }
488
+
489
+    }
490
+
491
+    /**
492
+     * Filters post states.
493
+     */
494
+    public static function filter_payment_form_state( $post_states, $post ) {
495
+
496
+        if ( 'wpi_payment_form' === $post->post_type && wpinv_get_default_payment_form() === $post->ID ) {
497
+            $post_states['default_form'] = __( 'Default Payment Form', 'invoicing' );
498
+        }
499
+
500
+        return $post_states;
501
+
502
+    }
503
+
504
+    /**
505
+     * Returns an array of coupon table columns.
506
+     */
507
+    public static function discount_columns( $columns ) {
508
+
509
+        $columns = array(
510
+            'cb'          => $columns['cb'],
511
+            'title'       => __( 'Name', 'invoicing' ),
512
+            'code'        => __( 'Code', 'invoicing' ),
513
+            'amount'      => __( 'Amount', 'invoicing' ),
514
+            'usage'       => __( 'Usage / Limit', 'invoicing' ),
515
+            'start_date'  => __( 'Start Date', 'invoicing' ),
516
+            'expiry_date' => __( 'Expiry Date', 'invoicing' ),
517
+        );
518
+
519
+        return apply_filters( 'wpi_discount_table_columns', $columns );
520
+    }
484 521
 
485
-				break;
522
+    /**
523
+     * Filters post states.
524
+     */
525
+    public static function filter_discount_state( $post_states, $post ) {
486 526
 
487
-		}
527
+        if ( 'wpi_discount' === $post->post_type ) {
488 528
 
489
-	}
529
+            $discount = new WPInv_Discount( $post );
490 530
 
491
-	/**
492
-	 * Filters post states.
493
-	 */
494
-	public static function filter_payment_form_state( $post_states, $post ) {
531
+            $status = $discount->is_expired() ? 'expired' : $discount->get_status();
495 532
 
496
-		if ( 'wpi_payment_form' === $post->post_type && wpinv_get_default_payment_form() === $post->ID ) {
497
-			$post_states['default_form'] = __( 'Default Payment Form', 'invoicing' );
498
-		}
533
+            if ( 'publish' !== $status ) {
534
+                return array(
535
+                    'discount_status' => wpinv_discount_status( $status ),
536
+                );
537
+            }
538
+
539
+            return array();
540
+
541
+        }
542
+
543
+        return $post_states;
499 544
 
500
-		return $post_states;
545
+    }
501 546
 
502
-	}
547
+    /**
548
+     * Returns an array of items table columns.
549
+     */
550
+    public static function item_columns( $columns ) {
551
+
552
+        $columns = array(
553
+            'cb'        => $columns['cb'],
554
+            'title'     => __( 'Name', 'invoicing' ),
555
+            'price'     => __( 'Price', 'invoicing' ),
556
+            'vat_rule'  => __( 'Tax Rule', 'invoicing' ),
557
+            'vat_class' => __( 'Tax Class', 'invoicing' ),
558
+            'type'      => __( 'Type', 'invoicing' ),
559
+            'shortcode' => __( 'Shortcode', 'invoicing' ),
560
+        );
561
+
562
+        if ( ! wpinv_use_taxes() ) {
563
+            unset( $columns['vat_rule'] );
564
+            unset( $columns['vat_class'] );
565
+        }
503 566
 
504
-	/**
505
-	 * Returns an array of coupon table columns.
506
-	 */
507
-	public static function discount_columns( $columns ) {
567
+        return apply_filters( 'wpi_item_table_columns', $columns );
568
+    }
508 569
 
509
-		$columns = array(
510
-			'cb'          => $columns['cb'],
511
-			'title'       => __( 'Name', 'invoicing' ),
512
-			'code'        => __( 'Code', 'invoicing' ),
513
-			'amount'      => __( 'Amount', 'invoicing' ),
514
-			'usage'       => __( 'Usage / Limit', 'invoicing' ),
515
-			'start_date'  => __( 'Start Date', 'invoicing' ),
516
-			'expiry_date' => __( 'Expiry Date', 'invoicing' ),
517
-		);
570
+    /**
571
+     * Returns an array of sortable items table columns.
572
+     */
573
+    public static function sortable_item_columns( $columns ) {
574
+
575
+        return array_merge(
576
+            $columns,
577
+            array(
578
+                'price'     => 'price',
579
+                'vat_rule'  => 'vat_rule',
580
+                'vat_class' => 'vat_class',
581
+                'type'      => 'type',
582
+            )
583
+        );
518 584
 
519
-		return apply_filters( 'wpi_discount_table_columns', $columns );
520
-	}
585
+    }
521 586
 
522
-	/**
523
-	 * Filters post states.
524
-	 */
525
-	public static function filter_discount_state( $post_states, $post ) {
587
+    /**
588
+     * Displays items table columns.
589
+     */
590
+    public static function display_item_columns( $column_name, $post_id ) {
526 591
 
527
-		if ( 'wpi_discount' === $post->post_type ) {
592
+        $item = new WPInv_Item( $post_id );
528 593
 
529
-			$discount = new WPInv_Discount( $post );
594
+        switch ( $column_name ) {
530 595
 
531
-			$status = $discount->is_expired() ? 'expired' : $discount->get_status();
596
+            case 'price':
597
+                if ( ! $item->is_recurring() ) {
598
+                    echo wp_kses_post( $item->get_the_price() );
599
+                    break;
600
+                }
532 601
 
533
-			if ( 'publish' !== $status ) {
534
-				return array(
535
-					'discount_status' => wpinv_discount_status( $status ),
536
-				);
537
-			}
602
+                $price = wp_sprintf(
603
+                    __( '%1$s / %2$s', 'invoicing' ),
604
+                    $item->get_the_price(),
605
+                    getpaid_get_subscription_period_label( $item->get_recurring_period(), $item->get_recurring_interval(), '' )
606
+                );
538 607
 
539
-			return array();
608
+                if ( $item->get_the_price() == $item->get_the_initial_price() ) {
609
+                    echo wp_kses_post( $price );
610
+                    break;
611
+                }
540 612
 
541
-		}
613
+                echo wp_kses_post( $item->get_the_initial_price() );
542 614
 
543
-		return $post_states;
615
+                echo '<span class="meta">' . wp_sprintf( esc_html__( 'then %s', 'invoicing' ), wp_kses_post( $price ) ) . '</span>';
616
+                break;
544 617
 
545
-	}
618
+            case 'vat_rule':
619
+                echo wp_kses_post( getpaid_get_tax_rule_label( $item->get_vat_rule() ) );
620
+                break;
546 621
 
547
-	/**
548
-	 * Returns an array of items table columns.
549
-	 */
550
-	public static function item_columns( $columns ) {
622
+            case 'vat_class':
623
+                echo wp_kses_post( getpaid_get_tax_class_label( $item->get_vat_class() ) );
624
+                break;
551 625
 
552
-		$columns = array(
553
-			'cb'        => $columns['cb'],
554
-			'title'     => __( 'Name', 'invoicing' ),
555
-			'price'     => __( 'Price', 'invoicing' ),
556
-			'vat_rule'  => __( 'Tax Rule', 'invoicing' ),
557
-			'vat_class' => __( 'Tax Class', 'invoicing' ),
558
-			'type'      => __( 'Type', 'invoicing' ),
559
-			'shortcode' => __( 'Shortcode', 'invoicing' ),
560
-		);
626
+            case 'shortcode':
627
+                if ( $item->is_type( array( '', 'fee', 'custom' ) ) ) {
628
+                    echo '<input onClick="this.select()" type="text" value="[getpaid item=' . esc_attr( $item->get_id() ) . ' button=\'Buy Now\']" style="width: 100%;" readonly/>';
629
+                } else {
630
+                    echo '&mdash;';
631
+                }
561 632
 
562
-		if ( ! wpinv_use_taxes() ) {
563
-			unset( $columns['vat_rule'] );
564
-			unset( $columns['vat_class'] );
565
-		}
633
+                break;
566 634
 
567
-		return apply_filters( 'wpi_item_table_columns', $columns );
568
-	}
635
+            case 'type':
636
+                echo wp_kses_post( wpinv_item_type( $item->get_id() ) . '<span class="meta">' . $item->get_custom_singular_name() . '</span>' );
637
+                break;
569 638
 
570
-	/**
571
-	 * Returns an array of sortable items table columns.
572
-	 */
573
-	public static function sortable_item_columns( $columns ) {
574
-
575
-		return array_merge(
576
-			$columns,
577
-			array(
578
-				'price'     => 'price',
579
-				'vat_rule'  => 'vat_rule',
580
-				'vat_class' => 'vat_class',
581
-				'type'      => 'type',
582
-			)
583
-		);
584
-
585
-	}
586
-
587
-	/**
588
-	 * Displays items table columns.
589
-	 */
590
-	public static function display_item_columns( $column_name, $post_id ) {
591
-
592
-		$item = new WPInv_Item( $post_id );
593
-
594
-		switch ( $column_name ) {
595
-
596
-			case 'price':
597
-				if ( ! $item->is_recurring() ) {
598
-					echo wp_kses_post( $item->get_the_price() );
599
-					break;
600
-				}
601
-
602
-				$price = wp_sprintf(
603
-					__( '%1$s / %2$s', 'invoicing' ),
604
-					$item->get_the_price(),
605
-					getpaid_get_subscription_period_label( $item->get_recurring_period(), $item->get_recurring_interval(), '' )
606
-				);
607
-
608
-				if ( $item->get_the_price() == $item->get_the_initial_price() ) {
609
-					echo wp_kses_post( $price );
610
-					break;
611
-				}
612
-
613
-				echo wp_kses_post( $item->get_the_initial_price() );
614
-
615
-				echo '<span class="meta">' . wp_sprintf( esc_html__( 'then %s', 'invoicing' ), wp_kses_post( $price ) ) . '</span>';
616
-				break;
617
-
618
-			case 'vat_rule':
619
-				echo wp_kses_post( getpaid_get_tax_rule_label( $item->get_vat_rule() ) );
620
-				break;
621
-
622
-			case 'vat_class':
623
-				echo wp_kses_post( getpaid_get_tax_class_label( $item->get_vat_class() ) );
624
-				break;
625
-
626
-			case 'shortcode':
627
-				if ( $item->is_type( array( '', 'fee', 'custom' ) ) ) {
628
-					echo '<input onClick="this.select()" type="text" value="[getpaid item=' . esc_attr( $item->get_id() ) . ' button=\'Buy Now\']" style="width: 100%;" readonly/>';
629
-				} else {
630
-					echo '&mdash;';
631
-				}
632
-
633
-				break;
634
-
635
-			case 'type':
636
-				echo wp_kses_post( wpinv_item_type( $item->get_id() ) . '<span class="meta">' . $item->get_custom_singular_name() . '</span>' );
637
-				break;
638
-
639
-		}
640
-
641
-	}
642
-
643
-	/**
644
-	 * Lets users filter items using taxes.
645
-	 */
646
-	public static function add_item_filters( $post_type ) {
647
-
648
-		// Abort if we're not dealing with items.
649
-		if ( 'wpi_item' !== $post_type ) {
650
-			return;
651
-		}
652
-
653
-		// Filter by vat rules.
654
-		if ( wpinv_use_taxes() ) {
655
-
656
-			// Sanitize selected vat rule.
657
-			$vat_rule   = '';
658
-			$vat_rules  = getpaid_get_tax_rules();
659
-			if ( isset( $_GET['vat_rule'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
660
-				$vat_rule   = sanitize_text_field( $_GET['vat_rule'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
661
-			}
662
-
663
-			// Filter by VAT rule.
664
-			wpinv_html_select(
665
-				array(
666
-					'options'          => array_merge(
667
-						array(
668
-							'' => __( 'All Tax Rules', 'invoicing' ),
669
-						),
670
-						$vat_rules
671
-					),
672
-					'name'             => 'vat_rule',
673
-					'id'               => 'vat_rule',
674
-					'selected'         => in_array( $vat_rule, array_keys( $vat_rules ), true ) ? $vat_rule : '',
675
-					'show_option_all'  => false,
676
-					'show_option_none' => false,
677
-				)
678
-			);
679
-
680
-			// Filter by VAT class.
681
-
682
-			// Sanitize selected vat rule.
683
-			$vat_class   = '';
684
-			$vat_classes = getpaid_get_tax_classes();
685
-			if ( isset( $_GET['vat_class'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
686
-				$vat_class   = sanitize_text_field( $_GET['vat_class'] );  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
687
-			}
688
-
689
-			wpinv_html_select(
690
-				array(
691
-					'options'          => array_merge(
692
-						array(
693
-							'' => __( 'All Tax Classes', 'invoicing' ),
694
-						),
695
-						$vat_classes
696
-					),
697
-					'name'             => 'vat_class',
698
-					'id'               => 'vat_class',
699
-					'selected'         => in_array( $vat_class, array_keys( $vat_classes ), true ) ? $vat_class : '',
700
-					'show_option_all'  => false,
701
-					'show_option_none' => false,
702
-				)
703
-			);
704
-
705
-		}
706
-
707
-		// Filter by item type.
708
-		$type   = '';
709
-		if ( isset( $_GET['type'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
710
-			$type   = sanitize_text_field( $_GET['type'] );  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
711
-		}
712
-
713
-		wpinv_html_select(
714
-			array(
715
-				'options'          => array_merge(
716
-					array(
717
-						'' => __( 'All item types', 'invoicing' ),
718
-					),
719
-					wpinv_get_item_types()
720
-				),
721
-				'name'             => 'type',
722
-				'id'               => 'type',
723
-				'selected'         => in_array( $type, wpinv_item_types(), true ) ? $type : '',
724
-				'show_option_all'  => false,
725
-				'show_option_none' => false,
726
-			)
727
-		);
728
-
729
-	}
730
-
731
-	/**
732
-	 * Filters the item query.
733
-	 */
734
-	public static function filter_item_query( $query ) {
735
-
736
-		// modify the query only if it admin and main query.
737
-		if ( ! ( is_admin() && $query->is_main_query() ) ) {
738
-			return $query;
739
-		}
740
-
741
-		// we want to modify the query for our items.
742
-		if ( empty( $query->query['post_type'] ) || 'wpi_item' !== $query->query['post_type'] ) {
743
-			return $query;
744
-		}
745
-
746
-		if ( empty( $query->query_vars['meta_query'] ) ) {
747
-			$query->query_vars['meta_query'] = array();
748
-		}
749
-
750
-		// Filter vat rule type
639
+        }
640
+
641
+    }
642
+
643
+    /**
644
+     * Lets users filter items using taxes.
645
+     */
646
+    public static function add_item_filters( $post_type ) {
647
+
648
+        // Abort if we're not dealing with items.
649
+        if ( 'wpi_item' !== $post_type ) {
650
+            return;
651
+        }
652
+
653
+        // Filter by vat rules.
654
+        if ( wpinv_use_taxes() ) {
655
+
656
+            // Sanitize selected vat rule.
657
+            $vat_rule   = '';
658
+            $vat_rules  = getpaid_get_tax_rules();
659
+            if ( isset( $_GET['vat_rule'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
660
+                $vat_rule   = sanitize_text_field( $_GET['vat_rule'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
661
+            }
662
+
663
+            // Filter by VAT rule.
664
+            wpinv_html_select(
665
+                array(
666
+                    'options'          => array_merge(
667
+                        array(
668
+                            '' => __( 'All Tax Rules', 'invoicing' ),
669
+                        ),
670
+                        $vat_rules
671
+                    ),
672
+                    'name'             => 'vat_rule',
673
+                    'id'               => 'vat_rule',
674
+                    'selected'         => in_array( $vat_rule, array_keys( $vat_rules ), true ) ? $vat_rule : '',
675
+                    'show_option_all'  => false,
676
+                    'show_option_none' => false,
677
+                )
678
+            );
679
+
680
+            // Filter by VAT class.
681
+
682
+            // Sanitize selected vat rule.
683
+            $vat_class   = '';
684
+            $vat_classes = getpaid_get_tax_classes();
685
+            if ( isset( $_GET['vat_class'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
686
+                $vat_class   = sanitize_text_field( $_GET['vat_class'] );  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
687
+            }
688
+
689
+            wpinv_html_select(
690
+                array(
691
+                    'options'          => array_merge(
692
+                        array(
693
+                            '' => __( 'All Tax Classes', 'invoicing' ),
694
+                        ),
695
+                        $vat_classes
696
+                    ),
697
+                    'name'             => 'vat_class',
698
+                    'id'               => 'vat_class',
699
+                    'selected'         => in_array( $vat_class, array_keys( $vat_classes ), true ) ? $vat_class : '',
700
+                    'show_option_all'  => false,
701
+                    'show_option_none' => false,
702
+                )
703
+            );
704
+
705
+        }
706
+
707
+        // Filter by item type.
708
+        $type   = '';
709
+        if ( isset( $_GET['type'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
710
+            $type   = sanitize_text_field( $_GET['type'] );  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
711
+        }
712
+
713
+        wpinv_html_select(
714
+            array(
715
+                'options'          => array_merge(
716
+                    array(
717
+                        '' => __( 'All item types', 'invoicing' ),
718
+                    ),
719
+                    wpinv_get_item_types()
720
+                ),
721
+                'name'             => 'type',
722
+                'id'               => 'type',
723
+                'selected'         => in_array( $type, wpinv_item_types(), true ) ? $type : '',
724
+                'show_option_all'  => false,
725
+                'show_option_none' => false,
726
+            )
727
+        );
728
+
729
+    }
730
+
731
+    /**
732
+     * Filters the item query.
733
+     */
734
+    public static function filter_item_query( $query ) {
735
+
736
+        // modify the query only if it admin and main query.
737
+        if ( ! ( is_admin() && $query->is_main_query() ) ) {
738
+            return $query;
739
+        }
740
+
741
+        // we want to modify the query for our items.
742
+        if ( empty( $query->query['post_type'] ) || 'wpi_item' !== $query->query['post_type'] ) {
743
+            return $query;
744
+        }
745
+
746
+        if ( empty( $query->query_vars['meta_query'] ) ) {
747
+            $query->query_vars['meta_query'] = array();
748
+        }
749
+
750
+        // Filter vat rule type
751 751
         if ( ! empty( $_GET['vat_rule'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
752 752
             $query->query_vars['meta_query'][] = array(
753 753
                 'key'     => '_wpinv_vat_rule',
@@ -772,101 +772,101 @@  discard block
 block discarded – undo
772 772
                 'value'   => sanitize_text_field( $_GET['type'] ), // phpcs:ignore WordPress.Security.NonceVerification.Recommended
773 773
                 'compare' => '=',
774 774
             );
775
-		}
776
-
777
-		$query->query_vars['meta_query'][] = array(
778
-			'key'     => '_wpinv_one_time',
779
-			'compare' => 'NOT EXISTS',
780
-		);
781
-	}
782
-
783
-	/**
784
-	 * Reorders items.
785
-	 */
786
-	public static function reorder_items( $vars ) {
787
-		global $typenow;
788
-
789
-		if ( 'wpi_item' !== $typenow || empty( $vars['orderby'] ) ) {
790
-			return $vars;
791
-		}
792
-
793
-		// By item type.
794
-		if ( 'type' === $vars['orderby'] ) {
795
-			return array_merge(
796
-				$vars,
797
-				array(
798
-					'meta_key' => '_wpinv_type',
799
-					'orderby'  => 'meta_value',
800
-				)
801
-			);
802
-		}
803
-
804
-		// By vat class.
805
-		if ( 'vat_class' === $vars['orderby'] ) {
806
-			return array_merge(
807
-				$vars,
808
-				array(
809
-					'meta_key' => '_wpinv_vat_class',
810
-					'orderby'  => 'meta_value',
811
-				)
812
-			);
813
-		}
814
-
815
-		// By vat rule.
816
-		if ( 'vat_rule' === $vars['orderby'] ) {
817
-			return array_merge(
818
-				$vars,
819
-				array(
820
-					'meta_key' => '_wpinv_vat_rule',
821
-					'orderby'  => 'meta_value',
822
-				)
823
-			);
824
-		}
825
-
826
-		// By price.
827
-		if ( 'price' === $vars['orderby'] ) {
828
-			return array_merge(
829
-				$vars,
830
-				array(
831
-					'meta_key' => '_wpinv_price',
832
-					'orderby'  => 'meta_value_num',
833
-				)
834
-			);
835
-		}
836
-
837
-		return $vars;
838
-
839
-	}
840
-
841
-	/**
842
-	 * Fired when deleting a post.
843
-	 */
844
-	public static function delete_post( $post_id ) {
845
-
846
-		switch ( get_post_type( $post_id ) ) {
847
-
848
-			case 'wpi_item':
849
-				do_action( 'getpaid_before_delete_item', new WPInv_Item( $post_id ) );
850
-				break;
851
-
852
-			case 'wpi_payment_form':
853
-				do_action( 'getpaid_before_delete_payment_form', new GetPaid_Payment_Form( $post_id ) );
854
-				break;
855
-
856
-			case 'wpi_discount':
857
-				do_action( 'getpaid_before_delete_discount', new WPInv_Discount( $post_id ) );
858
-				break;
859
-
860
-			case 'wpi_invoice':
861
-				$invoice = new WPInv_Invoice( $post_id );
862
-				do_action( 'getpaid_before_delete_invoice', $invoice );
863
-				$invoice->get_data_store()->delete_items( $invoice );
864
-				$invoice->get_data_store()->delete_special_fields( $invoice );
865
-				break;
866
-		}
867
-	}
868
-
869
-	/**
775
+        }
776
+
777
+        $query->query_vars['meta_query'][] = array(
778
+            'key'     => '_wpinv_one_time',
779
+            'compare' => 'NOT EXISTS',
780
+        );
781
+    }
782
+
783
+    /**
784
+     * Reorders items.
785
+     */
786
+    public static function reorder_items( $vars ) {
787
+        global $typenow;
788
+
789
+        if ( 'wpi_item' !== $typenow || empty( $vars['orderby'] ) ) {
790
+            return $vars;
791
+        }
792
+
793
+        // By item type.
794
+        if ( 'type' === $vars['orderby'] ) {
795
+            return array_merge(
796
+                $vars,
797
+                array(
798
+                    'meta_key' => '_wpinv_type',
799
+                    'orderby'  => 'meta_value',
800
+                )
801
+            );
802
+        }
803
+
804
+        // By vat class.
805
+        if ( 'vat_class' === $vars['orderby'] ) {
806
+            return array_merge(
807
+                $vars,
808
+                array(
809
+                    'meta_key' => '_wpinv_vat_class',
810
+                    'orderby'  => 'meta_value',
811
+                )
812
+            );
813
+        }
814
+
815
+        // By vat rule.
816
+        if ( 'vat_rule' === $vars['orderby'] ) {
817
+            return array_merge(
818
+                $vars,
819
+                array(
820
+                    'meta_key' => '_wpinv_vat_rule',
821
+                    'orderby'  => 'meta_value',
822
+                )
823
+            );
824
+        }
825
+
826
+        // By price.
827
+        if ( 'price' === $vars['orderby'] ) {
828
+            return array_merge(
829
+                $vars,
830
+                array(
831
+                    'meta_key' => '_wpinv_price',
832
+                    'orderby'  => 'meta_value_num',
833
+                )
834
+            );
835
+        }
836
+
837
+        return $vars;
838
+
839
+    }
840
+
841
+    /**
842
+     * Fired when deleting a post.
843
+     */
844
+    public static function delete_post( $post_id ) {
845
+
846
+        switch ( get_post_type( $post_id ) ) {
847
+
848
+            case 'wpi_item':
849
+                do_action( 'getpaid_before_delete_item', new WPInv_Item( $post_id ) );
850
+                break;
851
+
852
+            case 'wpi_payment_form':
853
+                do_action( 'getpaid_before_delete_payment_form', new GetPaid_Payment_Form( $post_id ) );
854
+                break;
855
+
856
+            case 'wpi_discount':
857
+                do_action( 'getpaid_before_delete_discount', new WPInv_Discount( $post_id ) );
858
+                break;
859
+
860
+            case 'wpi_invoice':
861
+                $invoice = new WPInv_Invoice( $post_id );
862
+                do_action( 'getpaid_before_delete_invoice', $invoice );
863
+                $invoice->get_data_store()->delete_items( $invoice );
864
+                $invoice->get_data_store()->delete_special_fields( $invoice );
865
+                break;
866
+        }
867
+    }
868
+
869
+    /**
870 870
      * Add a post display state for special GetPaid pages in the page list table.
871 871
      *
872 872
      * @param array   $post_states An array of post display states.
@@ -880,21 +880,21 @@  discard block
 block discarded – undo
880 880
             $post_states['getpaid_success_page'] = __( 'GetPaid Receipt Page', 'invoicing' );
881 881
         }
882 882
 
883
-		foreach ( getpaid_get_invoice_post_types() as $post_type => $label ) {
883
+        foreach ( getpaid_get_invoice_post_types() as $post_type => $label ) {
884 884
 
885
-			if ( wpinv_get_option( "{$post_type}_history_page", 0 ) == $post->ID ) {
886
-				$post_states[ "getpaid_{$post_type}_history_page" ] = sprintf(
887
-					__( 'GetPaid %s History Page', 'invoicing' ),
888
-					$label
889
-				);
890
-			}
885
+            if ( wpinv_get_option( "{$post_type}_history_page", 0 ) == $post->ID ) {
886
+                $post_states[ "getpaid_{$post_type}_history_page" ] = sprintf(
887
+                    __( 'GetPaid %s History Page', 'invoicing' ),
888
+                    $label
889
+                );
890
+            }
891 891
 }
892 892
 
893
-		if ( wpinv_get_option( 'invoice_subscription_page', 0 ) == $post->ID ) {
893
+        if ( wpinv_get_option( 'invoice_subscription_page', 0 ) == $post->ID ) {
894 894
             $post_states['getpaid_invoice_subscription_page'] = __( 'GetPaid Subscription Page', 'invoicing' );
895 895
         }
896 896
 
897
-		if ( wpinv_get_option( 'checkout_page', 0 ) == $post->ID ) {
897
+        if ( wpinv_get_option( 'checkout_page', 0 ) == $post->ID ) {
898 898
             $post_states['getpaid_checkout_page'] = __( 'GetPaid Checkout Page', 'invoicing' );
899 899
         }
900 900
 
Please login to merge, or discard this patch.