Passed
Push — master ( a4951a...eea87a )
by Stiofan
07:14
created
includes/admin/class-getpaid-admin.php 2 patches
Indentation   +619 added lines, -619 removed lines patch added patch discarded remove patch
@@ -14,94 +14,94 @@  discard block
 block discarded – undo
14 14
 class GetPaid_Admin {
15 15
 
16 16
     /**
17
-	 * Local path to this plugins admin directory
18
-	 *
19
-	 * @var         string
20
-	 */
21
-	public $admin_path;
22
-
23
-	/**
24
-	 * Web path to this plugins admin directory
25
-	 *
26
-	 * @var         string
27
-	 */
28
-	public $admin_url;
29
-
30
-	/**
31
-	 * Reports components.
32
-	 *
33
-	 * @var GetPaid_Reports
34
-	 */
17
+     * Local path to this plugins admin directory
18
+     *
19
+     * @var         string
20
+     */
21
+    public $admin_path;
22
+
23
+    /**
24
+     * Web path to this plugins admin directory
25
+     *
26
+     * @var         string
27
+     */
28
+    public $admin_url;
29
+
30
+    /**
31
+     * Reports components.
32
+     *
33
+     * @var GetPaid_Reports
34
+     */
35 35
     public $reports;
36 36
 
37 37
     /**
38
-	 * Class constructor.
39
-	 */
40
-	public function __construct() {
38
+     * Class constructor.
39
+     */
40
+    public function __construct() {
41 41
 
42 42
         $this->admin_path  = plugin_dir_path( __FILE__ );
43
-		$this->admin_url   = plugins_url( '/', __FILE__ );
44
-		$this->reports     = new GetPaid_Reports();
43
+        $this->admin_url   = plugins_url( '/', __FILE__ );
44
+        $this->reports     = new GetPaid_Reports();
45 45
 
46 46
         if ( is_admin() ) {
47
-			$this->init_admin_hooks();
47
+            $this->init_admin_hooks();
48 48
         }
49 49
 
50 50
     }
51 51
 
52 52
     /**
53
-	 * Init action and filter hooks
54
-	 *
55
-	 */
56
-	private function init_admin_hooks() {
53
+     * Init action and filter hooks
54
+     *
55
+     */
56
+    private function init_admin_hooks() {
57 57
         add_action( 'admin_enqueue_scripts', array( $this, 'enqeue_scripts' ), 9 );
58 58
         add_filter( 'admin_body_class', array( $this, 'admin_body_class' ) );
59 59
         add_action( 'admin_init', array( $this, 'init_ayecode_connect_helper' ) );
60 60
         add_action( 'admin_init', array( $this, 'activation_redirect' ) );
61 61
         add_action( 'admin_init', array( $this, 'maybe_do_admin_action' ) );
62
-		add_action( 'admin_notices', array( $this, 'show_notices' ) );
63
-		add_action( 'getpaid_authenticated_admin_action_rate_plugin', array( $this, 'redirect_to_wordpress_rating_page' ) );
64
-		add_action( 'getpaid_authenticated_admin_action_duplicate_form', array( $this, 'duplicate_payment_form' ) );
65
-		add_action( 'getpaid_authenticated_admin_action_reset_form_stats', array( $this, 'reset_form_stats' ) );
66
-		add_action( 'getpaid_authenticated_admin_action_duplicate_invoice', array( $this, 'duplicate_invoice' ) );
67
-		add_action( 'getpaid_authenticated_admin_action_refund_invoice', array( $this, 'refund_invoice' ) );
68
-		add_action( 'getpaid_authenticated_admin_action_send_invoice', array( $this, 'send_customer_invoice' ) );
69
-		add_action( 'getpaid_authenticated_admin_action_send_invoice_reminder', array( $this, 'send_customer_payment_reminder' ) );
62
+        add_action( 'admin_notices', array( $this, 'show_notices' ) );
63
+        add_action( 'getpaid_authenticated_admin_action_rate_plugin', array( $this, 'redirect_to_wordpress_rating_page' ) );
64
+        add_action( 'getpaid_authenticated_admin_action_duplicate_form', array( $this, 'duplicate_payment_form' ) );
65
+        add_action( 'getpaid_authenticated_admin_action_reset_form_stats', array( $this, 'reset_form_stats' ) );
66
+        add_action( 'getpaid_authenticated_admin_action_duplicate_invoice', array( $this, 'duplicate_invoice' ) );
67
+        add_action( 'getpaid_authenticated_admin_action_refund_invoice', array( $this, 'refund_invoice' ) );
68
+        add_action( 'getpaid_authenticated_admin_action_send_invoice', array( $this, 'send_customer_invoice' ) );
69
+        add_action( 'getpaid_authenticated_admin_action_send_invoice_reminder', array( $this, 'send_customer_payment_reminder' ) );
70 70
         add_action( 'getpaid_authenticated_admin_action_reset_tax_rates', array( $this, 'admin_reset_tax_rates' ) );
71
-		add_action( 'getpaid_authenticated_admin_action_create_missing_pages', array( $this, 'admin_create_missing_pages' ) );
72
-		add_action( 'getpaid_authenticated_admin_action_refresh_permalinks', array( $this, 'admin_refresh_permalinks' ) );
73
-		add_action( 'getpaid_authenticated_admin_action_create_missing_tables', array( $this, 'admin_create_missing_tables' ) );
74
-		add_action( 'getpaid_authenticated_admin_action_migrate_old_invoices', array( $this, 'admin_migrate_old_invoices' ) );
75
-		add_action( 'getpaid_authenticated_admin_action_download_customers', array( $this, 'admin_download_customers' ) );
76
-		add_action( 'getpaid_authenticated_admin_action_recalculate_discounts', array( $this, 'admin_recalculate_discounts' ) );
77
-		add_action( 'getpaid_authenticated_admin_action_install_plugin', array( $this, 'admin_install_plugin' ) );
78
-		add_action( 'getpaid_authenticated_admin_action_connect_gateway', array( $this, 'admin_connect_gateway' ) );
79
-		add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ) );
80
-		do_action( 'getpaid_init_admin_hooks', $this );
81
-
82
-		// Setup/welcome
83
-		if ( ! empty( $_GET['page'] ) ) {
84
-			switch ( sanitize_text_field( $_GET['page'] ) ) {
85
-				case 'gp-setup':
86
-					include_once dirname( __FILE__ ) . '/class-getpaid-admin-setup-wizard.php';
87
-					break;
88
-			}
89
-		}
90
-
91
-    }
92
-
93
-    /**
94
-	 * Register admin scripts
95
-	 *
96
-	 */
97
-	public function enqeue_scripts() {
71
+        add_action( 'getpaid_authenticated_admin_action_create_missing_pages', array( $this, 'admin_create_missing_pages' ) );
72
+        add_action( 'getpaid_authenticated_admin_action_refresh_permalinks', array( $this, 'admin_refresh_permalinks' ) );
73
+        add_action( 'getpaid_authenticated_admin_action_create_missing_tables', array( $this, 'admin_create_missing_tables' ) );
74
+        add_action( 'getpaid_authenticated_admin_action_migrate_old_invoices', array( $this, 'admin_migrate_old_invoices' ) );
75
+        add_action( 'getpaid_authenticated_admin_action_download_customers', array( $this, 'admin_download_customers' ) );
76
+        add_action( 'getpaid_authenticated_admin_action_recalculate_discounts', array( $this, 'admin_recalculate_discounts' ) );
77
+        add_action( 'getpaid_authenticated_admin_action_install_plugin', array( $this, 'admin_install_plugin' ) );
78
+        add_action( 'getpaid_authenticated_admin_action_connect_gateway', array( $this, 'admin_connect_gateway' ) );
79
+        add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ) );
80
+        do_action( 'getpaid_init_admin_hooks', $this );
81
+
82
+        // Setup/welcome
83
+        if ( ! empty( $_GET['page'] ) ) {
84
+            switch ( sanitize_text_field( $_GET['page'] ) ) {
85
+                case 'gp-setup':
86
+                    include_once dirname( __FILE__ ) . '/class-getpaid-admin-setup-wizard.php';
87
+                    break;
88
+            }
89
+        }
90
+
91
+    }
92
+
93
+    /**
94
+     * Register admin scripts
95
+     *
96
+     */
97
+    public function enqeue_scripts() {
98 98
         global $current_screen, $pagenow;
99 99
 
100
-		$page    = isset( $_GET['page'] ) ? sanitize_text_field( $_GET['page'] ) : '';
101
-		$editing = $pagenow == 'post.php' || $pagenow == 'post-new.php';
100
+        $page    = isset( $_GET['page'] ) ? sanitize_text_field( $_GET['page'] ) : '';
101
+        $editing = $pagenow == 'post.php' || $pagenow == 'post-new.php';
102 102
 
103 103
         if ( ! empty( $current_screen->post_type ) ) {
104
-			$page = $current_screen->post_type;
104
+            $page = $current_screen->post_type;
105 105
         }
106 106
 
107 107
         // General styles.
@@ -122,53 +122,53 @@  discard block
 block discarded – undo
122 122
         }
123 123
 
124 124
         // Payment form scripts.
125
-		if ( 'wpi_payment_form' == $page && $editing ) {
125
+        if ( 'wpi_payment_form' == $page && $editing ) {
126 126
             $this->load_payment_form_scripts();
127 127
         }
128 128
 
129
-		if ( $page == 'wpinv-subscriptions' ) {
130
-			wp_enqueue_script( 'postbox' );
131
-		}
129
+        if ( $page == 'wpinv-subscriptions' ) {
130
+            wp_enqueue_script( 'postbox' );
131
+        }
132 132
 
133 133
     }
134 134
 
135 135
     /**
136
-	 * Returns admin js translations.
137
-	 *
138
-	 */
139
-	protected function get_admin_i18() {
136
+     * Returns admin js translations.
137
+     *
138
+     */
139
+    protected function get_admin_i18() {
140 140
         global $post;
141 141
 
142
-		$date_range = array(
143
-			'period' => isset( $_GET['date_range'] ) ? sanitize_text_field( $_GET['date_range'] ) : '7_days',
144
-		);
142
+        $date_range = array(
143
+            'period' => isset( $_GET['date_range'] ) ? sanitize_text_field( $_GET['date_range'] ) : '7_days',
144
+        );
145 145
 
146
-		if ( $date_range['period'] == 'custom' ) {
146
+        if ( $date_range['period'] == 'custom' ) {
147 147
 
148
-			if ( isset( $_GET['from'] ) ) {
149
-				$date_range['after'] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['from'] ), current_time( 'timestamp' ) ) - DAY_IN_SECONDS );
150
-			}
148
+            if ( isset( $_GET['from'] ) ) {
149
+                $date_range['after'] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['from'] ), current_time( 'timestamp' ) ) - DAY_IN_SECONDS );
150
+            }
151 151
 
152
-			if ( isset( $_GET['to'] ) ) {
153
-				$date_range['before'] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['to'] ), current_time( 'timestamp' ) ) + DAY_IN_SECONDS );
154
-			}
152
+            if ( isset( $_GET['to'] ) ) {
153
+                $date_range['before'] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['to'] ), current_time( 'timestamp' ) ) + DAY_IN_SECONDS );
154
+            }
155 155
 }
156 156
 
157 157
         $i18n = array(
158 158
             'ajax_url'                  => admin_url( 'admin-ajax.php' ),
159 159
             'post_ID'                   => isset( $post->ID ) ? $post->ID : '',
160
-			'wpinv_nonce'               => wp_create_nonce( 'wpinv-nonce' ),
161
-			'rest_nonce'                => wp_create_nonce( 'wp_rest' ),
162
-			'rest_root'                 => esc_url_raw( rest_url() ),
163
-			'date_range'                => $date_range,
160
+            'wpinv_nonce'               => wp_create_nonce( 'wpinv-nonce' ),
161
+            'rest_nonce'                => wp_create_nonce( 'wp_rest' ),
162
+            'rest_root'                 => esc_url_raw( rest_url() ),
163
+            'date_range'                => $date_range,
164 164
             'add_invoice_note_nonce'    => wp_create_nonce( 'add-invoice-note' ),
165 165
             'delete_invoice_note_nonce' => wp_create_nonce( 'delete-invoice-note' ),
166 166
             'invoice_item_nonce'        => wp_create_nonce( 'invoice-item' ),
167 167
             'billing_details_nonce'     => wp_create_nonce( 'get-billing-details' ),
168 168
             'tax'                       => wpinv_tax_amount(),
169 169
             'discount'                  => 0,
170
-			'currency_symbol'           => wpinv_currency_symbol(),
171
-			'currency'                  => wpinv_get_currency(),
170
+            'currency_symbol'           => wpinv_currency_symbol(),
171
+            'currency'                  => wpinv_get_currency(),
172 172
             'currency_pos'              => wpinv_currency_position(),
173 173
             'thousand_sep'              => wpinv_thousands_separator(),
174 174
             'decimal_sep'               => wpinv_decimal_separator(),
@@ -188,117 +188,117 @@  discard block
 block discarded – undo
188 188
             'item_description'          => __( 'Item Description', 'invoicing' ),
189 189
             'invoice_description'       => __( 'Invoice Description', 'invoicing' ),
190 190
             'discount_description'      => __( 'Discount Description', 'invoicing' ),
191
-			'searching'                 => __( 'Searching', 'invoicing' ),
192
-			'loading'                   => __( 'Loading...', 'invoicing' ),
193
-			'search_customers'          => __( 'Enter customer name or email', 'invoicing' ),
194
-			'search_items'              => __( 'Enter item name', 'invoicing' ),
195
-			'graphs'                    => array_merge( array( 'refunded_fees', 'refunded_items', 'refunded_subtotal', 'refunded_tax' ), array_keys( wpinv_get_report_graphs() ) ),
191
+            'searching'                 => __( 'Searching', 'invoicing' ),
192
+            'loading'                   => __( 'Loading...', 'invoicing' ),
193
+            'search_customers'          => __( 'Enter customer name or email', 'invoicing' ),
194
+            'search_items'              => __( 'Enter item name', 'invoicing' ),
195
+            'graphs'                    => array_merge( array( 'refunded_fees', 'refunded_items', 'refunded_subtotal', 'refunded_tax' ), array_keys( wpinv_get_report_graphs() ) ),
196 196
         );
197 197
 
198
-		if ( ! empty( $post ) && getpaid_is_invoice_post_type( $post->post_type ) ) {
198
+        if ( ! empty( $post ) && getpaid_is_invoice_post_type( $post->post_type ) ) {
199 199
 
200
-			$invoice              = new WPInv_Invoice( $post );
201
-			$i18n['save_invoice'] = sprintf(
202
-				__( 'Save %s', 'invoicing' ),
203
-				ucfirst( $invoice->get_invoice_quote_type() )
204
-			);
200
+            $invoice              = new WPInv_Invoice( $post );
201
+            $i18n['save_invoice'] = sprintf(
202
+                __( 'Save %s', 'invoicing' ),
203
+                ucfirst( $invoice->get_invoice_quote_type() )
204
+            );
205 205
 
206
-			$i18n['invoice_description'] = sprintf(
207
-				__( '%s Description', 'invoicing' ),
208
-				ucfirst( $invoice->get_invoice_quote_type() )
209
-			);
206
+            $i18n['invoice_description'] = sprintf(
207
+                __( '%s Description', 'invoicing' ),
208
+                ucfirst( $invoice->get_invoice_quote_type() )
209
+            );
210 210
 
211
-		}
212
-		return $i18n;
213
-	}
211
+        }
212
+        return $i18n;
213
+    }
214 214
 
215
-	/**
216
-	 * Change the admin footer text on GetPaid admin pages.
217
-	 *
218
-	 * @since  2.0.0
219
-	 * @param  string $footer_text
220
-	 * @return string
221
-	 */
222
-	public function admin_footer_text( $footer_text ) {
223
-		global $current_screen;
215
+    /**
216
+     * Change the admin footer text on GetPaid admin pages.
217
+     *
218
+     * @since  2.0.0
219
+     * @param  string $footer_text
220
+     * @return string
221
+     */
222
+    public function admin_footer_text( $footer_text ) {
223
+        global $current_screen;
224 224
 
225
-		$page    = isset( $_GET['page'] ) ? sanitize_text_field( $_GET['page'] ) : '';
225
+        $page    = isset( $_GET['page'] ) ? sanitize_text_field( $_GET['page'] ) : '';
226 226
 
227 227
         if ( ! empty( $current_screen->post_type ) ) {
228
-			$page = $current_screen->post_type;
228
+            $page = $current_screen->post_type;
229 229
         }
230 230
 
231 231
         // General styles.
232 232
         if ( apply_filters( 'getpaid_display_admin_footer_text', wpinv_current_user_can_manage_invoicing() ) && false !== stripos( $page, 'wpi' ) ) {
233 233
 
234
-			// Change the footer text
235
-			if ( ! get_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', true ) ) {
234
+            // Change the footer text
235
+            if ( ! get_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', true ) ) {
236 236
 
237
-				$rating_url  = esc_url(
238
-					wp_nonce_url(
239
-						admin_url( 'admin.php?page=wpinv-reports&getpaid-admin-action=rate_plugin' ),
240
-						'getpaid-nonce',
241
-						'getpaid-nonce'
237
+                $rating_url  = esc_url(
238
+                    wp_nonce_url(
239
+                        admin_url( 'admin.php?page=wpinv-reports&getpaid-admin-action=rate_plugin' ),
240
+                        'getpaid-nonce',
241
+                        'getpaid-nonce'
242 242
                     )
243
-				);
243
+                );
244 244
 
245
-				$footer_text = sprintf(
246
-					/* translators: %s: five stars */
247
-					__( 'If you like <strong>GetPaid</strong>, please leave us a %s rating. A huge thanks in advance!', 'invoicing' ),
248
-					"<a href='$rating_url'>&#9733;&#9733;&#9733;&#9733;&#9733;</a>"
249
-				);
245
+                $footer_text = sprintf(
246
+                    /* translators: %s: five stars */
247
+                    __( 'If you like <strong>GetPaid</strong>, please leave us a %s rating. A huge thanks in advance!', 'invoicing' ),
248
+                    "<a href='$rating_url'>&#9733;&#9733;&#9733;&#9733;&#9733;</a>"
249
+                );
250 250
 
251
-			} else {
251
+            } else {
252 252
 
253
-				$footer_text = sprintf(
254
-					/* translators: %s: GetPaid */
255
-					__( 'Thank you for using %s!', 'invoicing' ),
256
-					"<a href='https://wpgetpaid.com/' target='_blank'><strong>GetPaid</strong></a>"
257
-				);
253
+                $footer_text = sprintf(
254
+                    /* translators: %s: GetPaid */
255
+                    __( 'Thank you for using %s!', 'invoicing' ),
256
+                    "<a href='https://wpgetpaid.com/' target='_blank'><strong>GetPaid</strong></a>"
257
+                );
258 258
 
259
-			}
259
+            }
260 260
 }
261 261
 
262
-		return $footer_text;
263
-	}
264
-
265
-	/**
266
-	 * Redirects to wp.org to rate the plugin.
267
-	 *
268
-	 * @since  2.0.0
269
-	 */
270
-	public function redirect_to_wordpress_rating_page() {
271
-		update_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', 1 );
272
-		wp_redirect( 'https://wordpress.org/support/plugin/invoicing/reviews?rate=5#new-post' );
273
-		exit;
274
-	}
275
-
276
-    /**
277
-	 * Loads payment form js.
278
-	 *
279
-	 */
280
-	protected function load_payment_form_scripts() {
262
+        return $footer_text;
263
+    }
264
+
265
+    /**
266
+     * Redirects to wp.org to rate the plugin.
267
+     *
268
+     * @since  2.0.0
269
+     */
270
+    public function redirect_to_wordpress_rating_page() {
271
+        update_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', 1 );
272
+        wp_redirect( 'https://wordpress.org/support/plugin/invoicing/reviews?rate=5#new-post' );
273
+        exit;
274
+    }
275
+
276
+    /**
277
+     * Loads payment form js.
278
+     *
279
+     */
280
+    protected function load_payment_form_scripts() {
281 281
         global $post;
282 282
 
283 283
         wp_enqueue_script( 'vue', WPINV_PLUGIN_URL . 'assets/js/vue/vue.min.js', array(), WPINV_VERSION );
284
-		wp_enqueue_script( 'sortable', WPINV_PLUGIN_URL . 'assets/js/sortable.min.js', array(), WPINV_VERSION );
285
-		wp_enqueue_script( 'vue_draggable', WPINV_PLUGIN_URL . 'assets/js/vue/vuedraggable.min.js', array( 'sortable', 'vue' ), WPINV_VERSION );
284
+        wp_enqueue_script( 'sortable', WPINV_PLUGIN_URL . 'assets/js/sortable.min.js', array(), WPINV_VERSION );
285
+        wp_enqueue_script( 'vue_draggable', WPINV_PLUGIN_URL . 'assets/js/vue/vuedraggable.min.js', array( 'sortable', 'vue' ), WPINV_VERSION );
286 286
 
287
-		wp_register_script( 'wpinv-admin-payment-form-script', WPINV_PLUGIN_URL . 'assets/js/admin-payment-forms.min.js', array( 'wpinv-admin-script', 'vue_draggable', 'wp-hooks' ), WPINV_VERSION );
287
+        wp_register_script( 'wpinv-admin-payment-form-script', WPINV_PLUGIN_URL . 'assets/js/admin-payment-forms.min.js', array( 'wpinv-admin-script', 'vue_draggable', 'wp-hooks' ), WPINV_VERSION );
288 288
 
289
-		wp_localize_script(
289
+        wp_localize_script(
290 290
             'wpinv-admin-payment-form-script',
291 291
             'wpinvPaymentFormAdmin',
292 292
             array(
293
-				'elements'      => wpinv_get_data( 'payment-form-elements' ),
294
-				'form_elements' => getpaid_get_payment_form_elements( $post->ID ),
295
-				'currency'      => wpinv_currency_symbol(),
296
-				'position'      => wpinv_currency_position(),
297
-				'decimals'      => (int) wpinv_decimals(),
298
-				'thousands_sep' => wpinv_thousands_separator(),
299
-				'decimals_sep'  => wpinv_decimal_separator(),
300
-				'form_items'    => gepaid_get_form_items( $post->ID ),
301
-				'is_default'    => $post->ID == wpinv_get_default_payment_form(),
293
+                'elements'      => wpinv_get_data( 'payment-form-elements' ),
294
+                'form_elements' => getpaid_get_payment_form_elements( $post->ID ),
295
+                'currency'      => wpinv_currency_symbol(),
296
+                'position'      => wpinv_currency_position(),
297
+                'decimals'      => (int) wpinv_decimals(),
298
+                'thousands_sep' => wpinv_thousands_separator(),
299
+                'decimals_sep'  => wpinv_decimal_separator(),
300
+                'form_items'    => gepaid_get_form_items( $post->ID ),
301
+                'is_default'    => $post->ID == wpinv_get_default_payment_form(),
302 302
             )
303 303
         );
304 304
 
@@ -307,19 +307,19 @@  discard block
 block discarded – undo
307 307
     }
308 308
 
309 309
     /**
310
-	 * Add our classes to admin pages.
310
+     * Add our classes to admin pages.
311 311
      *
312 312
      * @param string $classes
313 313
      * @return string
314
-	 *
315
-	 */
314
+     *
315
+     */
316 316
     public function admin_body_class( $classes ) {
317
-		global $pagenow, $post, $current_screen;
317
+        global $pagenow, $post, $current_screen;
318 318
 
319 319
         $page = isset( $_GET['page'] ) ? sanitize_text_field( $_GET['page'] ) : '';
320 320
 
321 321
         if ( ! empty( $current_screen->post_type ) ) {
322
-			$page = $current_screen->post_type;
322
+            $page = $current_screen->post_type;
323 323
         }
324 324
 
325 325
         if ( false !== stripos( $page, 'wpi' ) ) {
@@ -328,70 +328,70 @@  discard block
 block discarded – undo
328 328
 
329 329
         if ( in_array( $page, wpinv_parse_list( 'wpi_invoice wpi_payment_form wpi_quote' ) ) ) {
330 330
             $classes .= ' wpinv-cpt wpinv';
331
-		}
331
+        }
332 332
 
333
-		if ( getpaid_is_invoice_post_type( $page ) ) {
333
+        if ( getpaid_is_invoice_post_type( $page ) ) {
334 334
             $classes .= ' getpaid-is-invoice-cpt';
335 335
         }
336 336
 
337
-		return $classes;
337
+        return $classes;
338 338
     }
339 339
 
340 340
     /**
341
-	 * Maybe show the AyeCode Connect Notice.
342
-	 */
343
-	public function init_ayecode_connect_helper() {
341
+     * Maybe show the AyeCode Connect Notice.
342
+     */
343
+    public function init_ayecode_connect_helper() {
344 344
 
345
-		// Register with the deactivation survey class.
346
-		AyeCode_Deactivation_Survey::instance(
345
+        // Register with the deactivation survey class.
346
+        AyeCode_Deactivation_Survey::instance(
347 347
             array(
348
-				'slug'              => 'invoicing',
349
-				'version'           => WPINV_VERSION,
350
-				'support_url'       => 'https://wpgetpaid.com/support/',
351
-				'documentation_url' => 'https://docs.wpgetpaid.com/',
352
-				'activated'         => (int) get_option( 'gepaid_installed_on' ),
348
+                'slug'              => 'invoicing',
349
+                'version'           => WPINV_VERSION,
350
+                'support_url'       => 'https://wpgetpaid.com/support/',
351
+                'documentation_url' => 'https://docs.wpgetpaid.com/',
352
+                'activated'         => (int) get_option( 'gepaid_installed_on' ),
353 353
             )
354 354
         );
355 355
 
356 356
         new AyeCode_Connect_Helper(
357 357
             array(
358
-				'connect_title'     => __( 'WP Invoicing - an AyeCode product!', 'invoicing' ),
359
-				'connect_external'  => __( 'Please confirm you wish to connect your site?', 'invoicing' ),
360
-				'connect'           => sprintf( __( '<strong>Have a license?</strong> Forget about entering license keys or downloading zip files, connect your site for instant access. %1$slearn more%2$s', 'invoicing' ), "<a href='https://ayecode.io/introducing-ayecode-connect/' target='_blank'>", '</a>' ),
361
-				'connect_button'    => __( 'Connect Site', 'invoicing' ),
362
-				'connecting_button' => __( 'Connecting...', 'invoicing' ),
363
-				'error_localhost'   => __( 'This service will only work with a live domain, not a localhost.', 'invoicing' ),
364
-				'error'             => __( 'Something went wrong, please refresh and try again.', 'invoicing' ),
358
+                'connect_title'     => __( 'WP Invoicing - an AyeCode product!', 'invoicing' ),
359
+                'connect_external'  => __( 'Please confirm you wish to connect your site?', 'invoicing' ),
360
+                'connect'           => sprintf( __( '<strong>Have a license?</strong> Forget about entering license keys or downloading zip files, connect your site for instant access. %1$slearn more%2$s', 'invoicing' ), "<a href='https://ayecode.io/introducing-ayecode-connect/' target='_blank'>", '</a>' ),
361
+                'connect_button'    => __( 'Connect Site', 'invoicing' ),
362
+                'connecting_button' => __( 'Connecting...', 'invoicing' ),
363
+                'error_localhost'   => __( 'This service will only work with a live domain, not a localhost.', 'invoicing' ),
364
+                'error'             => __( 'Something went wrong, please refresh and try again.', 'invoicing' ),
365 365
             ),
366 366
             array( 'wpi-addons' )
367 367
         );
368 368
 
369 369
     }
370 370
 
371
-	/**
372
-	 * Redirect users to settings on activation.
373
-	 *
374
-	 * @return void
375
-	 */
376
-	public function activation_redirect() {
371
+    /**
372
+     * Redirect users to settings on activation.
373
+     *
374
+     * @return void
375
+     */
376
+    public function activation_redirect() {
377 377
 
378
-		$redirected = get_option( 'wpinv_redirected_to_settings' );
378
+        $redirected = get_option( 'wpinv_redirected_to_settings' );
379 379
 
380
-		if ( ! empty( $redirected ) || wp_doing_ajax() || ! current_user_can( 'manage_options' ) ) {
381
-			return;
382
-		}
380
+        if ( ! empty( $redirected ) || wp_doing_ajax() || ! current_user_can( 'manage_options' ) ) {
381
+            return;
382
+        }
383 383
 
384
-		// Bail if activating from network, or bulk
385
-		if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
386
-			return;
387
-		}
384
+        // Bail if activating from network, or bulk
385
+        if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
386
+            return;
387
+        }
388 388
 
389
-	    update_option( 'wpinv_redirected_to_settings', 1 );
389
+        update_option( 'wpinv_redirected_to_settings', 1 );
390 390
 
391 391
         wp_safe_redirect( admin_url( 'index.php?page=gp-setup' ) );
392 392
         exit;
393 393
 
394
-	}
394
+    }
395 395
 
396 396
     /**
397 397
      * Fires an admin action after verifying that a user can fire them.
@@ -404,555 +404,555 @@  discard block
 block discarded – undo
404 404
         }
405 405
     }
406 406
 
407
-	/**
407
+    /**
408 408
      * Duplicate invoice.
409
-	 *
410
-	 * @param array $args
409
+     *
410
+     * @param array $args
411 411
      */
412 412
     public function duplicate_invoice( $args ) {
413 413
 
414
-		if ( empty( $args['invoice_id'] ) ) {
415
-			return;
416
-		}
414
+        if ( empty( $args['invoice_id'] ) ) {
415
+            return;
416
+        }
417 417
 
418
-		$invoice = new WPInv_Invoice( (int) $args['invoice_id'] );
418
+        $invoice = new WPInv_Invoice( (int) $args['invoice_id'] );
419 419
 
420
-		if ( ! $invoice->exists() ) {
421
-			return;
422
-		}
420
+        if ( ! $invoice->exists() ) {
421
+            return;
422
+        }
423 423
 
424
-		$new_invoice = getpaid_duplicate_invoice( $invoice );
425
-		$new_invoice->save();
424
+        $new_invoice = getpaid_duplicate_invoice( $invoice );
425
+        $new_invoice->save();
426 426
 
427
-		if ( $new_invoice->exists() ) {
427
+        if ( $new_invoice->exists() ) {
428 428
 
429
-			getpaid_admin()->show_success( __( 'Invoice duplicated successfully.', 'invoicing' ) );
429
+            getpaid_admin()->show_success( __( 'Invoice duplicated successfully.', 'invoicing' ) );
430 430
 
431
-			wp_safe_redirect(
432
-				add_query_arg(
433
-					array(
434
-						'action' => 'edit',
435
-						'post'   => $new_invoice->get_id(),
436
-					),
437
-					admin_url( 'post.php' )
438
-				)
439
-			);
440
-			exit;
431
+            wp_safe_redirect(
432
+                add_query_arg(
433
+                    array(
434
+                        'action' => 'edit',
435
+                        'post'   => $new_invoice->get_id(),
436
+                    ),
437
+                    admin_url( 'post.php' )
438
+                )
439
+            );
440
+            exit;
441 441
 
442
-		}
442
+        }
443 443
 
444
-		getpaid_admin()->show_error( __( 'There was an error duplicating this invoice. Please try again.', 'invoicing' ) );
444
+        getpaid_admin()->show_error( __( 'There was an error duplicating this invoice. Please try again.', 'invoicing' ) );
445 445
 
446
-	}
446
+    }
447 447
 
448
-	/**
448
+    /**
449 449
      * Refund an invoice.
450
-	 *
451
-	 * @param array $args
450
+     *
451
+     * @param array $args
452 452
      */
453 453
     public function refund_invoice( $args ) {
454 454
 
455
-		if ( empty( $args['invoice_id'] ) ) {
456
-			return;
457
-		}
458
-
459
-		$invoice = new WPInv_Invoice( (int) $args['invoice_id'] );
460
-
461
-		if ( ! $invoice->exists() || $invoice->is_refunded() ) {
462
-			return;
463
-		}
464
-
465
-		$invoice->refund();
466
-
467
-		// Refund remotely.
468
-		if ( getpaid_payment_gateway_supports( $invoice->get_gateway(), 'refunds' ) && ! empty( $args['getpaid_refund_remote'] ) ) {
469
-			do_action( 'getpaid_refund_invoice_remotely', $invoice );
470
-		}
471
-
472
-		// Cancel subscriptions.
473
-		if ( ! empty( $args['getpaid_cancel_subscription'] ) ) {
474
-			$subscriptions = getpaid_get_invoice_subscriptions( $invoice );
475
-
476
-			if ( ! empty( $subscriptions ) ) {
477
-				if ( ! is_array( $subscriptions ) ) {
478
-					$subscriptions = array( $subscriptions );
479
-				}
480
-
481
-				foreach ( $subscriptions as $subscription ) {
482
-					$subscription->cancel();
483
-					$invoice->add_system_note(
484
-						sprintf(
485
-							// translators: %s: subscription ID.
486
-							__( 'Subscription #%s cancelled', 'invoicing' ),
487
-							$subscription->get_id()
488
-						)
489
-					);
490
-				}
491
-			}
492
-		}
493
-
494
-		// Add notice.
495
-		$this->show_success( __( 'Invoice refunded successfully.', 'invoicing' ) );
496
-
497
-		// Redirect.
498
-		wp_safe_redirect(
499
-			remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id', 'getpaid_cancel_subscription', 'getpaid_refund_remote' ) )
500
-		);
501
-	}
502
-
503
-	/**
455
+        if ( empty( $args['invoice_id'] ) ) {
456
+            return;
457
+        }
458
+
459
+        $invoice = new WPInv_Invoice( (int) $args['invoice_id'] );
460
+
461
+        if ( ! $invoice->exists() || $invoice->is_refunded() ) {
462
+            return;
463
+        }
464
+
465
+        $invoice->refund();
466
+
467
+        // Refund remotely.
468
+        if ( getpaid_payment_gateway_supports( $invoice->get_gateway(), 'refunds' ) && ! empty( $args['getpaid_refund_remote'] ) ) {
469
+            do_action( 'getpaid_refund_invoice_remotely', $invoice );
470
+        }
471
+
472
+        // Cancel subscriptions.
473
+        if ( ! empty( $args['getpaid_cancel_subscription'] ) ) {
474
+            $subscriptions = getpaid_get_invoice_subscriptions( $invoice );
475
+
476
+            if ( ! empty( $subscriptions ) ) {
477
+                if ( ! is_array( $subscriptions ) ) {
478
+                    $subscriptions = array( $subscriptions );
479
+                }
480
+
481
+                foreach ( $subscriptions as $subscription ) {
482
+                    $subscription->cancel();
483
+                    $invoice->add_system_note(
484
+                        sprintf(
485
+                            // translators: %s: subscription ID.
486
+                            __( 'Subscription #%s cancelled', 'invoicing' ),
487
+                            $subscription->get_id()
488
+                        )
489
+                    );
490
+                }
491
+            }
492
+        }
493
+
494
+        // Add notice.
495
+        $this->show_success( __( 'Invoice refunded successfully.', 'invoicing' ) );
496
+
497
+        // Redirect.
498
+        wp_safe_redirect(
499
+            remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id', 'getpaid_cancel_subscription', 'getpaid_refund_remote' ) )
500
+        );
501
+    }
502
+
503
+    /**
504 504
      * Sends a payment reminder to a customer.
505
-	 *
506
-	 * @param array $args
505
+     *
506
+     * @param array $args
507 507
      */
508 508
     public function duplicate_payment_form( $args ) {
509 509
 
510
-		if ( empty( $args['form_id'] ) ) {
511
-			return;
512
-		}
513
-
514
-		$form = new GetPaid_Payment_Form( (int) $args['form_id'] );
510
+        if ( empty( $args['form_id'] ) ) {
511
+            return;
512
+        }
515 513
 
516
-		if ( ! $form->exists() ) {
517
-			return;
518
-		}
514
+        $form = new GetPaid_Payment_Form( (int) $args['form_id'] );
519 515
 
520
-		$new_form = new GetPaid_Payment_Form();
521
-		$new_form->set_author( $form->get_author( 'edit' ) );
522
-		$new_form->set_name( $form->get_name( 'edit' ) . __( '(copy)', 'invoicing' ) );
523
-		$new_form->set_elements( $form->get_elements( 'edit' ) );
524
-		$new_form->set_items( $form->get_items( 'edit' ) );
525
-		$new_form->save();
516
+        if ( ! $form->exists() ) {
517
+            return;
518
+        }
526 519
 
527
-		if ( $new_form->exists() ) {
528
-			$this->show_success( __( 'Form duplicated successfully', 'invoicing' ) );
529
-			$url = get_edit_post_link( $new_form->get_id(), 'edit' );
530
-		} else {
531
-			$this->show_error( __( 'Unable to duplicate form', 'invoicing' ) );
532
-			$url = remove_query_arg( array( 'getpaid-admin-action', 'form_id', 'getpaid-nonce' ) );
533
-		}
520
+        $new_form = new GetPaid_Payment_Form();
521
+        $new_form->set_author( $form->get_author( 'edit' ) );
522
+        $new_form->set_name( $form->get_name( 'edit' ) . __( '(copy)', 'invoicing' ) );
523
+        $new_form->set_elements( $form->get_elements( 'edit' ) );
524
+        $new_form->set_items( $form->get_items( 'edit' ) );
525
+        $new_form->save();
526
+
527
+        if ( $new_form->exists() ) {
528
+            $this->show_success( __( 'Form duplicated successfully', 'invoicing' ) );
529
+            $url = get_edit_post_link( $new_form->get_id(), 'edit' );
530
+        } else {
531
+            $this->show_error( __( 'Unable to duplicate form', 'invoicing' ) );
532
+            $url = remove_query_arg( array( 'getpaid-admin-action', 'form_id', 'getpaid-nonce' ) );
533
+        }
534 534
 
535
-		wp_redirect( $url );
536
-		exit;
537
-	}
535
+        wp_redirect( $url );
536
+        exit;
537
+    }
538 538
 
539
-	/**
539
+    /**
540 540
      * Resets form stats.
541
-	 *
542
-	 * @param array $args
541
+     *
542
+     * @param array $args
543 543
      */
544 544
     public function reset_form_stats( $args ) {
545 545
 
546
-		if ( empty( $args['form_id'] ) ) {
547
-			return;
548
-		}
546
+        if ( empty( $args['form_id'] ) ) {
547
+            return;
548
+        }
549 549
 
550
-		$form = new GetPaid_Payment_Form( (int) $args['form_id'] );
550
+        $form = new GetPaid_Payment_Form( (int) $args['form_id'] );
551 551
 
552
-		if ( ! $form->exists() ) {
553
-			return;
554
-		}
552
+        if ( ! $form->exists() ) {
553
+            return;
554
+        }
555 555
 
556
-		$form->set_earned( 0 );
557
-		$form->set_refunded( 0 );
558
-		$form->set_cancelled( 0 );
559
-		$form->set_failed( 0 );
560
-		$form->save();
556
+        $form->set_earned( 0 );
557
+        $form->set_refunded( 0 );
558
+        $form->set_cancelled( 0 );
559
+        $form->set_failed( 0 );
560
+        $form->save();
561 561
 
562
-		$this->show_success( __( 'Form stats reset successfully', 'invoicing' ) );
562
+        $this->show_success( __( 'Form stats reset successfully', 'invoicing' ) );
563 563
 
564
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'form_id', 'getpaid-nonce' ) ) );
565
-		exit;
566
-	}
564
+        wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'form_id', 'getpaid-nonce' ) ) );
565
+        exit;
566
+    }
567 567
 
568
-	/**
568
+    /**
569 569
      * Sends a payment reminder to a customer.
570
-	 *
571
-	 * @param array $args
570
+     *
571
+     * @param array $args
572 572
      */
573 573
     public function send_customer_invoice( $args ) {
574
-		getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $args['invoice_id'] ), true );
575
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) );
576
-		exit;
577
-	}
574
+        getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $args['invoice_id'] ), true );
575
+        wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) );
576
+        exit;
577
+    }
578 578
 
579
-	/**
579
+    /**
580 580
      * Sends a payment reminder to a customer.
581
-	 *
582
-	 * @param array $args
581
+     *
582
+     * @param array $args
583 583
      */
584 584
     public function send_customer_payment_reminder( $args ) {
585
-		$sent = getpaid()->get( 'invoice_emails' )->force_send_overdue_notice( new WPInv_Invoice( $args['invoice_id'] ) );
585
+        $sent = getpaid()->get( 'invoice_emails' )->force_send_overdue_notice( new WPInv_Invoice( $args['invoice_id'] ) );
586 586
 
587
-		if ( $sent ) {
588
-			$this->show_success( __( 'Payment reminder was successfully sent to the customer', 'invoicing' ) );
589
-		} else {
590
-			$this->show_error( __( 'Could not sent payment reminder to the customer', 'invoicing' ) );
591
-		}
587
+        if ( $sent ) {
588
+            $this->show_success( __( 'Payment reminder was successfully sent to the customer', 'invoicing' ) );
589
+        } else {
590
+            $this->show_error( __( 'Could not sent payment reminder to the customer', 'invoicing' ) );
591
+        }
592 592
 
593
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) );
594
-		exit;
595
-	}
593
+        wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) );
594
+        exit;
595
+    }
596 596
 
597
-	/**
597
+    /**
598 598
      * Resets tax rates.
599
-	 *
599
+     *
600 600
      */
601 601
     public function admin_reset_tax_rates() {
602 602
 
603
-		update_option( 'wpinv_tax_rates', wpinv_get_data( 'tax-rates' ) );
604
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
605
-		exit;
603
+        update_option( 'wpinv_tax_rates', wpinv_get_data( 'tax-rates' ) );
604
+        wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
605
+        exit;
606 606
 
607
-	}
607
+    }
608 608
 
609
-	/**
609
+    /**
610 610
      * Resets admin pages.
611
-	 *
611
+     *
612 612
      */
613 613
     public function admin_create_missing_pages() {
614
-		$installer = new GetPaid_Installer();
615
-		$installer->create_pages();
616
-		$this->show_success( __( 'GetPaid pages updated.', 'invoicing' ) );
617
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
618
-		exit;
619
-	}
620
-
621
-	/**
622
-	 * Refreshes the permalinks.
623
-	 */
624
-	public function admin_refresh_permalinks() {
625
-		flush_rewrite_rules();
626
-		$this->show_success( __( 'Permalinks refreshed.', 'invoicing' ) );
627
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
628
-		exit;
629
-	}
630
-
631
-	/**
614
+        $installer = new GetPaid_Installer();
615
+        $installer->create_pages();
616
+        $this->show_success( __( 'GetPaid pages updated.', 'invoicing' ) );
617
+        wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
618
+        exit;
619
+    }
620
+
621
+    /**
622
+     * Refreshes the permalinks.
623
+     */
624
+    public function admin_refresh_permalinks() {
625
+        flush_rewrite_rules();
626
+        $this->show_success( __( 'Permalinks refreshed.', 'invoicing' ) );
627
+        wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
628
+        exit;
629
+    }
630
+
631
+    /**
632 632
      * Creates missing admin tables.
633
-	 *
633
+     *
634 634
      */
635 635
     public function admin_create_missing_tables() {
636
-		global $wpdb;
636
+        global $wpdb;
637 637
 
638
-		GetPaid_Installer::create_db_tables();
639
-		GetPaid_Installer::migrate_old_customers();
638
+        GetPaid_Installer::create_db_tables();
639
+        GetPaid_Installer::migrate_old_customers();
640 640
 
641
-		if ( '' !== $wpdb->last_error ) {
642
-			$this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error );
643
-		} else {
644
-			$this->show_success( __( 'Your GetPaid tables have been updated.', 'invoicing' ) );
645
-		}
641
+        if ( '' !== $wpdb->last_error ) {
642
+            $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error );
643
+        } else {
644
+            $this->show_success( __( 'Your GetPaid tables have been updated.', 'invoicing' ) );
645
+        }
646 646
 
647
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
648
-		exit;
649
-	}
647
+        wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
648
+        exit;
649
+    }
650 650
 
651
-	/**
651
+    /**
652 652
      * Migrates old invoices to the new database tables.
653
-	 *
653
+     *
654 654
      */
655 655
     public function admin_migrate_old_invoices() {
656 656
 
657
-		// Migrate the invoices.
658
-		$installer = new GetPaid_Installer();
659
-		$installer->migrate_old_invoices();
657
+        // Migrate the invoices.
658
+        $installer = new GetPaid_Installer();
659
+        $installer->migrate_old_invoices();
660 660
 
661
-		// Show an admin message.
662
-		$this->show_success( __( 'Your invoices have been migrated.', 'invoicing' ) );
661
+        // Show an admin message.
662
+        $this->show_success( __( 'Your invoices have been migrated.', 'invoicing' ) );
663 663
 
664
-		// Redirect the admin.
665
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
666
-		exit;
664
+        // Redirect the admin.
665
+        wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
666
+        exit;
667 667
 
668
-	}
668
+    }
669 669
 
670
-	/**
670
+    /**
671 671
      * Download customers.
672
-	 *
672
+     *
673 673
      */
674 674
     public function admin_download_customers() {
675 675
 
676
-		$output = fopen( 'php://output', 'w' );
676
+        $output = fopen( 'php://output', 'w' );
677 677
 
678
-		if ( false === $output ) {
679
-			wp_die( esc_html__( 'Unsupported server', 'invoicing' ), 500 );
680
-		}
678
+        if ( false === $output ) {
679
+            wp_die( esc_html__( 'Unsupported server', 'invoicing' ), 500 );
680
+        }
681 681
 
682
-		header( 'Content-Type:text/csv' );
683
-		header( 'Content-Disposition:attachment;filename=customers.csv' );
682
+        header( 'Content-Type:text/csv' );
683
+        header( 'Content-Disposition:attachment;filename=customers.csv' );
684 684
 
685
-		/** @var GetPaid_Customer[] $customers */
686
-		$customers = getpaid_get_customers( array( 'number' => -1 ) );
687
-		$columns   = array_keys( GetPaid_Customer_Data_Store::get_database_fields() );
685
+        /** @var GetPaid_Customer[] $customers */
686
+        $customers = getpaid_get_customers( array( 'number' => -1 ) );
687
+        $columns   = array_keys( GetPaid_Customer_Data_Store::get_database_fields() );
688 688
 
689
-		// Output the csv column headers.
690
-		fputcsv( $output, $columns );
689
+        // Output the csv column headers.
690
+        fputcsv( $output, $columns );
691 691
 
692
-		// Loop through
693
-		foreach ( $customers as $customer ) {
692
+        // Loop through
693
+        foreach ( $customers as $customer ) {
694 694
 
695
-			$row  = array();
695
+            $row  = array();
696 696
 
697
-			foreach ( $columns as $column ) {
698
-				$row[]  = (string) maybe_serialize( $customer->get( $column, 'edit' ) );
699
-			}
697
+            foreach ( $columns as $column ) {
698
+                $row[]  = (string) maybe_serialize( $customer->get( $column, 'edit' ) );
699
+            }
700 700
 
701
-			fputcsv( $output, $row );
702
-		}
701
+            fputcsv( $output, $row );
702
+        }
703 703
 
704
-		fclose( $output );
705
-		exit;
704
+        fclose( $output );
705
+        exit;
706 706
 
707
-	}
707
+    }
708 708
 
709
-	/**
709
+    /**
710 710
      * Installs a plugin.
711
-	 *
712
-	 * @param array $data
711
+     *
712
+     * @param array $data
713 713
      */
714 714
     public function admin_install_plugin( $data ) {
715 715
 
716
-		if ( ! empty( $data['plugins'] ) ) {
717
-			include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
718
-			wp_cache_flush();
716
+        if ( ! empty( $data['plugins'] ) ) {
717
+            include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
718
+            wp_cache_flush();
719 719
 
720
-			foreach ( $data['plugins'] as $slug => $file ) {
721
-				$plugin_zip = esc_url( 'https://downloads.wordpress.org/plugin/' . $slug . '.latest-stable.zip' );
722
-				$upgrader   = new Plugin_Upgrader( new Automatic_Upgrader_Skin() );
723
-				$installed  = $upgrader->install( $plugin_zip );
720
+            foreach ( $data['plugins'] as $slug => $file ) {
721
+                $plugin_zip = esc_url( 'https://downloads.wordpress.org/plugin/' . $slug . '.latest-stable.zip' );
722
+                $upgrader   = new Plugin_Upgrader( new Automatic_Upgrader_Skin() );
723
+                $installed  = $upgrader->install( $plugin_zip );
724 724
 
725
-				if ( ! is_wp_error( $installed ) && $installed ) {
726
-					activate_plugin( $file, '', false, true );
727
-				} else {
728
-					wpinv_error_log( $upgrader->skin->get_upgrade_messages(), false );
729
-				}
725
+                if ( ! is_wp_error( $installed ) && $installed ) {
726
+                    activate_plugin( $file, '', false, true );
727
+                } else {
728
+                    wpinv_error_log( $upgrader->skin->get_upgrade_messages(), false );
729
+                }
730 730
 }
731 731
 }
732 732
 
733
-		$redirect = isset( $data['redirect'] ) ? esc_url_raw( $data['redirect'] ) : admin_url( 'plugins.php' );
734
-		wp_safe_redirect( $redirect );
735
-		exit;
733
+        $redirect = isset( $data['redirect'] ) ? esc_url_raw( $data['redirect'] ) : admin_url( 'plugins.php' );
734
+        wp_safe_redirect( $redirect );
735
+        exit;
736 736
 
737
-	}
737
+    }
738 738
 
739
-	/**
739
+    /**
740 740
      * Connects a gateway.
741
-	 *
742
-	 * @param array $data
741
+     *
742
+     * @param array $data
743 743
      */
744 744
     public function admin_connect_gateway( $data ) {
745 745
 
746
-		if ( ! empty( $data['plugin'] ) ) {
746
+        if ( ! empty( $data['plugin'] ) ) {
747 747
 
748
-			$gateway     = sanitize_key( $data['plugin'] );
749
-			$connect_url = apply_filters( "getpaid_get_{$gateway}_connect_url", false, $data );
748
+            $gateway     = sanitize_key( $data['plugin'] );
749
+            $connect_url = apply_filters( "getpaid_get_{$gateway}_connect_url", false, $data );
750 750
 
751
-			if ( ! empty( $connect_url ) ) {
752
-				wp_redirect( $connect_url );
753
-				exit;
754
-			}
751
+            if ( ! empty( $connect_url ) ) {
752
+                wp_redirect( $connect_url );
753
+                exit;
754
+            }
755 755
 
756
-			if ( 'stripe' == $data['plugin'] ) {
757
-				require_once ABSPATH . 'wp-admin/includes/plugin.php';
758
-				include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
759
-				wp_cache_flush();
756
+            if ( 'stripe' == $data['plugin'] ) {
757
+                require_once ABSPATH . 'wp-admin/includes/plugin.php';
758
+                include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
759
+                wp_cache_flush();
760 760
 
761
-				if ( ! array_key_exists( 'getpaid-stripe-payments/getpaid-stripe-payments.php', get_plugins() ) ) {
762
-					$plugin_zip = esc_url( 'https://downloads.wordpress.org/plugin/getpaid-stripe-payments.latest-stable.zip' );
763
-					$upgrader   = new Plugin_Upgrader( new Automatic_Upgrader_Skin() );
764
-					$upgrader->install( $plugin_zip );
765
-				}
761
+                if ( ! array_key_exists( 'getpaid-stripe-payments/getpaid-stripe-payments.php', get_plugins() ) ) {
762
+                    $plugin_zip = esc_url( 'https://downloads.wordpress.org/plugin/getpaid-stripe-payments.latest-stable.zip' );
763
+                    $upgrader   = new Plugin_Upgrader( new Automatic_Upgrader_Skin() );
764
+                    $upgrader->install( $plugin_zip );
765
+                }
766 766
 
767
-				activate_plugin( 'getpaid-stripe-payments/getpaid-stripe-payments.php', '', false, true );
768
-			}
767
+                activate_plugin( 'getpaid-stripe-payments/getpaid-stripe-payments.php', '', false, true );
768
+            }
769 769
 
770
-			$connect_url = apply_filters( "getpaid_get_{$gateway}_connect_url", false, $data );
771
-			if ( ! empty( $connect_url ) ) {
772
-				wp_redirect( $connect_url );
773
-				exit;
774
-			}
770
+            $connect_url = apply_filters( "getpaid_get_{$gateway}_connect_url", false, $data );
771
+            if ( ! empty( $connect_url ) ) {
772
+                wp_redirect( $connect_url );
773
+                exit;
774
+            }
775 775
 }
776 776
 
777
-		$redirect = isset( $data['redirect'] ) ? esc_url_raw( urldecode( $data['redirect'] ) ) : admin_url( 'admin.php?page=wpinv-settings&tab=gateways' );
778
-		wp_safe_redirect( $redirect );
779
-		exit;
777
+        $redirect = isset( $data['redirect'] ) ? esc_url_raw( urldecode( $data['redirect'] ) ) : admin_url( 'admin.php?page=wpinv-settings&tab=gateways' );
778
+        wp_safe_redirect( $redirect );
779
+        exit;
780 780
 
781
-	}
781
+    }
782 782
 
783
-	/**
783
+    /**
784 784
      * Recalculates discounts.
785
-	 *
785
+     *
786 786
      */
787 787
     public function admin_recalculate_discounts() {
788
-		global $wpdb;
788
+        global $wpdb;
789 789
 
790
-		// Fetch all invoices that have discount codes.
791
-		$table    = $wpdb->prefix . 'getpaid_invoices';
792
-		$invoices = $wpdb->get_col( "SELECT `post_id` FROM `$table` WHERE `discount` = 0 && `discount_code` <> ''" );
790
+        // Fetch all invoices that have discount codes.
791
+        $table    = $wpdb->prefix . 'getpaid_invoices';
792
+        $invoices = $wpdb->get_col( "SELECT `post_id` FROM `$table` WHERE `discount` = 0 && `discount_code` <> ''" );
793 793
 
794
-		foreach ( $invoices as $invoice ) {
794
+        foreach ( $invoices as $invoice ) {
795 795
 
796
-			$invoice = new WPInv_Invoice( $invoice );
796
+            $invoice = new WPInv_Invoice( $invoice );
797 797
 
798
-			if ( ! $invoice->exists() ) {
799
-				continue;
800
-			}
798
+            if ( ! $invoice->exists() ) {
799
+                continue;
800
+            }
801 801
 
802
-			// Abort if the discount does not exist or does not apply here.
803
-			$discount = new WPInv_Discount( $invoice->get_discount_code() );
804
-			if ( ! $discount->exists() ) {
805
-				continue;
806
-			}
802
+            // Abort if the discount does not exist or does not apply here.
803
+            $discount = new WPInv_Discount( $invoice->get_discount_code() );
804
+            if ( ! $discount->exists() ) {
805
+                continue;
806
+            }
807 807
 
808
-			$invoice->add_discount( getpaid_calculate_invoice_discount( $invoice, $discount ) );
809
-			$invoice->recalculate_total();
808
+            $invoice->add_discount( getpaid_calculate_invoice_discount( $invoice, $discount ) );
809
+            $invoice->recalculate_total();
810 810
 
811
-			if ( $invoice->get_total_discount() > 0 ) {
812
-				$invoice->save();
813
-			}
811
+            if ( $invoice->get_total_discount() > 0 ) {
812
+                $invoice->save();
813
+            }
814 814
 }
815 815
 
816
-		// Show an admin message.
817
-		$this->show_success( __( 'Discounts have been recalculated.', 'invoicing' ) );
816
+        // Show an admin message.
817
+        $this->show_success( __( 'Discounts have been recalculated.', 'invoicing' ) );
818 818
 
819
-		// Redirect the admin.
820
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
821
-		exit;
819
+        // Redirect the admin.
820
+        wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
821
+        exit;
822 822
 
823
-	}
823
+    }
824 824
 
825 825
     /**
826
-	 * Returns an array of admin notices.
827
-	 *
828
-	 * @since       1.0.19
826
+     * Returns an array of admin notices.
827
+     *
828
+     * @since       1.0.19
829 829
      * @return array
830
-	 */
831
-	public function get_notices() {
832
-		$notices = get_option( 'wpinv_admin_notices' );
830
+     */
831
+    public function get_notices() {
832
+        $notices = get_option( 'wpinv_admin_notices' );
833 833
         return is_array( $notices ) ? $notices : array();
834
-	}
834
+    }
835 835
 
836
-	/**
837
-	 * Checks if we have any admin notices.
838
-	 *
839
-	 * @since       2.0.4
836
+    /**
837
+     * Checks if we have any admin notices.
838
+     *
839
+     * @since       2.0.4
840 840
      * @return array
841
-	 */
842
-	public function has_notices() {
843
-		return count( $this->get_notices() ) > 0;
844
-	}
845
-
846
-	/**
847
-	 * Clears all admin notices
848
-	 *
849
-	 * @access      public
850
-	 * @since       1.0.19
851
-	 */
852
-	public function clear_notices() {
853
-		delete_option( 'wpinv_admin_notices' );
854
-	}
855
-
856
-	/**
857
-	 * Saves a new admin notice
858
-	 *
859
-	 * @access      public
860
-	 * @since       1.0.19
861
-	 */
862
-	public function save_notice( $type, $message ) {
863
-		$notices = $this->get_notices();
864
-
865
-		if ( empty( $notices[ $type ] ) || ! is_array( $notices[ $type ] ) ) {
866
-			$notices[ $type ] = array();
867
-		}
868
-
869
-		$notices[ $type ][] = $message;
870
-
871
-		update_option( 'wpinv_admin_notices', $notices );
872
-	}
873
-
874
-	/**
875
-	 * Displays a success notice
876
-	 *
877
-	 * @param       string $msg The message to qeue.
878
-	 * @access      public
879
-	 * @since       1.0.19
880
-	 */
881
-	public function show_success( $msg ) {
882
-		$this->save_notice( 'success', $msg );
883
-	}
884
-
885
-	/**
886
-	 * Displays a error notice
887
-	 *
888
-	 * @access      public
889
-	 * @param       string $msg The message to qeue.
890
-	 * @since       1.0.19
891
-	 */
892
-	public function show_error( $msg ) {
893
-		$this->save_notice( 'error', $msg );
894
-	}
895
-
896
-	/**
897
-	 * Displays a warning notice
898
-	 *
899
-	 * @access      public
900
-	 * @param       string $msg The message to qeue.
901
-	 * @since       1.0.19
902
-	 */
903
-	public function show_warning( $msg ) {
904
-		$this->save_notice( 'warning', $msg );
905
-	}
906
-
907
-	/**
908
-	 * Displays a info notice
909
-	 *
910
-	 * @access      public
911
-	 * @param       string $msg The message to qeue.
912
-	 * @since       1.0.19
913
-	 */
914
-	public function show_info( $msg ) {
915
-		$this->save_notice( 'info', $msg );
916
-	}
917
-
918
-	/**
919
-	 * Show notices
920
-	 *
921
-	 * @access      public
922
-	 * @since       1.0.19
923
-	 */
924
-	public function show_notices() {
841
+     */
842
+    public function has_notices() {
843
+        return count( $this->get_notices() ) > 0;
844
+    }
845
+
846
+    /**
847
+     * Clears all admin notices
848
+     *
849
+     * @access      public
850
+     * @since       1.0.19
851
+     */
852
+    public function clear_notices() {
853
+        delete_option( 'wpinv_admin_notices' );
854
+    }
855
+
856
+    /**
857
+     * Saves a new admin notice
858
+     *
859
+     * @access      public
860
+     * @since       1.0.19
861
+     */
862
+    public function save_notice( $type, $message ) {
863
+        $notices = $this->get_notices();
864
+
865
+        if ( empty( $notices[ $type ] ) || ! is_array( $notices[ $type ] ) ) {
866
+            $notices[ $type ] = array();
867
+        }
868
+
869
+        $notices[ $type ][] = $message;
870
+
871
+        update_option( 'wpinv_admin_notices', $notices );
872
+    }
873
+
874
+    /**
875
+     * Displays a success notice
876
+     *
877
+     * @param       string $msg The message to qeue.
878
+     * @access      public
879
+     * @since       1.0.19
880
+     */
881
+    public function show_success( $msg ) {
882
+        $this->save_notice( 'success', $msg );
883
+    }
884
+
885
+    /**
886
+     * Displays a error notice
887
+     *
888
+     * @access      public
889
+     * @param       string $msg The message to qeue.
890
+     * @since       1.0.19
891
+     */
892
+    public function show_error( $msg ) {
893
+        $this->save_notice( 'error', $msg );
894
+    }
895
+
896
+    /**
897
+     * Displays a warning notice
898
+     *
899
+     * @access      public
900
+     * @param       string $msg The message to qeue.
901
+     * @since       1.0.19
902
+     */
903
+    public function show_warning( $msg ) {
904
+        $this->save_notice( 'warning', $msg );
905
+    }
906
+
907
+    /**
908
+     * Displays a info notice
909
+     *
910
+     * @access      public
911
+     * @param       string $msg The message to qeue.
912
+     * @since       1.0.19
913
+     */
914
+    public function show_info( $msg ) {
915
+        $this->save_notice( 'info', $msg );
916
+    }
917
+
918
+    /**
919
+     * Show notices
920
+     *
921
+     * @access      public
922
+     * @since       1.0.19
923
+     */
924
+    public function show_notices() {
925 925
 
926 926
         $notices = $this->get_notices();
927 927
         $this->clear_notices();
928 928
 
929
-		foreach ( $notices as $type => $messages ) {
929
+        foreach ( $notices as $type => $messages ) {
930 930
 
931
-			if ( ! is_array( $messages ) ) {
932
-				continue;
933
-			}
931
+            if ( ! is_array( $messages ) ) {
932
+                continue;
933
+            }
934 934
 
935 935
             $type  = esc_attr( $type );
936
-			foreach ( $messages as $message ) {
937
-				echo wp_kses_post( "<div class='notice notice-$type is-dismissible'><p>$message</p></div>" );
936
+            foreach ( $messages as $message ) {
937
+                echo wp_kses_post( "<div class='notice notice-$type is-dismissible'><p>$message</p></div>" );
938 938
             }
939 939
 }
940 940
 
941
-		foreach ( array( 'checkout_page', 'invoice_history_page', 'success_page', 'failure_page', 'invoice_subscription_page' ) as $page ) {
942
-
943
-			if ( ! is_numeric( wpinv_get_option( $page, false ) ) ) {
944
-				$url     = wp_nonce_url(
945
-					add_query_arg( 'getpaid-admin-action', 'create_missing_pages' ),
946
-					'getpaid-nonce',
947
-					'getpaid-nonce'
948
-				);
949
-				$message  = __( 'Some GetPaid pages are missing. To use GetPaid without any issues, click the button below to generate the missing pages.', 'invoicing' );
950
-				$message2 = __( 'Generate Pages', 'invoicing' );
951
-				echo wp_kses_post( "<div class='notice notice-warning is-dismissible'><p>$message<br><br><a href='$url' class='button button-primary'>$message2</a></p></div>" );
952
-				break;
953
-			}
941
+        foreach ( array( 'checkout_page', 'invoice_history_page', 'success_page', 'failure_page', 'invoice_subscription_page' ) as $page ) {
942
+
943
+            if ( ! is_numeric( wpinv_get_option( $page, false ) ) ) {
944
+                $url     = wp_nonce_url(
945
+                    add_query_arg( 'getpaid-admin-action', 'create_missing_pages' ),
946
+                    'getpaid-nonce',
947
+                    'getpaid-nonce'
948
+                );
949
+                $message  = __( 'Some GetPaid pages are missing. To use GetPaid without any issues, click the button below to generate the missing pages.', 'invoicing' );
950
+                $message2 = __( 'Generate Pages', 'invoicing' );
951
+                echo wp_kses_post( "<div class='notice notice-warning is-dismissible'><p>$message<br><br><a href='$url' class='button button-primary'>$message2</a></p></div>" );
952
+                break;
953
+            }
954 954
 }
955 955
 
956
-	}
956
+    }
957 957
 
958 958
 }
Please login to merge, or discard this patch.
Spacing   +278 added lines, -278 removed lines patch added patch discarded remove patch
@@ -4,7 +4,7 @@  discard block
 block discarded – undo
4 4
  *
5 5
  */
6 6
 
7
-defined( 'ABSPATH' ) || exit;
7
+defined('ABSPATH') || exit;
8 8
 
9 9
 /**
10 10
  * The main admin class.
@@ -39,11 +39,11 @@  discard block
 block discarded – undo
39 39
 	 */
40 40
 	public function __construct() {
41 41
 
42
-        $this->admin_path  = plugin_dir_path( __FILE__ );
43
-		$this->admin_url   = plugins_url( '/', __FILE__ );
42
+        $this->admin_path = plugin_dir_path(__FILE__);
43
+		$this->admin_url   = plugins_url('/', __FILE__);
44 44
 		$this->reports     = new GetPaid_Reports();
45 45
 
46
-        if ( is_admin() ) {
46
+        if (is_admin()) {
47 47
 			$this->init_admin_hooks();
48 48
         }
49 49
 
@@ -54,36 +54,36 @@  discard block
 block discarded – undo
54 54
 	 *
55 55
 	 */
56 56
 	private function init_admin_hooks() {
57
-        add_action( 'admin_enqueue_scripts', array( $this, 'enqeue_scripts' ), 9 );
58
-        add_filter( 'admin_body_class', array( $this, 'admin_body_class' ) );
59
-        add_action( 'admin_init', array( $this, 'init_ayecode_connect_helper' ) );
60
-        add_action( 'admin_init', array( $this, 'activation_redirect' ) );
61
-        add_action( 'admin_init', array( $this, 'maybe_do_admin_action' ) );
62
-		add_action( 'admin_notices', array( $this, 'show_notices' ) );
63
-		add_action( 'getpaid_authenticated_admin_action_rate_plugin', array( $this, 'redirect_to_wordpress_rating_page' ) );
64
-		add_action( 'getpaid_authenticated_admin_action_duplicate_form', array( $this, 'duplicate_payment_form' ) );
65
-		add_action( 'getpaid_authenticated_admin_action_reset_form_stats', array( $this, 'reset_form_stats' ) );
66
-		add_action( 'getpaid_authenticated_admin_action_duplicate_invoice', array( $this, 'duplicate_invoice' ) );
67
-		add_action( 'getpaid_authenticated_admin_action_refund_invoice', array( $this, 'refund_invoice' ) );
68
-		add_action( 'getpaid_authenticated_admin_action_send_invoice', array( $this, 'send_customer_invoice' ) );
69
-		add_action( 'getpaid_authenticated_admin_action_send_invoice_reminder', array( $this, 'send_customer_payment_reminder' ) );
70
-        add_action( 'getpaid_authenticated_admin_action_reset_tax_rates', array( $this, 'admin_reset_tax_rates' ) );
71
-		add_action( 'getpaid_authenticated_admin_action_create_missing_pages', array( $this, 'admin_create_missing_pages' ) );
72
-		add_action( 'getpaid_authenticated_admin_action_refresh_permalinks', array( $this, 'admin_refresh_permalinks' ) );
73
-		add_action( 'getpaid_authenticated_admin_action_create_missing_tables', array( $this, 'admin_create_missing_tables' ) );
74
-		add_action( 'getpaid_authenticated_admin_action_migrate_old_invoices', array( $this, 'admin_migrate_old_invoices' ) );
75
-		add_action( 'getpaid_authenticated_admin_action_download_customers', array( $this, 'admin_download_customers' ) );
76
-		add_action( 'getpaid_authenticated_admin_action_recalculate_discounts', array( $this, 'admin_recalculate_discounts' ) );
77
-		add_action( 'getpaid_authenticated_admin_action_install_plugin', array( $this, 'admin_install_plugin' ) );
78
-		add_action( 'getpaid_authenticated_admin_action_connect_gateway', array( $this, 'admin_connect_gateway' ) );
79
-		add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ) );
80
-		do_action( 'getpaid_init_admin_hooks', $this );
57
+        add_action('admin_enqueue_scripts', array($this, 'enqeue_scripts'), 9);
58
+        add_filter('admin_body_class', array($this, 'admin_body_class'));
59
+        add_action('admin_init', array($this, 'init_ayecode_connect_helper'));
60
+        add_action('admin_init', array($this, 'activation_redirect'));
61
+        add_action('admin_init', array($this, 'maybe_do_admin_action'));
62
+		add_action('admin_notices', array($this, 'show_notices'));
63
+		add_action('getpaid_authenticated_admin_action_rate_plugin', array($this, 'redirect_to_wordpress_rating_page'));
64
+		add_action('getpaid_authenticated_admin_action_duplicate_form', array($this, 'duplicate_payment_form'));
65
+		add_action('getpaid_authenticated_admin_action_reset_form_stats', array($this, 'reset_form_stats'));
66
+		add_action('getpaid_authenticated_admin_action_duplicate_invoice', array($this, 'duplicate_invoice'));
67
+		add_action('getpaid_authenticated_admin_action_refund_invoice', array($this, 'refund_invoice'));
68
+		add_action('getpaid_authenticated_admin_action_send_invoice', array($this, 'send_customer_invoice'));
69
+		add_action('getpaid_authenticated_admin_action_send_invoice_reminder', array($this, 'send_customer_payment_reminder'));
70
+        add_action('getpaid_authenticated_admin_action_reset_tax_rates', array($this, 'admin_reset_tax_rates'));
71
+		add_action('getpaid_authenticated_admin_action_create_missing_pages', array($this, 'admin_create_missing_pages'));
72
+		add_action('getpaid_authenticated_admin_action_refresh_permalinks', array($this, 'admin_refresh_permalinks'));
73
+		add_action('getpaid_authenticated_admin_action_create_missing_tables', array($this, 'admin_create_missing_tables'));
74
+		add_action('getpaid_authenticated_admin_action_migrate_old_invoices', array($this, 'admin_migrate_old_invoices'));
75
+		add_action('getpaid_authenticated_admin_action_download_customers', array($this, 'admin_download_customers'));
76
+		add_action('getpaid_authenticated_admin_action_recalculate_discounts', array($this, 'admin_recalculate_discounts'));
77
+		add_action('getpaid_authenticated_admin_action_install_plugin', array($this, 'admin_install_plugin'));
78
+		add_action('getpaid_authenticated_admin_action_connect_gateway', array($this, 'admin_connect_gateway'));
79
+		add_filter('admin_footer_text', array($this, 'admin_footer_text'));
80
+		do_action('getpaid_init_admin_hooks', $this);
81 81
 
82 82
 		// Setup/welcome
83
-		if ( ! empty( $_GET['page'] ) ) {
84
-			switch ( sanitize_text_field( $_GET['page'] ) ) {
83
+		if (!empty($_GET['page'])) {
84
+			switch (sanitize_text_field($_GET['page'])) {
85 85
 				case 'gp-setup':
86
-					include_once dirname( __FILE__ ) . '/class-getpaid-admin-setup-wizard.php';
86
+					include_once dirname(__FILE__) . '/class-getpaid-admin-setup-wizard.php';
87 87
 					break;
88 88
 			}
89 89
 		}
@@ -97,37 +97,37 @@  discard block
 block discarded – undo
97 97
 	public function enqeue_scripts() {
98 98
         global $current_screen, $pagenow;
99 99
 
100
-		$page    = isset( $_GET['page'] ) ? sanitize_text_field( $_GET['page'] ) : '';
100
+		$page    = isset($_GET['page']) ? sanitize_text_field($_GET['page']) : '';
101 101
 		$editing = $pagenow == 'post.php' || $pagenow == 'post-new.php';
102 102
 
103
-        if ( ! empty( $current_screen->post_type ) ) {
103
+        if (!empty($current_screen->post_type)) {
104 104
 			$page = $current_screen->post_type;
105 105
         }
106 106
 
107 107
         // General styles.
108
-        if ( false !== stripos( $page, 'wpi' ) || false !== stripos( $page, 'getpaid' ) || 'gp-setup' == $page || false !== stripos( $page, 'geodir-tickets' ) ) {
108
+        if (false !== stripos($page, 'wpi') || false !== stripos($page, 'getpaid') || 'gp-setup' == $page || false !== stripos($page, 'geodir-tickets')) {
109 109
 
110 110
             // Styles.
111
-            $version = filemtime( WPINV_PLUGIN_DIR . 'assets/css/admin.css' );
112
-            wp_enqueue_style( 'wpinv_admin_style', WPINV_PLUGIN_URL . 'assets/css/admin.css', array( 'wp-color-picker' ), $version );
113
-            wp_enqueue_style( 'select2', WPINV_PLUGIN_URL . 'assets/css/select2/select2.min.css', array(), '4.0.13', 'all' );
111
+            $version = filemtime(WPINV_PLUGIN_DIR . 'assets/css/admin.css');
112
+            wp_enqueue_style('wpinv_admin_style', WPINV_PLUGIN_URL . 'assets/css/admin.css', array('wp-color-picker'), $version);
113
+            wp_enqueue_style('select2', WPINV_PLUGIN_URL . 'assets/css/select2/select2.min.css', array(), '4.0.13', 'all');
114 114
 
115 115
             // Scripts.
116
-            wp_enqueue_script( 'select2', WPINV_PLUGIN_URL . 'assets/js/select2/select2.full.min.js', array( 'jquery' ), WPINV_VERSION );
116
+            wp_enqueue_script('select2', WPINV_PLUGIN_URL . 'assets/js/select2/select2.full.min.js', array('jquery'), WPINV_VERSION);
117 117
 
118
-            $version = filemtime( WPINV_PLUGIN_DIR . 'assets/js/admin.js' );
119
-            wp_enqueue_script( 'wpinv-admin-script', WPINV_PLUGIN_URL . 'assets/js/admin.js', array( 'jquery', 'wp-color-picker', 'jquery-ui-tooltip' ), $version );
120
-            wp_localize_script( 'wpinv-admin-script', 'WPInv_Admin', apply_filters( 'wpinv_admin_js_localize', $this->get_admin_i18() ) );
118
+            $version = filemtime(WPINV_PLUGIN_DIR . 'assets/js/admin.js');
119
+            wp_enqueue_script('wpinv-admin-script', WPINV_PLUGIN_URL . 'assets/js/admin.js', array('jquery', 'wp-color-picker', 'jquery-ui-tooltip'), $version);
120
+            wp_localize_script('wpinv-admin-script', 'WPInv_Admin', apply_filters('wpinv_admin_js_localize', $this->get_admin_i18()));
121 121
 
122 122
         }
123 123
 
124 124
         // Payment form scripts.
125
-		if ( 'wpi_payment_form' == $page && $editing ) {
125
+		if ('wpi_payment_form' == $page && $editing) {
126 126
             $this->load_payment_form_scripts();
127 127
         }
128 128
 
129
-		if ( $page == 'wpinv-subscriptions' ) {
130
-			wp_enqueue_script( 'postbox' );
129
+		if ($page == 'wpinv-subscriptions') {
130
+			wp_enqueue_script('postbox');
131 131
 		}
132 132
 
133 133
     }
@@ -140,31 +140,31 @@  discard block
 block discarded – undo
140 140
         global $post;
141 141
 
142 142
 		$date_range = array(
143
-			'period' => isset( $_GET['date_range'] ) ? sanitize_text_field( $_GET['date_range'] ) : '7_days',
143
+			'period' => isset($_GET['date_range']) ? sanitize_text_field($_GET['date_range']) : '7_days',
144 144
 		);
145 145
 
146
-		if ( $date_range['period'] == 'custom' ) {
146
+		if ($date_range['period'] == 'custom') {
147 147
 
148
-			if ( isset( $_GET['from'] ) ) {
149
-				$date_range['after'] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['from'] ), current_time( 'timestamp' ) ) - DAY_IN_SECONDS );
148
+			if (isset($_GET['from'])) {
149
+				$date_range['after'] = date('Y-m-d', strtotime(sanitize_text_field($_GET['from']), current_time('timestamp')) - DAY_IN_SECONDS);
150 150
 			}
151 151
 
152
-			if ( isset( $_GET['to'] ) ) {
153
-				$date_range['before'] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['to'] ), current_time( 'timestamp' ) ) + DAY_IN_SECONDS );
152
+			if (isset($_GET['to'])) {
153
+				$date_range['before'] = date('Y-m-d', strtotime(sanitize_text_field($_GET['to']), current_time('timestamp')) + DAY_IN_SECONDS);
154 154
 			}
155 155
 }
156 156
 
157 157
         $i18n = array(
158
-            'ajax_url'                  => admin_url( 'admin-ajax.php' ),
159
-            'post_ID'                   => isset( $post->ID ) ? $post->ID : '',
160
-			'wpinv_nonce'               => wp_create_nonce( 'wpinv-nonce' ),
161
-			'rest_nonce'                => wp_create_nonce( 'wp_rest' ),
162
-			'rest_root'                 => esc_url_raw( rest_url() ),
158
+            'ajax_url'                  => admin_url('admin-ajax.php'),
159
+            'post_ID'                   => isset($post->ID) ? $post->ID : '',
160
+			'wpinv_nonce'               => wp_create_nonce('wpinv-nonce'),
161
+			'rest_nonce'                => wp_create_nonce('wp_rest'),
162
+			'rest_root'                 => esc_url_raw(rest_url()),
163 163
 			'date_range'                => $date_range,
164
-            'add_invoice_note_nonce'    => wp_create_nonce( 'add-invoice-note' ),
165
-            'delete_invoice_note_nonce' => wp_create_nonce( 'delete-invoice-note' ),
166
-            'invoice_item_nonce'        => wp_create_nonce( 'invoice-item' ),
167
-            'billing_details_nonce'     => wp_create_nonce( 'get-billing-details' ),
164
+            'add_invoice_note_nonce'    => wp_create_nonce('add-invoice-note'),
165
+            'delete_invoice_note_nonce' => wp_create_nonce('delete-invoice-note'),
166
+            'invoice_item_nonce'        => wp_create_nonce('invoice-item'),
167
+            'billing_details_nonce'     => wp_create_nonce('get-billing-details'),
168 168
             'tax'                       => wpinv_tax_amount(),
169 169
             'discount'                  => 0,
170 170
 			'currency_symbol'           => wpinv_currency_symbol(),
@@ -173,39 +173,39 @@  discard block
 block discarded – undo
173 173
             'thousand_sep'              => wpinv_thousands_separator(),
174 174
             'decimal_sep'               => wpinv_decimal_separator(),
175 175
             'decimals'                  => wpinv_decimals(),
176
-            'save_invoice'              => __( 'Save Invoice', 'invoicing' ),
177
-            'status_publish'            => wpinv_status_nicename( 'publish' ),
178
-            'status_pending'            => wpinv_status_nicename( 'wpi-pending' ),
179
-            'delete_tax_rate'           => __( 'Are you sure you wish to delete this tax rate?', 'invoicing' ),
180
-            'status_pending'            => wpinv_status_nicename( 'wpi-pending' ),
181
-            'FillBillingDetails'        => __( 'Fill the user\'s billing information? This will remove any currently entered billing information', 'invoicing' ),
182
-            'confirmCalcTotals'         => __( 'Recalculate totals? This will recalculate totals based on the user billing country. If no billing country is set it will use the base country.', 'invoicing' ),
183
-            'AreYouSure'                => __( 'Are you sure?', 'invoicing' ),
184
-            'errDeleteItem'             => __( 'This item is in use! Before delete this item, you need to delete all the invoice(s) using this item.', 'invoicing' ),
185
-            'delete_subscription'       => __( 'Are you sure you want to delete this subscription?', 'invoicing' ),
186
-            'action_edit'               => __( 'Edit', 'invoicing' ),
187
-            'action_cancel'             => __( 'Cancel', 'invoicing' ),
188
-            'item_description'          => __( 'Item Description', 'invoicing' ),
189
-            'invoice_description'       => __( 'Invoice Description', 'invoicing' ),
190
-            'discount_description'      => __( 'Discount Description', 'invoicing' ),
191
-			'searching'                 => __( 'Searching', 'invoicing' ),
192
-			'loading'                   => __( 'Loading...', 'invoicing' ),
193
-			'search_customers'          => __( 'Enter customer name or email', 'invoicing' ),
194
-			'search_items'              => __( 'Enter item name', 'invoicing' ),
195
-			'graphs'                    => array_merge( array( 'refunded_fees', 'refunded_items', 'refunded_subtotal', 'refunded_tax' ), array_keys( wpinv_get_report_graphs() ) ),
176
+            'save_invoice'              => __('Save Invoice', 'invoicing'),
177
+            'status_publish'            => wpinv_status_nicename('publish'),
178
+            'status_pending'            => wpinv_status_nicename('wpi-pending'),
179
+            'delete_tax_rate'           => __('Are you sure you wish to delete this tax rate?', 'invoicing'),
180
+            'status_pending'            => wpinv_status_nicename('wpi-pending'),
181
+            'FillBillingDetails'        => __('Fill the user\'s billing information? This will remove any currently entered billing information', 'invoicing'),
182
+            'confirmCalcTotals'         => __('Recalculate totals? This will recalculate totals based on the user billing country. If no billing country is set it will use the base country.', 'invoicing'),
183
+            'AreYouSure'                => __('Are you sure?', 'invoicing'),
184
+            'errDeleteItem'             => __('This item is in use! Before delete this item, you need to delete all the invoice(s) using this item.', 'invoicing'),
185
+            'delete_subscription'       => __('Are you sure you want to delete this subscription?', 'invoicing'),
186
+            'action_edit'               => __('Edit', 'invoicing'),
187
+            'action_cancel'             => __('Cancel', 'invoicing'),
188
+            'item_description'          => __('Item Description', 'invoicing'),
189
+            'invoice_description'       => __('Invoice Description', 'invoicing'),
190
+            'discount_description'      => __('Discount Description', 'invoicing'),
191
+			'searching'                 => __('Searching', 'invoicing'),
192
+			'loading'                   => __('Loading...', 'invoicing'),
193
+			'search_customers'          => __('Enter customer name or email', 'invoicing'),
194
+			'search_items'              => __('Enter item name', 'invoicing'),
195
+			'graphs'                    => array_merge(array('refunded_fees', 'refunded_items', 'refunded_subtotal', 'refunded_tax'), array_keys(wpinv_get_report_graphs())),
196 196
         );
197 197
 
198
-		if ( ! empty( $post ) && getpaid_is_invoice_post_type( $post->post_type ) ) {
198
+		if (!empty($post) && getpaid_is_invoice_post_type($post->post_type)) {
199 199
 
200
-			$invoice              = new WPInv_Invoice( $post );
200
+			$invoice              = new WPInv_Invoice($post);
201 201
 			$i18n['save_invoice'] = sprintf(
202
-				__( 'Save %s', 'invoicing' ),
203
-				ucfirst( $invoice->get_invoice_quote_type() )
202
+				__('Save %s', 'invoicing'),
203
+				ucfirst($invoice->get_invoice_quote_type())
204 204
 			);
205 205
 
206 206
 			$i18n['invoice_description'] = sprintf(
207
-				__( '%s Description', 'invoicing' ),
208
-				ucfirst( $invoice->get_invoice_quote_type() )
207
+				__('%s Description', 'invoicing'),
208
+				ucfirst($invoice->get_invoice_quote_type())
209 209
 			);
210 210
 
211 211
 		}
@@ -219,24 +219,24 @@  discard block
 block discarded – undo
219 219
 	 * @param  string $footer_text
220 220
 	 * @return string
221 221
 	 */
222
-	public function admin_footer_text( $footer_text ) {
222
+	public function admin_footer_text($footer_text) {
223 223
 		global $current_screen;
224 224
 
225
-		$page    = isset( $_GET['page'] ) ? sanitize_text_field( $_GET['page'] ) : '';
225
+		$page = isset($_GET['page']) ? sanitize_text_field($_GET['page']) : '';
226 226
 
227
-        if ( ! empty( $current_screen->post_type ) ) {
227
+        if (!empty($current_screen->post_type)) {
228 228
 			$page = $current_screen->post_type;
229 229
         }
230 230
 
231 231
         // General styles.
232
-        if ( apply_filters( 'getpaid_display_admin_footer_text', wpinv_current_user_can_manage_invoicing() ) && false !== stripos( $page, 'wpi' ) ) {
232
+        if (apply_filters('getpaid_display_admin_footer_text', wpinv_current_user_can_manage_invoicing()) && false !== stripos($page, 'wpi')) {
233 233
 
234 234
 			// Change the footer text
235
-			if ( ! get_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', true ) ) {
235
+			if (!get_user_meta(get_current_user_id(), 'getpaid_admin_footer_text_rated', true)) {
236 236
 
237
-				$rating_url  = esc_url(
237
+				$rating_url = esc_url(
238 238
 					wp_nonce_url(
239
-						admin_url( 'admin.php?page=wpinv-reports&getpaid-admin-action=rate_plugin' ),
239
+						admin_url('admin.php?page=wpinv-reports&getpaid-admin-action=rate_plugin'),
240 240
 						'getpaid-nonce',
241 241
 						'getpaid-nonce'
242 242
                     )
@@ -244,7 +244,7 @@  discard block
 block discarded – undo
244 244
 
245 245
 				$footer_text = sprintf(
246 246
 					/* translators: %s: five stars */
247
-					__( 'If you like <strong>GetPaid</strong>, please leave us a %s rating. A huge thanks in advance!', 'invoicing' ),
247
+					__('If you like <strong>GetPaid</strong>, please leave us a %s rating. A huge thanks in advance!', 'invoicing'),
248 248
 					"<a href='$rating_url'>&#9733;&#9733;&#9733;&#9733;&#9733;</a>"
249 249
 				);
250 250
 
@@ -252,7 +252,7 @@  discard block
 block discarded – undo
252 252
 
253 253
 				$footer_text = sprintf(
254 254
 					/* translators: %s: GetPaid */
255
-					__( 'Thank you for using %s!', 'invoicing' ),
255
+					__('Thank you for using %s!', 'invoicing'),
256 256
 					"<a href='https://wpgetpaid.com/' target='_blank'><strong>GetPaid</strong></a>"
257 257
 				);
258 258
 
@@ -268,8 +268,8 @@  discard block
 block discarded – undo
268 268
 	 * @since  2.0.0
269 269
 	 */
270 270
 	public function redirect_to_wordpress_rating_page() {
271
-		update_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', 1 );
272
-		wp_redirect( 'https://wordpress.org/support/plugin/invoicing/reviews?rate=5#new-post' );
271
+		update_user_meta(get_current_user_id(), 'getpaid_admin_footer_text_rated', 1);
272
+		wp_redirect('https://wordpress.org/support/plugin/invoicing/reviews?rate=5#new-post');
273 273
 		exit;
274 274
 	}
275 275
 
@@ -280,29 +280,29 @@  discard block
 block discarded – undo
280 280
 	protected function load_payment_form_scripts() {
281 281
         global $post;
282 282
 
283
-        wp_enqueue_script( 'vue', WPINV_PLUGIN_URL . 'assets/js/vue/vue.min.js', array(), WPINV_VERSION );
284
-		wp_enqueue_script( 'sortable', WPINV_PLUGIN_URL . 'assets/js/sortable.min.js', array(), WPINV_VERSION );
285
-		wp_enqueue_script( 'vue_draggable', WPINV_PLUGIN_URL . 'assets/js/vue/vuedraggable.min.js', array( 'sortable', 'vue' ), WPINV_VERSION );
283
+        wp_enqueue_script('vue', WPINV_PLUGIN_URL . 'assets/js/vue/vue.min.js', array(), WPINV_VERSION);
284
+		wp_enqueue_script('sortable', WPINV_PLUGIN_URL . 'assets/js/sortable.min.js', array(), WPINV_VERSION);
285
+		wp_enqueue_script('vue_draggable', WPINV_PLUGIN_URL . 'assets/js/vue/vuedraggable.min.js', array('sortable', 'vue'), WPINV_VERSION);
286 286
 
287
-		wp_register_script( 'wpinv-admin-payment-form-script', WPINV_PLUGIN_URL . 'assets/js/admin-payment-forms.min.js', array( 'wpinv-admin-script', 'vue_draggable', 'wp-hooks' ), WPINV_VERSION );
287
+		wp_register_script('wpinv-admin-payment-form-script', WPINV_PLUGIN_URL . 'assets/js/admin-payment-forms.min.js', array('wpinv-admin-script', 'vue_draggable', 'wp-hooks'), WPINV_VERSION);
288 288
 
289 289
 		wp_localize_script(
290 290
             'wpinv-admin-payment-form-script',
291 291
             'wpinvPaymentFormAdmin',
292 292
             array(
293
-				'elements'      => wpinv_get_data( 'payment-form-elements' ),
294
-				'form_elements' => getpaid_get_payment_form_elements( $post->ID ),
293
+				'elements'      => wpinv_get_data('payment-form-elements'),
294
+				'form_elements' => getpaid_get_payment_form_elements($post->ID),
295 295
 				'currency'      => wpinv_currency_symbol(),
296 296
 				'position'      => wpinv_currency_position(),
297 297
 				'decimals'      => (int) wpinv_decimals(),
298 298
 				'thousands_sep' => wpinv_thousands_separator(),
299 299
 				'decimals_sep'  => wpinv_decimal_separator(),
300
-				'form_items'    => gepaid_get_form_items( $post->ID ),
300
+				'form_items'    => gepaid_get_form_items($post->ID),
301 301
 				'is_default'    => $post->ID == wpinv_get_default_payment_form(),
302 302
             )
303 303
         );
304 304
 
305
-        wp_enqueue_script( 'wpinv-admin-payment-form-script' );
305
+        wp_enqueue_script('wpinv-admin-payment-form-script');
306 306
 
307 307
     }
308 308
 
@@ -313,24 +313,24 @@  discard block
 block discarded – undo
313 313
      * @return string
314 314
 	 *
315 315
 	 */
316
-    public function admin_body_class( $classes ) {
316
+    public function admin_body_class($classes) {
317 317
 		global $pagenow, $post, $current_screen;
318 318
 
319
-        $page = isset( $_GET['page'] ) ? sanitize_text_field( $_GET['page'] ) : '';
319
+        $page = isset($_GET['page']) ? sanitize_text_field($_GET['page']) : '';
320 320
 
321
-        if ( ! empty( $current_screen->post_type ) ) {
321
+        if (!empty($current_screen->post_type)) {
322 322
 			$page = $current_screen->post_type;
323 323
         }
324 324
 
325
-        if ( false !== stripos( $page, 'wpi' ) ) {
326
-            $classes .= ' wpi-' . sanitize_key( $page );
325
+        if (false !== stripos($page, 'wpi')) {
326
+            $classes .= ' wpi-' . sanitize_key($page);
327 327
         }
328 328
 
329
-        if ( in_array( $page, wpinv_parse_list( 'wpi_invoice wpi_payment_form wpi_quote' ) ) ) {
329
+        if (in_array($page, wpinv_parse_list('wpi_invoice wpi_payment_form wpi_quote'))) {
330 330
             $classes .= ' wpinv-cpt wpinv';
331 331
 		}
332 332
 
333
-		if ( getpaid_is_invoice_post_type( $page ) ) {
333
+		if (getpaid_is_invoice_post_type($page)) {
334 334
             $classes .= ' getpaid-is-invoice-cpt';
335 335
         }
336 336
 
@@ -349,21 +349,21 @@  discard block
 block discarded – undo
349 349
 				'version'           => WPINV_VERSION,
350 350
 				'support_url'       => 'https://wpgetpaid.com/support/',
351 351
 				'documentation_url' => 'https://docs.wpgetpaid.com/',
352
-				'activated'         => (int) get_option( 'gepaid_installed_on' ),
352
+				'activated'         => (int) get_option('gepaid_installed_on'),
353 353
             )
354 354
         );
355 355
 
356 356
         new AyeCode_Connect_Helper(
357 357
             array(
358
-				'connect_title'     => __( 'WP Invoicing - an AyeCode product!', 'invoicing' ),
359
-				'connect_external'  => __( 'Please confirm you wish to connect your site?', 'invoicing' ),
360
-				'connect'           => sprintf( __( '<strong>Have a license?</strong> Forget about entering license keys or downloading zip files, connect your site for instant access. %1$slearn more%2$s', 'invoicing' ), "<a href='https://ayecode.io/introducing-ayecode-connect/' target='_blank'>", '</a>' ),
361
-				'connect_button'    => __( 'Connect Site', 'invoicing' ),
362
-				'connecting_button' => __( 'Connecting...', 'invoicing' ),
363
-				'error_localhost'   => __( 'This service will only work with a live domain, not a localhost.', 'invoicing' ),
364
-				'error'             => __( 'Something went wrong, please refresh and try again.', 'invoicing' ),
358
+				'connect_title'     => __('WP Invoicing - an AyeCode product!', 'invoicing'),
359
+				'connect_external'  => __('Please confirm you wish to connect your site?', 'invoicing'),
360
+				'connect'           => sprintf(__('<strong>Have a license?</strong> Forget about entering license keys or downloading zip files, connect your site for instant access. %1$slearn more%2$s', 'invoicing'), "<a href='https://ayecode.io/introducing-ayecode-connect/' target='_blank'>", '</a>'),
361
+				'connect_button'    => __('Connect Site', 'invoicing'),
362
+				'connecting_button' => __('Connecting...', 'invoicing'),
363
+				'error_localhost'   => __('This service will only work with a live domain, not a localhost.', 'invoicing'),
364
+				'error'             => __('Something went wrong, please refresh and try again.', 'invoicing'),
365 365
             ),
366
-            array( 'wpi-addons' )
366
+            array('wpi-addons')
367 367
         );
368 368
 
369 369
     }
@@ -375,20 +375,20 @@  discard block
 block discarded – undo
375 375
 	 */
376 376
 	public function activation_redirect() {
377 377
 
378
-		$redirected = get_option( 'wpinv_redirected_to_settings' );
378
+		$redirected = get_option('wpinv_redirected_to_settings');
379 379
 
380
-		if ( ! empty( $redirected ) || wp_doing_ajax() || ! current_user_can( 'manage_options' ) ) {
380
+		if (!empty($redirected) || wp_doing_ajax() || !current_user_can('manage_options')) {
381 381
 			return;
382 382
 		}
383 383
 
384 384
 		// Bail if activating from network, or bulk
385
-		if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
385
+		if (is_network_admin() || isset($_GET['activate-multi'])) {
386 386
 			return;
387 387
 		}
388 388
 
389
-	    update_option( 'wpinv_redirected_to_settings', 1 );
389
+	    update_option('wpinv_redirected_to_settings', 1);
390 390
 
391
-        wp_safe_redirect( admin_url( 'index.php?page=gp-setup' ) );
391
+        wp_safe_redirect(admin_url('index.php?page=gp-setup'));
392 392
         exit;
393 393
 
394 394
 	}
@@ -397,10 +397,10 @@  discard block
 block discarded – undo
397 397
      * Fires an admin action after verifying that a user can fire them.
398 398
      */
399 399
     public function maybe_do_admin_action() {
400
-        if ( isset( $_REQUEST['getpaid-admin-action'] ) && isset( $_REQUEST['getpaid-nonce'] ) && wp_verify_nonce( $_REQUEST['getpaid-nonce'], 'getpaid-nonce' ) && wpinv_current_user_can( sanitize_text_field( $_REQUEST['getpaid-admin-action'] ), $_REQUEST ) ) {
401
-            $key = sanitize_key( $_REQUEST['getpaid-admin-action'] );
400
+        if (isset($_REQUEST['getpaid-admin-action']) && isset($_REQUEST['getpaid-nonce']) && wp_verify_nonce($_REQUEST['getpaid-nonce'], 'getpaid-nonce') && wpinv_current_user_can(sanitize_text_field($_REQUEST['getpaid-admin-action']), $_REQUEST)) {
401
+            $key = sanitize_key($_REQUEST['getpaid-admin-action']);
402 402
 
403
-            do_action( "getpaid_authenticated_admin_action_$key", $_REQUEST );
403
+            do_action("getpaid_authenticated_admin_action_$key", $_REQUEST);
404 404
         }
405 405
     }
406 406
 
@@ -409,24 +409,24 @@  discard block
 block discarded – undo
409 409
 	 *
410 410
 	 * @param array $args
411 411
      */
412
-    public function duplicate_invoice( $args ) {
412
+    public function duplicate_invoice($args) {
413 413
 
414
-		if ( empty( $args['invoice_id'] ) ) {
414
+		if (empty($args['invoice_id'])) {
415 415
 			return;
416 416
 		}
417 417
 
418
-		$invoice = new WPInv_Invoice( (int) $args['invoice_id'] );
418
+		$invoice = new WPInv_Invoice((int) $args['invoice_id']);
419 419
 
420
-		if ( ! $invoice->exists() ) {
420
+		if (!$invoice->exists()) {
421 421
 			return;
422 422
 		}
423 423
 
424
-		$new_invoice = getpaid_duplicate_invoice( $invoice );
424
+		$new_invoice = getpaid_duplicate_invoice($invoice);
425 425
 		$new_invoice->save();
426 426
 
427
-		if ( $new_invoice->exists() ) {
427
+		if ($new_invoice->exists()) {
428 428
 
429
-			getpaid_admin()->show_success( __( 'Invoice duplicated successfully.', 'invoicing' ) );
429
+			getpaid_admin()->show_success(__('Invoice duplicated successfully.', 'invoicing'));
430 430
 
431 431
 			wp_safe_redirect(
432 432
 				add_query_arg(
@@ -434,14 +434,14 @@  discard block
 block discarded – undo
434 434
 						'action' => 'edit',
435 435
 						'post'   => $new_invoice->get_id(),
436 436
 					),
437
-					admin_url( 'post.php' )
437
+					admin_url('post.php')
438 438
 				)
439 439
 			);
440 440
 			exit;
441 441
 
442 442
 		}
443 443
 
444
-		getpaid_admin()->show_error( __( 'There was an error duplicating this invoice. Please try again.', 'invoicing' ) );
444
+		getpaid_admin()->show_error(__('There was an error duplicating this invoice. Please try again.', 'invoicing'));
445 445
 
446 446
 	}
447 447
 
@@ -450,40 +450,40 @@  discard block
 block discarded – undo
450 450
 	 *
451 451
 	 * @param array $args
452 452
      */
453
-    public function refund_invoice( $args ) {
453
+    public function refund_invoice($args) {
454 454
 
455
-		if ( empty( $args['invoice_id'] ) ) {
455
+		if (empty($args['invoice_id'])) {
456 456
 			return;
457 457
 		}
458 458
 
459
-		$invoice = new WPInv_Invoice( (int) $args['invoice_id'] );
459
+		$invoice = new WPInv_Invoice((int) $args['invoice_id']);
460 460
 
461
-		if ( ! $invoice->exists() || $invoice->is_refunded() ) {
461
+		if (!$invoice->exists() || $invoice->is_refunded()) {
462 462
 			return;
463 463
 		}
464 464
 
465 465
 		$invoice->refund();
466 466
 
467 467
 		// Refund remotely.
468
-		if ( getpaid_payment_gateway_supports( $invoice->get_gateway(), 'refunds' ) && ! empty( $args['getpaid_refund_remote'] ) ) {
469
-			do_action( 'getpaid_refund_invoice_remotely', $invoice );
468
+		if (getpaid_payment_gateway_supports($invoice->get_gateway(), 'refunds') && !empty($args['getpaid_refund_remote'])) {
469
+			do_action('getpaid_refund_invoice_remotely', $invoice);
470 470
 		}
471 471
 
472 472
 		// Cancel subscriptions.
473
-		if ( ! empty( $args['getpaid_cancel_subscription'] ) ) {
474
-			$subscriptions = getpaid_get_invoice_subscriptions( $invoice );
473
+		if (!empty($args['getpaid_cancel_subscription'])) {
474
+			$subscriptions = getpaid_get_invoice_subscriptions($invoice);
475 475
 
476
-			if ( ! empty( $subscriptions ) ) {
477
-				if ( ! is_array( $subscriptions ) ) {
478
-					$subscriptions = array( $subscriptions );
476
+			if (!empty($subscriptions)) {
477
+				if (!is_array($subscriptions)) {
478
+					$subscriptions = array($subscriptions);
479 479
 				}
480 480
 
481
-				foreach ( $subscriptions as $subscription ) {
481
+				foreach ($subscriptions as $subscription) {
482 482
 					$subscription->cancel();
483 483
 					$invoice->add_system_note(
484 484
 						sprintf(
485 485
 							// translators: %s: subscription ID.
486
-							__( 'Subscription #%s cancelled', 'invoicing' ),
486
+							__('Subscription #%s cancelled', 'invoicing'),
487 487
 							$subscription->get_id()
488 488
 						)
489 489
 					);
@@ -492,11 +492,11 @@  discard block
 block discarded – undo
492 492
 		}
493 493
 
494 494
 		// Add notice.
495
-		$this->show_success( __( 'Invoice refunded successfully.', 'invoicing' ) );
495
+		$this->show_success(__('Invoice refunded successfully.', 'invoicing'));
496 496
 
497 497
 		// Redirect.
498 498
 		wp_safe_redirect(
499
-			remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id', 'getpaid_cancel_subscription', 'getpaid_refund_remote' ) )
499
+			remove_query_arg(array('getpaid-admin-action', 'getpaid-nonce', 'invoice_id', 'getpaid_cancel_subscription', 'getpaid_refund_remote'))
500 500
 		);
501 501
 	}
502 502
 
@@ -505,34 +505,34 @@  discard block
 block discarded – undo
505 505
 	 *
506 506
 	 * @param array $args
507 507
      */
508
-    public function duplicate_payment_form( $args ) {
508
+    public function duplicate_payment_form($args) {
509 509
 
510
-		if ( empty( $args['form_id'] ) ) {
510
+		if (empty($args['form_id'])) {
511 511
 			return;
512 512
 		}
513 513
 
514
-		$form = new GetPaid_Payment_Form( (int) $args['form_id'] );
514
+		$form = new GetPaid_Payment_Form((int) $args['form_id']);
515 515
 
516
-		if ( ! $form->exists() ) {
516
+		if (!$form->exists()) {
517 517
 			return;
518 518
 		}
519 519
 
520 520
 		$new_form = new GetPaid_Payment_Form();
521
-		$new_form->set_author( $form->get_author( 'edit' ) );
522
-		$new_form->set_name( $form->get_name( 'edit' ) . __( '(copy)', 'invoicing' ) );
523
-		$new_form->set_elements( $form->get_elements( 'edit' ) );
524
-		$new_form->set_items( $form->get_items( 'edit' ) );
521
+		$new_form->set_author($form->get_author('edit'));
522
+		$new_form->set_name($form->get_name('edit') . __('(copy)', 'invoicing'));
523
+		$new_form->set_elements($form->get_elements('edit'));
524
+		$new_form->set_items($form->get_items('edit'));
525 525
 		$new_form->save();
526 526
 
527
-		if ( $new_form->exists() ) {
528
-			$this->show_success( __( 'Form duplicated successfully', 'invoicing' ) );
529
-			$url = get_edit_post_link( $new_form->get_id(), 'edit' );
527
+		if ($new_form->exists()) {
528
+			$this->show_success(__('Form duplicated successfully', 'invoicing'));
529
+			$url = get_edit_post_link($new_form->get_id(), 'edit');
530 530
 		} else {
531
-			$this->show_error( __( 'Unable to duplicate form', 'invoicing' ) );
532
-			$url = remove_query_arg( array( 'getpaid-admin-action', 'form_id', 'getpaid-nonce' ) );
531
+			$this->show_error(__('Unable to duplicate form', 'invoicing'));
532
+			$url = remove_query_arg(array('getpaid-admin-action', 'form_id', 'getpaid-nonce'));
533 533
 		}
534 534
 
535
-		wp_redirect( $url );
535
+		wp_redirect($url);
536 536
 		exit;
537 537
 	}
538 538
 
@@ -541,27 +541,27 @@  discard block
 block discarded – undo
541 541
 	 *
542 542
 	 * @param array $args
543 543
      */
544
-    public function reset_form_stats( $args ) {
544
+    public function reset_form_stats($args) {
545 545
 
546
-		if ( empty( $args['form_id'] ) ) {
546
+		if (empty($args['form_id'])) {
547 547
 			return;
548 548
 		}
549 549
 
550
-		$form = new GetPaid_Payment_Form( (int) $args['form_id'] );
550
+		$form = new GetPaid_Payment_Form((int) $args['form_id']);
551 551
 
552
-		if ( ! $form->exists() ) {
552
+		if (!$form->exists()) {
553 553
 			return;
554 554
 		}
555 555
 
556
-		$form->set_earned( 0 );
557
-		$form->set_refunded( 0 );
558
-		$form->set_cancelled( 0 );
559
-		$form->set_failed( 0 );
556
+		$form->set_earned(0);
557
+		$form->set_refunded(0);
558
+		$form->set_cancelled(0);
559
+		$form->set_failed(0);
560 560
 		$form->save();
561 561
 
562
-		$this->show_success( __( 'Form stats reset successfully', 'invoicing' ) );
562
+		$this->show_success(__('Form stats reset successfully', 'invoicing'));
563 563
 
564
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'form_id', 'getpaid-nonce' ) ) );
564
+		wp_safe_redirect(remove_query_arg(array('getpaid-admin-action', 'form_id', 'getpaid-nonce')));
565 565
 		exit;
566 566
 	}
567 567
 
@@ -570,9 +570,9 @@  discard block
 block discarded – undo
570 570
 	 *
571 571
 	 * @param array $args
572 572
      */
573
-    public function send_customer_invoice( $args ) {
574
-		getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $args['invoice_id'] ), true );
575
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) );
573
+    public function send_customer_invoice($args) {
574
+		getpaid()->get('invoice_emails')->user_invoice(new WPInv_Invoice($args['invoice_id']), true);
575
+		wp_safe_redirect(remove_query_arg(array('getpaid-admin-action', 'getpaid-nonce', 'invoice_id')));
576 576
 		exit;
577 577
 	}
578 578
 
@@ -581,16 +581,16 @@  discard block
 block discarded – undo
581 581
 	 *
582 582
 	 * @param array $args
583 583
      */
584
-    public function send_customer_payment_reminder( $args ) {
585
-		$sent = getpaid()->get( 'invoice_emails' )->force_send_overdue_notice( new WPInv_Invoice( $args['invoice_id'] ) );
584
+    public function send_customer_payment_reminder($args) {
585
+		$sent = getpaid()->get('invoice_emails')->force_send_overdue_notice(new WPInv_Invoice($args['invoice_id']));
586 586
 
587
-		if ( $sent ) {
588
-			$this->show_success( __( 'Payment reminder was successfully sent to the customer', 'invoicing' ) );
587
+		if ($sent) {
588
+			$this->show_success(__('Payment reminder was successfully sent to the customer', 'invoicing'));
589 589
 		} else {
590
-			$this->show_error( __( 'Could not sent payment reminder to the customer', 'invoicing' ) );
590
+			$this->show_error(__('Could not sent payment reminder to the customer', 'invoicing'));
591 591
 		}
592 592
 
593
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) );
593
+		wp_safe_redirect(remove_query_arg(array('getpaid-admin-action', 'getpaid-nonce', 'invoice_id')));
594 594
 		exit;
595 595
 	}
596 596
 
@@ -600,8 +600,8 @@  discard block
 block discarded – undo
600 600
      */
601 601
     public function admin_reset_tax_rates() {
602 602
 
603
-		update_option( 'wpinv_tax_rates', wpinv_get_data( 'tax-rates' ) );
604
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
603
+		update_option('wpinv_tax_rates', wpinv_get_data('tax-rates'));
604
+		wp_safe_redirect(remove_query_arg(array('getpaid-admin-action', 'getpaid-nonce')));
605 605
 		exit;
606 606
 
607 607
 	}
@@ -613,8 +613,8 @@  discard block
 block discarded – undo
613 613
     public function admin_create_missing_pages() {
614 614
 		$installer = new GetPaid_Installer();
615 615
 		$installer->create_pages();
616
-		$this->show_success( __( 'GetPaid pages updated.', 'invoicing' ) );
617
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
616
+		$this->show_success(__('GetPaid pages updated.', 'invoicing'));
617
+		wp_safe_redirect(remove_query_arg(array('getpaid-admin-action', 'getpaid-nonce')));
618 618
 		exit;
619 619
 	}
620 620
 
@@ -623,8 +623,8 @@  discard block
 block discarded – undo
623 623
 	 */
624 624
 	public function admin_refresh_permalinks() {
625 625
 		flush_rewrite_rules();
626
-		$this->show_success( __( 'Permalinks refreshed.', 'invoicing' ) );
627
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
626
+		$this->show_success(__('Permalinks refreshed.', 'invoicing'));
627
+		wp_safe_redirect(remove_query_arg(array('getpaid-admin-action', 'getpaid-nonce')));
628 628
 		exit;
629 629
 	}
630 630
 
@@ -638,13 +638,13 @@  discard block
 block discarded – undo
638 638
 		GetPaid_Installer::create_db_tables();
639 639
 		GetPaid_Installer::migrate_old_customers();
640 640
 
641
-		if ( '' !== $wpdb->last_error ) {
642
-			$this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error );
641
+		if ('' !== $wpdb->last_error) {
642
+			$this->show_error(__('Your GetPaid tables have been updated:', 'invoicing') . ' ' . $wpdb->last_error);
643 643
 		} else {
644
-			$this->show_success( __( 'Your GetPaid tables have been updated.', 'invoicing' ) );
644
+			$this->show_success(__('Your GetPaid tables have been updated.', 'invoicing'));
645 645
 		}
646 646
 
647
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
647
+		wp_safe_redirect(remove_query_arg(array('getpaid-admin-action', 'getpaid-nonce')));
648 648
 		exit;
649 649
 	}
650 650
 
@@ -659,10 +659,10 @@  discard block
 block discarded – undo
659 659
 		$installer->migrate_old_invoices();
660 660
 
661 661
 		// Show an admin message.
662
-		$this->show_success( __( 'Your invoices have been migrated.', 'invoicing' ) );
662
+		$this->show_success(__('Your invoices have been migrated.', 'invoicing'));
663 663
 
664 664
 		// Redirect the admin.
665
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
665
+		wp_safe_redirect(remove_query_arg(array('getpaid-admin-action', 'getpaid-nonce')));
666 666
 		exit;
667 667
 
668 668
 	}
@@ -673,35 +673,35 @@  discard block
 block discarded – undo
673 673
      */
674 674
     public function admin_download_customers() {
675 675
 
676
-		$output = fopen( 'php://output', 'w' );
676
+		$output = fopen('php://output', 'w');
677 677
 
678
-		if ( false === $output ) {
679
-			wp_die( esc_html__( 'Unsupported server', 'invoicing' ), 500 );
678
+		if (false === $output) {
679
+			wp_die(esc_html__('Unsupported server', 'invoicing'), 500);
680 680
 		}
681 681
 
682
-		header( 'Content-Type:text/csv' );
683
-		header( 'Content-Disposition:attachment;filename=customers.csv' );
682
+		header('Content-Type:text/csv');
683
+		header('Content-Disposition:attachment;filename=customers.csv');
684 684
 
685 685
 		/** @var GetPaid_Customer[] $customers */
686
-		$customers = getpaid_get_customers( array( 'number' => -1 ) );
687
-		$columns   = array_keys( GetPaid_Customer_Data_Store::get_database_fields() );
686
+		$customers = getpaid_get_customers(array('number' => -1));
687
+		$columns   = array_keys(GetPaid_Customer_Data_Store::get_database_fields());
688 688
 
689 689
 		// Output the csv column headers.
690
-		fputcsv( $output, $columns );
690
+		fputcsv($output, $columns);
691 691
 
692 692
 		// Loop through
693
-		foreach ( $customers as $customer ) {
693
+		foreach ($customers as $customer) {
694 694
 
695
-			$row  = array();
695
+			$row = array();
696 696
 
697
-			foreach ( $columns as $column ) {
698
-				$row[]  = (string) maybe_serialize( $customer->get( $column, 'edit' ) );
697
+			foreach ($columns as $column) {
698
+				$row[] = (string) maybe_serialize($customer->get($column, 'edit'));
699 699
 			}
700 700
 
701
-			fputcsv( $output, $row );
701
+			fputcsv($output, $row);
702 702
 		}
703 703
 
704
-		fclose( $output );
704
+		fclose($output);
705 705
 		exit;
706 706
 
707 707
 	}
@@ -711,27 +711,27 @@  discard block
 block discarded – undo
711 711
 	 *
712 712
 	 * @param array $data
713 713
      */
714
-    public function admin_install_plugin( $data ) {
714
+    public function admin_install_plugin($data) {
715 715
 
716
-		if ( ! empty( $data['plugins'] ) ) {
716
+		if (!empty($data['plugins'])) {
717 717
 			include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
718 718
 			wp_cache_flush();
719 719
 
720
-			foreach ( $data['plugins'] as $slug => $file ) {
721
-				$plugin_zip = esc_url( 'https://downloads.wordpress.org/plugin/' . $slug . '.latest-stable.zip' );
722
-				$upgrader   = new Plugin_Upgrader( new Automatic_Upgrader_Skin() );
723
-				$installed  = $upgrader->install( $plugin_zip );
720
+			foreach ($data['plugins'] as $slug => $file) {
721
+				$plugin_zip = esc_url('https://downloads.wordpress.org/plugin/' . $slug . '.latest-stable.zip');
722
+				$upgrader   = new Plugin_Upgrader(new Automatic_Upgrader_Skin());
723
+				$installed  = $upgrader->install($plugin_zip);
724 724
 
725
-				if ( ! is_wp_error( $installed ) && $installed ) {
726
-					activate_plugin( $file, '', false, true );
725
+				if (!is_wp_error($installed) && $installed) {
726
+					activate_plugin($file, '', false, true);
727 727
 				} else {
728
-					wpinv_error_log( $upgrader->skin->get_upgrade_messages(), false );
728
+					wpinv_error_log($upgrader->skin->get_upgrade_messages(), false);
729 729
 				}
730 730
 }
731 731
 }
732 732
 
733
-		$redirect = isset( $data['redirect'] ) ? esc_url_raw( $data['redirect'] ) : admin_url( 'plugins.php' );
734
-		wp_safe_redirect( $redirect );
733
+		$redirect = isset($data['redirect']) ? esc_url_raw($data['redirect']) : admin_url('plugins.php');
734
+		wp_safe_redirect($redirect);
735 735
 		exit;
736 736
 
737 737
 	}
@@ -741,41 +741,41 @@  discard block
 block discarded – undo
741 741
 	 *
742 742
 	 * @param array $data
743 743
      */
744
-    public function admin_connect_gateway( $data ) {
744
+    public function admin_connect_gateway($data) {
745 745
 
746
-		if ( ! empty( $data['plugin'] ) ) {
746
+		if (!empty($data['plugin'])) {
747 747
 
748
-			$gateway     = sanitize_key( $data['plugin'] );
749
-			$connect_url = apply_filters( "getpaid_get_{$gateway}_connect_url", false, $data );
748
+			$gateway     = sanitize_key($data['plugin']);
749
+			$connect_url = apply_filters("getpaid_get_{$gateway}_connect_url", false, $data);
750 750
 
751
-			if ( ! empty( $connect_url ) ) {
752
-				wp_redirect( $connect_url );
751
+			if (!empty($connect_url)) {
752
+				wp_redirect($connect_url);
753 753
 				exit;
754 754
 			}
755 755
 
756
-			if ( 'stripe' == $data['plugin'] ) {
756
+			if ('stripe' == $data['plugin']) {
757 757
 				require_once ABSPATH . 'wp-admin/includes/plugin.php';
758 758
 				include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
759 759
 				wp_cache_flush();
760 760
 
761
-				if ( ! array_key_exists( 'getpaid-stripe-payments/getpaid-stripe-payments.php', get_plugins() ) ) {
762
-					$plugin_zip = esc_url( 'https://downloads.wordpress.org/plugin/getpaid-stripe-payments.latest-stable.zip' );
763
-					$upgrader   = new Plugin_Upgrader( new Automatic_Upgrader_Skin() );
764
-					$upgrader->install( $plugin_zip );
761
+				if (!array_key_exists('getpaid-stripe-payments/getpaid-stripe-payments.php', get_plugins())) {
762
+					$plugin_zip = esc_url('https://downloads.wordpress.org/plugin/getpaid-stripe-payments.latest-stable.zip');
763
+					$upgrader   = new Plugin_Upgrader(new Automatic_Upgrader_Skin());
764
+					$upgrader->install($plugin_zip);
765 765
 				}
766 766
 
767
-				activate_plugin( 'getpaid-stripe-payments/getpaid-stripe-payments.php', '', false, true );
767
+				activate_plugin('getpaid-stripe-payments/getpaid-stripe-payments.php', '', false, true);
768 768
 			}
769 769
 
770
-			$connect_url = apply_filters( "getpaid_get_{$gateway}_connect_url", false, $data );
771
-			if ( ! empty( $connect_url ) ) {
772
-				wp_redirect( $connect_url );
770
+			$connect_url = apply_filters("getpaid_get_{$gateway}_connect_url", false, $data);
771
+			if (!empty($connect_url)) {
772
+				wp_redirect($connect_url);
773 773
 				exit;
774 774
 			}
775 775
 }
776 776
 
777
-		$redirect = isset( $data['redirect'] ) ? esc_url_raw( urldecode( $data['redirect'] ) ) : admin_url( 'admin.php?page=wpinv-settings&tab=gateways' );
778
-		wp_safe_redirect( $redirect );
777
+		$redirect = isset($data['redirect']) ? esc_url_raw(urldecode($data['redirect'])) : admin_url('admin.php?page=wpinv-settings&tab=gateways');
778
+		wp_safe_redirect($redirect);
779 779
 		exit;
780 780
 
781 781
 	}
@@ -789,35 +789,35 @@  discard block
 block discarded – undo
789 789
 
790 790
 		// Fetch all invoices that have discount codes.
791 791
 		$table    = $wpdb->prefix . 'getpaid_invoices';
792
-		$invoices = $wpdb->get_col( "SELECT `post_id` FROM `$table` WHERE `discount` = 0 && `discount_code` <> ''" );
792
+		$invoices = $wpdb->get_col("SELECT `post_id` FROM `$table` WHERE `discount` = 0 && `discount_code` <> ''");
793 793
 
794
-		foreach ( $invoices as $invoice ) {
794
+		foreach ($invoices as $invoice) {
795 795
 
796
-			$invoice = new WPInv_Invoice( $invoice );
796
+			$invoice = new WPInv_Invoice($invoice);
797 797
 
798
-			if ( ! $invoice->exists() ) {
798
+			if (!$invoice->exists()) {
799 799
 				continue;
800 800
 			}
801 801
 
802 802
 			// Abort if the discount does not exist or does not apply here.
803
-			$discount = new WPInv_Discount( $invoice->get_discount_code() );
804
-			if ( ! $discount->exists() ) {
803
+			$discount = new WPInv_Discount($invoice->get_discount_code());
804
+			if (!$discount->exists()) {
805 805
 				continue;
806 806
 			}
807 807
 
808
-			$invoice->add_discount( getpaid_calculate_invoice_discount( $invoice, $discount ) );
808
+			$invoice->add_discount(getpaid_calculate_invoice_discount($invoice, $discount));
809 809
 			$invoice->recalculate_total();
810 810
 
811
-			if ( $invoice->get_total_discount() > 0 ) {
811
+			if ($invoice->get_total_discount() > 0) {
812 812
 				$invoice->save();
813 813
 			}
814 814
 }
815 815
 
816 816
 		// Show an admin message.
817
-		$this->show_success( __( 'Discounts have been recalculated.', 'invoicing' ) );
817
+		$this->show_success(__('Discounts have been recalculated.', 'invoicing'));
818 818
 
819 819
 		// Redirect the admin.
820
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
820
+		wp_safe_redirect(remove_query_arg(array('getpaid-admin-action', 'getpaid-nonce')));
821 821
 		exit;
822 822
 
823 823
 	}
@@ -829,8 +829,8 @@  discard block
 block discarded – undo
829 829
      * @return array
830 830
 	 */
831 831
 	public function get_notices() {
832
-		$notices = get_option( 'wpinv_admin_notices' );
833
-        return is_array( $notices ) ? $notices : array();
832
+		$notices = get_option('wpinv_admin_notices');
833
+        return is_array($notices) ? $notices : array();
834 834
 	}
835 835
 
836 836
 	/**
@@ -840,7 +840,7 @@  discard block
 block discarded – undo
840 840
      * @return array
841 841
 	 */
842 842
 	public function has_notices() {
843
-		return count( $this->get_notices() ) > 0;
843
+		return count($this->get_notices()) > 0;
844 844
 	}
845 845
 
846 846
 	/**
@@ -850,7 +850,7 @@  discard block
 block discarded – undo
850 850
 	 * @since       1.0.19
851 851
 	 */
852 852
 	public function clear_notices() {
853
-		delete_option( 'wpinv_admin_notices' );
853
+		delete_option('wpinv_admin_notices');
854 854
 	}
855 855
 
856 856
 	/**
@@ -859,16 +859,16 @@  discard block
 block discarded – undo
859 859
 	 * @access      public
860 860
 	 * @since       1.0.19
861 861
 	 */
862
-	public function save_notice( $type, $message ) {
862
+	public function save_notice($type, $message) {
863 863
 		$notices = $this->get_notices();
864 864
 
865
-		if ( empty( $notices[ $type ] ) || ! is_array( $notices[ $type ] ) ) {
866
-			$notices[ $type ] = array();
865
+		if (empty($notices[$type]) || !is_array($notices[$type])) {
866
+			$notices[$type] = array();
867 867
 		}
868 868
 
869
-		$notices[ $type ][] = $message;
869
+		$notices[$type][] = $message;
870 870
 
871
-		update_option( 'wpinv_admin_notices', $notices );
871
+		update_option('wpinv_admin_notices', $notices);
872 872
 	}
873 873
 
874 874
 	/**
@@ -878,8 +878,8 @@  discard block
 block discarded – undo
878 878
 	 * @access      public
879 879
 	 * @since       1.0.19
880 880
 	 */
881
-	public function show_success( $msg ) {
882
-		$this->save_notice( 'success', $msg );
881
+	public function show_success($msg) {
882
+		$this->save_notice('success', $msg);
883 883
 	}
884 884
 
885 885
 	/**
@@ -889,8 +889,8 @@  discard block
 block discarded – undo
889 889
 	 * @param       string $msg The message to qeue.
890 890
 	 * @since       1.0.19
891 891
 	 */
892
-	public function show_error( $msg ) {
893
-		$this->save_notice( 'error', $msg );
892
+	public function show_error($msg) {
893
+		$this->save_notice('error', $msg);
894 894
 	}
895 895
 
896 896
 	/**
@@ -900,8 +900,8 @@  discard block
 block discarded – undo
900 900
 	 * @param       string $msg The message to qeue.
901 901
 	 * @since       1.0.19
902 902
 	 */
903
-	public function show_warning( $msg ) {
904
-		$this->save_notice( 'warning', $msg );
903
+	public function show_warning($msg) {
904
+		$this->save_notice('warning', $msg);
905 905
 	}
906 906
 
907 907
 	/**
@@ -911,8 +911,8 @@  discard block
 block discarded – undo
911 911
 	 * @param       string $msg The message to qeue.
912 912
 	 * @since       1.0.19
913 913
 	 */
914
-	public function show_info( $msg ) {
915
-		$this->save_notice( 'info', $msg );
914
+	public function show_info($msg) {
915
+		$this->save_notice('info', $msg);
916 916
 	}
917 917
 
918 918
 	/**
@@ -926,29 +926,29 @@  discard block
 block discarded – undo
926 926
         $notices = $this->get_notices();
927 927
         $this->clear_notices();
928 928
 
929
-		foreach ( $notices as $type => $messages ) {
929
+		foreach ($notices as $type => $messages) {
930 930
 
931
-			if ( ! is_array( $messages ) ) {
931
+			if (!is_array($messages)) {
932 932
 				continue;
933 933
 			}
934 934
 
935
-            $type  = esc_attr( $type );
936
-			foreach ( $messages as $message ) {
937
-				echo wp_kses_post( "<div class='notice notice-$type is-dismissible'><p>$message</p></div>" );
935
+            $type = esc_attr($type);
936
+			foreach ($messages as $message) {
937
+				echo wp_kses_post("<div class='notice notice-$type is-dismissible'><p>$message</p></div>");
938 938
             }
939 939
 }
940 940
 
941
-		foreach ( array( 'checkout_page', 'invoice_history_page', 'success_page', 'failure_page', 'invoice_subscription_page' ) as $page ) {
941
+		foreach (array('checkout_page', 'invoice_history_page', 'success_page', 'failure_page', 'invoice_subscription_page') as $page) {
942 942
 
943
-			if ( ! is_numeric( wpinv_get_option( $page, false ) ) ) {
944
-				$url     = wp_nonce_url(
945
-					add_query_arg( 'getpaid-admin-action', 'create_missing_pages' ),
943
+			if (!is_numeric(wpinv_get_option($page, false))) {
944
+				$url = wp_nonce_url(
945
+					add_query_arg('getpaid-admin-action', 'create_missing_pages'),
946 946
 					'getpaid-nonce',
947 947
 					'getpaid-nonce'
948 948
 				);
949
-				$message  = __( 'Some GetPaid pages are missing. To use GetPaid without any issues, click the button below to generate the missing pages.', 'invoicing' );
950
-				$message2 = __( 'Generate Pages', 'invoicing' );
951
-				echo wp_kses_post( "<div class='notice notice-warning is-dismissible'><p>$message<br><br><a href='$url' class='button button-primary'>$message2</a></p></div>" );
949
+				$message  = __('Some GetPaid pages are missing. To use GetPaid without any issues, click the button below to generate the missing pages.', 'invoicing');
950
+				$message2 = __('Generate Pages', 'invoicing');
951
+				echo wp_kses_post("<div class='notice notice-warning is-dismissible'><p>$message<br><br><a href='$url' class='button button-primary'>$message2</a></p></div>");
952 952
 				break;
953 953
 			}
954 954
 }
Please login to merge, or discard this patch.
includes/class-wpinv.php 2 patches
Indentation   +615 added lines, -615 removed lines patch added patch discarded remove patch
@@ -14,619 +14,619 @@
 block discarded – undo
14 14
  */
15 15
 class WPInv_Plugin {
16 16
 
17
-	/**
18
-	 * GetPaid version.
19
-	 *
20
-	 * @var string
21
-	 */
22
-	public $version;
23
-
24
-	/**
25
-	 * Data container.
26
-	 *
27
-	 * @var array
28
-	 */
29
-	protected $data = array();
30
-
31
-	/**
32
-	 * Form elements instance.
33
-	 *
34
-	 * @var WPInv_Payment_Form_Elements
35
-	 */
36
-	public $form_elements;
37
-
38
-	/**
39
-	 * @var array An array of payment gateways.
40
-	 */
41
-	public $gateways;
42
-
43
-	/**
44
-	 * Class constructor.
45
-	 */
46
-	public function __construct() {
47
-		$this->define_constants();
48
-		$this->includes();
49
-		$this->init_hooks();
50
-		$this->set_properties();
51
-	}
52
-
53
-	/**
54
-	 * Sets a custom data property.
55
-	 *
56
-	 * @param string $prop The prop to set.
57
-	 * @param mixed $value The value to retrieve.
58
-	 */
59
-	public function set( $prop, $value ) {
60
-		$this->data[ $prop ] = $value;
61
-	}
62
-
63
-	/**
64
-	 * Gets a custom data property.
65
-	 *
66
-	 * @param string $prop The prop to set.
67
-	 * @return mixed The value.
68
-	 */
69
-	public function get( $prop ) {
70
-		if ( isset( $this->data[ $prop ] ) ) {
71
-			return $this->data[ $prop ];
72
-		}
73
-
74
-		return null;
75
-	}
76
-
77
-	/**
78
-	 * Define class properties.
79
-	 */
80
-	public function set_properties() {
81
-		// Sessions.
82
-		$this->set( 'session', new WPInv_Session_Handler() );
83
-		$GLOBALS['wpi_session'] = $this->get( 'session' ); // Backwards compatibility.
84
-		$GLOBALS['wpinv_euvat'] = new WPInv_EUVat(); // Backwards compatibility.
85
-
86
-		// Init other objects.
87
-		$this->set( 'notes', new WPInv_Notes() );
88
-		$this->set( 'api', new WPInv_API() );
89
-		$this->set( 'post_types', new GetPaid_Post_Types() );
90
-		$this->set( 'template', new GetPaid_Template() );
91
-		$this->set( 'admin', new GetPaid_Admin() );
92
-		$this->set( 'subscriptions', new WPInv_Subscriptions() );
93
-		$this->set( 'invoice_emails', new GetPaid_Invoice_Notification_Emails() );
94
-		$this->set( 'subscription_emails', new GetPaid_Subscription_Notification_Emails() );
95
-		$this->set( 'daily_maintenace', new GetPaid_Daily_Maintenance() );
96
-		$this->set( 'payment_forms', new GetPaid_Payment_Forms() );
97
-		$this->set( 'maxmind', new GetPaid_MaxMind_Geolocation() );
98
-	}
99
-
100
-	 /**
101
-	 * Define plugin constants.
102
-	 */
103
-	public function define_constants() {
104
-		define( 'WPINV_PLUGIN_DIR', plugin_dir_path( WPINV_PLUGIN_FILE ) );
105
-		define( 'WPINV_PLUGIN_URL', plugin_dir_url( WPINV_PLUGIN_FILE ) );
106
-		$this->version = WPINV_VERSION;
107
-	}
108
-
109
-	/**
110
-	 * Hook into actions and filters.
111
-	 *
112
-	 * @since 1.0.19
113
-	 */
114
-	protected function init_hooks() {
115
-		/* Internationalize the text strings used. */
116
-		add_action( 'plugins_loaded', array( &$this, 'plugins_loaded' ) );
117
-
118
-		// Init the plugin after WordPress inits.
119
-		add_action( 'init', array( $this, 'init' ), 1 );
120
-		add_action( 'init', array( $this, 'maybe_process_ipn' ), 10 );
121
-		add_action( 'init', array( $this, 'wpinv_actions' ) );
122
-		add_action( 'init', array( $this, 'maybe_do_authenticated_action' ), 100 );
123
-		add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), 11 );
124
-		add_action( 'wp_footer', array( $this, 'wp_footer' ) );
125
-		add_action( 'wp_head', array( $this, 'wp_head' ) );
126
-		add_action( 'widgets_init', array( $this, 'register_widgets' ) );
127
-		add_filter( 'wpseo_exclude_from_sitemap_by_post_ids', array( $this, 'wpseo_exclude_from_sitemap_by_post_ids' ) );
128
-		add_filter( 'the_seo_framework_sitemap_supported_post_types', array( $this, 'exclude_invoicing_post_types' ) );
129
-		add_filter( 'pre_get_posts', array( &$this, 'pre_get_posts' ) );
130
-
131
-		add_filter( 'query_vars', array( $this, 'custom_query_vars' ) );
132
-		add_action( 'init', array( $this, 'add_rewrite_rule' ), 10, 0 );
133
-		add_action( 'pre_get_posts', array( $this, 'maybe_process_new_ipn' ), 1 );
134
-
135
-		// Fires after registering actions.
136
-		do_action( 'wpinv_actions', $this );
137
-		do_action( 'getpaid_actions', $this );
138
-	}
139
-
140
-	public function plugins_loaded() {
141
-		/* Internationalize the text strings used. */
142
-		$this->load_textdomain();
143
-
144
-		do_action( 'wpinv_loaded' );
145
-
146
-		// Fix oxygen page builder conflict
147
-		if ( function_exists( 'ct_css_output' ) ) {
148
-			wpinv_oxygen_fix_conflict();
149
-		}
150
-	}
151
-
152
-	/**
153
-	 * Load Localisation files.
154
-	 *
155
-	 * Note: the first-loaded translation file overrides any following ones if the same translation is present.
156
-	 *
157
-	 * Locales found in:
158
-	 *      - WP_LANG_DIR/plugins/invoicing-LOCALE.mo
159
-	 *      - WP_PLUGIN_DIR/invoicing/languages/invoicing-LOCALE.mo
160
-	 *
161
-	 * @since 1.0.0
162
-	 */
163
-	public function load_textdomain() {
164
-		// Determines the current locale.
165
-		if ( function_exists( 'determine_locale' ) ) {
166
-			$locale = determine_locale();
167
-		} else if ( function_exists( 'get_user_locale' ) ) {
168
-			$locale = get_user_locale();
169
-		} else {
170
-			$locale = get_locale();
171
-		}
172
-
173
-		/**
174
-		 * Filter the locale to use for translations.
175
-		 */
176
-		$locale = apply_filters( 'plugin_locale', $locale, 'invoicing' );
177
-
178
-		unload_textdomain( 'invoicing', true );
179
-		load_textdomain( 'invoicing', WP_LANG_DIR . '/invoicing/invoicing-' . $locale . '.mo' );
180
-		load_plugin_textdomain( 'invoicing', false, plugin_basename( dirname( WPINV_PLUGIN_FILE ) ) . '/languages/' );
181
-	}
182
-
183
-	/**
184
-	 * Include required core files used in admin and on the frontend.
185
-	 */
186
-	public function includes() {
187
-		// Start with the settings.
188
-		require_once WPINV_PLUGIN_DIR . 'includes/admin/register-settings.php';
189
-
190
-		// Packages/libraries.
191
-		require_once WPINV_PLUGIN_DIR . 'vendor/autoload.php';
192
-		require_once WPINV_PLUGIN_DIR . 'vendor/ayecode/wp-ayecode-ui/ayecode-ui-loader.php';
193
-
194
-		// Load functions.
195
-		require_once WPINV_PLUGIN_DIR . 'includes/deprecated-functions.php';
196
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-email-functions.php';
197
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-general-functions.php';
198
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-helper-functions.php';
199
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-tax-functions.php';
200
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-template-functions.php';
201
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-address-functions.php';
202
-		require_once WPINV_PLUGIN_DIR . 'includes/invoice-functions.php';
203
-		require_once WPINV_PLUGIN_DIR . 'includes/subscription-functions.php';
204
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-item-functions.php';
205
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-discount-functions.php';
206
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-gateway-functions.php';
207
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-payment-functions.php';
208
-		require_once WPINV_PLUGIN_DIR . 'includes/user-functions.php';
209
-		require_once WPINV_PLUGIN_DIR . 'includes/error-functions.php';
210
-
211
-		// Register autoloader.
212
-		try {
213
-			spl_autoload_register( array( $this, 'autoload' ), true );
214
-		} catch ( Exception $e ) {
215
-			wpinv_error_log( $e->getMessage(), '', __FILE__, 149, true );
216
-		}
217
-
218
-		require_once WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-session.php';
219
-		require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-session-handler.php';
220
-		require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-ajax.php';
221
-		require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-api.php';
222
-		require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-cache-helper.php';
223
-		require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-db.php';
224
-		require_once WPINV_PLUGIN_DIR . 'includes/admin/subscriptions.php';
225
-		require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-subscriptions-db.php';
226
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-subscription.php';
227
-		require_once WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-privacy.php';
228
-		require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-privacy.php';
229
-		require_once WPINV_PLUGIN_DIR . 'includes/libraries/class-ayecode-addons.php';
230
-		require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-addons.php';
231
-		require_once WPINV_PLUGIN_DIR . 'widgets/checkout.php';
232
-		require_once WPINV_PLUGIN_DIR . 'widgets/invoice-history.php';
233
-		require_once WPINV_PLUGIN_DIR . 'widgets/invoice-receipt.php';
234
-		require_once WPINV_PLUGIN_DIR . 'widgets/invoice-messages.php';
235
-		require_once WPINV_PLUGIN_DIR . 'widgets/subscriptions.php';
236
-		require_once WPINV_PLUGIN_DIR . 'widgets/buy-item.php';
237
-		require_once WPINV_PLUGIN_DIR . 'widgets/getpaid.php';
238
-		require_once WPINV_PLUGIN_DIR . 'widgets/invoice.php';
239
-		require_once WPINV_PLUGIN_DIR . 'includes/admin/admin-pages.php';
240
-
241
-		if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) {
242
-			GetPaid_Post_Types_Admin::init();
243
-
244
-			require_once WPINV_PLUGIN_DIR . 'includes/admin/wpinv-admin-functions.php';
245
-			require_once WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-payment-form.php';
246
-			require_once WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-notes.php';
247
-			require_once WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-admin-menus.php';
248
-			require_once WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-users.php';
249
-			require_once WPINV_PLUGIN_DIR . 'includes/admin/class-getpaid-admin-profile.php';
250
-			// load the user class only on the users.php page
251
-			global $pagenow;
252
-			if ( $pagenow == 'users.php' ) {
253
-				new WPInv_Admin_Users();
254
-			}
255
-		}
256
-
257
-		// Register cli commands
258
-		if ( defined( 'WP_CLI' ) && WP_CLI ) {
259
-			require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-cli.php';
260
-			WP_CLI::add_command( 'invoicing', 'WPInv_CLI' );
261
-		}
262
-	}
263
-
264
-	/**
265
-	 * Class autoloader
266
-	 *
267
-	 * @param       string $class_name The name of the class to load.
268
-	 * @access      public
269
-	 * @since       1.0.19
270
-	 * @return      void
271
-	 */
272
-	public function autoload( $class_name ) {
273
-		// Normalize the class name...
274
-		$class_name  = strtolower( $class_name );
275
-
276
-		// ... and make sure it is our class.
277
-		if ( false === strpos( $class_name, 'getpaid_' ) && false === strpos( $class_name, 'wpinv_' ) ) {
278
-			return;
279
-		}
280
-
281
-		// Next, prepare the file name from the class.
282
-		$file_name = 'class-' . str_replace( '_', '-', $class_name ) . '.php';
283
-
284
-		// Base path of the classes.
285
-		$plugin_path = untrailingslashit( WPINV_PLUGIN_DIR );
286
-
287
-		// And an array of possible locations in order of importance.
288
-		$locations = array(
289
-			"$plugin_path/includes",
290
-			"$plugin_path/includes/data-stores",
291
-			"$plugin_path/includes/gateways",
292
-			"$plugin_path/includes/payments",
293
-			"$plugin_path/includes/geolocation",
294
-			"$plugin_path/includes/reports",
295
-			"$plugin_path/includes/api",
296
-			"$plugin_path/includes/admin",
297
-			"$plugin_path/includes/admin/meta-boxes",
298
-		);
299
-
300
-		foreach ( apply_filters( 'getpaid_autoload_locations', $locations ) as $location ) {
301
-			if ( file_exists( trailingslashit( $location ) . $file_name ) ) {
302
-				include trailingslashit( $location ) . $file_name;
303
-				break;
304
-			}
305
-		}
306
-	}
307
-
308
-	/**
309
-	 * Inits hooks etc.
310
-	 */
311
-	public function init() {
312
-		// Fires before getpaid inits.
313
-		do_action( 'before_getpaid_init', $this );
314
-
315
-		// Maybe upgrade.
316
-		$this->maybe_upgrade_database();
317
-
318
-		// Load default gateways.
319
-		$gateways = apply_filters(
320
-			'getpaid_default_gateways',
321
-			array(
322
-				'manual'        => 'GetPaid_Manual_Gateway',
323
-				'paypal'        => 'GetPaid_Paypal_Gateway',
324
-				'worldpay'      => 'GetPaid_Worldpay_Gateway',
325
-				'bank_transfer' => 'GetPaid_Bank_Transfer_Gateway',
326
-				'authorizenet'  => 'GetPaid_Authorize_Net_Gateway',
327
-			)
328
-		);
329
-
330
-		foreach ( $gateways as $id => $class ) {
331
-			$this->gateways[ $id ] = new $class();
332
-		}
333
-
334
-		if ( 'yes' != get_option( 'wpinv_renamed_gateways' ) ) {
335
-			GetPaid_Installer::rename_gateways_label();
336
-			update_option( 'wpinv_renamed_gateways', 'yes' );
337
-		}
338
-
339
-		// Fires after getpaid inits.
340
-		do_action( 'getpaid_init', $this );
341
-	}
342
-
343
-	/**
344
-	 * Checks if this is an IPN request and processes it.
345
-	 */
346
-	public function maybe_process_ipn() {
347
-		// Ensure that this is an IPN request.
348
-		if ( empty( $_GET['wpi-listener'] ) || 'IPN' !== $_GET['wpi-listener'] || empty( $_GET['wpi-gateway'] ) ) {
349
-			return;
350
-		}
351
-
352
-		$gateway = sanitize_text_field( $_GET['wpi-gateway'] );
353
-
354
-		do_action( 'wpinv_verify_payment_ipn', $gateway );
355
-		do_action( "wpinv_verify_{$gateway}_ipn" );
356
-		exit;
357
-	}
358
-
359
-	public function enqueue_scripts() {
360
-		// Fires before adding scripts.
361
-		do_action( 'getpaid_enqueue_scripts' );
362
-
363
-		$localize                         = array();
364
-		$localize['ajax_url']             = admin_url( 'admin-ajax.php' );
365
-		$localize['thousands']            = wpinv_thousands_separator();
366
-		$localize['decimals']             = wpinv_decimal_separator();
367
-		$localize['nonce']                = wp_create_nonce( 'wpinv-nonce' );
368
-		$localize['txtComplete']          = __( 'Continue', 'invoicing' );
369
-		$localize['UseTaxes']             = wpinv_use_taxes();
370
-		$localize['formNonce']            = wp_create_nonce( 'getpaid_form_nonce' );
371
-		$localize['loading']              = __( 'Loading...', 'invoicing' );
372
-		$localize['connectionError']      = __( 'Could not establish a connection to the server.', 'invoicing' );
373
-		$localize['recaptchaSettings']    = getpaid_get_recaptcha_settings();
374
-
375
-		$localize = apply_filters( 'wpinv_front_js_localize', $localize );
376
-
377
-		// reCaptcha.
378
-		if ( getpaid_is_recaptcha_enabled() && ( $recaptcha_js = getpaid_recaptcha_api_url() ) ) {
379
-			wp_enqueue_script( 'recaptcha', $recaptcha_js, array(), null, true ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion
380
-		}
381
-
382
-		wp_enqueue_script( 'wpinv-front-script', WPINV_PLUGIN_URL . 'assets/js/payment-forms.min.js', array( 'jquery' ), WPINV_VERSION, true );
383
-		wp_localize_script( 'wpinv-front-script', 'WPInv', $localize );
384
-	}
385
-
386
-	public function wpinv_actions() {
387
-		if ( isset( $_REQUEST['wpi_action'] ) ) {
388
-			do_action( 'wpinv_' . wpinv_sanitize_key( $_REQUEST['wpi_action'] ), $_REQUEST );
389
-		}
390
-
391
-		if ( defined( 'WP_ALL_IMPORT_ROOT_DIR' ) ) {
392
-			include plugin_dir_path( __FILE__ ) . 'libraries/wp-all-import/class-getpaid-wp-all-import.php';
393
-		}
394
-	}
395
-
396
-	/**
397
-	 * Fires an action after verifying that a user can fire them.
398
-	 *
399
-	 * Note: If the action is on an invoice, subscription etc, esure that the
400
-	 * current user owns the invoice/subscription.
401
-	 */
402
-	public function maybe_do_authenticated_action() {
403
-		if ( isset( $_REQUEST['getpaid-action'] ) && isset( $_REQUEST['getpaid-nonce'] ) && wp_verify_nonce( $_REQUEST['getpaid-nonce'], 'getpaid-nonce' ) ) {
404
-			$key  = sanitize_key( $_REQUEST['getpaid-action'] );
405
-			$data = wp_unslash( $_REQUEST );
406
-
407
-			if ( is_user_logged_in() ) {
408
-				do_action( "getpaid_authenticated_action_$key", $data );
409
-			}
410
-
411
-			do_action( "getpaid_unauthenticated_action_$key", $data );
412
-		}
413
-	}
414
-
415
-	public function pre_get_posts( $wp_query ) {
416
-		if ( ! is_admin() && ! empty( $wp_query->query_vars['post_type'] ) && getpaid_is_invoice_post_type( $wp_query->query_vars['post_type'] ) && is_user_logged_in() && is_single() && $wp_query->is_main_query() ) {
417
-			$wp_query->query_vars['post_status'] = array_keys( wpinv_get_invoice_statuses( false, false, $wp_query->query_vars['post_type'] ) );
418
-		}
419
-
420
-		return $wp_query;
421
-	}
422
-
423
-	/**
424
-	 * Register widgets
425
-	 *
426
-	 */
427
-	public function register_widgets() {
428
-		global $pagenow;
429
-
430
-		// Currently, UX Builder does not work particulaly well with SuperDuper.
431
-		// So we disable our widgets when editing a page with UX Builder.
432
-		if ( function_exists( 'ux_builder_is_active' ) && ux_builder_is_active() ) {
433
-			return;
434
-		}
435
-
436
-		$block_widget_init_screens = function_exists( 'sd_pagenow_exclude' ) ? sd_pagenow_exclude() : array();
437
-
438
-		if ( is_admin() && $pagenow && in_array( $pagenow, $block_widget_init_screens ) ) {
439
-			// don't initiate in these conditions.
440
-		} else {
441
-			// Only load allowed widgets.
442
-			$exclude = function_exists( 'sd_widget_exclude' ) ? sd_widget_exclude() : array();
443
-			$widgets = apply_filters(
444
-				'getpaid_widget_classes',
445
-				array(
446
-					'WPInv_Checkout_Widget',
447
-					'WPInv_History_Widget',
448
-					'WPInv_Receipt_Widget',
449
-					'WPInv_Subscriptions_Widget',
450
-					'WPInv_Buy_Item_Widget',
451
-					'WPInv_Messages_Widget',
452
-					'WPInv_GetPaid_Widget',
453
-					'WPInv_Invoice_Widget',
454
-				)
455
-			);
456
-
457
-			// For each widget...
458
-			foreach ( $widgets as $widget ) {
459
-				// Abort early if it is excluded for this page.
460
-				if ( in_array( $widget, $exclude ) ) {
461
-					continue;
462
-				}
463
-
464
-				// SD V1 used to extend the widget class. V2 does not, so we cannot call register widget on it.
465
-				if ( is_subclass_of( $widget, 'WP_Widget' ) ) {
466
-					register_widget( $widget );
467
-				} else {
468
-					new $widget();
469
-				}
470
-			}
471
-		}
472
-	}
473
-
474
-	/**
475
-	 * Upgrades the database.
476
-	 *
477
-	 * @since 2.0.2
478
-	 */
479
-	public function maybe_upgrade_database() {
480
-		// Ensure the database tables are up to date.
481
-		GetPaid_Installer::maybe_create_db_tables();
482
-
483
-		$wpi_version = get_option( 'wpinv_version', 0 );
484
-
485
-		if ( $wpi_version == WPINV_VERSION ) {
486
-			return;
487
-		}
488
-
489
-		$installer = new GetPaid_Installer();
490
-
491
-		if ( empty( $wpi_version ) ) {
492
-			return $installer->upgrade_db( 0 );
493
-		}
494
-
495
-		$upgrades  = array(
496
-			'0.0.5' => '004',
497
-			'1.0.3' => '102',
498
-			'2.0.0' => '118',
499
-			'2.8.0' => '279',
500
-		);
501
-
502
-		foreach ( $upgrades as $key => $method ) {
503
-			if ( version_compare( $wpi_version, $key, '<' ) ) {
504
-				return $installer->upgrade_db( $method );
505
-			}
506
-		}
507
-	}
508
-
509
-	/**
510
-	 * Flushes the permalinks if needed.
511
-	 *
512
-	 * @since 2.0.8
513
-	 */
514
-	public function maybe_flush_permalinks() {
515
-		$flush = get_option( 'wpinv_flush_permalinks', 0 );
516
-
517
-		if ( ! empty( $flush ) ) {
518
-			flush_rewrite_rules();
519
-			delete_option( 'wpinv_flush_permalinks' );
520
-		}
521
-	}
522
-
523
-	/**
524
-	 * Remove our pages from yoast sitemaps.
525
-	 *
526
-	 * @since 1.0.19
527
-	 * @param int[] $excluded_posts_ids
528
-	 */
529
-	public function wpseo_exclude_from_sitemap_by_post_ids( $excluded_posts_ids ) {
530
-		// Ensure that we have an array.
531
-		if ( ! is_array( $excluded_posts_ids ) ) {
532
-			$excluded_posts_ids = array();
533
-		}
534
-
535
-		// Prepare our pages.
536
-		$our_pages = array();
537
-
538
-		// Checkout page.
539
-		$our_pages[] = wpinv_get_option( 'checkout_page', false );
540
-
541
-		// Success page.
542
-		$our_pages[] = wpinv_get_option( 'success_page', false );
543
-
544
-		// Failure page.
545
-		$our_pages[] = wpinv_get_option( 'failure_page', false );
546
-
547
-		// History page.
548
-		$our_pages[] = wpinv_get_option( 'invoice_history_page', false );
549
-
550
-		// Subscriptions page.
551
-		$our_pages[] = wpinv_get_option( 'invoice_subscription_page', false );
552
-
553
-		$our_pages   = array_map( 'intval', array_filter( $our_pages ) );
554
-
555
-		$excluded_posts_ids = $excluded_posts_ids + $our_pages;
556
-
557
-		return array_unique( $excluded_posts_ids );
558
-	}
559
-
560
-	/**
561
-	 * Remove our pages from yoast sitemaps.
562
-	 *
563
-	 * @since 1.0.19
564
-	 * @param string[] $post_types
565
-	 */
566
-	public function exclude_invoicing_post_types( $post_types ) {
567
-		// Ensure that we have an array.
568
-		if ( ! is_array( $post_types ) ) {
569
-			$post_types = array();
570
-		}
571
-
572
-		// Remove our post types.
573
-		return array_diff( $post_types, array_keys( getpaid_get_invoice_post_types() ) );
574
-	}
575
-
576
-	/**
577
-	 * Displays additional footer code.
578
-	 *
579
-	 * @since 2.0.0
580
-	 */
581
-	public function wp_footer() {
582
-		wpinv_get_template( 'frontend-footer.php' );
583
-	}
584
-
585
-	/**
586
-	 * Displays additional header code.
587
-	 *
588
-	 * @since 2.0.0
589
-	 */
590
-	public function wp_head() {
591
-		wpinv_get_template( 'frontend-head.php' );
592
-	}
593
-
594
-	/**
595
-	 * Custom query vars.
596
-	 *
597
-	 */
598
-	public function custom_query_vars( $vars ) {
599
-		$vars[] = 'getpaid-ipn';
600
-		return $vars;
601
-	}
602
-
603
-	/**
604
-	 * Add rewrite tags and rules.
605
-	 *
606
-	 */
607
-	public function add_rewrite_rule() {
608
-		$tag = 'getpaid-ipn';
609
-		add_rewrite_tag( "%$tag%", '([^&]+)' );
610
-		add_rewrite_rule( "^$tag/([^/]*)/?", "index.php?$tag=\$matches[1]", 'top' );
611
-	}
612
-
613
-	/**
614
-	 * Processes non-query string ipns.
615
-	 *
616
-	 */
617
-	public function maybe_process_new_ipn( $query ) {
618
-		if ( is_admin() || ! $query->is_main_query() ) {
619
-			return;
620
-		}
621
-
622
-		$gateway = get_query_var( 'getpaid-ipn' );
623
-
624
-		if ( ! empty( $gateway ) ) {
625
-			$gateway = sanitize_text_field( $gateway );
626
-			nocache_headers();
627
-			do_action( 'wpinv_verify_payment_ipn', $gateway );
628
-			do_action( "wpinv_verify_{$gateway}_ipn" );
629
-			exit;
630
-		}
631
-	}
17
+    /**
18
+     * GetPaid version.
19
+     *
20
+     * @var string
21
+     */
22
+    public $version;
23
+
24
+    /**
25
+     * Data container.
26
+     *
27
+     * @var array
28
+     */
29
+    protected $data = array();
30
+
31
+    /**
32
+     * Form elements instance.
33
+     *
34
+     * @var WPInv_Payment_Form_Elements
35
+     */
36
+    public $form_elements;
37
+
38
+    /**
39
+     * @var array An array of payment gateways.
40
+     */
41
+    public $gateways;
42
+
43
+    /**
44
+     * Class constructor.
45
+     */
46
+    public function __construct() {
47
+        $this->define_constants();
48
+        $this->includes();
49
+        $this->init_hooks();
50
+        $this->set_properties();
51
+    }
52
+
53
+    /**
54
+     * Sets a custom data property.
55
+     *
56
+     * @param string $prop The prop to set.
57
+     * @param mixed $value The value to retrieve.
58
+     */
59
+    public function set( $prop, $value ) {
60
+        $this->data[ $prop ] = $value;
61
+    }
62
+
63
+    /**
64
+     * Gets a custom data property.
65
+     *
66
+     * @param string $prop The prop to set.
67
+     * @return mixed The value.
68
+     */
69
+    public function get( $prop ) {
70
+        if ( isset( $this->data[ $prop ] ) ) {
71
+            return $this->data[ $prop ];
72
+        }
73
+
74
+        return null;
75
+    }
76
+
77
+    /**
78
+     * Define class properties.
79
+     */
80
+    public function set_properties() {
81
+        // Sessions.
82
+        $this->set( 'session', new WPInv_Session_Handler() );
83
+        $GLOBALS['wpi_session'] = $this->get( 'session' ); // Backwards compatibility.
84
+        $GLOBALS['wpinv_euvat'] = new WPInv_EUVat(); // Backwards compatibility.
85
+
86
+        // Init other objects.
87
+        $this->set( 'notes', new WPInv_Notes() );
88
+        $this->set( 'api', new WPInv_API() );
89
+        $this->set( 'post_types', new GetPaid_Post_Types() );
90
+        $this->set( 'template', new GetPaid_Template() );
91
+        $this->set( 'admin', new GetPaid_Admin() );
92
+        $this->set( 'subscriptions', new WPInv_Subscriptions() );
93
+        $this->set( 'invoice_emails', new GetPaid_Invoice_Notification_Emails() );
94
+        $this->set( 'subscription_emails', new GetPaid_Subscription_Notification_Emails() );
95
+        $this->set( 'daily_maintenace', new GetPaid_Daily_Maintenance() );
96
+        $this->set( 'payment_forms', new GetPaid_Payment_Forms() );
97
+        $this->set( 'maxmind', new GetPaid_MaxMind_Geolocation() );
98
+    }
99
+
100
+        /**
101
+         * Define plugin constants.
102
+         */
103
+    public function define_constants() {
104
+        define( 'WPINV_PLUGIN_DIR', plugin_dir_path( WPINV_PLUGIN_FILE ) );
105
+        define( 'WPINV_PLUGIN_URL', plugin_dir_url( WPINV_PLUGIN_FILE ) );
106
+        $this->version = WPINV_VERSION;
107
+    }
108
+
109
+    /**
110
+     * Hook into actions and filters.
111
+     *
112
+     * @since 1.0.19
113
+     */
114
+    protected function init_hooks() {
115
+        /* Internationalize the text strings used. */
116
+        add_action( 'plugins_loaded', array( &$this, 'plugins_loaded' ) );
117
+
118
+        // Init the plugin after WordPress inits.
119
+        add_action( 'init', array( $this, 'init' ), 1 );
120
+        add_action( 'init', array( $this, 'maybe_process_ipn' ), 10 );
121
+        add_action( 'init', array( $this, 'wpinv_actions' ) );
122
+        add_action( 'init', array( $this, 'maybe_do_authenticated_action' ), 100 );
123
+        add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), 11 );
124
+        add_action( 'wp_footer', array( $this, 'wp_footer' ) );
125
+        add_action( 'wp_head', array( $this, 'wp_head' ) );
126
+        add_action( 'widgets_init', array( $this, 'register_widgets' ) );
127
+        add_filter( 'wpseo_exclude_from_sitemap_by_post_ids', array( $this, 'wpseo_exclude_from_sitemap_by_post_ids' ) );
128
+        add_filter( 'the_seo_framework_sitemap_supported_post_types', array( $this, 'exclude_invoicing_post_types' ) );
129
+        add_filter( 'pre_get_posts', array( &$this, 'pre_get_posts' ) );
130
+
131
+        add_filter( 'query_vars', array( $this, 'custom_query_vars' ) );
132
+        add_action( 'init', array( $this, 'add_rewrite_rule' ), 10, 0 );
133
+        add_action( 'pre_get_posts', array( $this, 'maybe_process_new_ipn' ), 1 );
134
+
135
+        // Fires after registering actions.
136
+        do_action( 'wpinv_actions', $this );
137
+        do_action( 'getpaid_actions', $this );
138
+    }
139
+
140
+    public function plugins_loaded() {
141
+        /* Internationalize the text strings used. */
142
+        $this->load_textdomain();
143
+
144
+        do_action( 'wpinv_loaded' );
145
+
146
+        // Fix oxygen page builder conflict
147
+        if ( function_exists( 'ct_css_output' ) ) {
148
+            wpinv_oxygen_fix_conflict();
149
+        }
150
+    }
151
+
152
+    /**
153
+     * Load Localisation files.
154
+     *
155
+     * Note: the first-loaded translation file overrides any following ones if the same translation is present.
156
+     *
157
+     * Locales found in:
158
+     *      - WP_LANG_DIR/plugins/invoicing-LOCALE.mo
159
+     *      - WP_PLUGIN_DIR/invoicing/languages/invoicing-LOCALE.mo
160
+     *
161
+     * @since 1.0.0
162
+     */
163
+    public function load_textdomain() {
164
+        // Determines the current locale.
165
+        if ( function_exists( 'determine_locale' ) ) {
166
+            $locale = determine_locale();
167
+        } else if ( function_exists( 'get_user_locale' ) ) {
168
+            $locale = get_user_locale();
169
+        } else {
170
+            $locale = get_locale();
171
+        }
172
+
173
+        /**
174
+         * Filter the locale to use for translations.
175
+         */
176
+        $locale = apply_filters( 'plugin_locale', $locale, 'invoicing' );
177
+
178
+        unload_textdomain( 'invoicing', true );
179
+        load_textdomain( 'invoicing', WP_LANG_DIR . '/invoicing/invoicing-' . $locale . '.mo' );
180
+        load_plugin_textdomain( 'invoicing', false, plugin_basename( dirname( WPINV_PLUGIN_FILE ) ) . '/languages/' );
181
+    }
182
+
183
+    /**
184
+     * Include required core files used in admin and on the frontend.
185
+     */
186
+    public function includes() {
187
+        // Start with the settings.
188
+        require_once WPINV_PLUGIN_DIR . 'includes/admin/register-settings.php';
189
+
190
+        // Packages/libraries.
191
+        require_once WPINV_PLUGIN_DIR . 'vendor/autoload.php';
192
+        require_once WPINV_PLUGIN_DIR . 'vendor/ayecode/wp-ayecode-ui/ayecode-ui-loader.php';
193
+
194
+        // Load functions.
195
+        require_once WPINV_PLUGIN_DIR . 'includes/deprecated-functions.php';
196
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-email-functions.php';
197
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-general-functions.php';
198
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-helper-functions.php';
199
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-tax-functions.php';
200
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-template-functions.php';
201
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-address-functions.php';
202
+        require_once WPINV_PLUGIN_DIR . 'includes/invoice-functions.php';
203
+        require_once WPINV_PLUGIN_DIR . 'includes/subscription-functions.php';
204
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-item-functions.php';
205
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-discount-functions.php';
206
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-gateway-functions.php';
207
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-payment-functions.php';
208
+        require_once WPINV_PLUGIN_DIR . 'includes/user-functions.php';
209
+        require_once WPINV_PLUGIN_DIR . 'includes/error-functions.php';
210
+
211
+        // Register autoloader.
212
+        try {
213
+            spl_autoload_register( array( $this, 'autoload' ), true );
214
+        } catch ( Exception $e ) {
215
+            wpinv_error_log( $e->getMessage(), '', __FILE__, 149, true );
216
+        }
217
+
218
+        require_once WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-session.php';
219
+        require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-session-handler.php';
220
+        require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-ajax.php';
221
+        require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-api.php';
222
+        require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-cache-helper.php';
223
+        require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-db.php';
224
+        require_once WPINV_PLUGIN_DIR . 'includes/admin/subscriptions.php';
225
+        require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-subscriptions-db.php';
226
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-subscription.php';
227
+        require_once WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-privacy.php';
228
+        require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-privacy.php';
229
+        require_once WPINV_PLUGIN_DIR . 'includes/libraries/class-ayecode-addons.php';
230
+        require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-addons.php';
231
+        require_once WPINV_PLUGIN_DIR . 'widgets/checkout.php';
232
+        require_once WPINV_PLUGIN_DIR . 'widgets/invoice-history.php';
233
+        require_once WPINV_PLUGIN_DIR . 'widgets/invoice-receipt.php';
234
+        require_once WPINV_PLUGIN_DIR . 'widgets/invoice-messages.php';
235
+        require_once WPINV_PLUGIN_DIR . 'widgets/subscriptions.php';
236
+        require_once WPINV_PLUGIN_DIR . 'widgets/buy-item.php';
237
+        require_once WPINV_PLUGIN_DIR . 'widgets/getpaid.php';
238
+        require_once WPINV_PLUGIN_DIR . 'widgets/invoice.php';
239
+        require_once WPINV_PLUGIN_DIR . 'includes/admin/admin-pages.php';
240
+
241
+        if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) {
242
+            GetPaid_Post_Types_Admin::init();
243
+
244
+            require_once WPINV_PLUGIN_DIR . 'includes/admin/wpinv-admin-functions.php';
245
+            require_once WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-payment-form.php';
246
+            require_once WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-notes.php';
247
+            require_once WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-admin-menus.php';
248
+            require_once WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-users.php';
249
+            require_once WPINV_PLUGIN_DIR . 'includes/admin/class-getpaid-admin-profile.php';
250
+            // load the user class only on the users.php page
251
+            global $pagenow;
252
+            if ( $pagenow == 'users.php' ) {
253
+                new WPInv_Admin_Users();
254
+            }
255
+        }
256
+
257
+        // Register cli commands
258
+        if ( defined( 'WP_CLI' ) && WP_CLI ) {
259
+            require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-cli.php';
260
+            WP_CLI::add_command( 'invoicing', 'WPInv_CLI' );
261
+        }
262
+    }
263
+
264
+    /**
265
+     * Class autoloader
266
+     *
267
+     * @param       string $class_name The name of the class to load.
268
+     * @access      public
269
+     * @since       1.0.19
270
+     * @return      void
271
+     */
272
+    public function autoload( $class_name ) {
273
+        // Normalize the class name...
274
+        $class_name  = strtolower( $class_name );
275
+
276
+        // ... and make sure it is our class.
277
+        if ( false === strpos( $class_name, 'getpaid_' ) && false === strpos( $class_name, 'wpinv_' ) ) {
278
+            return;
279
+        }
280
+
281
+        // Next, prepare the file name from the class.
282
+        $file_name = 'class-' . str_replace( '_', '-', $class_name ) . '.php';
283
+
284
+        // Base path of the classes.
285
+        $plugin_path = untrailingslashit( WPINV_PLUGIN_DIR );
286
+
287
+        // And an array of possible locations in order of importance.
288
+        $locations = array(
289
+            "$plugin_path/includes",
290
+            "$plugin_path/includes/data-stores",
291
+            "$plugin_path/includes/gateways",
292
+            "$plugin_path/includes/payments",
293
+            "$plugin_path/includes/geolocation",
294
+            "$plugin_path/includes/reports",
295
+            "$plugin_path/includes/api",
296
+            "$plugin_path/includes/admin",
297
+            "$plugin_path/includes/admin/meta-boxes",
298
+        );
299
+
300
+        foreach ( apply_filters( 'getpaid_autoload_locations', $locations ) as $location ) {
301
+            if ( file_exists( trailingslashit( $location ) . $file_name ) ) {
302
+                include trailingslashit( $location ) . $file_name;
303
+                break;
304
+            }
305
+        }
306
+    }
307
+
308
+    /**
309
+     * Inits hooks etc.
310
+     */
311
+    public function init() {
312
+        // Fires before getpaid inits.
313
+        do_action( 'before_getpaid_init', $this );
314
+
315
+        // Maybe upgrade.
316
+        $this->maybe_upgrade_database();
317
+
318
+        // Load default gateways.
319
+        $gateways = apply_filters(
320
+            'getpaid_default_gateways',
321
+            array(
322
+                'manual'        => 'GetPaid_Manual_Gateway',
323
+                'paypal'        => 'GetPaid_Paypal_Gateway',
324
+                'worldpay'      => 'GetPaid_Worldpay_Gateway',
325
+                'bank_transfer' => 'GetPaid_Bank_Transfer_Gateway',
326
+                'authorizenet'  => 'GetPaid_Authorize_Net_Gateway',
327
+            )
328
+        );
329
+
330
+        foreach ( $gateways as $id => $class ) {
331
+            $this->gateways[ $id ] = new $class();
332
+        }
333
+
334
+        if ( 'yes' != get_option( 'wpinv_renamed_gateways' ) ) {
335
+            GetPaid_Installer::rename_gateways_label();
336
+            update_option( 'wpinv_renamed_gateways', 'yes' );
337
+        }
338
+
339
+        // Fires after getpaid inits.
340
+        do_action( 'getpaid_init', $this );
341
+    }
342
+
343
+    /**
344
+     * Checks if this is an IPN request and processes it.
345
+     */
346
+    public function maybe_process_ipn() {
347
+        // Ensure that this is an IPN request.
348
+        if ( empty( $_GET['wpi-listener'] ) || 'IPN' !== $_GET['wpi-listener'] || empty( $_GET['wpi-gateway'] ) ) {
349
+            return;
350
+        }
351
+
352
+        $gateway = sanitize_text_field( $_GET['wpi-gateway'] );
353
+
354
+        do_action( 'wpinv_verify_payment_ipn', $gateway );
355
+        do_action( "wpinv_verify_{$gateway}_ipn" );
356
+        exit;
357
+    }
358
+
359
+    public function enqueue_scripts() {
360
+        // Fires before adding scripts.
361
+        do_action( 'getpaid_enqueue_scripts' );
362
+
363
+        $localize                         = array();
364
+        $localize['ajax_url']             = admin_url( 'admin-ajax.php' );
365
+        $localize['thousands']            = wpinv_thousands_separator();
366
+        $localize['decimals']             = wpinv_decimal_separator();
367
+        $localize['nonce']                = wp_create_nonce( 'wpinv-nonce' );
368
+        $localize['txtComplete']          = __( 'Continue', 'invoicing' );
369
+        $localize['UseTaxes']             = wpinv_use_taxes();
370
+        $localize['formNonce']            = wp_create_nonce( 'getpaid_form_nonce' );
371
+        $localize['loading']              = __( 'Loading...', 'invoicing' );
372
+        $localize['connectionError']      = __( 'Could not establish a connection to the server.', 'invoicing' );
373
+        $localize['recaptchaSettings']    = getpaid_get_recaptcha_settings();
374
+
375
+        $localize = apply_filters( 'wpinv_front_js_localize', $localize );
376
+
377
+        // reCaptcha.
378
+        if ( getpaid_is_recaptcha_enabled() && ( $recaptcha_js = getpaid_recaptcha_api_url() ) ) {
379
+            wp_enqueue_script( 'recaptcha', $recaptcha_js, array(), null, true ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion
380
+        }
381
+
382
+        wp_enqueue_script( 'wpinv-front-script', WPINV_PLUGIN_URL . 'assets/js/payment-forms.min.js', array( 'jquery' ), WPINV_VERSION, true );
383
+        wp_localize_script( 'wpinv-front-script', 'WPInv', $localize );
384
+    }
385
+
386
+    public function wpinv_actions() {
387
+        if ( isset( $_REQUEST['wpi_action'] ) ) {
388
+            do_action( 'wpinv_' . wpinv_sanitize_key( $_REQUEST['wpi_action'] ), $_REQUEST );
389
+        }
390
+
391
+        if ( defined( 'WP_ALL_IMPORT_ROOT_DIR' ) ) {
392
+            include plugin_dir_path( __FILE__ ) . 'libraries/wp-all-import/class-getpaid-wp-all-import.php';
393
+        }
394
+    }
395
+
396
+    /**
397
+     * Fires an action after verifying that a user can fire them.
398
+     *
399
+     * Note: If the action is on an invoice, subscription etc, esure that the
400
+     * current user owns the invoice/subscription.
401
+     */
402
+    public function maybe_do_authenticated_action() {
403
+        if ( isset( $_REQUEST['getpaid-action'] ) && isset( $_REQUEST['getpaid-nonce'] ) && wp_verify_nonce( $_REQUEST['getpaid-nonce'], 'getpaid-nonce' ) ) {
404
+            $key  = sanitize_key( $_REQUEST['getpaid-action'] );
405
+            $data = wp_unslash( $_REQUEST );
406
+
407
+            if ( is_user_logged_in() ) {
408
+                do_action( "getpaid_authenticated_action_$key", $data );
409
+            }
410
+
411
+            do_action( "getpaid_unauthenticated_action_$key", $data );
412
+        }
413
+    }
414
+
415
+    public function pre_get_posts( $wp_query ) {
416
+        if ( ! is_admin() && ! empty( $wp_query->query_vars['post_type'] ) && getpaid_is_invoice_post_type( $wp_query->query_vars['post_type'] ) && is_user_logged_in() && is_single() && $wp_query->is_main_query() ) {
417
+            $wp_query->query_vars['post_status'] = array_keys( wpinv_get_invoice_statuses( false, false, $wp_query->query_vars['post_type'] ) );
418
+        }
419
+
420
+        return $wp_query;
421
+    }
422
+
423
+    /**
424
+     * Register widgets
425
+     *
426
+     */
427
+    public function register_widgets() {
428
+        global $pagenow;
429
+
430
+        // Currently, UX Builder does not work particulaly well with SuperDuper.
431
+        // So we disable our widgets when editing a page with UX Builder.
432
+        if ( function_exists( 'ux_builder_is_active' ) && ux_builder_is_active() ) {
433
+            return;
434
+        }
435
+
436
+        $block_widget_init_screens = function_exists( 'sd_pagenow_exclude' ) ? sd_pagenow_exclude() : array();
437
+
438
+        if ( is_admin() && $pagenow && in_array( $pagenow, $block_widget_init_screens ) ) {
439
+            // don't initiate in these conditions.
440
+        } else {
441
+            // Only load allowed widgets.
442
+            $exclude = function_exists( 'sd_widget_exclude' ) ? sd_widget_exclude() : array();
443
+            $widgets = apply_filters(
444
+                'getpaid_widget_classes',
445
+                array(
446
+                    'WPInv_Checkout_Widget',
447
+                    'WPInv_History_Widget',
448
+                    'WPInv_Receipt_Widget',
449
+                    'WPInv_Subscriptions_Widget',
450
+                    'WPInv_Buy_Item_Widget',
451
+                    'WPInv_Messages_Widget',
452
+                    'WPInv_GetPaid_Widget',
453
+                    'WPInv_Invoice_Widget',
454
+                )
455
+            );
456
+
457
+            // For each widget...
458
+            foreach ( $widgets as $widget ) {
459
+                // Abort early if it is excluded for this page.
460
+                if ( in_array( $widget, $exclude ) ) {
461
+                    continue;
462
+                }
463
+
464
+                // SD V1 used to extend the widget class. V2 does not, so we cannot call register widget on it.
465
+                if ( is_subclass_of( $widget, 'WP_Widget' ) ) {
466
+                    register_widget( $widget );
467
+                } else {
468
+                    new $widget();
469
+                }
470
+            }
471
+        }
472
+    }
473
+
474
+    /**
475
+     * Upgrades the database.
476
+     *
477
+     * @since 2.0.2
478
+     */
479
+    public function maybe_upgrade_database() {
480
+        // Ensure the database tables are up to date.
481
+        GetPaid_Installer::maybe_create_db_tables();
482
+
483
+        $wpi_version = get_option( 'wpinv_version', 0 );
484
+
485
+        if ( $wpi_version == WPINV_VERSION ) {
486
+            return;
487
+        }
488
+
489
+        $installer = new GetPaid_Installer();
490
+
491
+        if ( empty( $wpi_version ) ) {
492
+            return $installer->upgrade_db( 0 );
493
+        }
494
+
495
+        $upgrades  = array(
496
+            '0.0.5' => '004',
497
+            '1.0.3' => '102',
498
+            '2.0.0' => '118',
499
+            '2.8.0' => '279',
500
+        );
501
+
502
+        foreach ( $upgrades as $key => $method ) {
503
+            if ( version_compare( $wpi_version, $key, '<' ) ) {
504
+                return $installer->upgrade_db( $method );
505
+            }
506
+        }
507
+    }
508
+
509
+    /**
510
+     * Flushes the permalinks if needed.
511
+     *
512
+     * @since 2.0.8
513
+     */
514
+    public function maybe_flush_permalinks() {
515
+        $flush = get_option( 'wpinv_flush_permalinks', 0 );
516
+
517
+        if ( ! empty( $flush ) ) {
518
+            flush_rewrite_rules();
519
+            delete_option( 'wpinv_flush_permalinks' );
520
+        }
521
+    }
522
+
523
+    /**
524
+     * Remove our pages from yoast sitemaps.
525
+     *
526
+     * @since 1.0.19
527
+     * @param int[] $excluded_posts_ids
528
+     */
529
+    public function wpseo_exclude_from_sitemap_by_post_ids( $excluded_posts_ids ) {
530
+        // Ensure that we have an array.
531
+        if ( ! is_array( $excluded_posts_ids ) ) {
532
+            $excluded_posts_ids = array();
533
+        }
534
+
535
+        // Prepare our pages.
536
+        $our_pages = array();
537
+
538
+        // Checkout page.
539
+        $our_pages[] = wpinv_get_option( 'checkout_page', false );
540
+
541
+        // Success page.
542
+        $our_pages[] = wpinv_get_option( 'success_page', false );
543
+
544
+        // Failure page.
545
+        $our_pages[] = wpinv_get_option( 'failure_page', false );
546
+
547
+        // History page.
548
+        $our_pages[] = wpinv_get_option( 'invoice_history_page', false );
549
+
550
+        // Subscriptions page.
551
+        $our_pages[] = wpinv_get_option( 'invoice_subscription_page', false );
552
+
553
+        $our_pages   = array_map( 'intval', array_filter( $our_pages ) );
554
+
555
+        $excluded_posts_ids = $excluded_posts_ids + $our_pages;
556
+
557
+        return array_unique( $excluded_posts_ids );
558
+    }
559
+
560
+    /**
561
+     * Remove our pages from yoast sitemaps.
562
+     *
563
+     * @since 1.0.19
564
+     * @param string[] $post_types
565
+     */
566
+    public function exclude_invoicing_post_types( $post_types ) {
567
+        // Ensure that we have an array.
568
+        if ( ! is_array( $post_types ) ) {
569
+            $post_types = array();
570
+        }
571
+
572
+        // Remove our post types.
573
+        return array_diff( $post_types, array_keys( getpaid_get_invoice_post_types() ) );
574
+    }
575
+
576
+    /**
577
+     * Displays additional footer code.
578
+     *
579
+     * @since 2.0.0
580
+     */
581
+    public function wp_footer() {
582
+        wpinv_get_template( 'frontend-footer.php' );
583
+    }
584
+
585
+    /**
586
+     * Displays additional header code.
587
+     *
588
+     * @since 2.0.0
589
+     */
590
+    public function wp_head() {
591
+        wpinv_get_template( 'frontend-head.php' );
592
+    }
593
+
594
+    /**
595
+     * Custom query vars.
596
+     *
597
+     */
598
+    public function custom_query_vars( $vars ) {
599
+        $vars[] = 'getpaid-ipn';
600
+        return $vars;
601
+    }
602
+
603
+    /**
604
+     * Add rewrite tags and rules.
605
+     *
606
+     */
607
+    public function add_rewrite_rule() {
608
+        $tag = 'getpaid-ipn';
609
+        add_rewrite_tag( "%$tag%", '([^&]+)' );
610
+        add_rewrite_rule( "^$tag/([^/]*)/?", "index.php?$tag=\$matches[1]", 'top' );
611
+    }
612
+
613
+    /**
614
+     * Processes non-query string ipns.
615
+     *
616
+     */
617
+    public function maybe_process_new_ipn( $query ) {
618
+        if ( is_admin() || ! $query->is_main_query() ) {
619
+            return;
620
+        }
621
+
622
+        $gateway = get_query_var( 'getpaid-ipn' );
623
+
624
+        if ( ! empty( $gateway ) ) {
625
+            $gateway = sanitize_text_field( $gateway );
626
+            nocache_headers();
627
+            do_action( 'wpinv_verify_payment_ipn', $gateway );
628
+            do_action( "wpinv_verify_{$gateway}_ipn" );
629
+            exit;
630
+        }
631
+    }
632 632
 }
Please login to merge, or discard this patch.
Spacing   +140 added lines, -140 removed lines patch added patch discarded remove patch
@@ -6,7 +6,7 @@  discard block
 block discarded – undo
6 6
  * @since   1.0.0
7 7
  */
8 8
 
9
-defined( 'ABSPATH' ) || exit;
9
+defined('ABSPATH') || exit;
10 10
 
11 11
 /**
12 12
  * Main Invoicing class.
@@ -56,8 +56,8 @@  discard block
 block discarded – undo
56 56
 	 * @param string $prop The prop to set.
57 57
 	 * @param mixed $value The value to retrieve.
58 58
 	 */
59
-	public function set( $prop, $value ) {
60
-		$this->data[ $prop ] = $value;
59
+	public function set($prop, $value) {
60
+		$this->data[$prop] = $value;
61 61
 	}
62 62
 
63 63
 	/**
@@ -66,9 +66,9 @@  discard block
 block discarded – undo
66 66
 	 * @param string $prop The prop to set.
67 67
 	 * @return mixed The value.
68 68
 	 */
69
-	public function get( $prop ) {
70
-		if ( isset( $this->data[ $prop ] ) ) {
71
-			return $this->data[ $prop ];
69
+	public function get($prop) {
70
+		if (isset($this->data[$prop])) {
71
+			return $this->data[$prop];
72 72
 		}
73 73
 
74 74
 		return null;
@@ -79,30 +79,30 @@  discard block
 block discarded – undo
79 79
 	 */
80 80
 	public function set_properties() {
81 81
 		// Sessions.
82
-		$this->set( 'session', new WPInv_Session_Handler() );
83
-		$GLOBALS['wpi_session'] = $this->get( 'session' ); // Backwards compatibility.
82
+		$this->set('session', new WPInv_Session_Handler());
83
+		$GLOBALS['wpi_session'] = $this->get('session'); // Backwards compatibility.
84 84
 		$GLOBALS['wpinv_euvat'] = new WPInv_EUVat(); // Backwards compatibility.
85 85
 
86 86
 		// Init other objects.
87
-		$this->set( 'notes', new WPInv_Notes() );
88
-		$this->set( 'api', new WPInv_API() );
89
-		$this->set( 'post_types', new GetPaid_Post_Types() );
90
-		$this->set( 'template', new GetPaid_Template() );
91
-		$this->set( 'admin', new GetPaid_Admin() );
92
-		$this->set( 'subscriptions', new WPInv_Subscriptions() );
93
-		$this->set( 'invoice_emails', new GetPaid_Invoice_Notification_Emails() );
94
-		$this->set( 'subscription_emails', new GetPaid_Subscription_Notification_Emails() );
95
-		$this->set( 'daily_maintenace', new GetPaid_Daily_Maintenance() );
96
-		$this->set( 'payment_forms', new GetPaid_Payment_Forms() );
97
-		$this->set( 'maxmind', new GetPaid_MaxMind_Geolocation() );
87
+		$this->set('notes', new WPInv_Notes());
88
+		$this->set('api', new WPInv_API());
89
+		$this->set('post_types', new GetPaid_Post_Types());
90
+		$this->set('template', new GetPaid_Template());
91
+		$this->set('admin', new GetPaid_Admin());
92
+		$this->set('subscriptions', new WPInv_Subscriptions());
93
+		$this->set('invoice_emails', new GetPaid_Invoice_Notification_Emails());
94
+		$this->set('subscription_emails', new GetPaid_Subscription_Notification_Emails());
95
+		$this->set('daily_maintenace', new GetPaid_Daily_Maintenance());
96
+		$this->set('payment_forms', new GetPaid_Payment_Forms());
97
+		$this->set('maxmind', new GetPaid_MaxMind_Geolocation());
98 98
 	}
99 99
 
100 100
 	 /**
101 101
 	 * Define plugin constants.
102 102
 	 */
103 103
 	public function define_constants() {
104
-		define( 'WPINV_PLUGIN_DIR', plugin_dir_path( WPINV_PLUGIN_FILE ) );
105
-		define( 'WPINV_PLUGIN_URL', plugin_dir_url( WPINV_PLUGIN_FILE ) );
104
+		define('WPINV_PLUGIN_DIR', plugin_dir_path(WPINV_PLUGIN_FILE));
105
+		define('WPINV_PLUGIN_URL', plugin_dir_url(WPINV_PLUGIN_FILE));
106 106
 		$this->version = WPINV_VERSION;
107 107
 	}
108 108
 
@@ -113,38 +113,38 @@  discard block
 block discarded – undo
113 113
 	 */
114 114
 	protected function init_hooks() {
115 115
 		/* Internationalize the text strings used. */
116
-		add_action( 'plugins_loaded', array( &$this, 'plugins_loaded' ) );
116
+		add_action('plugins_loaded', array(&$this, 'plugins_loaded'));
117 117
 
118 118
 		// Init the plugin after WordPress inits.
119
-		add_action( 'init', array( $this, 'init' ), 1 );
120
-		add_action( 'init', array( $this, 'maybe_process_ipn' ), 10 );
121
-		add_action( 'init', array( $this, 'wpinv_actions' ) );
122
-		add_action( 'init', array( $this, 'maybe_do_authenticated_action' ), 100 );
123
-		add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), 11 );
124
-		add_action( 'wp_footer', array( $this, 'wp_footer' ) );
125
-		add_action( 'wp_head', array( $this, 'wp_head' ) );
126
-		add_action( 'widgets_init', array( $this, 'register_widgets' ) );
127
-		add_filter( 'wpseo_exclude_from_sitemap_by_post_ids', array( $this, 'wpseo_exclude_from_sitemap_by_post_ids' ) );
128
-		add_filter( 'the_seo_framework_sitemap_supported_post_types', array( $this, 'exclude_invoicing_post_types' ) );
129
-		add_filter( 'pre_get_posts', array( &$this, 'pre_get_posts' ) );
130
-
131
-		add_filter( 'query_vars', array( $this, 'custom_query_vars' ) );
132
-		add_action( 'init', array( $this, 'add_rewrite_rule' ), 10, 0 );
133
-		add_action( 'pre_get_posts', array( $this, 'maybe_process_new_ipn' ), 1 );
119
+		add_action('init', array($this, 'init'), 1);
120
+		add_action('init', array($this, 'maybe_process_ipn'), 10);
121
+		add_action('init', array($this, 'wpinv_actions'));
122
+		add_action('init', array($this, 'maybe_do_authenticated_action'), 100);
123
+		add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts'), 11);
124
+		add_action('wp_footer', array($this, 'wp_footer'));
125
+		add_action('wp_head', array($this, 'wp_head'));
126
+		add_action('widgets_init', array($this, 'register_widgets'));
127
+		add_filter('wpseo_exclude_from_sitemap_by_post_ids', array($this, 'wpseo_exclude_from_sitemap_by_post_ids'));
128
+		add_filter('the_seo_framework_sitemap_supported_post_types', array($this, 'exclude_invoicing_post_types'));
129
+		add_filter('pre_get_posts', array(&$this, 'pre_get_posts'));
130
+
131
+		add_filter('query_vars', array($this, 'custom_query_vars'));
132
+		add_action('init', array($this, 'add_rewrite_rule'), 10, 0);
133
+		add_action('pre_get_posts', array($this, 'maybe_process_new_ipn'), 1);
134 134
 
135 135
 		// Fires after registering actions.
136
-		do_action( 'wpinv_actions', $this );
137
-		do_action( 'getpaid_actions', $this );
136
+		do_action('wpinv_actions', $this);
137
+		do_action('getpaid_actions', $this);
138 138
 	}
139 139
 
140 140
 	public function plugins_loaded() {
141 141
 		/* Internationalize the text strings used. */
142 142
 		$this->load_textdomain();
143 143
 
144
-		do_action( 'wpinv_loaded' );
144
+		do_action('wpinv_loaded');
145 145
 
146 146
 		// Fix oxygen page builder conflict
147
-		if ( function_exists( 'ct_css_output' ) ) {
147
+		if (function_exists('ct_css_output')) {
148 148
 			wpinv_oxygen_fix_conflict();
149 149
 		}
150 150
 	}
@@ -162,9 +162,9 @@  discard block
 block discarded – undo
162 162
 	 */
163 163
 	public function load_textdomain() {
164 164
 		// Determines the current locale.
165
-		if ( function_exists( 'determine_locale' ) ) {
165
+		if (function_exists('determine_locale')) {
166 166
 			$locale = determine_locale();
167
-		} else if ( function_exists( 'get_user_locale' ) ) {
167
+		} else if (function_exists('get_user_locale')) {
168 168
 			$locale = get_user_locale();
169 169
 		} else {
170 170
 			$locale = get_locale();
@@ -173,11 +173,11 @@  discard block
 block discarded – undo
173 173
 		/**
174 174
 		 * Filter the locale to use for translations.
175 175
 		 */
176
-		$locale = apply_filters( 'plugin_locale', $locale, 'invoicing' );
176
+		$locale = apply_filters('plugin_locale', $locale, 'invoicing');
177 177
 
178
-		unload_textdomain( 'invoicing', true );
179
-		load_textdomain( 'invoicing', WP_LANG_DIR . '/invoicing/invoicing-' . $locale . '.mo' );
180
-		load_plugin_textdomain( 'invoicing', false, plugin_basename( dirname( WPINV_PLUGIN_FILE ) ) . '/languages/' );
178
+		unload_textdomain('invoicing', true);
179
+		load_textdomain('invoicing', WP_LANG_DIR . '/invoicing/invoicing-' . $locale . '.mo');
180
+		load_plugin_textdomain('invoicing', false, plugin_basename(dirname(WPINV_PLUGIN_FILE)) . '/languages/');
181 181
 	}
182 182
 
183 183
 	/**
@@ -210,9 +210,9 @@  discard block
 block discarded – undo
210 210
 
211 211
 		// Register autoloader.
212 212
 		try {
213
-			spl_autoload_register( array( $this, 'autoload' ), true );
214
-		} catch ( Exception $e ) {
215
-			wpinv_error_log( $e->getMessage(), '', __FILE__, 149, true );
213
+			spl_autoload_register(array($this, 'autoload'), true);
214
+		} catch (Exception $e) {
215
+			wpinv_error_log($e->getMessage(), '', __FILE__, 149, true);
216 216
 		}
217 217
 
218 218
 		require_once WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-session.php';
@@ -238,7 +238,7 @@  discard block
 block discarded – undo
238 238
 		require_once WPINV_PLUGIN_DIR . 'widgets/invoice.php';
239 239
 		require_once WPINV_PLUGIN_DIR . 'includes/admin/admin-pages.php';
240 240
 
241
-		if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) {
241
+		if (is_admin() || (defined('WP_CLI') && WP_CLI)) {
242 242
 			GetPaid_Post_Types_Admin::init();
243 243
 
244 244
 			require_once WPINV_PLUGIN_DIR . 'includes/admin/wpinv-admin-functions.php';
@@ -249,15 +249,15 @@  discard block
 block discarded – undo
249 249
 			require_once WPINV_PLUGIN_DIR . 'includes/admin/class-getpaid-admin-profile.php';
250 250
 			// load the user class only on the users.php page
251 251
 			global $pagenow;
252
-			if ( $pagenow == 'users.php' ) {
252
+			if ($pagenow == 'users.php') {
253 253
 				new WPInv_Admin_Users();
254 254
 			}
255 255
 		}
256 256
 
257 257
 		// Register cli commands
258
-		if ( defined( 'WP_CLI' ) && WP_CLI ) {
258
+		if (defined('WP_CLI') && WP_CLI) {
259 259
 			require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-cli.php';
260
-			WP_CLI::add_command( 'invoicing', 'WPInv_CLI' );
260
+			WP_CLI::add_command('invoicing', 'WPInv_CLI');
261 261
 		}
262 262
 	}
263 263
 
@@ -269,20 +269,20 @@  discard block
 block discarded – undo
269 269
 	 * @since       1.0.19
270 270
 	 * @return      void
271 271
 	 */
272
-	public function autoload( $class_name ) {
272
+	public function autoload($class_name) {
273 273
 		// Normalize the class name...
274
-		$class_name  = strtolower( $class_name );
274
+		$class_name = strtolower($class_name);
275 275
 
276 276
 		// ... and make sure it is our class.
277
-		if ( false === strpos( $class_name, 'getpaid_' ) && false === strpos( $class_name, 'wpinv_' ) ) {
277
+		if (false === strpos($class_name, 'getpaid_') && false === strpos($class_name, 'wpinv_')) {
278 278
 			return;
279 279
 		}
280 280
 
281 281
 		// Next, prepare the file name from the class.
282
-		$file_name = 'class-' . str_replace( '_', '-', $class_name ) . '.php';
282
+		$file_name = 'class-' . str_replace('_', '-', $class_name) . '.php';
283 283
 
284 284
 		// Base path of the classes.
285
-		$plugin_path = untrailingslashit( WPINV_PLUGIN_DIR );
285
+		$plugin_path = untrailingslashit(WPINV_PLUGIN_DIR);
286 286
 
287 287
 		// And an array of possible locations in order of importance.
288 288
 		$locations = array(
@@ -297,9 +297,9 @@  discard block
 block discarded – undo
297 297
 			"$plugin_path/includes/admin/meta-boxes",
298 298
 		);
299 299
 
300
-		foreach ( apply_filters( 'getpaid_autoload_locations', $locations ) as $location ) {
301
-			if ( file_exists( trailingslashit( $location ) . $file_name ) ) {
302
-				include trailingslashit( $location ) . $file_name;
300
+		foreach (apply_filters('getpaid_autoload_locations', $locations) as $location) {
301
+			if (file_exists(trailingslashit($location) . $file_name)) {
302
+				include trailingslashit($location) . $file_name;
303 303
 				break;
304 304
 			}
305 305
 		}
@@ -310,7 +310,7 @@  discard block
 block discarded – undo
310 310
 	 */
311 311
 	public function init() {
312 312
 		// Fires before getpaid inits.
313
-		do_action( 'before_getpaid_init', $this );
313
+		do_action('before_getpaid_init', $this);
314 314
 
315 315
 		// Maybe upgrade.
316 316
 		$this->maybe_upgrade_database();
@@ -327,17 +327,17 @@  discard block
 block discarded – undo
327 327
 			)
328 328
 		);
329 329
 
330
-		foreach ( $gateways as $id => $class ) {
331
-			$this->gateways[ $id ] = new $class();
330
+		foreach ($gateways as $id => $class) {
331
+			$this->gateways[$id] = new $class();
332 332
 		}
333 333
 
334
-		if ( 'yes' != get_option( 'wpinv_renamed_gateways' ) ) {
334
+		if ('yes' != get_option('wpinv_renamed_gateways')) {
335 335
 			GetPaid_Installer::rename_gateways_label();
336
-			update_option( 'wpinv_renamed_gateways', 'yes' );
336
+			update_option('wpinv_renamed_gateways', 'yes');
337 337
 		}
338 338
 
339 339
 		// Fires after getpaid inits.
340
-		do_action( 'getpaid_init', $this );
340
+		do_action('getpaid_init', $this);
341 341
 	}
342 342
 
343 343
 	/**
@@ -345,51 +345,51 @@  discard block
 block discarded – undo
345 345
 	 */
346 346
 	public function maybe_process_ipn() {
347 347
 		// Ensure that this is an IPN request.
348
-		if ( empty( $_GET['wpi-listener'] ) || 'IPN' !== $_GET['wpi-listener'] || empty( $_GET['wpi-gateway'] ) ) {
348
+		if (empty($_GET['wpi-listener']) || 'IPN' !== $_GET['wpi-listener'] || empty($_GET['wpi-gateway'])) {
349 349
 			return;
350 350
 		}
351 351
 
352
-		$gateway = sanitize_text_field( $_GET['wpi-gateway'] );
352
+		$gateway = sanitize_text_field($_GET['wpi-gateway']);
353 353
 
354
-		do_action( 'wpinv_verify_payment_ipn', $gateway );
355
-		do_action( "wpinv_verify_{$gateway}_ipn" );
354
+		do_action('wpinv_verify_payment_ipn', $gateway);
355
+		do_action("wpinv_verify_{$gateway}_ipn");
356 356
 		exit;
357 357
 	}
358 358
 
359 359
 	public function enqueue_scripts() {
360 360
 		// Fires before adding scripts.
361
-		do_action( 'getpaid_enqueue_scripts' );
361
+		do_action('getpaid_enqueue_scripts');
362 362
 
363 363
 		$localize                         = array();
364
-		$localize['ajax_url']             = admin_url( 'admin-ajax.php' );
364
+		$localize['ajax_url']             = admin_url('admin-ajax.php');
365 365
 		$localize['thousands']            = wpinv_thousands_separator();
366 366
 		$localize['decimals']             = wpinv_decimal_separator();
367
-		$localize['nonce']                = wp_create_nonce( 'wpinv-nonce' );
368
-		$localize['txtComplete']          = __( 'Continue', 'invoicing' );
367
+		$localize['nonce']                = wp_create_nonce('wpinv-nonce');
368
+		$localize['txtComplete']          = __('Continue', 'invoicing');
369 369
 		$localize['UseTaxes']             = wpinv_use_taxes();
370
-		$localize['formNonce']            = wp_create_nonce( 'getpaid_form_nonce' );
371
-		$localize['loading']              = __( 'Loading...', 'invoicing' );
372
-		$localize['connectionError']      = __( 'Could not establish a connection to the server.', 'invoicing' );
370
+		$localize['formNonce']            = wp_create_nonce('getpaid_form_nonce');
371
+		$localize['loading']              = __('Loading...', 'invoicing');
372
+		$localize['connectionError']      = __('Could not establish a connection to the server.', 'invoicing');
373 373
 		$localize['recaptchaSettings']    = getpaid_get_recaptcha_settings();
374 374
 
375
-		$localize = apply_filters( 'wpinv_front_js_localize', $localize );
375
+		$localize = apply_filters('wpinv_front_js_localize', $localize);
376 376
 
377 377
 		// reCaptcha.
378
-		if ( getpaid_is_recaptcha_enabled() && ( $recaptcha_js = getpaid_recaptcha_api_url() ) ) {
379
-			wp_enqueue_script( 'recaptcha', $recaptcha_js, array(), null, true ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion
378
+		if (getpaid_is_recaptcha_enabled() && ($recaptcha_js = getpaid_recaptcha_api_url())) {
379
+			wp_enqueue_script('recaptcha', $recaptcha_js, array(), null, true); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion
380 380
 		}
381 381
 
382
-		wp_enqueue_script( 'wpinv-front-script', WPINV_PLUGIN_URL . 'assets/js/payment-forms.min.js', array( 'jquery' ), WPINV_VERSION, true );
383
-		wp_localize_script( 'wpinv-front-script', 'WPInv', $localize );
382
+		wp_enqueue_script('wpinv-front-script', WPINV_PLUGIN_URL . 'assets/js/payment-forms.min.js', array('jquery'), WPINV_VERSION, true);
383
+		wp_localize_script('wpinv-front-script', 'WPInv', $localize);
384 384
 	}
385 385
 
386 386
 	public function wpinv_actions() {
387
-		if ( isset( $_REQUEST['wpi_action'] ) ) {
388
-			do_action( 'wpinv_' . wpinv_sanitize_key( $_REQUEST['wpi_action'] ), $_REQUEST );
387
+		if (isset($_REQUEST['wpi_action'])) {
388
+			do_action('wpinv_' . wpinv_sanitize_key($_REQUEST['wpi_action']), $_REQUEST);
389 389
 		}
390 390
 
391
-		if ( defined( 'WP_ALL_IMPORT_ROOT_DIR' ) ) {
392
-			include plugin_dir_path( __FILE__ ) . 'libraries/wp-all-import/class-getpaid-wp-all-import.php';
391
+		if (defined('WP_ALL_IMPORT_ROOT_DIR')) {
392
+			include plugin_dir_path(__FILE__) . 'libraries/wp-all-import/class-getpaid-wp-all-import.php';
393 393
 		}
394 394
 	}
395 395
 
@@ -400,21 +400,21 @@  discard block
 block discarded – undo
400 400
 	 * current user owns the invoice/subscription.
401 401
 	 */
402 402
 	public function maybe_do_authenticated_action() {
403
-		if ( isset( $_REQUEST['getpaid-action'] ) && isset( $_REQUEST['getpaid-nonce'] ) && wp_verify_nonce( $_REQUEST['getpaid-nonce'], 'getpaid-nonce' ) ) {
404
-			$key  = sanitize_key( $_REQUEST['getpaid-action'] );
405
-			$data = wp_unslash( $_REQUEST );
403
+		if (isset($_REQUEST['getpaid-action']) && isset($_REQUEST['getpaid-nonce']) && wp_verify_nonce($_REQUEST['getpaid-nonce'], 'getpaid-nonce')) {
404
+			$key  = sanitize_key($_REQUEST['getpaid-action']);
405
+			$data = wp_unslash($_REQUEST);
406 406
 
407
-			if ( is_user_logged_in() ) {
408
-				do_action( "getpaid_authenticated_action_$key", $data );
407
+			if (is_user_logged_in()) {
408
+				do_action("getpaid_authenticated_action_$key", $data);
409 409
 			}
410 410
 
411
-			do_action( "getpaid_unauthenticated_action_$key", $data );
411
+			do_action("getpaid_unauthenticated_action_$key", $data);
412 412
 		}
413 413
 	}
414 414
 
415
-	public function pre_get_posts( $wp_query ) {
416
-		if ( ! is_admin() && ! empty( $wp_query->query_vars['post_type'] ) && getpaid_is_invoice_post_type( $wp_query->query_vars['post_type'] ) && is_user_logged_in() && is_single() && $wp_query->is_main_query() ) {
417
-			$wp_query->query_vars['post_status'] = array_keys( wpinv_get_invoice_statuses( false, false, $wp_query->query_vars['post_type'] ) );
415
+	public function pre_get_posts($wp_query) {
416
+		if (!is_admin() && !empty($wp_query->query_vars['post_type']) && getpaid_is_invoice_post_type($wp_query->query_vars['post_type']) && is_user_logged_in() && is_single() && $wp_query->is_main_query()) {
417
+			$wp_query->query_vars['post_status'] = array_keys(wpinv_get_invoice_statuses(false, false, $wp_query->query_vars['post_type']));
418 418
 		}
419 419
 
420 420
 		return $wp_query;
@@ -429,17 +429,17 @@  discard block
 block discarded – undo
429 429
 
430 430
 		// Currently, UX Builder does not work particulaly well with SuperDuper.
431 431
 		// So we disable our widgets when editing a page with UX Builder.
432
-		if ( function_exists( 'ux_builder_is_active' ) && ux_builder_is_active() ) {
432
+		if (function_exists('ux_builder_is_active') && ux_builder_is_active()) {
433 433
 			return;
434 434
 		}
435 435
 
436
-		$block_widget_init_screens = function_exists( 'sd_pagenow_exclude' ) ? sd_pagenow_exclude() : array();
436
+		$block_widget_init_screens = function_exists('sd_pagenow_exclude') ? sd_pagenow_exclude() : array();
437 437
 
438
-		if ( is_admin() && $pagenow && in_array( $pagenow, $block_widget_init_screens ) ) {
438
+		if (is_admin() && $pagenow && in_array($pagenow, $block_widget_init_screens)) {
439 439
 			// don't initiate in these conditions.
440 440
 		} else {
441 441
 			// Only load allowed widgets.
442
-			$exclude = function_exists( 'sd_widget_exclude' ) ? sd_widget_exclude() : array();
442
+			$exclude = function_exists('sd_widget_exclude') ? sd_widget_exclude() : array();
443 443
 			$widgets = apply_filters(
444 444
 				'getpaid_widget_classes',
445 445
 				array(
@@ -455,15 +455,15 @@  discard block
 block discarded – undo
455 455
 			);
456 456
 
457 457
 			// For each widget...
458
-			foreach ( $widgets as $widget ) {
458
+			foreach ($widgets as $widget) {
459 459
 				// Abort early if it is excluded for this page.
460
-				if ( in_array( $widget, $exclude ) ) {
460
+				if (in_array($widget, $exclude)) {
461 461
 					continue;
462 462
 				}
463 463
 
464 464
 				// SD V1 used to extend the widget class. V2 does not, so we cannot call register widget on it.
465
-				if ( is_subclass_of( $widget, 'WP_Widget' ) ) {
466
-					register_widget( $widget );
465
+				if (is_subclass_of($widget, 'WP_Widget')) {
466
+					register_widget($widget);
467 467
 				} else {
468 468
 					new $widget();
469 469
 				}
@@ -480,28 +480,28 @@  discard block
 block discarded – undo
480 480
 		// Ensure the database tables are up to date.
481 481
 		GetPaid_Installer::maybe_create_db_tables();
482 482
 
483
-		$wpi_version = get_option( 'wpinv_version', 0 );
483
+		$wpi_version = get_option('wpinv_version', 0);
484 484
 
485
-		if ( $wpi_version == WPINV_VERSION ) {
485
+		if ($wpi_version == WPINV_VERSION) {
486 486
 			return;
487 487
 		}
488 488
 
489 489
 		$installer = new GetPaid_Installer();
490 490
 
491
-		if ( empty( $wpi_version ) ) {
492
-			return $installer->upgrade_db( 0 );
491
+		if (empty($wpi_version)) {
492
+			return $installer->upgrade_db(0);
493 493
 		}
494 494
 
495
-		$upgrades  = array(
495
+		$upgrades = array(
496 496
 			'0.0.5' => '004',
497 497
 			'1.0.3' => '102',
498 498
 			'2.0.0' => '118',
499 499
 			'2.8.0' => '279',
500 500
 		);
501 501
 
502
-		foreach ( $upgrades as $key => $method ) {
503
-			if ( version_compare( $wpi_version, $key, '<' ) ) {
504
-				return $installer->upgrade_db( $method );
502
+		foreach ($upgrades as $key => $method) {
503
+			if (version_compare($wpi_version, $key, '<')) {
504
+				return $installer->upgrade_db($method);
505 505
 			}
506 506
 		}
507 507
 	}
@@ -512,11 +512,11 @@  discard block
 block discarded – undo
512 512
 	 * @since 2.0.8
513 513
 	 */
514 514
 	public function maybe_flush_permalinks() {
515
-		$flush = get_option( 'wpinv_flush_permalinks', 0 );
515
+		$flush = get_option('wpinv_flush_permalinks', 0);
516 516
 
517
-		if ( ! empty( $flush ) ) {
517
+		if (!empty($flush)) {
518 518
 			flush_rewrite_rules();
519
-			delete_option( 'wpinv_flush_permalinks' );
519
+			delete_option('wpinv_flush_permalinks');
520 520
 		}
521 521
 	}
522 522
 
@@ -526,9 +526,9 @@  discard block
 block discarded – undo
526 526
 	 * @since 1.0.19
527 527
 	 * @param int[] $excluded_posts_ids
528 528
 	 */
529
-	public function wpseo_exclude_from_sitemap_by_post_ids( $excluded_posts_ids ) {
529
+	public function wpseo_exclude_from_sitemap_by_post_ids($excluded_posts_ids) {
530 530
 		// Ensure that we have an array.
531
-		if ( ! is_array( $excluded_posts_ids ) ) {
531
+		if (!is_array($excluded_posts_ids)) {
532 532
 			$excluded_posts_ids = array();
533 533
 		}
534 534
 
@@ -536,25 +536,25 @@  discard block
 block discarded – undo
536 536
 		$our_pages = array();
537 537
 
538 538
 		// Checkout page.
539
-		$our_pages[] = wpinv_get_option( 'checkout_page', false );
539
+		$our_pages[] = wpinv_get_option('checkout_page', false);
540 540
 
541 541
 		// Success page.
542
-		$our_pages[] = wpinv_get_option( 'success_page', false );
542
+		$our_pages[] = wpinv_get_option('success_page', false);
543 543
 
544 544
 		// Failure page.
545
-		$our_pages[] = wpinv_get_option( 'failure_page', false );
545
+		$our_pages[] = wpinv_get_option('failure_page', false);
546 546
 
547 547
 		// History page.
548
-		$our_pages[] = wpinv_get_option( 'invoice_history_page', false );
548
+		$our_pages[] = wpinv_get_option('invoice_history_page', false);
549 549
 
550 550
 		// Subscriptions page.
551
-		$our_pages[] = wpinv_get_option( 'invoice_subscription_page', false );
551
+		$our_pages[] = wpinv_get_option('invoice_subscription_page', false);
552 552
 
553
-		$our_pages   = array_map( 'intval', array_filter( $our_pages ) );
553
+		$our_pages   = array_map('intval', array_filter($our_pages));
554 554
 
555 555
 		$excluded_posts_ids = $excluded_posts_ids + $our_pages;
556 556
 
557
-		return array_unique( $excluded_posts_ids );
557
+		return array_unique($excluded_posts_ids);
558 558
 	}
559 559
 
560 560
 	/**
@@ -563,14 +563,14 @@  discard block
 block discarded – undo
563 563
 	 * @since 1.0.19
564 564
 	 * @param string[] $post_types
565 565
 	 */
566
-	public function exclude_invoicing_post_types( $post_types ) {
566
+	public function exclude_invoicing_post_types($post_types) {
567 567
 		// Ensure that we have an array.
568
-		if ( ! is_array( $post_types ) ) {
568
+		if (!is_array($post_types)) {
569 569
 			$post_types = array();
570 570
 		}
571 571
 
572 572
 		// Remove our post types.
573
-		return array_diff( $post_types, array_keys( getpaid_get_invoice_post_types() ) );
573
+		return array_diff($post_types, array_keys(getpaid_get_invoice_post_types()));
574 574
 	}
575 575
 
576 576
 	/**
@@ -579,7 +579,7 @@  discard block
 block discarded – undo
579 579
 	 * @since 2.0.0
580 580
 	 */
581 581
 	public function wp_footer() {
582
-		wpinv_get_template( 'frontend-footer.php' );
582
+		wpinv_get_template('frontend-footer.php');
583 583
 	}
584 584
 
585 585
 	/**
@@ -588,14 +588,14 @@  discard block
 block discarded – undo
588 588
 	 * @since 2.0.0
589 589
 	 */
590 590
 	public function wp_head() {
591
-		wpinv_get_template( 'frontend-head.php' );
591
+		wpinv_get_template('frontend-head.php');
592 592
 	}
593 593
 
594 594
 	/**
595 595
 	 * Custom query vars.
596 596
 	 *
597 597
 	 */
598
-	public function custom_query_vars( $vars ) {
598
+	public function custom_query_vars($vars) {
599 599
 		$vars[] = 'getpaid-ipn';
600 600
 		return $vars;
601 601
 	}
@@ -606,26 +606,26 @@  discard block
 block discarded – undo
606 606
 	 */
607 607
 	public function add_rewrite_rule() {
608 608
 		$tag = 'getpaid-ipn';
609
-		add_rewrite_tag( "%$tag%", '([^&]+)' );
610
-		add_rewrite_rule( "^$tag/([^/]*)/?", "index.php?$tag=\$matches[1]", 'top' );
609
+		add_rewrite_tag("%$tag%", '([^&]+)');
610
+		add_rewrite_rule("^$tag/([^/]*)/?", "index.php?$tag=\$matches[1]", 'top');
611 611
 	}
612 612
 
613 613
 	/**
614 614
 	 * Processes non-query string ipns.
615 615
 	 *
616 616
 	 */
617
-	public function maybe_process_new_ipn( $query ) {
618
-		if ( is_admin() || ! $query->is_main_query() ) {
617
+	public function maybe_process_new_ipn($query) {
618
+		if (is_admin() || !$query->is_main_query()) {
619 619
 			return;
620 620
 		}
621 621
 
622
-		$gateway = get_query_var( 'getpaid-ipn' );
622
+		$gateway = get_query_var('getpaid-ipn');
623 623
 
624
-		if ( ! empty( $gateway ) ) {
625
-			$gateway = sanitize_text_field( $gateway );
624
+		if (!empty($gateway)) {
625
+			$gateway = sanitize_text_field($gateway);
626 626
 			nocache_headers();
627
-			do_action( 'wpinv_verify_payment_ipn', $gateway );
628
-			do_action( "wpinv_verify_{$gateway}_ipn" );
627
+			do_action('wpinv_verify_payment_ipn', $gateway);
628
+			do_action("wpinv_verify_{$gateway}_ipn");
629 629
 			exit;
630 630
 		}
631 631
 	}
Please login to merge, or discard this patch.
vendor/ayecode/wp-ayecode-ui/includes/ayecode-ui-settings.php 1 patch
Indentation   +2390 added lines, -2390 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,472 +21,472 @@  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.30';
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.30';
119 39
 
120
-				add_action( 'customize_register', array( self::$instance, 'customizer_settings' ));
40
+        /**
41
+         * Class textdomain.
42
+         *
43
+         * @var string
44
+         */
45
+        public $textdomain = 'aui';
121 46
 
122
-				do_action( 'ayecode_ui_settings_loaded' );
123
-			}
47
+        /**
48
+         * Latest version of Bootstrap at time of publish published.
49
+         *
50
+         * @var string
51
+         */
52
+        public $latest = "5.2.2";
124 53
 
125
-			return self::$instance;
126
-		}
54
+        /**
55
+         * Current version of select2 being used.
56
+         *
57
+         * @var string
58
+         */
59
+        public $select2_version = "4.0.11";
127 60
 
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 ){
61
+        /**
62
+         * The title.
63
+         *
64
+         * @var string
65
+         */
66
+        public $name = 'AyeCode UI';
138 67
 
68
+        /**
69
+         * The relative url to the assets.
70
+         *
71
+         * @var string
72
+         */
73
+        public $url = '';
139 74
 
140
-			$setting = wp_get_global_settings();
75
+        /**
76
+         * Holds the settings values.
77
+         *
78
+         * @var array
79
+         */
80
+        private $settings;
141 81
 
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() {
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
+
120
+                add_action( 'customize_register', array( self::$instance, 'customizer_settings' ));
121
+
122
+                do_action( 'ayecode_ui_settings_loaded' );
123
+            }
124
+
125
+            return self::$instance;
126
+        }
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 ){
138
+
139
+
140
+            $setting = wp_get_global_settings();
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() {
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>'. wp_kses_post( $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>'. wp_kses_post( $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';
467
-				$rtl = is_rtl() && ! $aui_bs5 ? '-rtl' : '';
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
+                $rtl = is_rtl() && ! $aui_bs5 ? '-rtl' : '';
468 468
                 $bs_ver = $this->settings['bs_ver'] == '5' ? '-v5' : '';
469 469
 
470
-				if ( $this->settings[ $css_setting ] ) {
471
-					$compatibility = $this->settings[$css_setting]=='core' ? false : true;
472
-					$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';
470
+                if ( $this->settings[ $css_setting ] ) {
471
+                    $compatibility = $this->settings[$css_setting]=='core' ? false : true;
472
+                    $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';
473 473
 
474
-					wp_register_style( 'ayecode-ui', $url, array(), $this->version );
475
-					wp_enqueue_style( 'ayecode-ui' );
474
+                    wp_register_style( 'ayecode-ui', $url, array(), $this->version );
475
+                    wp_enqueue_style( 'ayecode-ui' );
476 476
 
477
-					if ( is_admin() && ( !empty($_REQUEST['postType']) || self::is_block_editor() ) && ( defined( 'BLOCKSTRAP_VERSION' ) || defined( 'AUI_FSE' ) )  ) {
478
-						$url = $this->url.'assets'.$bs_ver.'/css/ayecode-ui-fse.css';
479
-						wp_register_style( 'ayecode-ui-fse', $url, array(), $this->version );
480
-						wp_enqueue_style( 'ayecode-ui-fse' );
481
-						$load_fse = true;
482
-					}
477
+                    if ( is_admin() && ( !empty($_REQUEST['postType']) || self::is_block_editor() ) && ( defined( 'BLOCKSTRAP_VERSION' ) || defined( 'AUI_FSE' ) )  ) {
478
+                        $url = $this->url.'assets'.$bs_ver.'/css/ayecode-ui-fse.css';
479
+                        wp_register_style( 'ayecode-ui-fse', $url, array(), $this->version );
480
+                        wp_enqueue_style( 'ayecode-ui-fse' );
481
+                        $load_fse = true;
482
+                    }
483 483
 
484
-					// flatpickr
485
-					wp_register_style( 'flatpickr', $this->url.'assets'.$bs_ver.'/css/flatpickr.min.css', array(), $this->version );
484
+                    // flatpickr
485
+                    wp_register_style( 'flatpickr', $this->url.'assets'.$bs_ver.'/css/flatpickr.min.css', array(), $this->version );
486 486
 
487
-					// fix some wp-admin issues
488
-					if(is_admin()){
489
-						$custom_css = "
487
+                    // fix some wp-admin issues
488
+                    if(is_admin()){
489
+                        $custom_css = "
490 490
                 body{
491 491
                     background-color: #f1f1f1;
492 492
                     font-family: -apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;
@@ -526,63 +526,63 @@  discard block
 block discarded – undo
526 526
 				}
527 527
                 ";
528 528
 
529
-						// @todo, remove once fixed :: fix for this bug https://github.com/WordPress/gutenberg/issues/14377
530
-						$custom_css .= "
529
+                        // @todo, remove once fixed :: fix for this bug https://github.com/WordPress/gutenberg/issues/14377
530
+                        $custom_css .= "
531 531
 						.edit-post-sidebar input[type=color].components-text-control__input{
532 532
 						    padding: 0;
533 533
 						}
534 534
 					";
535
-						wp_add_inline_style( 'ayecode-ui', $custom_css );
536
-					}
537
-
538
-					// custom changes
539
-					if ( $load_fse ) {
540
-						wp_add_inline_style( 'ayecode-ui-fse', self::custom_css($compatibility, true) );
541
-					}else{
542
-						wp_add_inline_style( 'ayecode-ui', self::custom_css($compatibility) );
543
-					}
544
-				}
545
-			}
546
-		}
547
-
548
-		/**
549
-		 * Get inline script used if bootstrap enqueued
550
-		 *
551
-		 * If this remains small then its best to use this than to add another JS file.
552
-		 */
553
-		public function inline_script() {
554
-            global $aui_bs5;
555
-			// Flatpickr calendar locale
556
-			$flatpickr_locale = self::flatpickr_locale();
535
+                        wp_add_inline_style( 'ayecode-ui', $custom_css );
536
+                    }
557 537
 
558
-			ob_start();
559
-			if ( $aui_bs5 ) {
560
-				include_once( dirname( __FILE__ ) . '/inc/bs5-js.php' );
561
-			}else{
562
-				include_once( dirname( __FILE__ ) . '/inc/bs4-js.php' );
538
+                    // custom changes
539
+                    if ( $load_fse ) {
540
+                        wp_add_inline_style( 'ayecode-ui-fse', self::custom_css($compatibility, true) );
541
+                    }else{
542
+                        wp_add_inline_style( 'ayecode-ui', self::custom_css($compatibility) );
543
+                    }
544
+                }
563 545
             }
546
+        }
564 547
 
565
-			$output = ob_get_clean();
548
+        /**
549
+         * Get inline script used if bootstrap enqueued
550
+         *
551
+         * If this remains small then its best to use this than to add another JS file.
552
+         */
553
+        public function inline_script() {
554
+            global $aui_bs5;
555
+            // Flatpickr calendar locale
556
+            $flatpickr_locale = self::flatpickr_locale();
557
+
558
+            ob_start();
559
+            if ( $aui_bs5 ) {
560
+                include_once( dirname( __FILE__ ) . '/inc/bs5-js.php' );
561
+            }else{
562
+                include_once( dirname( __FILE__ ) . '/inc/bs4-js.php' );
563
+            }
566 564
 
567
-			/*
565
+            $output = ob_get_clean();
566
+
567
+            /*
568 568
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
569 569
 			 */
570
-			return str_replace( array(
571
-				'<script>',
572
-				'</script>'
573
-			), '', self::minify_js($output) );
574
-		}
575
-
576
-
577
-		/**
578
-		 * JS to help with conflict issues with other plugins and themes using bootstrap v3.
579
-		 *
580
-		 * @TODO we may need this when other conflicts arrise.
581
-		 * @return mixed
582
-		 */
583
-		public static function bs3_compat_js() {
584
-			ob_start();
585
-			?>
570
+            return str_replace( array(
571
+                '<script>',
572
+                '</script>'
573
+            ), '', self::minify_js($output) );
574
+        }
575
+
576
+
577
+        /**
578
+         * JS to help with conflict issues with other plugins and themes using bootstrap v3.
579
+         *
580
+         * @TODO we may need this when other conflicts arrise.
581
+         * @return mixed
582
+         */
583
+        public static function bs3_compat_js() {
584
+            ob_start();
585
+            ?>
586 586
             <script>
587 587
 				<?php if( defined( 'FUSION_BUILDER_VERSION' ) ){ ?>
588 588
                 /* With Avada builder */
@@ -590,20 +590,20 @@  discard block
 block discarded – undo
590 590
 				<?php } ?>
591 591
             </script>
592 592
 			<?php
593
-			return str_replace( array(
594
-				'<script>',
595
-				'</script>'
596
-			), '', ob_get_clean());
597
-		}
598
-
599
-		/**
600
-		 * Get inline script used if bootstrap file browser enqueued.
601
-		 *
602
-		 * If this remains small then its best to use this than to add another JS file.
603
-		 */
604
-		public function inline_script_file_browser(){
605
-			ob_start();
606
-			?>
593
+            return str_replace( array(
594
+                '<script>',
595
+                '</script>'
596
+            ), '', ob_get_clean());
597
+        }
598
+
599
+        /**
600
+         * Get inline script used if bootstrap file browser enqueued.
601
+         *
602
+         * If this remains small then its best to use this than to add another JS file.
603
+         */
604
+        public function inline_script_file_browser(){
605
+            ob_start();
606
+            ?>
607 607
             <script>
608 608
                 // run on doc ready
609 609
                 jQuery(document).ready(function () {
@@ -611,314 +611,314 @@  discard block
 block discarded – undo
611 611
                 });
612 612
             </script>
613 613
 			<?php
614
-			$output = ob_get_clean();
614
+            $output = ob_get_clean();
615 615
 
616
-			/*
616
+            /*
617 617
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
618 618
 			 */
619
-			return str_replace( array(
620
-				'<script>',
621
-				'</script>'
622
-			), '', $output );
623
-		}
624
-
625
-		/**
626
-		 * Adds the Font Awesome JS.
627
-		 */
628
-		public function enqueue_scripts() {
629
-			if( is_admin() && !$this->is_aui_screen()){
630
-				// Don't add wp-admin scripts if not requested to.
631
-			} else {
632
-				$js_setting = current_action() == 'wp_enqueue_scripts' ? 'js' : 'js_backend';
633
-
634
-				$bs_ver = $this->settings['bs_ver'] == '5' ? '-v5' : '';
635
-
636
-				// select2
637
-				wp_register_script( 'select2', $this->url . 'assets/js/select2.min.js', array( 'jquery' ), $this->select2_version );
638
-
639
-				// flatpickr
640
-				wp_register_script( 'flatpickr', $this->url . 'assets/js/flatpickr.min.js', array(), $this->version );
641
-
642
-				// iconpicker
643
-				if ( defined( 'FAS_ICONPICKER_JS_URL' ) ) {
644
-					wp_register_script( 'iconpicker', FAS_ICONPICKER_JS_URL, array(), $this->version );
645
-				}else{
646
-					wp_register_script( 'iconpicker', $this->url . 'assets/js/fa-iconpicker.min.js', array(), $this->version );
647
-				}
619
+            return str_replace( array(
620
+                '<script>',
621
+                '</script>'
622
+            ), '', $output );
623
+        }
648 624
 
649
-				// Bootstrap file browser
650
-				wp_register_script( 'aui-custom-file-input', $url = $this->url . 'assets/js/bs-custom-file-input.min.js', array( 'jquery' ), $this->select2_version );
651
-				wp_add_inline_script( 'aui-custom-file-input', $this->inline_script_file_browser() );
625
+        /**
626
+         * Adds the Font Awesome JS.
627
+         */
628
+        public function enqueue_scripts() {
629
+            if( is_admin() && !$this->is_aui_screen()){
630
+                // Don't add wp-admin scripts if not requested to.
631
+            } else {
632
+                $js_setting = current_action() == 'wp_enqueue_scripts' ? 'js' : 'js_backend';
652 633
 
653
-				$load_inline = false;
634
+                $bs_ver = $this->settings['bs_ver'] == '5' ? '-v5' : '';
654 635
 
655
-				// Load select2 only when required.
656
-				if ( $this->force_load_select2() ) {
657
-					$dependency = array( 'select2', 'jquery' );
658
-				} else {
659
-					$dependency = array( 'jquery' );
660
-				}
636
+                // select2
637
+                wp_register_script( 'select2', $this->url . 'assets/js/select2.min.js', array( 'jquery' ), $this->select2_version );
661 638
 
662
-				if ( $this->settings[ $js_setting ] == 'core-popper' ) {
663
-					// Bootstrap bundle
664
-					$url = $this->url . 'assets' . $bs_ver . '/js/bootstrap.bundle.min.js';
665
-					wp_register_script( 'bootstrap-js-bundle', $url, $dependency, $this->version, $this->is_bs3_compat() );
666
-
667
-					// If in admin then add to footer for compatibility.
668
-					is_admin() ? wp_enqueue_script( 'bootstrap-js-bundle', '', null, null, true ) : wp_enqueue_script( 'bootstrap-js-bundle' );
669
-
670
-					$script = $this->inline_script();
671
-					wp_add_inline_script( 'bootstrap-js-bundle', $script );
672
-				} elseif ( $this->settings[ $js_setting ] == 'popper' ) {
673
-					$url = $this->url . 'assets/js/popper.min.js'; // @todo we need to update this to bs5
674
-					wp_register_script( 'bootstrap-js-popper', $url, $dependency, $this->version );
675
-					wp_enqueue_script( 'bootstrap-js-popper' );
676
-					$load_inline = true;
677
-				} else {
678
-					$load_inline = true;
679
-				}
639
+                // flatpickr
640
+                wp_register_script( 'flatpickr', $this->url . 'assets/js/flatpickr.min.js', array(), $this->version );
641
+
642
+                // iconpicker
643
+                if ( defined( 'FAS_ICONPICKER_JS_URL' ) ) {
644
+                    wp_register_script( 'iconpicker', FAS_ICONPICKER_JS_URL, array(), $this->version );
645
+                }else{
646
+                    wp_register_script( 'iconpicker', $this->url . 'assets/js/fa-iconpicker.min.js', array(), $this->version );
647
+                }
680 648
 
681
-				// Load needed inline scripts by faking the loading of a script if the main script is not being loaded
682
-				if ( $load_inline ) {
683
-					wp_register_script( 'bootstrap-dummy', '', $dependency );
684
-					wp_enqueue_script( 'bootstrap-dummy' );
649
+                // Bootstrap file browser
650
+                wp_register_script( 'aui-custom-file-input', $url = $this->url . 'assets/js/bs-custom-file-input.min.js', array( 'jquery' ), $this->select2_version );
651
+                wp_add_inline_script( 'aui-custom-file-input', $this->inline_script_file_browser() );
685 652
 
686
-					$script = $this->inline_script();
687
-					wp_add_inline_script( 'bootstrap-dummy', $script );
688
-				}
689
-			}
690
-		}
691
-
692
-		/**
693
-		 * Enqueue select2 if called.
694
-		 *
695
-		 * @since 0.2.29
696
-		 */
697
-		public function force_load_select2() {
698
-			global $aui_select2_enqueued;
699
-
700
-			$conditional_select2 = apply_filters( 'aui_is_conditional_select2', true );
701
-
702
-			if ( $conditional_select2 !== true ) {
703
-				return true;
704
-			}
705
-
706
-			$load = is_admin() && ! $aui_select2_enqueued;
707
-
708
-			return apply_filters( 'aui_force_load_select2', $load );
709
-		}
710
-
711
-		/**
712
-		 * Enqueue select2 if called.
713
-		 *
714
-		 * @since 0.2.29
715
-		 */
716
-		public function enqueue_select2() {
717
-			wp_enqueue_script( 'select2' );
718
-		}
719
-
720
-		/**
721
-		 * Enqueue flatpickr if called.
722
-		 */
723
-		public function enqueue_flatpickr(){
724
-			wp_enqueue_style( 'flatpickr' );
725
-			wp_enqueue_script( 'flatpickr' );
726
-		}
727
-
728
-		/**
729
-		 * Enqueue iconpicker if called.
730
-		 */
731
-		public function enqueue_iconpicker(){
732
-			wp_enqueue_style( 'iconpicker' );
733
-			wp_enqueue_script( 'iconpicker' );
734
-		}
735
-
736
-		/**
737
-		 * Get the url path to the current folder.
738
-		 *
739
-		 * @return string
740
-		 */
741
-		public function get_url() {
742
-			$content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) );
743
-			$content_url = untrailingslashit( WP_CONTENT_URL );
744
-
745
-			// Replace http:// to https://.
746
-			if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) {
747
-				$content_url = str_replace( 'http://', 'https://', $content_url );
748
-			}
749
-
750
-			// Check if we are inside a plugin
751
-			$file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) );
752
-			$url = str_replace( $content_dir, $content_url, $file_dir );
753
-
754
-			return trailingslashit( $url );
755
-		}
756
-
757
-		/**
758
-		 * Get the url path to the current folder.
759
-		 *
760
-		 * @return string
761
-		 */
762
-		public function get_url_old() {
763
-
764
-			$url = '';
765
-			// check if we are inside a plugin
766
-			$file_dir = str_replace( "/includes","", wp_normalize_path( dirname( __FILE__ ) ) );
767
-
768
-			// add check in-case user has changed wp-content dir name.
769
-			$wp_content_folder_name = basename(WP_CONTENT_DIR);
770
-			$dir_parts = explode("/$wp_content_folder_name/",$file_dir);
771
-			$url_parts = explode("/$wp_content_folder_name/",plugins_url());
772
-
773
-			if(!empty($url_parts[0]) && !empty($dir_parts[1])){
774
-				$url = trailingslashit( $url_parts[0]."/$wp_content_folder_name/".$dir_parts[1] );
775
-			}
776
-
777
-			return $url;
778
-		}
779
-
780
-		/**
781
-		 * Register the database settings with WordPress.
782
-		 */
783
-		public function register_settings() {
784
-			register_setting( 'ayecode-ui-settings', 'ayecode-ui-settings' );
785
-		}
786
-
787
-		/**
788
-		 * Add the WordPress settings menu item.
789
-		 * @since 1.0.10 Calling function name direct will fail theme check so we don't.
790
-		 */
791
-		public function menu_item() {
792
-			$menu_function = 'add' . '_' . 'options' . '_' . 'page'; // won't pass theme check if function name present in theme
793
-			call_user_func( $menu_function, $this->name, $this->name, 'manage_options', 'ayecode-ui-settings', array(
794
-				$this,
795
-				'settings_page'
796
-			) );
797
-		}
798
-
799
-		/**
800
-		 * Get a list of themes and their default JS settings.
801
-		 *
802
-		 * @return array
803
-		 */
804
-		public function theme_js_settings(){
805
-			return array(
806
-				'ayetheme' => 'popper',
807
-				'listimia' => 'required',
808
-				'listimia_backend' => 'core-popper',
809
-				//'avada'    => 'required', // removed as we now add compatibility
810
-			);
811
-		}
812
-
813
-		/**
653
+                $load_inline = false;
654
+
655
+                // Load select2 only when required.
656
+                if ( $this->force_load_select2() ) {
657
+                    $dependency = array( 'select2', 'jquery' );
658
+                } else {
659
+                    $dependency = array( 'jquery' );
660
+                }
661
+
662
+                if ( $this->settings[ $js_setting ] == 'core-popper' ) {
663
+                    // Bootstrap bundle
664
+                    $url = $this->url . 'assets' . $bs_ver . '/js/bootstrap.bundle.min.js';
665
+                    wp_register_script( 'bootstrap-js-bundle', $url, $dependency, $this->version, $this->is_bs3_compat() );
666
+
667
+                    // If in admin then add to footer for compatibility.
668
+                    is_admin() ? wp_enqueue_script( 'bootstrap-js-bundle', '', null, null, true ) : wp_enqueue_script( 'bootstrap-js-bundle' );
669
+
670
+                    $script = $this->inline_script();
671
+                    wp_add_inline_script( 'bootstrap-js-bundle', $script );
672
+                } elseif ( $this->settings[ $js_setting ] == 'popper' ) {
673
+                    $url = $this->url . 'assets/js/popper.min.js'; // @todo we need to update this to bs5
674
+                    wp_register_script( 'bootstrap-js-popper', $url, $dependency, $this->version );
675
+                    wp_enqueue_script( 'bootstrap-js-popper' );
676
+                    $load_inline = true;
677
+                } else {
678
+                    $load_inline = true;
679
+                }
680
+
681
+                // Load needed inline scripts by faking the loading of a script if the main script is not being loaded
682
+                if ( $load_inline ) {
683
+                    wp_register_script( 'bootstrap-dummy', '', $dependency );
684
+                    wp_enqueue_script( 'bootstrap-dummy' );
685
+
686
+                    $script = $this->inline_script();
687
+                    wp_add_inline_script( 'bootstrap-dummy', $script );
688
+                }
689
+            }
690
+        }
691
+
692
+        /**
693
+         * Enqueue select2 if called.
694
+         *
695
+         * @since 0.2.29
696
+         */
697
+        public function force_load_select2() {
698
+            global $aui_select2_enqueued;
699
+
700
+            $conditional_select2 = apply_filters( 'aui_is_conditional_select2', true );
701
+
702
+            if ( $conditional_select2 !== true ) {
703
+                return true;
704
+            }
705
+
706
+            $load = is_admin() && ! $aui_select2_enqueued;
707
+
708
+            return apply_filters( 'aui_force_load_select2', $load );
709
+        }
710
+
711
+        /**
712
+         * Enqueue select2 if called.
713
+         *
714
+         * @since 0.2.29
715
+         */
716
+        public function enqueue_select2() {
717
+            wp_enqueue_script( 'select2' );
718
+        }
719
+
720
+        /**
721
+         * Enqueue flatpickr if called.
722
+         */
723
+        public function enqueue_flatpickr(){
724
+            wp_enqueue_style( 'flatpickr' );
725
+            wp_enqueue_script( 'flatpickr' );
726
+        }
727
+
728
+        /**
729
+         * Enqueue iconpicker if called.
730
+         */
731
+        public function enqueue_iconpicker(){
732
+            wp_enqueue_style( 'iconpicker' );
733
+            wp_enqueue_script( 'iconpicker' );
734
+        }
735
+
736
+        /**
737
+         * Get the url path to the current folder.
738
+         *
739
+         * @return string
740
+         */
741
+        public function get_url() {
742
+            $content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) );
743
+            $content_url = untrailingslashit( WP_CONTENT_URL );
744
+
745
+            // Replace http:// to https://.
746
+            if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) {
747
+                $content_url = str_replace( 'http://', 'https://', $content_url );
748
+            }
749
+
750
+            // Check if we are inside a plugin
751
+            $file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) );
752
+            $url = str_replace( $content_dir, $content_url, $file_dir );
753
+
754
+            return trailingslashit( $url );
755
+        }
756
+
757
+        /**
758
+         * Get the url path to the current folder.
759
+         *
760
+         * @return string
761
+         */
762
+        public function get_url_old() {
763
+
764
+            $url = '';
765
+            // check if we are inside a plugin
766
+            $file_dir = str_replace( "/includes","", wp_normalize_path( dirname( __FILE__ ) ) );
767
+
768
+            // add check in-case user has changed wp-content dir name.
769
+            $wp_content_folder_name = basename(WP_CONTENT_DIR);
770
+            $dir_parts = explode("/$wp_content_folder_name/",$file_dir);
771
+            $url_parts = explode("/$wp_content_folder_name/",plugins_url());
772
+
773
+            if(!empty($url_parts[0]) && !empty($dir_parts[1])){
774
+                $url = trailingslashit( $url_parts[0]."/$wp_content_folder_name/".$dir_parts[1] );
775
+            }
776
+
777
+            return $url;
778
+        }
779
+
780
+        /**
781
+         * Register the database settings with WordPress.
782
+         */
783
+        public function register_settings() {
784
+            register_setting( 'ayecode-ui-settings', 'ayecode-ui-settings' );
785
+        }
786
+
787
+        /**
788
+         * Add the WordPress settings menu item.
789
+         * @since 1.0.10 Calling function name direct will fail theme check so we don't.
790
+         */
791
+        public function menu_item() {
792
+            $menu_function = 'add' . '_' . 'options' . '_' . 'page'; // won't pass theme check if function name present in theme
793
+            call_user_func( $menu_function, $this->name, $this->name, 'manage_options', 'ayecode-ui-settings', array(
794
+                $this,
795
+                'settings_page'
796
+            ) );
797
+        }
798
+
799
+        /**
800
+         * Get a list of themes and their default JS settings.
801
+         *
802
+         * @return array
803
+         */
804
+        public function theme_js_settings(){
805
+            return array(
806
+                'ayetheme' => 'popper',
807
+                'listimia' => 'required',
808
+                'listimia_backend' => 'core-popper',
809
+                //'avada'    => 'required', // removed as we now add compatibility
810
+            );
811
+        }
812
+
813
+        /**
814 814
          * Get the date the site was installed.
815 815
          *
816
-		 * @return false|string
817
-		 */
816
+         * @return false|string
817
+         */
818 818
         public function get_site_install_date() {
819
-	        global $wpdb; // This gives you access to the WordPress database object
819
+            global $wpdb; // This gives you access to the WordPress database object
820
+
821
+            // Prepare the SQL query to get the oldest registration date
822
+            $query = "SELECT MIN(user_registered) AS oldest_registration_date FROM {$wpdb->users}";
820 823
 
821
-	        // Prepare the SQL query to get the oldest registration date
822
-	        $query = "SELECT MIN(user_registered) AS oldest_registration_date FROM {$wpdb->users}";
824
+            // Execute the query
825
+            $date = $wpdb->get_var( $query ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
823 826
 
824
-	        // Execute the query
825
-	        $date = $wpdb->get_var( $query ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
827
+            return $date ? $date : false;
828
+        }
826 829
 
827
-	        return $date ? $date : false;
830
+        /**
831
+         * Show admin notice if backend scripts not loaded.
832
+         */
833
+        public function show_admin_version_notice(){
834
+            $fix_url = admin_url("options-general.php?page=ayecode-ui-settings" );
835
+            $button = '<a href="'.esc_url($fix_url).'" class="button-primary">View Settings</a>';
836
+            $message = __( '<b>Style Issue:</b> AyeCode UI has changed its default version from v4 to v5, if you notice unwanted style changes, please revert to v4 (saving the settings page will remove this notice)')." " .$button;
837
+            echo '<div class="notice notice-error aui-settings-error-notice"><p>'. wp_kses_post( $message ).'</p></div>';
828 838
         }
829 839
 
830
-		/**
831
-		 * Show admin notice if backend scripts not loaded.
832
-		 */
833
-		public function show_admin_version_notice(){
834
-			$fix_url = admin_url("options-general.php?page=ayecode-ui-settings" );
835
-			$button = '<a href="'.esc_url($fix_url).'" class="button-primary">View Settings</a>';
836
-			$message = __( '<b>Style Issue:</b> AyeCode UI has changed its default version from v4 to v5, if you notice unwanted style changes, please revert to v4 (saving the settings page will remove this notice)')." " .$button;
837
-			echo '<div class="notice notice-error aui-settings-error-notice"><p>'. wp_kses_post( $message ).'</p></div>';
838
-		}
839
-
840
-		/**
841
-		 * Get the current Font Awesome output settings.
842
-		 *
843
-		 * @return array The array of settings.
844
-		 */
845
-		public function get_settings() {
846
-
847
-			$db_settings = get_option( 'ayecode-ui-settings' );
840
+        /**
841
+         * Get the current Font Awesome output settings.
842
+         *
843
+         * @return array The array of settings.
844
+         */
845
+        public function get_settings() {
846
+
847
+            $db_settings = get_option( 'ayecode-ui-settings' );
848 848
 
849 849
             // Maybe show default version notice
850
-			$site_install_date = new DateTime( self::get_site_install_date() );
851
-			$switch_over_date = new DateTime("2024-02-01");
852
-			if ( empty( $db_settings ) && $site_install_date < $switch_over_date ) {
853
-				add_action( 'admin_notices', array( $this, 'show_admin_version_notice' ) );
854
-			}
855
-
856
-			$js_default = 'core-popper';
857
-			$js_default_backend = $js_default;
858
-
859
-			// maybe set defaults (if no settings set)
860
-			if(empty($db_settings)){
861
-				$active_theme = strtolower( get_template() ); // active parent theme.
862
-				$theme_js_settings = self::theme_js_settings();
863
-				if(isset($theme_js_settings[$active_theme])){
864
-					$js_default = $theme_js_settings[$active_theme];
865
-					$js_default_backend = isset($theme_js_settings[$active_theme."_backend"]) ? $theme_js_settings[$active_theme."_backend"] : $js_default;
866
-				}
867
-			}
850
+            $site_install_date = new DateTime( self::get_site_install_date() );
851
+            $switch_over_date = new DateTime("2024-02-01");
852
+            if ( empty( $db_settings ) && $site_install_date < $switch_over_date ) {
853
+                add_action( 'admin_notices', array( $this, 'show_admin_version_notice' ) );
854
+            }
868 855
 
869
-			/**
870
-			 * Filter the default settings.
871
-			 */
872
-			$defaults = apply_filters( 'ayecode-ui-default-settings', array(
873
-				'css'            => 'compatibility', // core, compatibility
874
-				'js'             => $js_default, // js to load, core-popper, popper
875
-				'html_font_size' => '16', // js to load, core-popper, popper
876
-				'css_backend'    => 'compatibility', // core, compatibility
877
-				'js_backend'     => $js_default_backend, // js to load, core-popper, popper
878
-				'disable_admin'  => '', // URL snippets to disable loading on admin
856
+            $js_default = 'core-popper';
857
+            $js_default_backend = $js_default;
858
+
859
+            // maybe set defaults (if no settings set)
860
+            if(empty($db_settings)){
861
+                $active_theme = strtolower( get_template() ); // active parent theme.
862
+                $theme_js_settings = self::theme_js_settings();
863
+                if(isset($theme_js_settings[$active_theme])){
864
+                    $js_default = $theme_js_settings[$active_theme];
865
+                    $js_default_backend = isset($theme_js_settings[$active_theme."_backend"]) ? $theme_js_settings[$active_theme."_backend"] : $js_default;
866
+                }
867
+            }
868
+
869
+            /**
870
+             * Filter the default settings.
871
+             */
872
+            $defaults = apply_filters( 'ayecode-ui-default-settings', array(
873
+                'css'            => 'compatibility', // core, compatibility
874
+                'js'             => $js_default, // js to load, core-popper, popper
875
+                'html_font_size' => '16', // js to load, core-popper, popper
876
+                'css_backend'    => 'compatibility', // core, compatibility
877
+                'js_backend'     => $js_default_backend, // js to load, core-popper, popper
878
+                'disable_admin'  => '', // URL snippets to disable loading on admin
879 879
                 'bs_ver'         => '5', // The default bootstrap version to sue by default
880
-			), $db_settings );
880
+            ), $db_settings );
881 881
 
882
-			$settings = wp_parse_args( $db_settings, $defaults );
882
+            $settings = wp_parse_args( $db_settings, $defaults );
883 883
 
884
-			/**
885
-			 * Filter the Bootstrap settings.
886
-			 *
887
-			 * @todo if we add this filer people might use it and then it defeats the purpose of this class :/
888
-			 */
889
-			return $this->settings = apply_filters( 'ayecode-ui-settings', $settings, $db_settings, $defaults );
890
-		}
884
+            /**
885
+             * Filter the Bootstrap settings.
886
+             *
887
+             * @todo if we add this filer people might use it and then it defeats the purpose of this class :/
888
+             */
889
+            return $this->settings = apply_filters( 'ayecode-ui-settings', $settings, $db_settings, $defaults );
890
+        }
891 891
 
892 892
 
893
-		/**
894
-		 * The settings page html output.
895
-		 */
896
-		public function settings_page() {
897
-			if ( ! current_user_can( 'manage_options' ) ) {
898
-				wp_die( esc_attr__( 'You do not have sufficient permissions to access this page.', 'ayecode-connect' ) );
899
-			}
893
+        /**
894
+         * The settings page html output.
895
+         */
896
+        public function settings_page() {
897
+            if ( ! current_user_can( 'manage_options' ) ) {
898
+                wp_die( esc_attr__( 'You do not have sufficient permissions to access this page.', 'ayecode-connect' ) );
899
+            }
900 900
             $overrides = apply_filters( 'ayecode-ui-settings', array(), array(), array() );
901 901
 
902
-			?>
902
+            ?>
903 903
             <div class="wrap">
904 904
                 <h1><?php echo esc_attr( $this->name ); ?></h1>
905 905
                 <p><?php echo esc_html( apply_filters( 'ayecode-ui-settings-message', __("Here you can adjust settings if you are having compatibility issues.", 'ayecode-connect' ) ) );?></p>
906 906
                 <form method="post" action="options.php">
907 907
 					<?php
908
-					settings_fields( 'ayecode-ui-settings' );
909
-					do_settings_sections( 'ayecode-ui-settings' );
910
-					?>
908
+                    settings_fields( 'ayecode-ui-settings' );
909
+                    do_settings_sections( 'ayecode-ui-settings' );
910
+                    ?>
911 911
 
912 912
                     <h2><?php esc_html_e( 'BootStrap Version', 'ayecode-connect' ); ?></h2>
913 913
                     <p><?php echo esc_html( 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.", 'ayecode-connect' ) ) );?></p>
914 914
 	                <div class="bsui"><?php
915
-	                if ( ! empty( $overrides ) ) {
916
-		                echo aui()->alert(array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
917
-			                'type'=> 'info',
918
-			                'content'=> esc_attr__("Some options are disabled as your current theme is overriding them.", 'ayecode-connect' )
919
-		                ));
920
-	                }
921
-	                ?>
915
+                    if ( ! empty( $overrides ) ) {
916
+                        echo aui()->alert(array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
917
+                            'type'=> 'info',
918
+                            'content'=> esc_attr__("Some options are disabled as your current theme is overriding them.", 'ayecode-connect' )
919
+                        ));
920
+                    }
921
+                    ?>
922 922
                     </div>
923 923
                     <table class="form-table wpbs-table-version-settings">
924 924
                         <tr valign="top">
@@ -1002,77 +1002,77 @@  discard block
 block discarded – undo
1002 1002
                     </table>
1003 1003
 
1004 1004
 					<?php
1005
-					submit_button();
1006
-					?>
1005
+                    submit_button();
1006
+                    ?>
1007 1007
                 </form>
1008 1008
                 <div id="wpbs-version" data-aui-source="<?php echo esc_attr( $this->get_load_source() ); ?>"><?php echo esc_html( $this->version ); ?></div>
1009 1009
             </div>
1010 1010
 			<?php
1011
-		}
1011
+        }
1012 1012
 
1013 1013
         public function get_load_source(){
1014
-	        $file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) );
1015
-	        $plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) );
1016
-
1017
-	        // Find source plugin/theme of SD
1018
-	        $source = array();
1019
-	        if ( strpos( $file, $plugins_dir ) !== false ) {
1020
-		        $source = explode( "/", plugin_basename( $file ) );
1021
-	        } else if ( function_exists( 'get_theme_root' ) ) {
1022
-		        $themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) );
1023
-
1024
-		        if ( strpos( $file, $themes_dir ) !== false ) {
1025
-			        $source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) );
1026
-		        }
1027
-	        }
1014
+            $file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) );
1015
+            $plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) );
1016
+
1017
+            // Find source plugin/theme of SD
1018
+            $source = array();
1019
+            if ( strpos( $file, $plugins_dir ) !== false ) {
1020
+                $source = explode( "/", plugin_basename( $file ) );
1021
+            } else if ( function_exists( 'get_theme_root' ) ) {
1022
+                $themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) );
1023
+
1024
+                if ( strpos( $file, $themes_dir ) !== false ) {
1025
+                    $source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) );
1026
+                }
1027
+            }
1028 1028
 
1029 1029
             return isset($source[0]) ? esc_attr($source[0]) : '';
1030 1030
         }
1031 1031
 
1032
-		public function customizer_settings($wp_customize){
1033
-			$wp_customize->add_section('aui_settings', array(
1034
-				'title'    => __('AyeCode UI', 'ayecode-connect' ),
1035
-				'priority' => 120,
1036
-			));
1037
-
1038
-			//  =============================
1039
-			//  = Color Picker              =
1040
-			//  =============================
1041
-			$wp_customize->add_setting('aui_options[color_primary]', array(
1042
-				'default'           => AUI_PRIMARY_COLOR,
1043
-				'sanitize_callback' => 'sanitize_hex_color',
1044
-				'capability'        => 'edit_theme_options',
1045
-				'type'              => 'option',
1046
-				'transport'         => 'refresh',
1047
-			));
1048
-			$wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_primary', array(
1049
-				'label'    => __('Primary Color', 'ayecode-connect' ),
1050
-				'section'  => 'aui_settings',
1051
-				'settings' => 'aui_options[color_primary]',
1052
-			)));
1053
-
1054
-			$wp_customize->add_setting('aui_options[color_secondary]', array(
1055
-				'default'           => '#6c757d',
1056
-				'sanitize_callback' => 'sanitize_hex_color',
1057
-				'capability'        => 'edit_theme_options',
1058
-				'type'              => 'option',
1059
-				'transport'         => 'refresh',
1060
-			));
1061
-			$wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_secondary', array(
1062
-				'label'    => __('Secondary Color', 'ayecode-connect' ),
1063
-				'section'  => 'aui_settings',
1064
-				'settings' => 'aui_options[color_secondary]',
1065
-			)));
1066
-		}
1067
-
1068
-		/**
1069
-		 * CSS to help with conflict issues with other plugins and themes using bootstrap v3.
1070
-		 *
1071
-		 * @return mixed
1072
-		 */
1073
-		public static function bs3_compat_css() {
1074
-			ob_start();
1075
-			?>
1032
+        public function customizer_settings($wp_customize){
1033
+            $wp_customize->add_section('aui_settings', array(
1034
+                'title'    => __('AyeCode UI', 'ayecode-connect' ),
1035
+                'priority' => 120,
1036
+            ));
1037
+
1038
+            //  =============================
1039
+            //  = Color Picker              =
1040
+            //  =============================
1041
+            $wp_customize->add_setting('aui_options[color_primary]', array(
1042
+                'default'           => AUI_PRIMARY_COLOR,
1043
+                'sanitize_callback' => 'sanitize_hex_color',
1044
+                'capability'        => 'edit_theme_options',
1045
+                'type'              => 'option',
1046
+                'transport'         => 'refresh',
1047
+            ));
1048
+            $wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_primary', array(
1049
+                'label'    => __('Primary Color', 'ayecode-connect' ),
1050
+                'section'  => 'aui_settings',
1051
+                'settings' => 'aui_options[color_primary]',
1052
+            )));
1053
+
1054
+            $wp_customize->add_setting('aui_options[color_secondary]', array(
1055
+                'default'           => '#6c757d',
1056
+                'sanitize_callback' => 'sanitize_hex_color',
1057
+                'capability'        => 'edit_theme_options',
1058
+                'type'              => 'option',
1059
+                'transport'         => 'refresh',
1060
+            ));
1061
+            $wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_secondary', array(
1062
+                'label'    => __('Secondary Color', 'ayecode-connect' ),
1063
+                'section'  => 'aui_settings',
1064
+                'settings' => 'aui_options[color_secondary]',
1065
+            )));
1066
+        }
1067
+
1068
+        /**
1069
+         * CSS to help with conflict issues with other plugins and themes using bootstrap v3.
1070
+         *
1071
+         * @return mixed
1072
+         */
1073
+        public static function bs3_compat_css() {
1074
+            ob_start();
1075
+            ?>
1076 1076
             <style>
1077 1077
                 /* Bootstrap 3 compatibility */
1078 1078
                 body.modal-open .modal-backdrop.show:not(.in) {opacity:0.5;}
@@ -1101,368 +1101,368 @@  discard block
 block discarded – undo
1101 1101
                 <?php } ?>
1102 1102
             </style>
1103 1103
 			<?php
1104
-			return str_replace( array(
1105
-				'<style>',
1106
-				'</style>'
1107
-			), '', self::minify_css( ob_get_clean() ) );
1108
-		}
1104
+            return str_replace( array(
1105
+                '<style>',
1106
+                '</style>'
1107
+            ), '', self::minify_css( ob_get_clean() ) );
1108
+        }
1109 1109
 
1110
-		public static function custom_css( $compatibility = true, $is_fse = false ) {
1111
-			global $aui_bs5;
1110
+        public static function custom_css( $compatibility = true, $is_fse = false ) {
1111
+            global $aui_bs5;
1112 1112
 
1113
-			$colors = array();
1113
+            $colors = array();
1114 1114
 
1115
-			if ( defined( 'BLOCKSTRAP_VERSION' ) ) {
1116
-				$setting = wp_get_global_settings();
1115
+            if ( defined( 'BLOCKSTRAP_VERSION' ) ) {
1116
+                $setting = wp_get_global_settings();
1117 1117
 
1118
-				if ( ! empty( $setting['color']['palette']['theme'] ) ) {
1119
-					foreach ( $setting['color']['palette']['theme'] as $color ) {
1120
-						$colors[$color['slug']] = esc_attr( $color['color'] );
1121
-					}
1122
-				}
1118
+                if ( ! empty( $setting['color']['palette']['theme'] ) ) {
1119
+                    foreach ( $setting['color']['palette']['theme'] as $color ) {
1120
+                        $colors[$color['slug']] = esc_attr( $color['color'] );
1121
+                    }
1122
+                }
1123 1123
 
1124
-				if ( ! empty( $setting['color']['palette']['custom'] ) ) {
1125
-					foreach ( $setting['color']['palette']['custom'] as $color ) {
1126
-						$colors[$color['slug']] = esc_attr( $color['color'] );
1127
-					}
1128
-				}
1129
-			} else {
1130
-				$settings = get_option( 'aui_options' );
1131
-
1132
-				$colors = array(
1133
-					'primary'   => ! empty( $settings['color_primary'] ) ? $settings['color_primary'] : AUI_PRIMARY_COLOR,
1134
-					'secondary' => ! empty( $settings['color_secondary'] ) ? $settings['color_secondary'] : AUI_SECONDARY_COLOR
1135
-				);
1136
-			}
1137
-
1138
-			ob_start();
1139
-			?><style><?php
1140
-			// BS v3 compat
1141
-			if( self::is_bs3_compat() ){
1142
-				echo self::bs3_compat_css(); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1143
-			}
1144
-
1145
-			//$is_fse = false;
1146
-			//if ( is_admin() && ( !empty($_REQUEST['postType']) || self::is_block_editor() ) && ( defined( 'BLOCKSTRAP_VERSION' ) || defined( 'AUI_FSE' ) )  ) {
1147
-				//$is_fse = true;
1148
-			//}
1149
-
1150
-			$custom_front = ! is_admin() ? true : apply_filters('ayecode_ui_custom_front', false );
1151
-			$custom_admin = $is_fse || self::is_preview() ? true : apply_filters('ayecode_ui_custom_admin', false );
1124
+                if ( ! empty( $setting['color']['palette']['custom'] ) ) {
1125
+                    foreach ( $setting['color']['palette']['custom'] as $color ) {
1126
+                        $colors[$color['slug']] = esc_attr( $color['color'] );
1127
+                    }
1128
+                }
1129
+            } else {
1130
+                $settings = get_option( 'aui_options' );
1131
+
1132
+                $colors = array(
1133
+                    'primary'   => ! empty( $settings['color_primary'] ) ? $settings['color_primary'] : AUI_PRIMARY_COLOR,
1134
+                    'secondary' => ! empty( $settings['color_secondary'] ) ? $settings['color_secondary'] : AUI_SECONDARY_COLOR
1135
+                );
1136
+            }
1137
+
1138
+            ob_start();
1139
+            ?><style><?php
1140
+            // BS v3 compat
1141
+            if( self::is_bs3_compat() ){
1142
+                echo self::bs3_compat_css(); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1143
+            }
1144
+
1145
+            //$is_fse = false;
1146
+            //if ( is_admin() && ( !empty($_REQUEST['postType']) || self::is_block_editor() ) && ( defined( 'BLOCKSTRAP_VERSION' ) || defined( 'AUI_FSE' ) )  ) {
1147
+                //$is_fse = true;
1148
+            //}
1149
+
1150
+            $custom_front = ! is_admin() ? true : apply_filters('ayecode_ui_custom_front', false );
1151
+            $custom_admin = $is_fse || self::is_preview() ? true : apply_filters('ayecode_ui_custom_admin', false );
1152 1152
             $bs_custom_css = apply_filters( 'ayecode_ui_bs_custom_css', $custom_admin || $custom_front );
1153
-			//$bs_custom_css = true; // Force true to fix any color issue.
1153
+            //$bs_custom_css = true; // Force true to fix any color issue.
1154 1154
 
1155
-			$colors_css = '';
1156
-			if ( ! empty( $colors ) && $bs_custom_css ) {
1157
-				$d_colors = self::get_colors(true);
1155
+            $colors_css = '';
1156
+            if ( ! empty( $colors ) && $bs_custom_css ) {
1157
+                $d_colors = self::get_colors(true);
1158 1158
 
1159
-				foreach ( $colors as $key => $color ) {
1160
-					if ( ( empty( $d_colors[$key]) || $d_colors[$key] != $color) || $is_fse ) {
1161
-						$var = $is_fse ? "var(--wp--preset--color--$key)" : $color;
1162
-						$compat = $is_fse ? '.editor-styles-wrapper' : $compatibility;
1159
+                foreach ( $colors as $key => $color ) {
1160
+                    if ( ( empty( $d_colors[$key]) || $d_colors[$key] != $color) || $is_fse ) {
1161
+                        $var = $is_fse ? "var(--wp--preset--color--$key)" : $color;
1162
+                        $compat = $is_fse ? '.editor-styles-wrapper' : $compatibility;
1163 1163
 
1164
-						$colors_css .= $aui_bs5 ? self::css_overwrite_bs5( $key,$var, $compat, $color ) : self::css_overwrite( $key, $var, $compat, $color );
1165
-					}
1166
-				}
1167
-			}
1164
+                        $colors_css .= $aui_bs5 ? self::css_overwrite_bs5( $key,$var, $compat, $color ) : self::css_overwrite( $key, $var, $compat, $color );
1165
+                    }
1166
+                }
1167
+            }
1168 1168
 
1169
-			if ( $colors_css ) {
1170
-				echo $colors_css; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1171
-			}
1169
+            if ( $colors_css ) {
1170
+                echo $colors_css; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1171
+            }
1172 1172
 
1173
-			// Set admin bar z-index lower when modal is open.
1174
-			echo ' body.modal-open #wpadminbar{z-index:999}.embed-responsive-16by9 .fluid-width-video-wrapper{padding:0 !important;position:initial}';
1173
+            // Set admin bar z-index lower when modal is open.
1174
+            echo ' body.modal-open #wpadminbar{z-index:999}.embed-responsive-16by9 .fluid-width-video-wrapper{padding:0 !important;position:initial}';
1175 1175
 
1176
-			if ( is_admin() ) {
1177
-				echo ' body.modal-open #adminmenuwrap{z-index:999} body.modal-open #wpadminbar{z-index:1025}';
1178
-			}
1176
+            if ( is_admin() ) {
1177
+                echo ' body.modal-open #adminmenuwrap{z-index:999} body.modal-open #wpadminbar{z-index:1025}';
1178
+            }
1179 1179
 
1180
-			$custom_css = '';
1180
+            $custom_css = '';
1181 1181
 
1182
-			if ( $aui_bs5 && defined( 'BLOCKSTRAP_VERSION' ) && $bs_custom_css ) {
1183
-				$css = '';
1184
-				$theme_settings = wp_get_global_styles();
1182
+            if ( $aui_bs5 && defined( 'BLOCKSTRAP_VERSION' ) && $bs_custom_css ) {
1183
+                $css = '';
1184
+                $theme_settings = wp_get_global_styles();
1185 1185
 
1186
-				// Font face
1187
-				if( !empty( $theme_settings['typography']['fontFamily'] ) ){
1188
-					$t_fontface = str_replace( array('var:preset|','font-family|'), array('--wp--preset--','font-family--'), $theme_settings['typography']['fontFamily']  ); //var(--wp--preset--font-family--poppins)
1189
-					$css .= '--bs-body-font-family: ' . esc_attr($t_fontface) . ';';
1190
-				}
1186
+                // Font face
1187
+                if( !empty( $theme_settings['typography']['fontFamily'] ) ){
1188
+                    $t_fontface = str_replace( array('var:preset|','font-family|'), array('--wp--preset--','font-family--'), $theme_settings['typography']['fontFamily']  ); //var(--wp--preset--font-family--poppins)
1189
+                    $css .= '--bs-body-font-family: ' . esc_attr($t_fontface) . ';';
1190
+                }
1191 1191
 
1192
-				// font size
1193
-				if( !empty( $theme_settings['typography']['fontSize'] ) ){
1194
-					$css .= '--bs-body-font-size: ' . esc_attr( $theme_settings['typography']['fontSize'] ) . ' ;';
1195
-				}
1192
+                // font size
1193
+                if( !empty( $theme_settings['typography']['fontSize'] ) ){
1194
+                    $css .= '--bs-body-font-size: ' . esc_attr( $theme_settings['typography']['fontSize'] ) . ' ;';
1195
+                }
1196 1196
 
1197
-				// line height
1198
-				 if( !empty( $theme_settings['typography']['lineHeight'] ) ){
1199
-					$css .= '--bs-body-line-height: ' . esc_attr( $theme_settings['typography']['lineHeight'] ) . ';';
1200
-				}
1197
+                // line height
1198
+                    if( !empty( $theme_settings['typography']['lineHeight'] ) ){
1199
+                    $css .= '--bs-body-line-height: ' . esc_attr( $theme_settings['typography']['lineHeight'] ) . ';';
1200
+                }
1201 1201
 
1202 1202
 
1203
-				   // font weight
1204
-				 if( !empty( $theme_settings['typography']['fontWeight'] ) ){
1205
-					$css .= '--bs-body-font-weight: ' . esc_attr( $theme_settings['typography']['fontWeight'] ) . ';';
1206
-				}
1203
+                    // font weight
1204
+                    if( !empty( $theme_settings['typography']['fontWeight'] ) ){
1205
+                    $css .= '--bs-body-font-weight: ' . esc_attr( $theme_settings['typography']['fontWeight'] ) . ';';
1206
+                }
1207 1207
 
1208
-				// Background
1209
-				 if( !empty( $theme_settings['color']['background'] ) ){
1210
-					$css .= '--bs-body-bg: ' . esc_attr( $theme_settings['color']['background'] ) . ';';
1211
-				}
1208
+                // Background
1209
+                    if( !empty( $theme_settings['color']['background'] ) ){
1210
+                    $css .= '--bs-body-bg: ' . esc_attr( $theme_settings['color']['background'] ) . ';';
1211
+                }
1212 1212
 
1213
-				 // Background Gradient
1214
-				 if( !empty( $theme_settings['color']['gradient'] ) ){
1215
-					$css .= 'background: ' . esc_attr( $theme_settings['color']['gradient'] ) . ';';
1216
-				}
1213
+                    // Background Gradient
1214
+                    if( !empty( $theme_settings['color']['gradient'] ) ){
1215
+                    $css .= 'background: ' . esc_attr( $theme_settings['color']['gradient'] ) . ';';
1216
+                }
1217 1217
 
1218
-				   // Background Gradient
1219
-				 if( !empty( $theme_settings['color']['gradient'] ) ){
1220
-					$css .= 'background: ' . esc_attr( $theme_settings['color']['gradient'] ) . ';';
1221
-				}
1218
+                    // Background Gradient
1219
+                    if( !empty( $theme_settings['color']['gradient'] ) ){
1220
+                    $css .= 'background: ' . esc_attr( $theme_settings['color']['gradient'] ) . ';';
1221
+                }
1222 1222
 
1223
-				// text color
1224
-				if( !empty( $theme_settings['color']['text'] ) ){
1225
-					$css .= '--bs-body-color: ' . esc_attr( $theme_settings['color']['text'] ) . ';';
1226
-				}
1223
+                // text color
1224
+                if( !empty( $theme_settings['color']['text'] ) ){
1225
+                    $css .= '--bs-body-color: ' . esc_attr( $theme_settings['color']['text'] ) . ';';
1226
+                }
1227 1227
 
1228 1228
 
1229
-				// link colors
1230
-				if( !empty( $theme_settings['elements']['link']['color']['text'] ) ){
1231
-					$css .= '--bs-link-color: ' . esc_attr( $theme_settings['elements']['link']['color']['text'] ) . ';';
1232
-				}
1233
-				if( !empty( $theme_settings['elements']['link'][':hover']['color']['text'] ) ){
1234
-					$css .= '--bs-link-hover-color: ' . esc_attr( $theme_settings['elements']['link'][':hover']['color']['text'] ) . ';';
1235
-				}
1229
+                // link colors
1230
+                if( !empty( $theme_settings['elements']['link']['color']['text'] ) ){
1231
+                    $css .= '--bs-link-color: ' . esc_attr( $theme_settings['elements']['link']['color']['text'] ) . ';';
1232
+                }
1233
+                if( !empty( $theme_settings['elements']['link'][':hover']['color']['text'] ) ){
1234
+                    $css .= '--bs-link-hover-color: ' . esc_attr( $theme_settings['elements']['link'][':hover']['color']['text'] ) . ';';
1235
+                }
1236 1236
 
1237
-				if($css){
1238
-					$custom_css .= $is_fse ? 'body.editor-styles-wrapper{' . esc_attr( $css ) . '}' : 'body{' . esc_attr( $css ) . '}';
1239
-				}
1237
+                if($css){
1238
+                    $custom_css .= $is_fse ? 'body.editor-styles-wrapper{' . esc_attr( $css ) . '}' : 'body{' . esc_attr( $css ) . '}';
1239
+                }
1240 1240
 
1241
-				$bep = $is_fse ? 'body.editor-styles-wrapper ' : '';
1241
+                $bep = $is_fse ? 'body.editor-styles-wrapper ' : '';
1242 1242
 
1243
-				// Headings
1244
-				$headings_css = '';
1245
-				if( !empty( $theme_settings['elements']['heading']['color']['text'] ) ){
1246
-					$headings_css .= "color: " . esc_attr( $theme_settings['elements']['heading']['color']['text'] ) . ";";
1247
-				}
1243
+                // Headings
1244
+                $headings_css = '';
1245
+                if( !empty( $theme_settings['elements']['heading']['color']['text'] ) ){
1246
+                    $headings_css .= "color: " . esc_attr( $theme_settings['elements']['heading']['color']['text'] ) . ";";
1247
+                }
1248 1248
 
1249
-				// heading background
1250
-				if( !empty( $theme_settings['elements']['heading']['color']['background'] ) ){
1251
-					$headings_css .= 'background: ' . esc_attr( $theme_settings['elements']['heading']['color']['background'] ) . ';';
1252
-				}
1249
+                // heading background
1250
+                if( !empty( $theme_settings['elements']['heading']['color']['background'] ) ){
1251
+                    $headings_css .= 'background: ' . esc_attr( $theme_settings['elements']['heading']['color']['background'] ) . ';';
1252
+                }
1253 1253
 
1254
-				 // heading font family
1255
-				if( !empty( $theme_settings['elements']['heading']['typography']['fontFamily'] ) ){
1256
-					$headings_css .= 'font-family: ' . esc_attr( $theme_settings['elements']['heading']['typography']['fontFamily']  ) . ';';
1257
-				}
1254
+                    // heading font family
1255
+                if( !empty( $theme_settings['elements']['heading']['typography']['fontFamily'] ) ){
1256
+                    $headings_css .= 'font-family: ' . esc_attr( $theme_settings['elements']['heading']['typography']['fontFamily']  ) . ';';
1257
+                }
1258 1258
 
1259
-				if( $headings_css ){
1260
-					$custom_css .= "$bep h1,$bep h2,$bep h3, $bep h4,$bep h5,$bep h6{ " . esc_attr( $headings_css ) . "}";
1261
-				}
1259
+                if( $headings_css ){
1260
+                    $custom_css .= "$bep h1,$bep h2,$bep h3, $bep h4,$bep h5,$bep h6{ " . esc_attr( $headings_css ) . "}";
1261
+                }
1262 1262
 
1263
-				$hs = array('h1','h2','h3','h4','h5','h6');
1263
+                $hs = array('h1','h2','h3','h4','h5','h6');
1264 1264
 
1265
-				foreach($hs as $hn){
1266
-					$h_css = '';
1267
-					 if( !empty( $theme_settings['elements'][$hn]['color']['text'] ) ){
1268
-						$h_css .= 'color: ' . esc_attr( $theme_settings['elements'][$hn]['color']['text'] ) . ';';
1269
-					 }
1265
+                foreach($hs as $hn){
1266
+                    $h_css = '';
1267
+                        if( !empty( $theme_settings['elements'][$hn]['color']['text'] ) ){
1268
+                        $h_css .= 'color: ' . esc_attr( $theme_settings['elements'][$hn]['color']['text'] ) . ';';
1269
+                        }
1270 1270
 
1271
-					  if( !empty( $theme_settings['elements'][$hn]['typography']['fontSize'] ) ){
1272
-						$h_css .= 'font-size: ' . esc_attr( $theme_settings['elements'][$hn]['typography']['fontSize']  ) . ';';
1273
-					 }
1271
+                        if( !empty( $theme_settings['elements'][$hn]['typography']['fontSize'] ) ){
1272
+                        $h_css .= 'font-size: ' . esc_attr( $theme_settings['elements'][$hn]['typography']['fontSize']  ) . ';';
1273
+                        }
1274 1274
 
1275
-					  if( !empty( $theme_settings['elements'][$hn]['typography']['fontFamily'] ) ){
1276
-						$h_css .= 'font-family: ' . esc_attr( $theme_settings['elements'][$hn]['typography']['fontFamily']  ) . ';';
1277
-					 }
1275
+                        if( !empty( $theme_settings['elements'][$hn]['typography']['fontFamily'] ) ){
1276
+                        $h_css .= 'font-family: ' . esc_attr( $theme_settings['elements'][$hn]['typography']['fontFamily']  ) . ';';
1277
+                        }
1278 1278
 
1279
-					 if($h_css){
1280
-						$custom_css .= esc_attr( $bep  . $hn ) . '{'.esc_attr( $h_css ).'}';
1281
-					 }
1282
-				}
1283
-			}
1279
+                        if($h_css){
1280
+                        $custom_css .= esc_attr( $bep  . $hn ) . '{'.esc_attr( $h_css ).'}';
1281
+                        }
1282
+                }
1283
+            }
1284 1284
 			
1285
-			if ( $custom_css ) {
1286
-				echo $custom_css; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1287
-			}
1288
-
1289
-			// Pagination on Hello Elementor theme.
1290
-			if ( function_exists( 'hello_elementor_setup' ) ) {
1291
-				echo '.aui-nav-links .pagination{justify-content:inherit}';
1292
-			}
1293
-			?></style><?php
1294
-			$custom_css = ob_get_clean();
1295
-
1296
-			/*
1285
+            if ( $custom_css ) {
1286
+                echo $custom_css; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1287
+            }
1288
+
1289
+            // Pagination on Hello Elementor theme.
1290
+            if ( function_exists( 'hello_elementor_setup' ) ) {
1291
+                echo '.aui-nav-links .pagination{justify-content:inherit}';
1292
+            }
1293
+            ?></style><?php
1294
+            $custom_css = ob_get_clean();
1295
+
1296
+            /*
1297 1297
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
1298 1298
 			 */
1299
-			return str_replace( array(
1300
-				'<style>',
1301
-				'</style>'
1302
-			), '', self::minify_css( $custom_css ) );
1303
-		}
1304
-
1305
-		/**
1306
-		 * Check if we should add booststrap 3 compatibility changes.
1307
-		 *
1308
-		 * @return bool
1309
-		 */
1310
-		public static function is_bs3_compat(){
1311
-			return defined('AYECODE_UI_BS3_COMPAT') || defined('SVQ_THEME_VERSION') || defined('FUSION_BUILDER_VERSION');
1312
-		}
1313
-
1314
-		public static function hex_to_rgb( $hex ) {
1315
-			// Remove '#' if present
1316
-			$hex = str_replace( '#', '', $hex );
1317
-
1318
-			// Check if input is RGB
1319
-			if ( strpos( $hex, 'rgba(' ) === 0 || strpos( $hex, 'rgb(' ) === 0 ) {
1320
-				$_rgb = explode( ',', str_replace( array( 'rgba(', 'rgb(', ')' ), '', $hex ) );
1321
-
1322
-				$rgb = ( isset( $_rgb[0] ) ? (int) trim( $_rgb[0] ) : '0' ) . ',';
1323
-				$rgb .= ( isset( $_rgb[1] ) ? (int) trim( $_rgb[1] ) : '0' ) . ',';
1324
-				$rgb .= ( isset( $_rgb[2] ) ? (int) trim( $_rgb[2] ) : '0' );
1325
-
1326
-				return $rgb;
1327
-			}
1328
-
1329
-			// Convert 3-digit hex to 6-digit hex
1330
-			if ( strlen( $hex ) == 3 ) {
1331
-				$hex = str_repeat( substr( $hex, 0, 1 ), 2 ) . str_repeat( substr( $hex, 1, 1 ), 2 ) . str_repeat( substr( $hex, 2, 1 ), 2 );
1332
-			}
1333
-
1334
-			// Convert hex to RGB
1335
-			$r = hexdec( substr( $hex, 0, 2 ) );
1336
-			$g = hexdec( substr( $hex, 2, 2 ) );
1337
-			$b = hexdec( substr( $hex, 4, 2 ) );
1338
-
1339
-			// Return RGB values as an array
1340
-			return $r . ',' . $g . ',' . $b;
1341
-		}
1342
-
1343
-		/**
1344
-		 * Build the CSS to overwrite a bootstrap color variable.
1345
-		 *
1346
-		 * @param $type
1347
-		 * @param $color_code
1348
-		 * @param $compatibility
1349
-		 *
1350
-		 * @return string
1351
-		 */
1352
-		public static function css_overwrite_bs5($type,$color_code,$compatibility, $hex = '' ){
1353
-			global $aui_bs5;
1354
-
1355
-			$is_var = false;
1356
-			$is_custom = strpos($type, 'custom-') !== false ? true : false;
1357
-			if(!$color_code){return '';}
1358
-			if(strpos($color_code, 'var') !== false){
1359
-				//if(!sanitize_hex_color($color_code)){
1360
-				$color_code = esc_attr($color_code);
1361
-				$is_var = true;
1299
+            return str_replace( array(
1300
+                '<style>',
1301
+                '</style>'
1302
+            ), '', self::minify_css( $custom_css ) );
1303
+        }
1304
+
1305
+        /**
1306
+         * Check if we should add booststrap 3 compatibility changes.
1307
+         *
1308
+         * @return bool
1309
+         */
1310
+        public static function is_bs3_compat(){
1311
+            return defined('AYECODE_UI_BS3_COMPAT') || defined('SVQ_THEME_VERSION') || defined('FUSION_BUILDER_VERSION');
1312
+        }
1313
+
1314
+        public static function hex_to_rgb( $hex ) {
1315
+            // Remove '#' if present
1316
+            $hex = str_replace( '#', '', $hex );
1317
+
1318
+            // Check if input is RGB
1319
+            if ( strpos( $hex, 'rgba(' ) === 0 || strpos( $hex, 'rgb(' ) === 0 ) {
1320
+                $_rgb = explode( ',', str_replace( array( 'rgba(', 'rgb(', ')' ), '', $hex ) );
1321
+
1322
+                $rgb = ( isset( $_rgb[0] ) ? (int) trim( $_rgb[0] ) : '0' ) . ',';
1323
+                $rgb .= ( isset( $_rgb[1] ) ? (int) trim( $_rgb[1] ) : '0' ) . ',';
1324
+                $rgb .= ( isset( $_rgb[2] ) ? (int) trim( $_rgb[2] ) : '0' );
1325
+
1326
+                return $rgb;
1327
+            }
1328
+
1329
+            // Convert 3-digit hex to 6-digit hex
1330
+            if ( strlen( $hex ) == 3 ) {
1331
+                $hex = str_repeat( substr( $hex, 0, 1 ), 2 ) . str_repeat( substr( $hex, 1, 1 ), 2 ) . str_repeat( substr( $hex, 2, 1 ), 2 );
1332
+            }
1333
+
1334
+            // Convert hex to RGB
1335
+            $r = hexdec( substr( $hex, 0, 2 ) );
1336
+            $g = hexdec( substr( $hex, 2, 2 ) );
1337
+            $b = hexdec( substr( $hex, 4, 2 ) );
1338
+
1339
+            // Return RGB values as an array
1340
+            return $r . ',' . $g . ',' . $b;
1341
+        }
1342
+
1343
+        /**
1344
+         * Build the CSS to overwrite a bootstrap color variable.
1345
+         *
1346
+         * @param $type
1347
+         * @param $color_code
1348
+         * @param $compatibility
1349
+         *
1350
+         * @return string
1351
+         */
1352
+        public static function css_overwrite_bs5($type,$color_code,$compatibility, $hex = '' ){
1353
+            global $aui_bs5;
1354
+
1355
+            $is_var = false;
1356
+            $is_custom = strpos($type, 'custom-') !== false ? true : false;
1357
+            if(!$color_code){return '';}
1358
+            if(strpos($color_code, 'var') !== false){
1359
+                //if(!sanitize_hex_color($color_code)){
1360
+                $color_code = esc_attr($color_code);
1361
+                $is_var = true;
1362 1362
 //				$color_code = "rgba($color_code, 0.5)";
1363 1363
 //                echo '###1'.$color_code.'###';//exit;
1364
-			}
1364
+            }
1365 1365
 
1366 1366
 //            echo '@@@'.$color_code.'==='.self::hex_to_rgb($color_code);exit;
1367 1367
 
1368
-			if(!$color_code){return '';}
1368
+            if(!$color_code){return '';}
1369 1369
 
1370
-			$rgb = self::hex_to_rgb($hex);
1370
+            $rgb = self::hex_to_rgb($hex);
1371 1371
 
1372
-			if($compatibility===true || $compatibility===1){
1373
-				$compatibility = '.bsui';
1374
-			}elseif(!$compatibility){
1375
-				$compatibility = '';
1376
-			}else{
1377
-				$compatibility = esc_attr($compatibility);
1378
-			}
1372
+            if($compatibility===true || $compatibility===1){
1373
+                $compatibility = '.bsui';
1374
+            }elseif(!$compatibility){
1375
+                $compatibility = '';
1376
+            }else{
1377
+                $compatibility = esc_attr($compatibility);
1378
+            }
1379 1379
 
1380
-			$prefix = $compatibility ? $compatibility . " " : "";
1380
+            $prefix = $compatibility ? $compatibility . " " : "";
1381 1381
 
1382 1382
 
1383 1383
             $output = '';
1384 1384
 
1385 1385
 //            echo '####'.$color_code;exit;
1386 1386
 
1387
-			$type = sanitize_html_class($type);
1387
+            $type = sanitize_html_class($type);
1388
+
1389
+            /**
1390
+             * c = color, b = background color, o = border-color, f = fill
1391
+             */
1392
+            $selectors = array(
1393
+                ".btn-{$type}"                                              => array( 'b', 'o' ),
1394
+                ".btn-{$type}.disabled"                                     => array( 'b', 'o' ),
1395
+                ".btn-{$type}:disabled"                                     => array( 'b', 'o' ),
1396
+                ".btn-outline-{$type}"                                      => array( 'c', 'o' ),
1397
+                ".btn-outline-{$type}:hover"                                => array( 'b', 'o' ),
1398
+                ".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ),
1399
+                ".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ),
1400
+                ".show>.btn-outline-{$type}.dropdown-toggle"                => array( 'b', 'o' ),
1401
+                ".badge-{$type}"                                            => array( 'b' ),
1402
+                ".alert-{$type}"                                            => array( 'b', 'o' ),
1403
+                ".bg-{$type}"                                               => array( 'b', 'f' ),
1404
+                ".btn-link.btn-{$type}"                                     => array( 'c' ),
1405
+                ".text-{$type}"                                     => array( 'c' ),
1406
+            );
1407
+
1408
+            if ( $aui_bs5 ) {
1409
+                unset($selectors[".alert-{$type}" ]);
1410
+            }
1388 1411
 
1389
-			/**
1390
-			 * c = color, b = background color, o = border-color, f = fill
1391
-			 */
1392
-			$selectors = array(
1393
-				".btn-{$type}"                                              => array( 'b', 'o' ),
1394
-				".btn-{$type}.disabled"                                     => array( 'b', 'o' ),
1395
-				".btn-{$type}:disabled"                                     => array( 'b', 'o' ),
1396
-				".btn-outline-{$type}"                                      => array( 'c', 'o' ),
1397
-				".btn-outline-{$type}:hover"                                => array( 'b', 'o' ),
1398
-				".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ),
1399
-				".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ),
1400
-				".show>.btn-outline-{$type}.dropdown-toggle"                => array( 'b', 'o' ),
1401
-				".badge-{$type}"                                            => array( 'b' ),
1402
-				".alert-{$type}"                                            => array( 'b', 'o' ),
1403
-				".bg-{$type}"                                               => array( 'b', 'f' ),
1404
-				".btn-link.btn-{$type}"                                     => array( 'c' ),
1405
-				".text-{$type}"                                     => array( 'c' ),
1406
-			);
1407
-
1408
-			if ( $aui_bs5 ) {
1409
-				unset($selectors[".alert-{$type}" ]);
1410
-			}
1411
-
1412
-			if ( $type == 'primary' ) {
1413
-				$selectors = $selectors + array(
1414
-						'a'                                                                                                    => array( 'c' ),
1415
-						'.btn-link'                                                                                            => array( 'c' ),
1416
-						'.dropdown-item.active'                                                                                => array( 'b' ),
1417
-						'.custom-control-input:checked~.custom-control-label::before'                                          => array(
1418
-							'b',
1419
-							'o'
1420
-						),
1421
-						'.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before'                   => array(
1422
-							'b',
1423
-							'o'
1424
-						),
1425
-						'.nav-pills .nav-link.active'                                                                          => array( 'b' ),
1426
-						'.nav-pills .show>.nav-link'                                                                           => array( 'b' ),
1427
-						'.page-link'                                                                                           => array( 'c' ),
1428
-						'.page-item.active .page-link'                                                                         => array(
1429
-							'b',
1430
-							'o'
1431
-						),
1432
-						'.progress-bar'                                                                                        => array( 'b' ),
1433
-						'.list-group-item.active'                                                                              => array(
1434
-							'b',
1435
-							'o'
1436
-						),
1437
-						'.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ),
1438
-					);
1439
-			}
1412
+            if ( $type == 'primary' ) {
1413
+                $selectors = $selectors + array(
1414
+                        'a'                                                                                                    => array( 'c' ),
1415
+                        '.btn-link'                                                                                            => array( 'c' ),
1416
+                        '.dropdown-item.active'                                                                                => array( 'b' ),
1417
+                        '.custom-control-input:checked~.custom-control-label::before'                                          => array(
1418
+                            'b',
1419
+                            'o'
1420
+                        ),
1421
+                        '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before'                   => array(
1422
+                            'b',
1423
+                            'o'
1424
+                        ),
1425
+                        '.nav-pills .nav-link.active'                                                                          => array( 'b' ),
1426
+                        '.nav-pills .show>.nav-link'                                                                           => array( 'b' ),
1427
+                        '.page-link'                                                                                           => array( 'c' ),
1428
+                        '.page-item.active .page-link'                                                                         => array(
1429
+                            'b',
1430
+                            'o'
1431
+                        ),
1432
+                        '.progress-bar'                                                                                        => array( 'b' ),
1433
+                        '.list-group-item.active'                                                                              => array(
1434
+                            'b',
1435
+                            'o'
1436
+                        ),
1437
+                        '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ),
1438
+                    );
1439
+            }
1440 1440
 
1441 1441
 
1442 1442
 
1443 1443
             // link
1444
-			if ( $type === 'primary' ) {
1445
-				$output .= 'html body {--bs-link-hover-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .75); --bs-link-color: var(--bs-'.esc_attr($type).'); }';
1446
-				$output .= $prefix . ' .breadcrumb{--bs-breadcrumb-item-active-color: '.esc_attr($color_code).';  }';
1447
-				$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).'; }';
1444
+            if ( $type === 'primary' ) {
1445
+                $output .= 'html body {--bs-link-hover-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .75); --bs-link-color: var(--bs-'.esc_attr($type).'); }';
1446
+                $output .= $prefix . ' .breadcrumb{--bs-breadcrumb-item-active-color: '.esc_attr($color_code).';  }';
1447
+                $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).'; }';
1448 1448
 
1449
-				$output .= $prefix . ' a{color: var(--bs-'.esc_attr($type).');}';
1450
-				$output .= $prefix . ' .text-primary{color: var(--bs-'.esc_attr($type).') !important;}';
1449
+                $output .= $prefix . ' a{color: var(--bs-'.esc_attr($type).');}';
1450
+                $output .= $prefix . ' .text-primary{color: var(--bs-'.esc_attr($type).') !important;}';
1451 1451
 
1452 1452
                 // dropdown
1453
-				$output .= $prefix . ' .dropdown-menu{--bs-dropdown-link-hover-color: var(--bs-'.esc_attr($type).'); --bs-dropdown-link-active-color: var(--bs-'.esc_attr($type).');}';
1453
+                $output .= $prefix . ' .dropdown-menu{--bs-dropdown-link-hover-color: var(--bs-'.esc_attr($type).'); --bs-dropdown-link-active-color: var(--bs-'.esc_attr($type).');}';
1454 1454
 
1455 1455
                 // pagination
1456
-				$output .= $prefix . ' .pagination{--bs-pagination-hover-color: var(--bs-'.esc_attr($type).'); --bs-pagination-active-bg: var(--bs-'.esc_attr($type).');}';
1456
+                $output .= $prefix . ' .pagination{--bs-pagination-hover-color: var(--bs-'.esc_attr($type).'); --bs-pagination-active-bg: var(--bs-'.esc_attr($type).');}';
1457 1457
 
1458
-			}
1458
+            }
1459 1459
 
1460
-			$output .= $prefix . ' .link-'.esc_attr($type).' {color: var(--bs-'.esc_attr($type).'-rgb) !important;}';
1461
-			$output .= $prefix . ' .link-'.esc_attr($type).':hover {color: rgba(var(--bs-'.esc_attr($type).'-rgb), .8) !important;}';
1460
+            $output .= $prefix . ' .link-'.esc_attr($type).' {color: var(--bs-'.esc_attr($type).'-rgb) !important;}';
1461
+            $output .= $prefix . ' .link-'.esc_attr($type).':hover {color: rgba(var(--bs-'.esc_attr($type).'-rgb), .8) !important;}';
1462 1462
 
1463
-			//  buttons
1464
-			$output .= $prefix . ' .btn-'.esc_attr($type).'{';
1465
-			$output .= ' 
1463
+            //  buttons
1464
+            $output .= $prefix . ' .btn-'.esc_attr($type).'{';
1465
+            $output .= ' 
1466 1466
             --bs-btn-bg: '.esc_attr($color_code).';
1467 1467
             --bs-btn-border-color: '.esc_attr($color_code).';
1468 1468
             --bs-btn-hover-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .9);
@@ -1480,917 +1480,917 @@  discard block
 block discarded – undo
1480 1480
 //			--bs-btn-active-color: #fff;
1481 1481
 //			--bs-btn-disabled-color: #fff;
1482 1482
 //            ';
1483
-			$output .= '}';
1483
+            $output .= '}';
1484
+
1485
+            //  buttons outline
1486
+            $output .= $prefix . ' .btn-outline-'.esc_attr($type).'{';
1487
+            $output .= ' 
1488
+			--bs-btn-color: '.esc_attr($color_code).';
1489
+            --bs-btn-border-color: '.esc_attr($color_code).';
1490
+            --bs-btn-hover-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .9);
1491
+            --bs-btn-hover-border-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .9);
1492
+            --bs-btn-focus-shadow-rgb: --bs-'.esc_attr($type).'-rgb;
1493
+            --bs-btn-active-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .9);
1494
+            --bs-btn-active-border-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .9);
1495
+            --bs-btn-active-shadow: unset;
1496
+            --bs-btn-disabled-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .5);
1497
+            --bs-btn-disabled-border-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .1);
1498
+            ';
1499
+//			$output .= '
1500
+//		    --bs-btn-color: #fff;
1501
+//			--bs-btn-hover-color: #fff;
1502
+//			--bs-btn-active-color: #fff;
1503
+//			--bs-btn-disabled-color: #fff;
1504
+//            ';
1505
+            $output .= '}';
1506
+
1507
+
1508
+            // button hover
1509
+            $output .= $prefix . ' .btn-'.esc_attr($type).':hover{';
1510
+            $output .= ' 
1511
+            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);
1512
+            }
1513
+            ';
1514
+
1515
+
1516
+            if ( $aui_bs5 ) {
1517
+//				$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).'; }';
1518
+                $output .= 'html body {--bs-'.esc_attr($type).': '.esc_attr($color_code).'; }';
1519
+                $output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }';
1520
+            }
1521
+
1522
+
1523
+            if ( $is_custom ) {
1524
+
1525
+//				echo '###'.$type;exit;
1526
+
1527
+                // build rules into each type
1528
+                foreach($selectors as $selector => $types){
1529
+                    $selector = $compatibility ? $compatibility . " ".$selector : $selector;
1530
+                    $types = array_combine($types,$types);
1531
+                    if(isset($types['c'])){$color[] = $selector;}
1532
+                    if(isset($types['b'])){$background[] = $selector;}
1533
+                    if(isset($types['o'])){$border[] = $selector;}
1534
+                    if(isset($types['f'])){$fill[] = $selector;}
1535
+                }
1536
+
1537
+//				// build rules into each type
1538
+//				foreach($important_selectors as $selector => $types){
1539
+//					$selector = $compatibility ? $compatibility . " ".$selector : $selector;
1540
+//					$types = array_combine($types,$types);
1541
+//					if(isset($types['c'])){$color_i[] = $selector;}
1542
+//					if(isset($types['b'])){$background_i[] = $selector;}
1543
+//					if(isset($types['o'])){$border_i[] = $selector;}
1544
+//					if(isset($types['f'])){$fill_i[] = $selector;}
1545
+//				}
1546
+
1547
+                // add any color rules
1548
+                if(!empty($color)){
1549
+                    $output .= implode(",",$color) . "{color: $color_code;} ";
1550
+                }
1551
+                if(!empty($color_i)){
1552
+                    $output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1553
+                }
1554
+
1555
+                // add any background color rules
1556
+                if(!empty($background)){
1557
+                    $output .= implode(",",$background) . "{background-color: $color_code;} ";
1558
+                }
1559
+                if(!empty($background_i)){
1560
+                    $output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} ";
1561
+//				$output .= implode(",",$background_i) . "{background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;} ";
1562
+                }
1563
+
1564
+                // add any border color rules
1565
+                if(!empty($border)){
1566
+                    $output .= implode(",",$border) . "{border-color: $color_code;} ";
1567
+                }
1568
+                if(!empty($border_i)){
1569
+                    $output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1570
+                }
1571
+
1572
+                // add any fill color rules
1573
+                if(!empty($fill)){
1574
+                    $output .= implode(",",$fill) . "{fill: $color_code;} ";
1575
+                }
1576
+                if(!empty($fill_i)){
1577
+                    $output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1578
+                }
1579
+
1580
+            }
1581
+
1582
+
1583
+
1584
+
1585
+            $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;' : '';
1586
+            // darken
1587
+            $darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075");
1588
+            $darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10");
1589
+            $darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125");
1590
+            $darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4");
1591
+
1592
+            // lighten
1593
+            $lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25");
1594
+
1595
+            // opacity see https://css-tricks.com/8-digit-hex-codes/
1596
+            $op_25 = $color_code."40"; // 25% opacity
1597
+
1598
+
1599
+            // button states
1600
+            $output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : '';
1601
+            $output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1602
+//			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: #000;    border-color: #000;} ";
1603
+            $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;} ";
1604
+            $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.";} ";
1605
+            $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;} ";
1606
+            $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-{$type}:not(:disabled):not(.disabled):focus {box-shadow: 0 0.25rem 0.25rem 0.125rem rgba(var(--bs-{$type}-rgb), 0.1), 0 0.375rem 0.75rem -0.125rem rgba(var(--bs-{$type}-rgb), 0.4);} ";
1607
+
1608
+            // text
1609
+//			$output .= $prefix .".xxx, .text-{$type} {color: var(--bs-".esc_attr($type).");} ";
1610
+
1611
+
1612
+//			if ( $type == 'primary' ) {
1613
+//				// dropdown's
1614
+//				$output .= $prefix . " .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
1615
+//
1616
+//				// input states
1617
+//				$output .= $prefix . " .form-control:focus{border-color: " . $lighten_25 . ";box-shadow: 0 0 0 0.2rem $op_25;} ";
1618
+//
1619
+//				// page link
1620
+//				$output .= $prefix . " .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1621
+//			}
1622
+
1623
+            // alerts
1624
+            if ( $aui_bs5 ) {
1625
+//				$output .= $is_var ? '' : $prefix ." .alert-{$type} {background-color: ".$color_code."20;    border-color: ".$color_code."30;color:$darker_40} ";
1626
+                $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;} ";
1627
+            }
1628
+
1629
+            return $output;
1630
+        }
1631
+
1632
+        /**
1633
+         * Build the CSS to overwrite a bootstrap color variable.
1634
+         *
1635
+         * @param $type
1636
+         * @param $color_code
1637
+         * @param $compatibility
1638
+         *
1639
+         * @return string
1640
+         */
1641
+        public static function css_overwrite($type,$color_code,$compatibility, $hex = '' ){
1642
+            global $aui_bs5;
1643
+
1644
+            $is_var = false;
1645
+            if(!$color_code){return '';}
1646
+            if(strpos($color_code, 'var') !== false){
1647
+                //if(!sanitize_hex_color($color_code)){
1648
+                $color_code = esc_attr($color_code);
1649
+                $is_var = true;
1650
+//				$color_code = "rgba($color_code, 0.5)";
1651
+//                echo '###1'.$color_code.'###';//exit;
1652
+            }
1653
+
1654
+//            echo '@@@'.$color_code.'==='.self::hex_to_rgb($color_code);exit;
1655
+
1656
+            if(!$color_code){return '';}
1657
+
1658
+            $rgb = self::hex_to_rgb($hex);
1659
+
1660
+            if($compatibility===true || $compatibility===1){
1661
+                $compatibility = '.bsui';
1662
+            }elseif(!$compatibility){
1663
+                $compatibility = '';
1664
+            }else{
1665
+                $compatibility = esc_attr($compatibility);
1666
+            }
1667
+
1668
+
1669
+
1670
+//            echo '####'.$color_code;exit;
1671
+
1672
+            $type = sanitize_html_class($type);
1673
+
1674
+            /**
1675
+             * c = color, b = background color, o = border-color, f = fill
1676
+             */
1677
+            $selectors = array(
1678
+                ".btn-{$type}"                                              => array( 'b', 'o' ),
1679
+                ".btn-{$type}.disabled"                                     => array( 'b', 'o' ),
1680
+                ".btn-{$type}:disabled"                                     => array( 'b', 'o' ),
1681
+                ".btn-outline-{$type}"                                      => array( 'c', 'o' ),
1682
+                ".btn-outline-{$type}:hover"                                => array( 'b', 'o' ),
1683
+                ".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ),
1684
+                ".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ),
1685
+                ".show>.btn-outline-{$type}.dropdown-toggle"                => array( 'b', 'o' ),
1686
+                ".badge-{$type}"                                            => array( 'b' ),
1687
+                ".alert-{$type}"                                            => array( 'b', 'o' ),
1688
+                ".bg-{$type}"                                               => array( 'b', 'f' ),
1689
+                ".btn-link.btn-{$type}"                                     => array( 'c' ),
1690
+            );
1691
+
1692
+            if ( $aui_bs5 ) {
1693
+                unset($selectors[".alert-{$type}" ]);
1694
+            }
1695
+
1696
+            if ( $type == 'primary' ) {
1697
+                $selectors = $selectors + array(
1698
+                        'a'                                                                                                    => array( 'c' ),
1699
+                        '.btn-link'                                                                                            => array( 'c' ),
1700
+                        '.dropdown-item.active'                                                                                => array( 'b' ),
1701
+                        '.custom-control-input:checked~.custom-control-label::before'                                          => array(
1702
+                            'b',
1703
+                            'o'
1704
+                        ),
1705
+                        '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before'                   => array(
1706
+                            'b',
1707
+                            'o'
1708
+                        ),
1709
+                        '.nav-pills .nav-link.active'                                                                          => array( 'b' ),
1710
+                        '.nav-pills .show>.nav-link'                                                                           => array( 'b' ),
1711
+                        '.page-link'                                                                                           => array( 'c' ),
1712
+                        '.page-item.active .page-link'                                                                         => array(
1713
+                            'b',
1714
+                            'o'
1715
+                        ),
1716
+                        '.progress-bar'                                                                                        => array( 'b' ),
1717
+                        '.list-group-item.active'                                                                              => array(
1718
+                            'b',
1719
+                            'o'
1720
+                        ),
1721
+                        '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ),
1722
+//				    '.custom-range::-webkit-slider-thumb' => array('b'), // these break the inline rules...
1723
+//				    '.custom-range::-moz-range-thumb' => array('b'),
1724
+//				    '.custom-range::-ms-thumb' => array('b'),
1725
+                    );
1726
+            }
1727
+
1728
+            $important_selectors = array(
1729
+                ".bg-{$type}" => array('b','f'),
1730
+                ".border-{$type}" => array('o'),
1731
+                ".text-{$type}" => array('c'),
1732
+            );
1733
+
1734
+            $color = array();
1735
+            $color_i = array();
1736
+            $background = array();
1737
+            $background_i = array();
1738
+            $border = array();
1739
+            $border_i = array();
1740
+            $fill = array();
1741
+            $fill_i = array();
1742
+
1743
+            $output = '';
1744
+
1745
+            if ( $aui_bs5 ) {
1746
+//				$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).'; }';
1747
+                $output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }';
1748
+            }
1749
+
1750
+            // build rules into each type
1751
+            foreach($selectors as $selector => $types){
1752
+                $selector = $compatibility ? $compatibility . " ".$selector : $selector;
1753
+                $types = array_combine($types,$types);
1754
+                if(isset($types['c'])){$color[] = $selector;}
1755
+                if(isset($types['b'])){$background[] = $selector;}
1756
+                if(isset($types['o'])){$border[] = $selector;}
1757
+                if(isset($types['f'])){$fill[] = $selector;}
1758
+            }
1759
+
1760
+            // build rules into each type
1761
+            foreach($important_selectors as $selector => $types){
1762
+                $selector = $compatibility ? $compatibility . " ".$selector : $selector;
1763
+                $types = array_combine($types,$types);
1764
+                if(isset($types['c'])){$color_i[] = $selector;}
1765
+                if(isset($types['b'])){$background_i[] = $selector;}
1766
+                if(isset($types['o'])){$border_i[] = $selector;}
1767
+                if(isset($types['f'])){$fill_i[] = $selector;}
1768
+            }
1769
+
1770
+            // add any color rules
1771
+            if(!empty($color)){
1772
+                $output .= implode(",",$color) . "{color: $color_code;} ";
1773
+            }
1774
+            if(!empty($color_i)){
1775
+                $output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1776
+            }
1777
+
1778
+            // add any background color rules
1779
+            if(!empty($background)){
1780
+                $output .= implode(",",$background) . "{background-color: $color_code;} ";
1781
+            }
1782
+            if(!empty($background_i)){
1783
+                $output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} ";
1784
+//				$output .= implode(",",$background_i) . "{background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;} ";
1785
+            }
1786
+
1787
+            // add any border color rules
1788
+            if(!empty($border)){
1789
+                $output .= implode(",",$border) . "{border-color: $color_code;} ";
1790
+            }
1791
+            if(!empty($border_i)){
1792
+                $output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1793
+            }
1794
+
1795
+            // add any fill color rules
1796
+            if(!empty($fill)){
1797
+                $output .= implode(",",$fill) . "{fill: $color_code;} ";
1798
+            }
1799
+            if(!empty($fill_i)){
1800
+                $output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1801
+            }
1802
+
1803
+
1804
+            $prefix = $compatibility ? $compatibility . " " : "";
1805
+
1806
+            $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;' : '';
1807
+            // darken
1808
+            $darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075");
1809
+            $darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10");
1810
+            $darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125");
1811
+            $darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4");
1812
+
1813
+            // lighten
1814
+            $lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25");
1815
+
1816
+            // opacity see https://css-tricks.com/8-digit-hex-codes/
1817
+            $op_25 = $color_code."40"; // 25% opacity
1818
+
1819
+
1820
+            // button states
1821
+            $output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : '';
1822
+            $output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1823
+//			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: #000;    border-color: #000;} ";
1824
+            $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;} ";
1825
+            $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.";} ";
1826
+            $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;} ";
1827
+
1828
+            if ( $type == 'primary' ) {
1829
+                // dropdown's
1830
+                $output .= $prefix . " .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
1831
+
1832
+                // input states
1833
+                $output .= $prefix . " .form-control:focus{border-color: " . $lighten_25 . ";box-shadow: 0 0 0 0.2rem $op_25;} ";
1834
+
1835
+                // page link
1836
+                $output .= $prefix . " .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1837
+            }
1838
+
1839
+            // alerts
1840
+            if ( $aui_bs5 ) {
1841
+//				$output .= $is_var ? '' : $prefix ." .alert-{$type} {background-color: ".$color_code."20;    border-color: ".$color_code."30;color:$darker_40} ";
1842
+                $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;} ";
1843
+            }
1484 1844
 
1485
-			//  buttons outline
1486
-			$output .= $prefix . ' .btn-outline-'.esc_attr($type).'{';
1487
-			$output .= ' 
1488
-			--bs-btn-color: '.esc_attr($color_code).';
1489
-            --bs-btn-border-color: '.esc_attr($color_code).';
1490
-            --bs-btn-hover-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .9);
1491
-            --bs-btn-hover-border-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .9);
1492
-            --bs-btn-focus-shadow-rgb: --bs-'.esc_attr($type).'-rgb;
1493
-            --bs-btn-active-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .9);
1494
-            --bs-btn-active-border-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .9);
1495
-            --bs-btn-active-shadow: unset;
1496
-            --bs-btn-disabled-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .5);
1497
-            --bs-btn-disabled-border-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .1);
1498
-            ';
1499
-//			$output .= '
1500
-//		    --bs-btn-color: #fff;
1501
-//			--bs-btn-hover-color: #fff;
1502
-//			--bs-btn-active-color: #fff;
1503
-//			--bs-btn-disabled-color: #fff;
1504
-//            ';
1505
-			$output .= '}';
1845
+            return $output;
1846
+        }
1506 1847
 
1848
+        /**
1849
+         *
1850
+         * @deprecated 0.1.76 Use css_overwrite()
1851
+         *
1852
+         * @param $color_code
1853
+         * @param $compatibility
1854
+         * @param $use_variable
1855
+         *
1856
+         * @return string
1857
+         */
1858
+        public static function css_primary($color_code,$compatibility, $use_variable = false){
1507 1859
 
1508
-            // button hover
1509
-			$output .= $prefix . ' .btn-'.esc_attr($type).':hover{';
1510
-			$output .= ' 
1511
-            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);
1860
+            if(!$use_variable){
1861
+                $color_code = sanitize_hex_color($color_code);
1862
+                if(!$color_code){return '';}
1512 1863
             }
1513
-            ';
1514 1864
 
1865
+            /**
1866
+             * c = color, b = background color, o = border-color, f = fill
1867
+             */
1868
+            $selectors = array(
1869
+                'a' => array('c'),
1870
+                '.btn-primary' => array('b','o'),
1871
+                '.btn-primary.disabled' => array('b','o'),
1872
+                '.btn-primary:disabled' => array('b','o'),
1873
+                '.btn-outline-primary' => array('c','o'),
1874
+                '.btn-outline-primary:hover' => array('b','o'),
1875
+                '.btn-outline-primary:not(:disabled):not(.disabled).active' => array('b','o'),
1876
+                '.btn-outline-primary:not(:disabled):not(.disabled):active' => array('b','o'),
1877
+                '.show>.btn-outline-primary.dropdown-toggle' => array('b','o'),
1878
+                '.btn-link' => array('c'),
1879
+                '.dropdown-item.active' => array('b'),
1880
+                '.custom-control-input:checked~.custom-control-label::before' => array('b','o'),
1881
+                '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before' => array('b','o'),
1882
+//				'.custom-range::-webkit-slider-thumb' => array('b'), // these break the inline rules...
1883
+//				'.custom-range::-moz-range-thumb' => array('b'),
1884
+//				'.custom-range::-ms-thumb' => array('b'),
1885
+                '.nav-pills .nav-link.active' => array('b'),
1886
+                '.nav-pills .show>.nav-link' => array('b'),
1887
+                '.page-link' => array('c'),
1888
+                '.page-item.active .page-link' => array('b','o'),
1889
+                '.badge-primary' => array('b'),
1890
+                '.alert-primary' => array('b','o'),
1891
+                '.progress-bar' => array('b'),
1892
+                '.list-group-item.active' => array('b','o'),
1893
+                '.bg-primary' => array('b','f'),
1894
+                '.btn-link.btn-primary' => array('c'),
1895
+                '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array('b'),
1896
+            );
1897
+
1898
+            $important_selectors = array(
1899
+                '.bg-primary' => array('b','f'),
1900
+                '.border-primary' => array('o'),
1901
+                '.text-primary' => array('c'),
1902
+            );
1903
+
1904
+            $color = array();
1905
+            $color_i = array();
1906
+            $background = array();
1907
+            $background_i = array();
1908
+            $border = array();
1909
+            $border_i = array();
1910
+            $fill = array();
1911
+            $fill_i = array();
1515 1912
 
1516
-			if ( $aui_bs5 ) {
1517
-//				$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).'; }';
1518
-				$output .= 'html body {--bs-'.esc_attr($type).': '.esc_attr($color_code).'; }';
1519
-				$output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }';
1520
-			}
1913
+            $output = '';
1521 1914
 
1915
+            // build rules into each type
1916
+            foreach($selectors as $selector => $types){
1917
+                $selector = $compatibility ? ".bsui ".$selector : $selector;
1918
+                $types = array_combine($types,$types);
1919
+                if(isset($types['c'])){$color[] = $selector;}
1920
+                if(isset($types['b'])){$background[] = $selector;}
1921
+                if(isset($types['o'])){$border[] = $selector;}
1922
+                if(isset($types['f'])){$fill[] = $selector;}
1923
+            }
1522 1924
 
1523
-			if ( $is_custom ) {
1925
+            // build rules into each type
1926
+            foreach($important_selectors as $selector => $types){
1927
+                $selector = $compatibility ? ".bsui ".$selector : $selector;
1928
+                $types = array_combine($types,$types);
1929
+                if(isset($types['c'])){$color_i[] = $selector;}
1930
+                if(isset($types['b'])){$background_i[] = $selector;}
1931
+                if(isset($types['o'])){$border_i[] = $selector;}
1932
+                if(isset($types['f'])){$fill_i[] = $selector;}
1933
+            }
1524 1934
 
1525
-//				echo '###'.$type;exit;
1935
+            // add any color rules
1936
+            if(!empty($color)){
1937
+                $output .= implode(",",$color) . "{color: $color_code;} ";
1938
+            }
1939
+            if(!empty($color_i)){
1940
+                $output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1941
+            }
1526 1942
 
1527
-				// build rules into each type
1528
-				foreach($selectors as $selector => $types){
1529
-					$selector = $compatibility ? $compatibility . " ".$selector : $selector;
1530
-					$types = array_combine($types,$types);
1531
-					if(isset($types['c'])){$color[] = $selector;}
1532
-					if(isset($types['b'])){$background[] = $selector;}
1533
-					if(isset($types['o'])){$border[] = $selector;}
1534
-					if(isset($types['f'])){$fill[] = $selector;}
1535
-				}
1943
+            // add any background color rules
1944
+            if(!empty($background)){
1945
+                $output .= implode(",",$background) . "{background-color: $color_code;} ";
1946
+            }
1947
+            if(!empty($background_i)){
1948
+                $output .= implode(",",$background_i) . "{background-color: $color_code !important;} ";
1949
+            }
1536 1950
 
1537
-//				// build rules into each type
1538
-//				foreach($important_selectors as $selector => $types){
1539
-//					$selector = $compatibility ? $compatibility . " ".$selector : $selector;
1540
-//					$types = array_combine($types,$types);
1541
-//					if(isset($types['c'])){$color_i[] = $selector;}
1542
-//					if(isset($types['b'])){$background_i[] = $selector;}
1543
-//					if(isset($types['o'])){$border_i[] = $selector;}
1544
-//					if(isset($types['f'])){$fill_i[] = $selector;}
1545
-//				}
1951
+            // add any border color rules
1952
+            if(!empty($border)){
1953
+                $output .= implode(",",$border) . "{border-color: $color_code;} ";
1954
+            }
1955
+            if(!empty($border_i)){
1956
+                $output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1957
+            }
1546 1958
 
1547
-				// add any color rules
1548
-				if(!empty($color)){
1549
-					$output .= implode(",",$color) . "{color: $color_code;} ";
1550
-				}
1551
-				if(!empty($color_i)){
1552
-					$output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1553
-				}
1959
+            // add any fill color rules
1960
+            if(!empty($fill)){
1961
+                $output .= implode(",",$fill) . "{fill: $color_code;} ";
1962
+            }
1963
+            if(!empty($fill_i)){
1964
+                $output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1965
+            }
1554 1966
 
1555
-				// add any background color rules
1556
-				if(!empty($background)){
1557
-					$output .= implode(",",$background) . "{background-color: $color_code;} ";
1558
-				}
1559
-				if(!empty($background_i)){
1560
-					$output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} ";
1561
-//				$output .= implode(",",$background_i) . "{background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;} ";
1562
-				}
1563 1967
 
1564
-				// add any border color rules
1565
-				if(!empty($border)){
1566
-					$output .= implode(",",$border) . "{border-color: $color_code;} ";
1567
-				}
1568
-				if(!empty($border_i)){
1569
-					$output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1570
-				}
1968
+            $prefix = $compatibility ? ".bsui " : "";
1571 1969
 
1572
-				// add any fill color rules
1573
-				if(!empty($fill)){
1574
-					$output .= implode(",",$fill) . "{fill: $color_code;} ";
1575
-				}
1576
-				if(!empty($fill_i)){
1577
-					$output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1578
-				}
1970
+            // darken
1971
+            $darker_075 = self::css_hex_lighten_darken($color_code,"-0.075");
1972
+            $darker_10 = self::css_hex_lighten_darken($color_code,"-0.10");
1973
+            $darker_125 = self::css_hex_lighten_darken($color_code,"-0.125");
1579 1974
 
1580
-			}
1975
+            // lighten
1976
+            $lighten_25 = self::css_hex_lighten_darken($color_code,"0.25");
1581 1977
 
1978
+            // opacity see https://css-tricks.com/8-digit-hex-codes/
1979
+            $op_25 = $color_code."40"; // 25% opacity
1582 1980
 
1583 1981
 
1982
+            // button states
1983
+            $output .= $prefix ." .btn-primary:hover, $prefix .btn-primary:focus, $prefix .btn-primary.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1984
+            $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;} ";
1985
+            $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.";} ";
1986
+            $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;} ";
1584 1987
 
1585
-			$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;' : '';
1586
-			// darken
1587
-			$darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075");
1588
-			$darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10");
1589
-			$darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125");
1590
-			$darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4");
1591 1988
 
1592
-			// lighten
1593
-			$lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25");
1989
+            // dropdown's
1990
+            $output .= $prefix ." .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
1594 1991
 
1595
-			// opacity see https://css-tricks.com/8-digit-hex-codes/
1596
-			$op_25 = $color_code."40"; // 25% opacity
1597 1992
 
1993
+            // input states
1994
+            $output .= $prefix ." .form-control:focus{border-color: ".$lighten_25.";box-shadow: 0 0 0 0.2rem $op_25;} ";
1598 1995
 
1599
-			// button states
1600
-			$output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : '';
1601
-			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1602
-//			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: #000;    border-color: #000;} ";
1603
-			$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;} ";
1604
-			$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.";} ";
1605
-            $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;} ";
1606
-            $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-{$type}:not(:disabled):not(.disabled):focus {box-shadow: 0 0.25rem 0.25rem 0.125rem rgba(var(--bs-{$type}-rgb), 0.1), 0 0.375rem 0.75rem -0.125rem rgba(var(--bs-{$type}-rgb), 0.4);} ";
1996
+            // page link
1997
+            $output .= $prefix ." .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1607 1998
 
1608
-			// text
1609
-//			$output .= $prefix .".xxx, .text-{$type} {color: var(--bs-".esc_attr($type).");} ";
1999
+            return $output;
2000
+        }
1610 2001
 
2002
+        /**
2003
+         *
2004
+         * @deprecated 0.1.76 Use css_overwrite()
2005
+         *
2006
+         * @param $color_code
2007
+         * @param $compatibility
2008
+         *
2009
+         * @return string
2010
+         */
2011
+        public static function css_secondary($color_code,$compatibility){;
2012
+            $color_code = sanitize_hex_color($color_code);
2013
+            if(!$color_code){return '';}
2014
+            /**
2015
+             * c = color, b = background color, o = border-color, f = fill
2016
+             */
2017
+            $selectors = array(
2018
+                '.btn-secondary' => array('b','o'),
2019
+                '.btn-secondary.disabled' => array('b','o'),
2020
+                '.btn-secondary:disabled' => array('b','o'),
2021
+                '.btn-outline-secondary' => array('c','o'),
2022
+                '.btn-outline-secondary:hover' => array('b','o'),
2023
+                '.btn-outline-secondary.disabled' => array('c'),
2024
+                '.btn-outline-secondary:disabled' => array('c'),
2025
+                '.btn-outline-secondary:not(:disabled):not(.disabled):active' => array('b','o'),
2026
+                '.btn-outline-secondary:not(:disabled):not(.disabled).active' => array('b','o'),
2027
+                '.btn-outline-secondary.dropdown-toggle' => array('b','o'),
2028
+                '.badge-secondary' => array('b'),
2029
+                '.alert-secondary' => array('b','o'),
2030
+                '.btn-link.btn-secondary' => array('c'),
2031
+            );
2032
+
2033
+            $important_selectors = array(
2034
+                '.bg-secondary' => array('b','f'),
2035
+                '.border-secondary' => array('o'),
2036
+                '.text-secondary' => array('c'),
2037
+            );
2038
+
2039
+            $color = array();
2040
+            $color_i = array();
2041
+            $background = array();
2042
+            $background_i = array();
2043
+            $border = array();
2044
+            $border_i = array();
2045
+            $fill = array();
2046
+            $fill_i = array();
1611 2047
 
1612
-//			if ( $type == 'primary' ) {
1613
-//				// dropdown's
1614
-//				$output .= $prefix . " .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
1615
-//
1616
-//				// input states
1617
-//				$output .= $prefix . " .form-control:focus{border-color: " . $lighten_25 . ";box-shadow: 0 0 0 0.2rem $op_25;} ";
1618
-//
1619
-//				// page link
1620
-//				$output .= $prefix . " .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1621
-//			}
2048
+            $output = '';
1622 2049
 
1623
-			// alerts
1624
-			if ( $aui_bs5 ) {
1625
-//				$output .= $is_var ? '' : $prefix ." .alert-{$type} {background-color: ".$color_code."20;    border-color: ".$color_code."30;color:$darker_40} ";
1626
-				$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;} ";
1627
-			}
1628
-
1629
-			return $output;
1630
-		}
1631
-
1632
-		/**
1633
-		 * Build the CSS to overwrite a bootstrap color variable.
1634
-		 *
1635
-		 * @param $type
1636
-		 * @param $color_code
1637
-		 * @param $compatibility
1638
-		 *
1639
-		 * @return string
1640
-		 */
1641
-		public static function css_overwrite($type,$color_code,$compatibility, $hex = '' ){
1642
-            global $aui_bs5;
2050
+            // build rules into each type
2051
+            foreach($selectors as $selector => $types){
2052
+                $selector = $compatibility ? ".bsui ".$selector : $selector;
2053
+                $types = array_combine($types,$types);
2054
+                if(isset($types['c'])){$color[] = $selector;}
2055
+                if(isset($types['b'])){$background[] = $selector;}
2056
+                if(isset($types['o'])){$border[] = $selector;}
2057
+                if(isset($types['f'])){$fill[] = $selector;}
2058
+            }
1643 2059
 
1644
-			$is_var = false;
1645
-			if(!$color_code){return '';}
1646
-			if(strpos($color_code, 'var') !== false){
1647
-				//if(!sanitize_hex_color($color_code)){
1648
-				$color_code = esc_attr($color_code);
1649
-				$is_var = true;
1650
-//				$color_code = "rgba($color_code, 0.5)";
1651
-//                echo '###1'.$color_code.'###';//exit;
1652
-			}
2060
+            // build rules into each type
2061
+            foreach($important_selectors as $selector => $types){
2062
+                $selector = $compatibility ? ".bsui ".$selector : $selector;
2063
+                $types = array_combine($types,$types);
2064
+                if(isset($types['c'])){$color_i[] = $selector;}
2065
+                if(isset($types['b'])){$background_i[] = $selector;}
2066
+                if(isset($types['o'])){$border_i[] = $selector;}
2067
+                if(isset($types['f'])){$fill_i[] = $selector;}
2068
+            }
1653 2069
 
1654
-//            echo '@@@'.$color_code.'==='.self::hex_to_rgb($color_code);exit;
2070
+            // add any color rules
2071
+            if(!empty($color)){
2072
+                $output .= implode(",",$color) . "{color: $color_code;} ";
2073
+            }
2074
+            if(!empty($color_i)){
2075
+                $output .= implode(",",$color_i) . "{color: $color_code !important;} ";
2076
+            }
1655 2077
 
1656
-			if(!$color_code){return '';}
2078
+            // add any background color rules
2079
+            if(!empty($background)){
2080
+                $output .= implode(",",$background) . "{background-color: $color_code;} ";
2081
+            }
2082
+            if(!empty($background_i)){
2083
+                $output .= implode(",",$background_i) . "{background-color: $color_code !important;} ";
2084
+            }
1657 2085
 
1658
-            $rgb = self::hex_to_rgb($hex);
2086
+            // add any border color rules
2087
+            if(!empty($border)){
2088
+                $output .= implode(",",$border) . "{border-color: $color_code;} ";
2089
+            }
2090
+            if(!empty($border_i)){
2091
+                $output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
2092
+            }
1659 2093
 
1660
-			if($compatibility===true || $compatibility===1){
1661
-				$compatibility = '.bsui';
1662
-			}elseif(!$compatibility){
1663
-				$compatibility = '';
1664
-			}else{
1665
-				$compatibility = esc_attr($compatibility);
1666
-			}
2094
+            // add any fill color rules
2095
+            if(!empty($fill)){
2096
+                $output .= implode(",",$fill) . "{fill: $color_code;} ";
2097
+            }
2098
+            if(!empty($fill_i)){
2099
+                $output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
2100
+            }
1667 2101
 
1668 2102
 
2103
+            $prefix = $compatibility ? ".bsui " : "";
1669 2104
 
1670
-//            echo '####'.$color_code;exit;
2105
+            // darken
2106
+            $darker_075 = self::css_hex_lighten_darken($color_code,"-0.075");
2107
+            $darker_10 = self::css_hex_lighten_darken($color_code,"-0.10");
2108
+            $darker_125 = self::css_hex_lighten_darken($color_code,"-0.125");
1671 2109
 
1672
-			$type = sanitize_html_class($type);
2110
+            // lighten
2111
+            $lighten_25 = self::css_hex_lighten_darken($color_code,"0.25");
2112
+
2113
+            // opacity see https://css-tricks.com/8-digit-hex-codes/
2114
+            $op_25 = $color_code."40"; // 25% opacity
1673 2115
 
1674
-			/**
1675
-			 * c = color, b = background color, o = border-color, f = fill
1676
-			 */
1677
-			$selectors = array(
1678
-				".btn-{$type}"                                              => array( 'b', 'o' ),
1679
-				".btn-{$type}.disabled"                                     => array( 'b', 'o' ),
1680
-				".btn-{$type}:disabled"                                     => array( 'b', 'o' ),
1681
-				".btn-outline-{$type}"                                      => array( 'c', 'o' ),
1682
-				".btn-outline-{$type}:hover"                                => array( 'b', 'o' ),
1683
-				".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ),
1684
-				".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ),
1685
-				".show>.btn-outline-{$type}.dropdown-toggle"                => array( 'b', 'o' ),
1686
-				".badge-{$type}"                                            => array( 'b' ),
1687
-				".alert-{$type}"                                            => array( 'b', 'o' ),
1688
-				".bg-{$type}"                                               => array( 'b', 'f' ),
1689
-				".btn-link.btn-{$type}"                                     => array( 'c' ),
1690
-			);
1691
-
1692
-			if ( $aui_bs5 ) {
1693
-                unset($selectors[".alert-{$type}" ]);
1694
-			}
1695
-
1696
-			if ( $type == 'primary' ) {
1697
-				$selectors = $selectors + array(
1698
-						'a'                                                                                                    => array( 'c' ),
1699
-						'.btn-link'                                                                                            => array( 'c' ),
1700
-						'.dropdown-item.active'                                                                                => array( 'b' ),
1701
-						'.custom-control-input:checked~.custom-control-label::before'                                          => array(
1702
-							'b',
1703
-							'o'
1704
-						),
1705
-						'.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before'                   => array(
1706
-							'b',
1707
-							'o'
1708
-						),
1709
-						'.nav-pills .nav-link.active'                                                                          => array( 'b' ),
1710
-						'.nav-pills .show>.nav-link'                                                                           => array( 'b' ),
1711
-						'.page-link'                                                                                           => array( 'c' ),
1712
-						'.page-item.active .page-link'                                                                         => array(
1713
-							'b',
1714
-							'o'
1715
-						),
1716
-						'.progress-bar'                                                                                        => array( 'b' ),
1717
-						'.list-group-item.active'                                                                              => array(
1718
-							'b',
1719
-							'o'
1720
-						),
1721
-						'.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ),
1722
-//				    '.custom-range::-webkit-slider-thumb' => array('b'), // these break the inline rules...
1723
-//				    '.custom-range::-moz-range-thumb' => array('b'),
1724
-//				    '.custom-range::-ms-thumb' => array('b'),
1725
-					);
1726
-			}
1727
-
1728
-			$important_selectors = array(
1729
-				".bg-{$type}" => array('b','f'),
1730
-				".border-{$type}" => array('o'),
1731
-				".text-{$type}" => array('c'),
1732
-			);
1733
-
1734
-			$color = array();
1735
-			$color_i = array();
1736
-			$background = array();
1737
-			$background_i = array();
1738
-			$border = array();
1739
-			$border_i = array();
1740
-			$fill = array();
1741
-			$fill_i = array();
1742
-
1743
-			$output = '';
1744
-
1745
-			if ( $aui_bs5 ) {
1746
-//				$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).'; }';
1747
-				$output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }';
1748
-			}
1749
-
1750
-			// build rules into each type
1751
-			foreach($selectors as $selector => $types){
1752
-				$selector = $compatibility ? $compatibility . " ".$selector : $selector;
1753
-				$types = array_combine($types,$types);
1754
-				if(isset($types['c'])){$color[] = $selector;}
1755
-				if(isset($types['b'])){$background[] = $selector;}
1756
-				if(isset($types['o'])){$border[] = $selector;}
1757
-				if(isset($types['f'])){$fill[] = $selector;}
1758
-			}
1759
-
1760
-			// build rules into each type
1761
-			foreach($important_selectors as $selector => $types){
1762
-				$selector = $compatibility ? $compatibility . " ".$selector : $selector;
1763
-				$types = array_combine($types,$types);
1764
-				if(isset($types['c'])){$color_i[] = $selector;}
1765
-				if(isset($types['b'])){$background_i[] = $selector;}
1766
-				if(isset($types['o'])){$border_i[] = $selector;}
1767
-				if(isset($types['f'])){$fill_i[] = $selector;}
1768
-			}
1769
-
1770
-			// add any color rules
1771
-			if(!empty($color)){
1772
-				$output .= implode(",",$color) . "{color: $color_code;} ";
1773
-			}
1774
-			if(!empty($color_i)){
1775
-				$output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1776
-			}
1777
-
1778
-			// add any background color rules
1779
-			if(!empty($background)){
1780
-				$output .= implode(",",$background) . "{background-color: $color_code;} ";
1781
-			}
1782
-			if(!empty($background_i)){
1783
-				$output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} ";
1784
-//				$output .= implode(",",$background_i) . "{background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;} ";
1785
-			}
1786 2116
 
1787
-			// add any border color rules
1788
-			if(!empty($border)){
1789
-				$output .= implode(",",$border) . "{border-color: $color_code;} ";
1790
-			}
1791
-			if(!empty($border_i)){
1792
-				$output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1793
-			}
2117
+            // button states
2118
+            $output .= $prefix ." .btn-secondary:hover{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
2119
+            $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;} ";
2120
+            $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.";} ";
2121
+            $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;} ";
1794 2122
 
1795
-			// add any fill color rules
1796
-			if(!empty($fill)){
1797
-				$output .= implode(",",$fill) . "{fill: $color_code;} ";
1798
-			}
1799
-			if(!empty($fill_i)){
1800
-				$output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1801
-			}
1802 2123
 
2124
+            return $output;
2125
+        }
2126
+
2127
+        /**
2128
+         * Increases or decreases the brightness of a color by a percentage of the current brightness.
2129
+         *
2130
+         * @param   string  $hexCode        Supported formats: `#FFF`, `#FFFFFF`, `FFF`, `FFFFFF`
2131
+         * @param   float   $adjustPercent  A number between -1 and 1. E.g. 0.3 = 30% lighter; -0.4 = 40% darker.
2132
+         *
2133
+         * @return  string
2134
+         */
2135
+        public static function css_hex_lighten_darken($hexCode, $adjustPercent) {
2136
+            $hexCode = ltrim($hexCode, '#');
1803 2137
 
1804
-			$prefix = $compatibility ? $compatibility . " " : "";
2138
+            if ( strpos( $hexCode, 'rgba(' ) !== false || strpos( $hexCode, 'rgb(' ) !== false ) {
2139
+                return $hexCode;
2140
+            }
1805 2141
 
1806
-			$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;' : '';
1807
-			// darken
1808
-			$darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075");
1809
-			$darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10");
1810
-			$darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125");
1811
-			$darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4");
2142
+            if (strlen($hexCode) == 3) {
2143
+                $hexCode = $hexCode[0] . $hexCode[0] . $hexCode[1] . $hexCode[1] . $hexCode[2] . $hexCode[2];
2144
+            }
1812 2145
 
1813
-			// lighten
1814
-			$lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25");
2146
+            $hexCode = array_map('hexdec', str_split($hexCode, 2));
1815 2147
 
1816
-			// opacity see https://css-tricks.com/8-digit-hex-codes/
1817
-			$op_25 = $color_code."40"; // 25% opacity
2148
+            foreach ($hexCode as & $color) {
2149
+                $adjustableLimit = $adjustPercent < 0 ? $color : 255 - $color;
2150
+                $adjustAmount = ceil($adjustableLimit * $adjustPercent);
1818 2151
 
2152
+                $color = str_pad(dechex($color + $adjustAmount), 2, '0', STR_PAD_LEFT);
2153
+            }
1819 2154
 
1820
-			// button states
1821
-			$output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : '';
1822
-			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1823
-//			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: #000;    border-color: #000;} ";
1824
-			$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;} ";
1825
-			$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.";} ";
1826
-			$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;} ";
2155
+            return '#' . implode($hexCode);
2156
+        }
1827 2157
 
1828
-			if ( $type == 'primary' ) {
1829
-				// dropdown's
1830
-				$output .= $prefix . " .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
2158
+        /**
2159
+         * Check if we should display examples.
2160
+         */
2161
+        public function maybe_show_examples(){
2162
+            if(current_user_can('manage_options') && isset($_REQUEST['preview-aui'])){
2163
+                echo "<head>";
2164
+                wp_head();
2165
+                echo "</head>";
2166
+                echo "<body>";
2167
+                echo $this->get_examples(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2168
+                echo "</body>";
2169
+                exit;
2170
+            }
2171
+        }
1831 2172
 
1832
-				// input states
1833
-				$output .= $prefix . " .form-control:focus{border-color: " . $lighten_25 . ";box-shadow: 0 0 0 0.2rem $op_25;} ";
2173
+        /**
2174
+         * Get developer examples.
2175
+         *
2176
+         * @return string
2177
+         */
2178
+        public function get_examples(){
2179
+            $output = '';
1834 2180
 
1835
-				// page link
1836
-				$output .= $prefix . " .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1837
-			}
1838 2181
 
1839
-            // alerts
1840
-			if ( $aui_bs5 ) {
1841
-//				$output .= $is_var ? '' : $prefix ." .alert-{$type} {background-color: ".$color_code."20;    border-color: ".$color_code."30;color:$darker_40} ";
1842
-				$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;} ";
1843
-			}
1844
-
1845
-			return $output;
1846
-		}
1847
-
1848
-		/**
1849
-		 *
1850
-		 * @deprecated 0.1.76 Use css_overwrite()
1851
-		 *
1852
-		 * @param $color_code
1853
-		 * @param $compatibility
1854
-		 * @param $use_variable
1855
-		 *
1856
-		 * @return string
1857
-		 */
1858
-		public static function css_primary($color_code,$compatibility, $use_variable = false){
1859
-
1860
-			if(!$use_variable){
1861
-				$color_code = sanitize_hex_color($color_code);
1862
-				if(!$color_code){return '';}
1863
-			}
1864
-
1865
-			/**
1866
-			 * c = color, b = background color, o = border-color, f = fill
1867
-			 */
1868
-			$selectors = array(
1869
-				'a' => array('c'),
1870
-				'.btn-primary' => array('b','o'),
1871
-				'.btn-primary.disabled' => array('b','o'),
1872
-				'.btn-primary:disabled' => array('b','o'),
1873
-				'.btn-outline-primary' => array('c','o'),
1874
-				'.btn-outline-primary:hover' => array('b','o'),
1875
-				'.btn-outline-primary:not(:disabled):not(.disabled).active' => array('b','o'),
1876
-				'.btn-outline-primary:not(:disabled):not(.disabled):active' => array('b','o'),
1877
-				'.show>.btn-outline-primary.dropdown-toggle' => array('b','o'),
1878
-				'.btn-link' => array('c'),
1879
-				'.dropdown-item.active' => array('b'),
1880
-				'.custom-control-input:checked~.custom-control-label::before' => array('b','o'),
1881
-				'.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before' => array('b','o'),
1882
-//				'.custom-range::-webkit-slider-thumb' => array('b'), // these break the inline rules...
1883
-//				'.custom-range::-moz-range-thumb' => array('b'),
1884
-//				'.custom-range::-ms-thumb' => array('b'),
1885
-				'.nav-pills .nav-link.active' => array('b'),
1886
-				'.nav-pills .show>.nav-link' => array('b'),
1887
-				'.page-link' => array('c'),
1888
-				'.page-item.active .page-link' => array('b','o'),
1889
-				'.badge-primary' => array('b'),
1890
-				'.alert-primary' => array('b','o'),
1891
-				'.progress-bar' => array('b'),
1892
-				'.list-group-item.active' => array('b','o'),
1893
-				'.bg-primary' => array('b','f'),
1894
-				'.btn-link.btn-primary' => array('c'),
1895
-				'.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array('b'),
1896
-			);
1897
-
1898
-			$important_selectors = array(
1899
-				'.bg-primary' => array('b','f'),
1900
-				'.border-primary' => array('o'),
1901
-				'.text-primary' => array('c'),
1902
-			);
1903
-
1904
-			$color = array();
1905
-			$color_i = array();
1906
-			$background = array();
1907
-			$background_i = array();
1908
-			$border = array();
1909
-			$border_i = array();
1910
-			$fill = array();
1911
-			$fill_i = array();
1912
-
1913
-			$output = '';
1914
-
1915
-			// build rules into each type
1916
-			foreach($selectors as $selector => $types){
1917
-				$selector = $compatibility ? ".bsui ".$selector : $selector;
1918
-				$types = array_combine($types,$types);
1919
-				if(isset($types['c'])){$color[] = $selector;}
1920
-				if(isset($types['b'])){$background[] = $selector;}
1921
-				if(isset($types['o'])){$border[] = $selector;}
1922
-				if(isset($types['f'])){$fill[] = $selector;}
1923
-			}
1924
-
1925
-			// build rules into each type
1926
-			foreach($important_selectors as $selector => $types){
1927
-				$selector = $compatibility ? ".bsui ".$selector : $selector;
1928
-				$types = array_combine($types,$types);
1929
-				if(isset($types['c'])){$color_i[] = $selector;}
1930
-				if(isset($types['b'])){$background_i[] = $selector;}
1931
-				if(isset($types['o'])){$border_i[] = $selector;}
1932
-				if(isset($types['f'])){$fill_i[] = $selector;}
1933
-			}
1934
-
1935
-			// add any color rules
1936
-			if(!empty($color)){
1937
-				$output .= implode(",",$color) . "{color: $color_code;} ";
1938
-			}
1939
-			if(!empty($color_i)){
1940
-				$output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1941
-			}
1942
-
1943
-			// add any background color rules
1944
-			if(!empty($background)){
1945
-				$output .= implode(",",$background) . "{background-color: $color_code;} ";
1946
-			}
1947
-			if(!empty($background_i)){
1948
-				$output .= implode(",",$background_i) . "{background-color: $color_code !important;} ";
1949
-			}
1950
-
1951
-			// add any border color rules
1952
-			if(!empty($border)){
1953
-				$output .= implode(",",$border) . "{border-color: $color_code;} ";
1954
-			}
1955
-			if(!empty($border_i)){
1956
-				$output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1957
-			}
1958
-
1959
-			// add any fill color rules
1960
-			if(!empty($fill)){
1961
-				$output .= implode(",",$fill) . "{fill: $color_code;} ";
1962
-			}
1963
-			if(!empty($fill_i)){
1964
-				$output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1965
-			}
1966
-
1967
-
1968
-			$prefix = $compatibility ? ".bsui " : "";
1969
-
1970
-			// darken
1971
-			$darker_075 = self::css_hex_lighten_darken($color_code,"-0.075");
1972
-			$darker_10 = self::css_hex_lighten_darken($color_code,"-0.10");
1973
-			$darker_125 = self::css_hex_lighten_darken($color_code,"-0.125");
1974
-
1975
-			// lighten
1976
-			$lighten_25 = self::css_hex_lighten_darken($color_code,"0.25");
1977
-
1978
-			// opacity see https://css-tricks.com/8-digit-hex-codes/
1979
-			$op_25 = $color_code."40"; // 25% opacity
1980
-
1981
-
1982
-			// button states
1983
-			$output .= $prefix ." .btn-primary:hover, $prefix .btn-primary:focus, $prefix .btn-primary.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1984
-			$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;} ";
1985
-			$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.";} ";
1986
-			$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;} ";
1987
-
1988
-
1989
-			// dropdown's
1990
-			$output .= $prefix ." .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
1991
-
1992
-
1993
-			// input states
1994
-			$output .= $prefix ." .form-control:focus{border-color: ".$lighten_25.";box-shadow: 0 0 0 0.2rem $op_25;} ";
1995
-
1996
-			// page link
1997
-			$output .= $prefix ." .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1998
-
1999
-			return $output;
2000
-		}
2001
-
2002
-		/**
2003
-		 *
2004
-		 * @deprecated 0.1.76 Use css_overwrite()
2005
-		 *
2006
-		 * @param $color_code
2007
-		 * @param $compatibility
2008
-		 *
2009
-		 * @return string
2010
-		 */
2011
-		public static function css_secondary($color_code,$compatibility){;
2012
-			$color_code = sanitize_hex_color($color_code);
2013
-			if(!$color_code){return '';}
2014
-			/**
2015
-			 * c = color, b = background color, o = border-color, f = fill
2016
-			 */
2017
-			$selectors = array(
2018
-				'.btn-secondary' => array('b','o'),
2019
-				'.btn-secondary.disabled' => array('b','o'),
2020
-				'.btn-secondary:disabled' => array('b','o'),
2021
-				'.btn-outline-secondary' => array('c','o'),
2022
-				'.btn-outline-secondary:hover' => array('b','o'),
2023
-				'.btn-outline-secondary.disabled' => array('c'),
2024
-				'.btn-outline-secondary:disabled' => array('c'),
2025
-				'.btn-outline-secondary:not(:disabled):not(.disabled):active' => array('b','o'),
2026
-				'.btn-outline-secondary:not(:disabled):not(.disabled).active' => array('b','o'),
2027
-				'.btn-outline-secondary.dropdown-toggle' => array('b','o'),
2028
-				'.badge-secondary' => array('b'),
2029
-				'.alert-secondary' => array('b','o'),
2030
-				'.btn-link.btn-secondary' => array('c'),
2031
-			);
2032
-
2033
-			$important_selectors = array(
2034
-				'.bg-secondary' => array('b','f'),
2035
-				'.border-secondary' => array('o'),
2036
-				'.text-secondary' => array('c'),
2037
-			);
2038
-
2039
-			$color = array();
2040
-			$color_i = array();
2041
-			$background = array();
2042
-			$background_i = array();
2043
-			$border = array();
2044
-			$border_i = array();
2045
-			$fill = array();
2046
-			$fill_i = array();
2047
-
2048
-			$output = '';
2049
-
2050
-			// build rules into each type
2051
-			foreach($selectors as $selector => $types){
2052
-				$selector = $compatibility ? ".bsui ".$selector : $selector;
2053
-				$types = array_combine($types,$types);
2054
-				if(isset($types['c'])){$color[] = $selector;}
2055
-				if(isset($types['b'])){$background[] = $selector;}
2056
-				if(isset($types['o'])){$border[] = $selector;}
2057
-				if(isset($types['f'])){$fill[] = $selector;}
2058
-			}
2059
-
2060
-			// build rules into each type
2061
-			foreach($important_selectors as $selector => $types){
2062
-				$selector = $compatibility ? ".bsui ".$selector : $selector;
2063
-				$types = array_combine($types,$types);
2064
-				if(isset($types['c'])){$color_i[] = $selector;}
2065
-				if(isset($types['b'])){$background_i[] = $selector;}
2066
-				if(isset($types['o'])){$border_i[] = $selector;}
2067
-				if(isset($types['f'])){$fill_i[] = $selector;}
2068
-			}
2069
-
2070
-			// add any color rules
2071
-			if(!empty($color)){
2072
-				$output .= implode(",",$color) . "{color: $color_code;} ";
2073
-			}
2074
-			if(!empty($color_i)){
2075
-				$output .= implode(",",$color_i) . "{color: $color_code !important;} ";
2076
-			}
2077
-
2078
-			// add any background color rules
2079
-			if(!empty($background)){
2080
-				$output .= implode(",",$background) . "{background-color: $color_code;} ";
2081
-			}
2082
-			if(!empty($background_i)){
2083
-				$output .= implode(",",$background_i) . "{background-color: $color_code !important;} ";
2084
-			}
2085
-
2086
-			// add any border color rules
2087
-			if(!empty($border)){
2088
-				$output .= implode(",",$border) . "{border-color: $color_code;} ";
2089
-			}
2090
-			if(!empty($border_i)){
2091
-				$output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
2092
-			}
2093
-
2094
-			// add any fill color rules
2095
-			if(!empty($fill)){
2096
-				$output .= implode(",",$fill) . "{fill: $color_code;} ";
2097
-			}
2098
-			if(!empty($fill_i)){
2099
-				$output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
2100
-			}
2101
-
2102
-
2103
-			$prefix = $compatibility ? ".bsui " : "";
2104
-
2105
-			// darken
2106
-			$darker_075 = self::css_hex_lighten_darken($color_code,"-0.075");
2107
-			$darker_10 = self::css_hex_lighten_darken($color_code,"-0.10");
2108
-			$darker_125 = self::css_hex_lighten_darken($color_code,"-0.125");
2109
-
2110
-			// lighten
2111
-			$lighten_25 = self::css_hex_lighten_darken($color_code,"0.25");
2112
-
2113
-			// opacity see https://css-tricks.com/8-digit-hex-codes/
2114
-			$op_25 = $color_code."40"; // 25% opacity
2115
-
2116
-
2117
-			// button states
2118
-			$output .= $prefix ." .btn-secondary:hover{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
2119
-			$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;} ";
2120
-			$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.";} ";
2121
-			$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;} ";
2122
-
2123
-
2124
-			return $output;
2125
-		}
2126
-
2127
-		/**
2128
-		 * Increases or decreases the brightness of a color by a percentage of the current brightness.
2129
-		 *
2130
-		 * @param   string  $hexCode        Supported formats: `#FFF`, `#FFFFFF`, `FFF`, `FFFFFF`
2131
-		 * @param   float   $adjustPercent  A number between -1 and 1. E.g. 0.3 = 30% lighter; -0.4 = 40% darker.
2132
-		 *
2133
-		 * @return  string
2134
-		 */
2135
-		public static function css_hex_lighten_darken($hexCode, $adjustPercent) {
2136
-			$hexCode = ltrim($hexCode, '#');
2137
-
2138
-			if ( strpos( $hexCode, 'rgba(' ) !== false || strpos( $hexCode, 'rgb(' ) !== false ) {
2139
-				return $hexCode;
2140
-			}
2141
-
2142
-			if (strlen($hexCode) == 3) {
2143
-				$hexCode = $hexCode[0] . $hexCode[0] . $hexCode[1] . $hexCode[1] . $hexCode[2] . $hexCode[2];
2144
-			}
2145
-
2146
-			$hexCode = array_map('hexdec', str_split($hexCode, 2));
2147
-
2148
-			foreach ($hexCode as & $color) {
2149
-				$adjustableLimit = $adjustPercent < 0 ? $color : 255 - $color;
2150
-				$adjustAmount = ceil($adjustableLimit * $adjustPercent);
2151
-
2152
-				$color = str_pad(dechex($color + $adjustAmount), 2, '0', STR_PAD_LEFT);
2153
-			}
2154
-
2155
-			return '#' . implode($hexCode);
2156
-		}
2157
-
2158
-		/**
2159
-		 * Check if we should display examples.
2160
-		 */
2161
-		public function maybe_show_examples(){
2162
-			if(current_user_can('manage_options') && isset($_REQUEST['preview-aui'])){
2163
-				echo "<head>";
2164
-				wp_head();
2165
-				echo "</head>";
2166
-				echo "<body>";
2167
-				echo $this->get_examples(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2168
-				echo "</body>";
2169
-				exit;
2170
-			}
2171
-		}
2172
-
2173
-		/**
2174
-		 * Get developer examples.
2175
-		 *
2176
-		 * @return string
2177
-		 */
2178
-		public function get_examples(){
2179
-			$output = '';
2180
-
2181
-
2182
-			// open form
2183
-			$output .= "<form class='p-5 m-5 border rounded'>";
2184
-
2185
-			// input example
2186
-			$output .= aui()->input(array(
2187
-				'type'  =>  'text',
2188
-				'id'    =>  'text-example',
2189
-				'name'    =>  'text-example',
2190
-				'placeholder'   => 'text placeholder',
2191
-				'title'   => 'Text input example',
2192
-				'value' =>  '',
2193
-				'required'  => false,
2194
-				'help_text' => 'help text',
2195
-				'label' => 'Text input example label'
2196
-			));
2197
-
2198
-			// input example
2199
-			$output .= aui()->input(array(
2200
-				'type'  =>  'url',
2201
-				'id'    =>  'text-example2',
2202
-				'name'    =>  'text-example',
2203
-				'placeholder'   => 'url placeholder',
2204
-				'title'   => 'Text input example',
2205
-				'value' =>  '',
2206
-				'required'  => false,
2207
-				'help_text' => 'help text',
2208
-				'label' => 'Text input example label'
2209
-			));
2210
-
2211
-			// checkbox example
2212
-			$output .= aui()->input(array(
2213
-				'type'  =>  'checkbox',
2214
-				'id'    =>  'checkbox-example',
2215
-				'name'    =>  'checkbox-example',
2216
-				'placeholder'   => 'checkbox-example',
2217
-				'title'   => 'Checkbox example',
2218
-				'value' =>  '1',
2219
-				'checked'   => true,
2220
-				'required'  => false,
2221
-				'help_text' => 'help text',
2222
-				'label' => 'Checkbox checked'
2223
-			));
2224
-
2225
-			// checkbox example
2226
-			$output .= aui()->input(array(
2227
-				'type'  =>  'checkbox',
2228
-				'id'    =>  'checkbox-example2',
2229
-				'name'    =>  'checkbox-example2',
2230
-				'placeholder'   => 'checkbox-example',
2231
-				'title'   => 'Checkbox example',
2232
-				'value' =>  '1',
2233
-				'checked'   => false,
2234
-				'required'  => false,
2235
-				'help_text' => 'help text',
2236
-				'label' => 'Checkbox un-checked'
2237
-			));
2238
-
2239
-			// switch example
2240
-			$output .= aui()->input(array(
2241
-				'type'  =>  'checkbox',
2242
-				'id'    =>  'switch-example',
2243
-				'name'    =>  'switch-example',
2244
-				'placeholder'   => 'checkbox-example',
2245
-				'title'   => 'Switch example',
2246
-				'value' =>  '1',
2247
-				'checked'   => true,
2248
-				'switch'    => true,
2249
-				'required'  => false,
2250
-				'help_text' => 'help text',
2251
-				'label' => 'Switch on'
2252
-			));
2253
-
2254
-			// switch example
2255
-			$output .= aui()->input(array(
2256
-				'type'  =>  'checkbox',
2257
-				'id'    =>  'switch-example2',
2258
-				'name'    =>  'switch-example2',
2259
-				'placeholder'   => 'checkbox-example',
2260
-				'title'   => 'Switch example',
2261
-				'value' =>  '1',
2262
-				'checked'   => false,
2263
-				'switch'    => true,
2264
-				'required'  => false,
2265
-				'help_text' => 'help text',
2266
-				'label' => 'Switch off'
2267
-			));
2268
-
2269
-			// close form
2270
-			$output .= "</form>";
2271
-
2272
-			return $output;
2273
-		}
2274
-
2275
-		/**
2276
-		 * Calendar params.
2277
-		 *
2278
-		 * @since 0.1.44
2279
-		 *
2280
-		 * @return array Calendar params.
2281
-		 */
2282
-		public static function calendar_params() {
2283
-			$params = array(
2284
-				'month_long_1' => __( 'January', 'ayecode-connect' ),
2285
-				'month_long_2' => __( 'February', 'ayecode-connect' ),
2286
-				'month_long_3' => __( 'March', 'ayecode-connect' ),
2287
-				'month_long_4' => __( 'April', 'ayecode-connect' ),
2288
-				'month_long_5' => __( 'May', 'ayecode-connect' ),
2289
-				'month_long_6' => __( 'June', 'ayecode-connect' ),
2290
-				'month_long_7' => __( 'July', 'ayecode-connect' ),
2291
-				'month_long_8' => __( 'August', 'ayecode-connect' ),
2292
-				'month_long_9' => __( 'September', 'ayecode-connect' ),
2293
-				'month_long_10' => __( 'October', 'ayecode-connect' ),
2294
-				'month_long_11' => __( 'November', 'ayecode-connect' ),
2295
-				'month_long_12' => __( 'December', 'ayecode-connect' ),
2296
-				'month_s_1' => _x( 'Jan', 'January abbreviation', 'ayecode-connect' ),
2297
-				'month_s_2' => _x( 'Feb', 'February abbreviation', 'ayecode-connect' ),
2298
-				'month_s_3' => _x( 'Mar', 'March abbreviation', 'ayecode-connect' ),
2299
-				'month_s_4' => _x( 'Apr', 'April abbreviation', 'ayecode-connect' ),
2300
-				'month_s_5' => _x( 'May', 'May abbreviation', 'ayecode-connect' ),
2301
-				'month_s_6' => _x( 'Jun', 'June abbreviation', 'ayecode-connect' ),
2302
-				'month_s_7' => _x( 'Jul', 'July abbreviation', 'ayecode-connect' ),
2303
-				'month_s_8' => _x( 'Aug', 'August abbreviation', 'ayecode-connect' ),
2304
-				'month_s_9' => _x( 'Sep', 'September abbreviation', 'ayecode-connect' ),
2305
-				'month_s_10' => _x( 'Oct', 'October abbreviation', 'ayecode-connect' ),
2306
-				'month_s_11' => _x( 'Nov', 'November abbreviation', 'ayecode-connect' ),
2307
-				'month_s_12' => _x( 'Dec', 'December abbreviation', 'ayecode-connect' ),
2308
-				'day_s1_1' => _x( 'S', 'Sunday initial', 'ayecode-connect' ),
2309
-				'day_s1_2' => _x( 'M', 'Monday initial', 'ayecode-connect' ),
2310
-				'day_s1_3' => _x( 'T', 'Tuesday initial', 'ayecode-connect' ),
2311
-				'day_s1_4' => _x( 'W', 'Wednesday initial', 'ayecode-connect' ),
2312
-				'day_s1_5' => _x( 'T', 'Friday initial', 'ayecode-connect' ),
2313
-				'day_s1_6' => _x( 'F', 'Thursday initial', 'ayecode-connect' ),
2314
-				'day_s1_7' => _x( 'S', 'Saturday initial', 'ayecode-connect' ),
2315
-				'day_s2_1' => __( 'Su', 'ayecode-connect' ),
2316
-				'day_s2_2' => __( 'Mo', 'ayecode-connect' ),
2317
-				'day_s2_3' => __( 'Tu', 'ayecode-connect' ),
2318
-				'day_s2_4' => __( 'We', 'ayecode-connect' ),
2319
-				'day_s2_5' => __( 'Th', 'ayecode-connect' ),
2320
-				'day_s2_6' => __( 'Fr', 'ayecode-connect' ),
2321
-				'day_s2_7' => __( 'Sa', 'ayecode-connect' ),
2322
-				'day_s3_1' => __( 'Sun', 'ayecode-connect' ),
2323
-				'day_s3_2' => __( 'Mon', 'ayecode-connect' ),
2324
-				'day_s3_3' => __( 'Tue', 'ayecode-connect' ),
2325
-				'day_s3_4' => __( 'Wed', 'ayecode-connect' ),
2326
-				'day_s3_5' => __( 'Thu', 'ayecode-connect' ),
2327
-				'day_s3_6' => __( 'Fri', 'ayecode-connect' ),
2328
-				'day_s3_7' => __( 'Sat', 'ayecode-connect' ),
2329
-				'day_s5_1' => __( 'Sunday', 'ayecode-connect' ),
2330
-				'day_s5_2' => __( 'Monday', 'ayecode-connect' ),
2331
-				'day_s5_3' => __( 'Tuesday', 'ayecode-connect' ),
2332
-				'day_s5_4' => __( 'Wednesday', 'ayecode-connect' ),
2333
-				'day_s5_5' => __( 'Thursday', 'ayecode-connect' ),
2334
-				'day_s5_6' => __( 'Friday', 'ayecode-connect' ),
2335
-				'day_s5_7' => __( 'Saturday', 'ayecode-connect' ),
2336
-				'am_lower' => __( 'am', 'ayecode-connect' ),
2337
-				'pm_lower' => __( 'pm', 'ayecode-connect' ),
2338
-				'am_upper' => __( 'AM', 'ayecode-connect' ),
2339
-				'pm_upper' => __( 'PM', 'ayecode-connect' ),
2340
-				'firstDayOfWeek' => (int) get_option( 'start_of_week' ),
2341
-				'time_24hr' => false,
2342
-				'year' => __( 'Year', 'ayecode-connect' ),
2343
-				'hour' => __( 'Hour', 'ayecode-connect' ),
2344
-				'minute' => __( 'Minute', 'ayecode-connect' ),
2345
-				'weekAbbreviation' => __( 'Wk', 'ayecode-connect' ),
2346
-				'rangeSeparator' => __( ' to ', 'ayecode-connect' ),
2347
-				'scrollTitle' => __( 'Scroll to increment', 'ayecode-connect' ),
2348
-				'toggleTitle' => __( 'Click to toggle', 'ayecode-connect' )
2349
-			);
2350
-
2351
-			return apply_filters( 'ayecode_ui_calendar_params', $params );
2352
-		}
2353
-
2354
-		/**
2355
-		 * Flatpickr calendar localize.
2356
-		 *
2357
-		 * @since 0.1.44
2358
-		 *
2359
-		 * @return string Calendar locale.
2360
-		 */
2361
-		public static function flatpickr_locale() {
2362
-			$params = self::calendar_params();
2363
-
2364
-			if ( is_string( $params ) ) {
2365
-				$params = html_entity_decode( $params, ENT_QUOTES, 'UTF-8' );
2366
-			} else {
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
-			}
2182
+            // open form
2183
+            $output .= "<form class='p-5 m-5 border rounded'>";
2184
+
2185
+            // input example
2186
+            $output .= aui()->input(array(
2187
+                'type'  =>  'text',
2188
+                'id'    =>  'text-example',
2189
+                'name'    =>  'text-example',
2190
+                'placeholder'   => 'text placeholder',
2191
+                'title'   => 'Text input example',
2192
+                'value' =>  '',
2193
+                'required'  => false,
2194
+                'help_text' => 'help text',
2195
+                'label' => 'Text input example label'
2196
+            ));
2197
+
2198
+            // input example
2199
+            $output .= aui()->input(array(
2200
+                'type'  =>  'url',
2201
+                'id'    =>  'text-example2',
2202
+                'name'    =>  'text-example',
2203
+                'placeholder'   => 'url placeholder',
2204
+                'title'   => 'Text input example',
2205
+                'value' =>  '',
2206
+                'required'  => false,
2207
+                'help_text' => 'help text',
2208
+                'label' => 'Text input example label'
2209
+            ));
2210
+
2211
+            // checkbox example
2212
+            $output .= aui()->input(array(
2213
+                'type'  =>  'checkbox',
2214
+                'id'    =>  'checkbox-example',
2215
+                'name'    =>  'checkbox-example',
2216
+                'placeholder'   => 'checkbox-example',
2217
+                'title'   => 'Checkbox example',
2218
+                'value' =>  '1',
2219
+                'checked'   => true,
2220
+                'required'  => false,
2221
+                'help_text' => 'help text',
2222
+                'label' => 'Checkbox checked'
2223
+            ));
2224
+
2225
+            // checkbox example
2226
+            $output .= aui()->input(array(
2227
+                'type'  =>  'checkbox',
2228
+                'id'    =>  'checkbox-example2',
2229
+                'name'    =>  'checkbox-example2',
2230
+                'placeholder'   => 'checkbox-example',
2231
+                'title'   => 'Checkbox example',
2232
+                'value' =>  '1',
2233
+                'checked'   => false,
2234
+                'required'  => false,
2235
+                'help_text' => 'help text',
2236
+                'label' => 'Checkbox un-checked'
2237
+            ));
2238
+
2239
+            // switch example
2240
+            $output .= aui()->input(array(
2241
+                'type'  =>  'checkbox',
2242
+                'id'    =>  'switch-example',
2243
+                'name'    =>  'switch-example',
2244
+                'placeholder'   => 'checkbox-example',
2245
+                'title'   => 'Switch example',
2246
+                'value' =>  '1',
2247
+                'checked'   => true,
2248
+                'switch'    => true,
2249
+                'required'  => false,
2250
+                'help_text' => 'help text',
2251
+                'label' => 'Switch on'
2252
+            ));
2253
+
2254
+            // switch example
2255
+            $output .= aui()->input(array(
2256
+                'type'  =>  'checkbox',
2257
+                'id'    =>  'switch-example2',
2258
+                'name'    =>  'switch-example2',
2259
+                'placeholder'   => 'checkbox-example',
2260
+                'title'   => 'Switch example',
2261
+                'value' =>  '1',
2262
+                'checked'   => false,
2263
+                'switch'    => true,
2264
+                'required'  => false,
2265
+                'help_text' => 'help text',
2266
+                'label' => 'Switch off'
2267
+            ));
2268
+
2269
+            // close form
2270
+            $output .= "</form>";
2271
+
2272
+            return $output;
2273
+        }
2274
+
2275
+        /**
2276
+         * Calendar params.
2277
+         *
2278
+         * @since 0.1.44
2279
+         *
2280
+         * @return array Calendar params.
2281
+         */
2282
+        public static function calendar_params() {
2283
+            $params = array(
2284
+                'month_long_1' => __( 'January', 'ayecode-connect' ),
2285
+                'month_long_2' => __( 'February', 'ayecode-connect' ),
2286
+                'month_long_3' => __( 'March', 'ayecode-connect' ),
2287
+                'month_long_4' => __( 'April', 'ayecode-connect' ),
2288
+                'month_long_5' => __( 'May', 'ayecode-connect' ),
2289
+                'month_long_6' => __( 'June', 'ayecode-connect' ),
2290
+                'month_long_7' => __( 'July', 'ayecode-connect' ),
2291
+                'month_long_8' => __( 'August', 'ayecode-connect' ),
2292
+                'month_long_9' => __( 'September', 'ayecode-connect' ),
2293
+                'month_long_10' => __( 'October', 'ayecode-connect' ),
2294
+                'month_long_11' => __( 'November', 'ayecode-connect' ),
2295
+                'month_long_12' => __( 'December', 'ayecode-connect' ),
2296
+                'month_s_1' => _x( 'Jan', 'January abbreviation', 'ayecode-connect' ),
2297
+                'month_s_2' => _x( 'Feb', 'February abbreviation', 'ayecode-connect' ),
2298
+                'month_s_3' => _x( 'Mar', 'March abbreviation', 'ayecode-connect' ),
2299
+                'month_s_4' => _x( 'Apr', 'April abbreviation', 'ayecode-connect' ),
2300
+                'month_s_5' => _x( 'May', 'May abbreviation', 'ayecode-connect' ),
2301
+                'month_s_6' => _x( 'Jun', 'June abbreviation', 'ayecode-connect' ),
2302
+                'month_s_7' => _x( 'Jul', 'July abbreviation', 'ayecode-connect' ),
2303
+                'month_s_8' => _x( 'Aug', 'August abbreviation', 'ayecode-connect' ),
2304
+                'month_s_9' => _x( 'Sep', 'September abbreviation', 'ayecode-connect' ),
2305
+                'month_s_10' => _x( 'Oct', 'October abbreviation', 'ayecode-connect' ),
2306
+                'month_s_11' => _x( 'Nov', 'November abbreviation', 'ayecode-connect' ),
2307
+                'month_s_12' => _x( 'Dec', 'December abbreviation', 'ayecode-connect' ),
2308
+                'day_s1_1' => _x( 'S', 'Sunday initial', 'ayecode-connect' ),
2309
+                'day_s1_2' => _x( 'M', 'Monday initial', 'ayecode-connect' ),
2310
+                'day_s1_3' => _x( 'T', 'Tuesday initial', 'ayecode-connect' ),
2311
+                'day_s1_4' => _x( 'W', 'Wednesday initial', 'ayecode-connect' ),
2312
+                'day_s1_5' => _x( 'T', 'Friday initial', 'ayecode-connect' ),
2313
+                'day_s1_6' => _x( 'F', 'Thursday initial', 'ayecode-connect' ),
2314
+                'day_s1_7' => _x( 'S', 'Saturday initial', 'ayecode-connect' ),
2315
+                'day_s2_1' => __( 'Su', 'ayecode-connect' ),
2316
+                'day_s2_2' => __( 'Mo', 'ayecode-connect' ),
2317
+                'day_s2_3' => __( 'Tu', 'ayecode-connect' ),
2318
+                'day_s2_4' => __( 'We', 'ayecode-connect' ),
2319
+                'day_s2_5' => __( 'Th', 'ayecode-connect' ),
2320
+                'day_s2_6' => __( 'Fr', 'ayecode-connect' ),
2321
+                'day_s2_7' => __( 'Sa', 'ayecode-connect' ),
2322
+                'day_s3_1' => __( 'Sun', 'ayecode-connect' ),
2323
+                'day_s3_2' => __( 'Mon', 'ayecode-connect' ),
2324
+                'day_s3_3' => __( 'Tue', 'ayecode-connect' ),
2325
+                'day_s3_4' => __( 'Wed', 'ayecode-connect' ),
2326
+                'day_s3_5' => __( 'Thu', 'ayecode-connect' ),
2327
+                'day_s3_6' => __( 'Fri', 'ayecode-connect' ),
2328
+                'day_s3_7' => __( 'Sat', 'ayecode-connect' ),
2329
+                'day_s5_1' => __( 'Sunday', 'ayecode-connect' ),
2330
+                'day_s5_2' => __( 'Monday', 'ayecode-connect' ),
2331
+                'day_s5_3' => __( 'Tuesday', 'ayecode-connect' ),
2332
+                'day_s5_4' => __( 'Wednesday', 'ayecode-connect' ),
2333
+                'day_s5_5' => __( 'Thursday', 'ayecode-connect' ),
2334
+                'day_s5_6' => __( 'Friday', 'ayecode-connect' ),
2335
+                'day_s5_7' => __( 'Saturday', 'ayecode-connect' ),
2336
+                'am_lower' => __( 'am', 'ayecode-connect' ),
2337
+                'pm_lower' => __( 'pm', 'ayecode-connect' ),
2338
+                'am_upper' => __( 'AM', 'ayecode-connect' ),
2339
+                'pm_upper' => __( 'PM', 'ayecode-connect' ),
2340
+                'firstDayOfWeek' => (int) get_option( 'start_of_week' ),
2341
+                'time_24hr' => false,
2342
+                'year' => __( 'Year', 'ayecode-connect' ),
2343
+                'hour' => __( 'Hour', 'ayecode-connect' ),
2344
+                'minute' => __( 'Minute', 'ayecode-connect' ),
2345
+                'weekAbbreviation' => __( 'Wk', 'ayecode-connect' ),
2346
+                'rangeSeparator' => __( ' to ', 'ayecode-connect' ),
2347
+                'scrollTitle' => __( 'Scroll to increment', 'ayecode-connect' ),
2348
+                'toggleTitle' => __( 'Click to toggle', 'ayecode-connect' )
2349
+            );
2350
+
2351
+            return apply_filters( 'ayecode_ui_calendar_params', $params );
2352
+        }
2353
+
2354
+        /**
2355
+         * Flatpickr calendar localize.
2356
+         *
2357
+         * @since 0.1.44
2358
+         *
2359
+         * @return string Calendar locale.
2360
+         */
2361
+        public static function flatpickr_locale() {
2362
+            $params = self::calendar_params();
2363
+
2364
+            if ( is_string( $params ) ) {
2365
+                $params = html_entity_decode( $params, ENT_QUOTES, 'UTF-8' );
2366
+            } else {
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 2375
 
2376
-			$day_s3 = array();
2377
-			$day_s5 = array();
2376
+            $day_s3 = array();
2377
+            $day_s5 = array();
2378 2378
 
2379
-			for ( $i = 1; $i <= 7; $i ++ ) {
2380
-				$day_s3[] = addslashes( $params[ 'day_s3_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2381
-				$day_s5[] = addslashes( $params[ 'day_s3_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2382
-			}
2379
+            for ( $i = 1; $i <= 7; $i ++ ) {
2380
+                $day_s3[] = addslashes( $params[ 'day_s3_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2381
+                $day_s5[] = addslashes( $params[ 'day_s3_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2382
+            }
2383 2383
 
2384
-			$month_s = array();
2385
-			$month_long = array();
2384
+            $month_s = array();
2385
+            $month_long = array();
2386 2386
 
2387
-			for ( $i = 1; $i <= 12; $i ++ ) {
2388
-				$month_s[] = addslashes( $params[ 'month_s_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2389
-				$month_long[] = addslashes( $params[ 'month_long_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2390
-			}
2387
+            for ( $i = 1; $i <= 12; $i ++ ) {
2388
+                $month_s[] = addslashes( $params[ 'month_s_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2389
+                $month_long[] = addslashes( $params[ 'month_long_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2390
+            }
2391 2391
 
2392
-			ob_start();
2393
-		if ( 0 ) { ?><script><?php } ?>
2392
+            ob_start();
2393
+        if ( 0 ) { ?><script><?php } ?>
2394 2394
                 {
2395 2395
                     weekdays: {
2396 2396
                         shorthand: ['<?php echo implode( "','", $day_s3 ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>'],
@@ -2429,189 +2429,189 @@  discard block
 block discarded – undo
2429 2429
                 }
2430 2430
 				<?php if ( 0 ) { ?></script><?php } ?>
2431 2431
 			<?php
2432
-			$locale = ob_get_clean();
2433
-
2434
-			return apply_filters( 'ayecode_ui_flatpickr_locale', trim( $locale ) );
2435
-		}
2436
-
2437
-		/**
2438
-		 * Select2 JS params.
2439
-		 *
2440
-		 * @since 0.1.44
2441
-		 *
2442
-		 * @return array Select2 JS params.
2443
-		 */
2444
-		public static function select2_params() {
2445
-			$params = array(
2446
-				'i18n_select_state_text'    => esc_attr__( 'Select an option&hellip;', 'ayecode-connect' ),
2447
-				'i18n_no_matches'           => _x( 'No matches found', 'enhanced select', 'ayecode-connect' ),
2448
-				'i18n_ajax_error'           => _x( 'Loading failed', 'enhanced select', 'ayecode-connect' ),
2449
-				'i18n_input_too_short_1'    => _x( 'Please enter 1 or more characters', 'enhanced select', 'ayecode-connect' ),
2450
-				'i18n_input_too_short_n'    => _x( 'Please enter %item% or more characters', 'enhanced select', 'ayecode-connect' ),
2451
-				'i18n_input_too_long_1'     => _x( 'Please delete 1 character', 'enhanced select', 'ayecode-connect' ),
2452
-				'i18n_input_too_long_n'     => _x( 'Please delete %item% characters', 'enhanced select', 'ayecode-connect' ),
2453
-				'i18n_selection_too_long_1' => _x( 'You can only select 1 item', 'enhanced select', 'ayecode-connect' ),
2454
-				'i18n_selection_too_long_n' => _x( 'You can only select %item% items', 'enhanced select', 'ayecode-connect' ),
2455
-				'i18n_load_more'            => _x( 'Loading more results&hellip;', 'enhanced select', 'ayecode-connect' ),
2456
-				'i18n_searching'            => _x( 'Searching&hellip;', 'enhanced select', 'ayecode-connect' )
2457
-			);
2458
-
2459
-			return apply_filters( 'ayecode_ui_select2_params', $params );
2460
-		}
2461
-
2462
-		/**
2463
-		 * Select2 JS localize.
2464
-		 *
2465
-		 * @since 0.1.44
2466
-		 *
2467
-		 * @return string Select2 JS locale.
2468
-		 */
2469
-		public static function select2_locale() {
2470
-			$params = self::select2_params();
2471
-
2472
-			foreach ( (array) $params as $key => $value ) {
2473
-				if ( ! is_scalar( $value ) ) {
2474
-					continue;
2475
-				}
2432
+            $locale = ob_get_clean();
2476 2433
 
2477
-				$params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2478
-			}
2479
-
2480
-			$locale = json_encode( $params );
2481
-
2482
-			return apply_filters( 'ayecode_ui_select2_locale', trim( $locale ) );
2483
-		}
2484
-
2485
-		/**
2486
-		 * Time ago JS localize.
2487
-		 *
2488
-		 * @since 0.1.47
2489
-		 *
2490
-		 * @return string Time ago JS locale.
2491
-		 */
2492
-		public static function timeago_locale() {
2493
-			$params = array(
2494
-				'prefix_ago' => '',
2495
-				'suffix_ago' => ' ' . _x( 'ago', 'time ago', 'ayecode-connect' ),
2496
-				'prefix_after' => _x( 'after', 'time ago', 'ayecode-connect' ) . ' ',
2497
-				'suffix_after' => '',
2498
-				'seconds' => _x( 'less than a minute', 'time ago', 'ayecode-connect' ),
2499
-				'minute' => _x( 'about a minute', 'time ago', 'ayecode-connect' ),
2500
-				'minutes' => _x( '%d minutes', 'time ago', 'ayecode-connect' ),
2501
-				'hour' => _x( 'about an hour', 'time ago', 'ayecode-connect' ),
2502
-				'hours' => _x( 'about %d hours', 'time ago', 'ayecode-connect' ),
2503
-				'day' => _x( 'a day', 'time ago', 'ayecode-connect' ),
2504
-				'days' => _x( '%d days', 'time ago', 'ayecode-connect' ),
2505
-				'month' => _x( 'about a month', 'time ago', 'ayecode-connect' ),
2506
-				'months' => _x( '%d months', 'time ago', 'ayecode-connect' ),
2507
-				'year' => _x( 'about a year', 'time ago', 'ayecode-connect' ),
2508
-				'years' => _x( '%d years', 'time ago', 'ayecode-connect' ),
2509
-			);
2510
-
2511
-			$params = apply_filters( 'ayecode_ui_timeago_params', $params );
2512
-
2513
-			foreach ( (array) $params as $key => $value ) {
2514
-				if ( ! is_scalar( $value ) ) {
2515
-					continue;
2516
-				}
2434
+            return apply_filters( 'ayecode_ui_flatpickr_locale', trim( $locale ) );
2435
+        }
2436
+
2437
+        /**
2438
+         * Select2 JS params.
2439
+         *
2440
+         * @since 0.1.44
2441
+         *
2442
+         * @return array Select2 JS params.
2443
+         */
2444
+        public static function select2_params() {
2445
+            $params = array(
2446
+                'i18n_select_state_text'    => esc_attr__( 'Select an option&hellip;', 'ayecode-connect' ),
2447
+                'i18n_no_matches'           => _x( 'No matches found', 'enhanced select', 'ayecode-connect' ),
2448
+                'i18n_ajax_error'           => _x( 'Loading failed', 'enhanced select', 'ayecode-connect' ),
2449
+                'i18n_input_too_short_1'    => _x( 'Please enter 1 or more characters', 'enhanced select', 'ayecode-connect' ),
2450
+                'i18n_input_too_short_n'    => _x( 'Please enter %item% or more characters', 'enhanced select', 'ayecode-connect' ),
2451
+                'i18n_input_too_long_1'     => _x( 'Please delete 1 character', 'enhanced select', 'ayecode-connect' ),
2452
+                'i18n_input_too_long_n'     => _x( 'Please delete %item% characters', 'enhanced select', 'ayecode-connect' ),
2453
+                'i18n_selection_too_long_1' => _x( 'You can only select 1 item', 'enhanced select', 'ayecode-connect' ),
2454
+                'i18n_selection_too_long_n' => _x( 'You can only select %item% items', 'enhanced select', 'ayecode-connect' ),
2455
+                'i18n_load_more'            => _x( 'Loading more results&hellip;', 'enhanced select', 'ayecode-connect' ),
2456
+                'i18n_searching'            => _x( 'Searching&hellip;', 'enhanced select', 'ayecode-connect' )
2457
+            );
2458
+
2459
+            return apply_filters( 'ayecode_ui_select2_params', $params );
2460
+        }
2461
+
2462
+        /**
2463
+         * Select2 JS localize.
2464
+         *
2465
+         * @since 0.1.44
2466
+         *
2467
+         * @return string Select2 JS locale.
2468
+         */
2469
+        public static function select2_locale() {
2470
+            $params = self::select2_params();
2471
+
2472
+            foreach ( (array) $params as $key => $value ) {
2473
+                if ( ! is_scalar( $value ) ) {
2474
+                    continue;
2475
+                }
2476
+
2477
+                $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2478
+            }
2479
+
2480
+            $locale = json_encode( $params );
2481
+
2482
+            return apply_filters( 'ayecode_ui_select2_locale', trim( $locale ) );
2483
+        }
2484
+
2485
+        /**
2486
+         * Time ago JS localize.
2487
+         *
2488
+         * @since 0.1.47
2489
+         *
2490
+         * @return string Time ago JS locale.
2491
+         */
2492
+        public static function timeago_locale() {
2493
+            $params = array(
2494
+                'prefix_ago' => '',
2495
+                'suffix_ago' => ' ' . _x( 'ago', 'time ago', 'ayecode-connect' ),
2496
+                'prefix_after' => _x( 'after', 'time ago', 'ayecode-connect' ) . ' ',
2497
+                'suffix_after' => '',
2498
+                'seconds' => _x( 'less than a minute', 'time ago', 'ayecode-connect' ),
2499
+                'minute' => _x( 'about a minute', 'time ago', 'ayecode-connect' ),
2500
+                'minutes' => _x( '%d minutes', 'time ago', 'ayecode-connect' ),
2501
+                'hour' => _x( 'about an hour', 'time ago', 'ayecode-connect' ),
2502
+                'hours' => _x( 'about %d hours', 'time ago', 'ayecode-connect' ),
2503
+                'day' => _x( 'a day', 'time ago', 'ayecode-connect' ),
2504
+                'days' => _x( '%d days', 'time ago', 'ayecode-connect' ),
2505
+                'month' => _x( 'about a month', 'time ago', 'ayecode-connect' ),
2506
+                'months' => _x( '%d months', 'time ago', 'ayecode-connect' ),
2507
+                'year' => _x( 'about a year', 'time ago', 'ayecode-connect' ),
2508
+                'years' => _x( '%d years', 'time ago', 'ayecode-connect' ),
2509
+            );
2510
+
2511
+            $params = apply_filters( 'ayecode_ui_timeago_params', $params );
2512
+
2513
+            foreach ( (array) $params as $key => $value ) {
2514
+                if ( ! is_scalar( $value ) ) {
2515
+                    continue;
2516
+                }
2517
+
2518
+                $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2519
+            }
2520
+
2521
+            $locale = json_encode( $params );
2522
+
2523
+            return apply_filters( 'ayecode_ui_timeago_locale', trim( $locale ) );
2524
+        }
2525
+
2526
+        /**
2527
+         * JavaScript Minifier
2528
+         *
2529
+         * @param $input
2530
+         *
2531
+         * @return mixed
2532
+         */
2533
+        public static function minify_js($input) {
2534
+            if(trim($input) === "") return $input;
2535
+            return preg_replace(
2536
+                array(
2537
+                    // Remove comment(s)
2538
+                    '#\s*("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')\s*|\s*\/\*(?!\!|@cc_on)(?>[\s\S]*?\*\/)\s*|\s*(?<![\:\=])\/\/.*(?=[\n\r]|$)|^\s*|\s*$#',
2539
+                    // Remove white-space(s) outside the string and regex
2540
+                    '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/)|\/(?!\/)[^\n\r]*?\/(?=[\s.,;]|[gimuy]|$))|\s*([!%&*\(\)\-=+\[\]\{\}|;:,.<>?\/])\s*#s',
2541
+                    // Remove the last semicolon
2542
+                    '#;+\}#',
2543
+                    // Minify object attribute(s) except JSON attribute(s). From `{'foo':'bar'}` to `{foo:'bar'}`
2544
+                    '#([\{,])([\'])(\d+|[a-z_][a-z0-9_]*)\2(?=\:)#i',
2545
+                    // --ibid. From `foo['bar']` to `foo.bar`
2546
+                    '#([a-z0-9_\)\]])\[([\'"])([a-z_][a-z0-9_]*)\2\]#i'
2547
+                ),
2548
+                array(
2549
+                    '$1',
2550
+                    '$1$2',
2551
+                    '}',
2552
+                    '$1$3',
2553
+                    '$1.$3'
2554
+                ),
2555
+                $input);
2556
+        }
2517 2557
 
2518
-				$params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2519
-			}
2520
-
2521
-			$locale = json_encode( $params );
2522
-
2523
-			return apply_filters( 'ayecode_ui_timeago_locale', trim( $locale ) );
2524
-		}
2525
-
2526
-		/**
2527
-		 * JavaScript Minifier
2528
-		 *
2529
-		 * @param $input
2530
-		 *
2531
-		 * @return mixed
2532
-		 */
2533
-		public static function minify_js($input) {
2534
-			if(trim($input) === "") return $input;
2535
-			return preg_replace(
2536
-				array(
2537
-					// Remove comment(s)
2538
-					'#\s*("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')\s*|\s*\/\*(?!\!|@cc_on)(?>[\s\S]*?\*\/)\s*|\s*(?<![\:\=])\/\/.*(?=[\n\r]|$)|^\s*|\s*$#',
2539
-					// Remove white-space(s) outside the string and regex
2540
-					'#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/)|\/(?!\/)[^\n\r]*?\/(?=[\s.,;]|[gimuy]|$))|\s*([!%&*\(\)\-=+\[\]\{\}|;:,.<>?\/])\s*#s',
2541
-					// Remove the last semicolon
2542
-					'#;+\}#',
2543
-					// Minify object attribute(s) except JSON attribute(s). From `{'foo':'bar'}` to `{foo:'bar'}`
2544
-					'#([\{,])([\'])(\d+|[a-z_][a-z0-9_]*)\2(?=\:)#i',
2545
-					// --ibid. From `foo['bar']` to `foo.bar`
2546
-					'#([a-z0-9_\)\]])\[([\'"])([a-z_][a-z0-9_]*)\2\]#i'
2547
-				),
2548
-				array(
2549
-					'$1',
2550
-					'$1$2',
2551
-					'}',
2552
-					'$1$3',
2553
-					'$1.$3'
2554
-				),
2555
-				$input);
2556
-		}
2557
-
2558
-		/**
2559
-		 * Minify CSS
2560
-		 *
2561
-		 * @param $input
2562
-		 *
2563
-		 * @return mixed
2564
-		 */
2565
-		public static function minify_css($input) {
2566
-			if(trim($input) === "") return $input;
2567
-			return preg_replace(
2568
-				array(
2569
-					// Remove comment(s)
2570
-					'#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')|\/\*(?!\!)(?>.*?\*\/)|^\s*|\s*$#s',
2571
-					// Remove unused white-space(s)
2572
-					'#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/))|\s*+;\s*+(})\s*+|\s*+([*$~^|]?+=|[{};,>~]|\s(?![0-9\.])|!important\b)\s*+|([[(:])\s++|\s++([])])|\s++(:)\s*+(?!(?>[^{}"\']++|"(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')*+{)|^\s++|\s++\z|(\s)\s+#si',
2573
-					// Replace `0(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)` with `0`
2574
-					'#(?<=[\s:])(0)(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)#si',
2575
-					// Replace `:0 0 0 0` with `:0`
2576
-					'#:(0\s+0|0\s+0\s+0\s+0)(?=[;\}]|\!important)#i',
2577
-					// Replace `background-position:0` with `background-position:0 0`
2578
-					'#(background-position):0(?=[;\}])#si',
2579
-					// Replace `0.6` with `.6`, but only when preceded by `:`, `,`, `-` or a white-space
2580
-					'#(?<=[\s:,\-])0+\.(\d+)#s',
2581
-					// Minify string value
2582
-					'#(\/\*(?>.*?\*\/))|(?<!content\:)([\'"])([a-z_][a-z0-9\-_]*?)\2(?=[\s\{\}\];,])#si',
2583
-					'#(\/\*(?>.*?\*\/))|(\burl\()([\'"])([^\s]+?)\3(\))#si',
2584
-					// Minify HEX color code
2585
-					'#(?<=[\s:,\-]\#)([a-f0-6]+)\1([a-f0-6]+)\2([a-f0-6]+)\3#i',
2586
-					// Replace `(border|outline):none` with `(border|outline):0`
2587
-					'#(?<=[\{;])(border|outline):none(?=[;\}\!])#',
2588
-					// Remove empty selector(s)
2589
-					'#(\/\*(?>.*?\*\/))|(^|[\{\}])(?:[^\s\{\}]+)\{\}#s'
2590
-				),
2591
-				array(
2592
-					'$1',
2593
-					'$1$2$3$4$5$6$7',
2594
-					'$1',
2595
-					':0',
2596
-					'$1:0 0',
2597
-					'.$1',
2598
-					'$1$3',
2599
-					'$1$2$4$5',
2600
-					'$1$2$3',
2601
-					'$1:0',
2602
-					'$1$2'
2603
-				),
2604
-				$input);
2605
-		}
2606
-
2607
-		/**
2608
-		 * Get the conditional fields JavaScript.
2609
-		 *
2610
-		 * @return mixed
2611
-		 */
2612
-		public function conditional_fields_js() {
2613
-			ob_start();
2614
-			?>
2558
+        /**
2559
+         * Minify CSS
2560
+         *
2561
+         * @param $input
2562
+         *
2563
+         * @return mixed
2564
+         */
2565
+        public static function minify_css($input) {
2566
+            if(trim($input) === "") return $input;
2567
+            return preg_replace(
2568
+                array(
2569
+                    // Remove comment(s)
2570
+                    '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')|\/\*(?!\!)(?>.*?\*\/)|^\s*|\s*$#s',
2571
+                    // Remove unused white-space(s)
2572
+                    '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/))|\s*+;\s*+(})\s*+|\s*+([*$~^|]?+=|[{};,>~]|\s(?![0-9\.])|!important\b)\s*+|([[(:])\s++|\s++([])])|\s++(:)\s*+(?!(?>[^{}"\']++|"(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')*+{)|^\s++|\s++\z|(\s)\s+#si',
2573
+                    // Replace `0(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)` with `0`
2574
+                    '#(?<=[\s:])(0)(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)#si',
2575
+                    // Replace `:0 0 0 0` with `:0`
2576
+                    '#:(0\s+0|0\s+0\s+0\s+0)(?=[;\}]|\!important)#i',
2577
+                    // Replace `background-position:0` with `background-position:0 0`
2578
+                    '#(background-position):0(?=[;\}])#si',
2579
+                    // Replace `0.6` with `.6`, but only when preceded by `:`, `,`, `-` or a white-space
2580
+                    '#(?<=[\s:,\-])0+\.(\d+)#s',
2581
+                    // Minify string value
2582
+                    '#(\/\*(?>.*?\*\/))|(?<!content\:)([\'"])([a-z_][a-z0-9\-_]*?)\2(?=[\s\{\}\];,])#si',
2583
+                    '#(\/\*(?>.*?\*\/))|(\burl\()([\'"])([^\s]+?)\3(\))#si',
2584
+                    // Minify HEX color code
2585
+                    '#(?<=[\s:,\-]\#)([a-f0-6]+)\1([a-f0-6]+)\2([a-f0-6]+)\3#i',
2586
+                    // Replace `(border|outline):none` with `(border|outline):0`
2587
+                    '#(?<=[\{;])(border|outline):none(?=[;\}\!])#',
2588
+                    // Remove empty selector(s)
2589
+                    '#(\/\*(?>.*?\*\/))|(^|[\{\}])(?:[^\s\{\}]+)\{\}#s'
2590
+                ),
2591
+                array(
2592
+                    '$1',
2593
+                    '$1$2$3$4$5$6$7',
2594
+                    '$1',
2595
+                    ':0',
2596
+                    '$1:0 0',
2597
+                    '.$1',
2598
+                    '$1$3',
2599
+                    '$1$2$4$5',
2600
+                    '$1$2$3',
2601
+                    '$1:0',
2602
+                    '$1$2'
2603
+                ),
2604
+                $input);
2605
+        }
2606
+
2607
+        /**
2608
+         * Get the conditional fields JavaScript.
2609
+         *
2610
+         * @return mixed
2611
+         */
2612
+        public function conditional_fields_js() {
2613
+            ob_start();
2614
+            ?>
2615 2615
             <script>
2616 2616
                 /**
2617 2617
                  * Conditional Fields
@@ -3146,237 +3146,237 @@  discard block
 block discarded – undo
3146 3146
 				<?php do_action( 'aui_conditional_fields_js', $this ); ?>
3147 3147
             </script>
3148 3148
 			<?php
3149
-			$output = ob_get_clean();
3150
-
3151
-			return str_replace( array( '<script>', '</script>' ), '', self::minify_js( $output ) );
3152
-		}
3153
-
3154
-		/**
3155
-		 * Check if block editor page.
3156
-		 *
3157
-		 * @since 0.2.27
3158
-		 *
3159
-		 * @return bool
3160
-		 */
3161
-		public static function is_block_editor() {
3162
-			if ( is_admin() ) {
3163
-				$current_screen = function_exists('get_current_screen' ) ? get_current_screen() : array();
3164
-
3165
-				if ( ! empty( $current_screen ) && $current_screen->is_block_editor() ) {
3166
-					return true;
3167
-				}
3168
-			}
3169
-
3170
-			return false;
3171
-		}
3172
-
3173
-		/**
3174
-		 * Checks if the current call is a ajax call to get the block content.
3175
-		 *
3176
-		 * This can be used in your widget to return different content as the block content.
3177
-		 *
3178
-		 * @since 0.2.27
3179
-		 *
3180
-		 * @return bool
3181
-		 */
3182
-		public static function is_block_content_call() {
3183
-			$result = false;
3184
-			if ( wp_doing_ajax() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'super_duper_output_shortcode' ) {
3185
-				$result = true;
3186
-			}
3187
-
3188
-			return $result;
3189
-		}
3190
-
3191
-		/**
3192
-		 * Tests if the current output is inside a Divi preview.
3193
-		 *
3194
-		 * @since 0.2.27
3195
-		 *
3196
-		 * @return bool
3197
-		 */
3198
-		public static function is_divi_preview() {
3199
-			$result = false;
3200
-			if ( isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) ) {
3201
-				$result = true;
3202
-			}
3203
-
3204
-			return $result;
3205
-		}
3206
-
3207
-		/**
3208
-		 * Tests if the current output is inside a elementor preview.
3209
-		 *
3210
-		 *
3211
-		 * @since 0.2.27
3212
-		 *
3213
-		 * @return bool
3214
-		 */
3215
-		public static function is_elementor_preview() {
3216
-			$result = false;
3217
-			if ( isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' ) ) {
3218
-				$result = true;
3219
-			}
3220
-
3221
-			return $result;
3222
-		}
3223
-
3224
-		/**
3225
-		 * Tests if the current output is inside a Beaver builder preview.
3226
-		 *
3227
-		 * @since 0.2.27
3228
-		 *
3229
-		 * @return bool
3230
-		 */
3231
-		public static function is_beaver_preview() {
3232
-			$result = false;
3233
-			if ( isset( $_REQUEST['fl_builder'] ) ) {
3234
-				$result = true;
3235
-			}
3236
-
3237
-			return $result;
3238
-		}
3239
-
3240
-		/**
3241
-		 * Tests if the current output is inside a siteorigin builder preview.
3242
-		 *
3243
-		 * @since 0.2.27
3244
-		 *
3245
-		 * @return bool
3246
-		 */
3247
-		public static function is_siteorigin_preview() {
3248
-			$result = false;
3249
-			if ( ! empty( $_REQUEST['siteorigin_panels_live_editor'] ) ) {
3250
-				$result = true;
3251
-			}
3252
-
3253
-			return $result;
3254
-		}
3255
-
3256
-		/**
3257
-		 * Tests if the current output is inside a cornerstone builder preview.
3258
-		 *
3259
-		 * @since 0.2.27
3260
-		 *
3261
-		 * @return bool
3262
-		 */
3263
-		public static function is_cornerstone_preview() {
3264
-			$result = false;
3265
-			if ( ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint' ) {
3266
-				$result = true;
3267
-			}
3268
-
3269
-			return $result;
3270
-		}
3271
-
3272
-		/**
3273
-		 * Tests if the current output is inside a fusion builder preview.
3274
-		 *
3275
-		 * @return bool
3276
-		 *@since 1.1.0
3277
-		 */
3278
-		public static function is_fusion_preview() {
3279
-			$result = false;
3280
-			if ( ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] ) ) {
3281
-				$result = true;
3282
-			}
3283
-
3284
-			return $result;
3285
-		}
3286
-
3287
-		/**
3288
-		 * Tests if the current output is inside a Oxygen builder preview.
3289
-		 *
3290
-		 * @return bool
3291
-		 *@since 1.0.18
3292
-		 */
3293
-		public static function is_oxygen_preview() {
3294
-			$result = false;
3295
-			if ( ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === "oxy_render_" || substr( $_REQUEST['action'], 0, 10 ) === "ct_render_" ) ) ) {
3296
-				$result = true;
3297
-			}
3298
-
3299
-			return $result;
3300
-		}
3301
-
3302
-		/**
3303
-		 * Check for Kallyas theme Zion builder preview.
3304
-		 *
3305
-		 * @since 0.2.27
3306
-		 *
3307
-		 * @return bool
3308
-		 */
3309
-		public static function is_kallyas_zion_preview() {
3310
-			$result = false;
3311
-
3312
-			if ( function_exists( 'znhg_kallyas_theme_config' ) && ! empty( $_REQUEST['zn_pb_edit'] ) ) {
3313
-				$result = true;
3314
-			}
3315
-
3316
-			return $result;
3317
-		}
3318
-
3319
-		/**
3320
-		 * Check for Bricks theme builder preview.
3321
-		 *
3322
-		 * @since 0.2.27
3323
-		 *
3324
-		 * @return bool
3325
-		 */
3326
-		public static function is_bricks_preview() {
3327
-			$result = false;
3328
-
3329
-			if ( function_exists( 'bricks_is_builder' ) && ( bricks_is_builder() || bricks_is_builder_call() ) ) {
3330
-				$result = true;
3331
-			}
3332
-
3333
-			return $result;
3334
-		}
3335
-
3336
-		/**
3337
-		 * General function to check if we are in a preview situation.
3338
-		 *
3339
-		 * @since 0.2.27
3340
-		 *
3341
-		 * @return bool
3342
-		 */
3343
-		public static function is_preview() {
3344
-			$preview = false;
3345
-
3346
-			if ( self::is_block_editor() ) {
3347
-				return true;
3348
-			}
3349
-
3350
-			if( self::is_block_content_call() ) {
3351
-				$preview = true;
3352
-			} elseif ( self::is_divi_preview() ) {
3353
-				$preview = true;
3354
-			} elseif ( self::is_elementor_preview() ) {
3355
-				$preview = true;
3356
-			} elseif ( self::is_beaver_preview() ) {
3357
-				$preview = true;
3358
-			} elseif ( self::is_siteorigin_preview() ) {
3359
-				$preview = true;
3360
-			} elseif ( self::is_cornerstone_preview() ) {
3361
-				$preview = true;
3362
-			} elseif ( self::is_fusion_preview() ) {
3363
-				$preview = true;
3364
-			} elseif ( self::is_oxygen_preview() ) {
3365
-				$preview = true;
3366
-			} elseif( self::is_kallyas_zion_preview() ) {
3367
-				$preview = true;
3368
-			} elseif( self::is_bricks_preview() ) {
3369
-				$preview = true;
3370
-			}
3371
-
3372
-			return $preview;
3373
-		}
3374
-	}
3375
-
3376
-	global $ayecode_ui_settings;
3377
-
3378
-	/**
3379
-	 * Run the class if found.
3380
-	 */
3381
-	$ayecode_ui_settings = AyeCode_UI_Settings::instance();
3149
+            $output = ob_get_clean();
3150
+
3151
+            return str_replace( array( '<script>', '</script>' ), '', self::minify_js( $output ) );
3152
+        }
3153
+
3154
+        /**
3155
+         * Check if block editor page.
3156
+         *
3157
+         * @since 0.2.27
3158
+         *
3159
+         * @return bool
3160
+         */
3161
+        public static function is_block_editor() {
3162
+            if ( is_admin() ) {
3163
+                $current_screen = function_exists('get_current_screen' ) ? get_current_screen() : array();
3164
+
3165
+                if ( ! empty( $current_screen ) && $current_screen->is_block_editor() ) {
3166
+                    return true;
3167
+                }
3168
+            }
3169
+
3170
+            return false;
3171
+        }
3172
+
3173
+        /**
3174
+         * Checks if the current call is a ajax call to get the block content.
3175
+         *
3176
+         * This can be used in your widget to return different content as the block content.
3177
+         *
3178
+         * @since 0.2.27
3179
+         *
3180
+         * @return bool
3181
+         */
3182
+        public static function is_block_content_call() {
3183
+            $result = false;
3184
+            if ( wp_doing_ajax() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'super_duper_output_shortcode' ) {
3185
+                $result = true;
3186
+            }
3187
+
3188
+            return $result;
3189
+        }
3190
+
3191
+        /**
3192
+         * Tests if the current output is inside a Divi preview.
3193
+         *
3194
+         * @since 0.2.27
3195
+         *
3196
+         * @return bool
3197
+         */
3198
+        public static function is_divi_preview() {
3199
+            $result = false;
3200
+            if ( isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) ) {
3201
+                $result = true;
3202
+            }
3203
+
3204
+            return $result;
3205
+        }
3206
+
3207
+        /**
3208
+         * Tests if the current output is inside a elementor preview.
3209
+         *
3210
+         *
3211
+         * @since 0.2.27
3212
+         *
3213
+         * @return bool
3214
+         */
3215
+        public static function is_elementor_preview() {
3216
+            $result = false;
3217
+            if ( isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' ) ) {
3218
+                $result = true;
3219
+            }
3220
+
3221
+            return $result;
3222
+        }
3223
+
3224
+        /**
3225
+         * Tests if the current output is inside a Beaver builder preview.
3226
+         *
3227
+         * @since 0.2.27
3228
+         *
3229
+         * @return bool
3230
+         */
3231
+        public static function is_beaver_preview() {
3232
+            $result = false;
3233
+            if ( isset( $_REQUEST['fl_builder'] ) ) {
3234
+                $result = true;
3235
+            }
3236
+
3237
+            return $result;
3238
+        }
3239
+
3240
+        /**
3241
+         * Tests if the current output is inside a siteorigin builder preview.
3242
+         *
3243
+         * @since 0.2.27
3244
+         *
3245
+         * @return bool
3246
+         */
3247
+        public static function is_siteorigin_preview() {
3248
+            $result = false;
3249
+            if ( ! empty( $_REQUEST['siteorigin_panels_live_editor'] ) ) {
3250
+                $result = true;
3251
+            }
3252
+
3253
+            return $result;
3254
+        }
3255
+
3256
+        /**
3257
+         * Tests if the current output is inside a cornerstone builder preview.
3258
+         *
3259
+         * @since 0.2.27
3260
+         *
3261
+         * @return bool
3262
+         */
3263
+        public static function is_cornerstone_preview() {
3264
+            $result = false;
3265
+            if ( ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint' ) {
3266
+                $result = true;
3267
+            }
3268
+
3269
+            return $result;
3270
+        }
3271
+
3272
+        /**
3273
+         * Tests if the current output is inside a fusion builder preview.
3274
+         *
3275
+         * @return bool
3276
+         *@since 1.1.0
3277
+         */
3278
+        public static function is_fusion_preview() {
3279
+            $result = false;
3280
+            if ( ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] ) ) {
3281
+                $result = true;
3282
+            }
3283
+
3284
+            return $result;
3285
+        }
3286
+
3287
+        /**
3288
+         * Tests if the current output is inside a Oxygen builder preview.
3289
+         *
3290
+         * @return bool
3291
+         *@since 1.0.18
3292
+         */
3293
+        public static function is_oxygen_preview() {
3294
+            $result = false;
3295
+            if ( ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === "oxy_render_" || substr( $_REQUEST['action'], 0, 10 ) === "ct_render_" ) ) ) {
3296
+                $result = true;
3297
+            }
3298
+
3299
+            return $result;
3300
+        }
3301
+
3302
+        /**
3303
+         * Check for Kallyas theme Zion builder preview.
3304
+         *
3305
+         * @since 0.2.27
3306
+         *
3307
+         * @return bool
3308
+         */
3309
+        public static function is_kallyas_zion_preview() {
3310
+            $result = false;
3311
+
3312
+            if ( function_exists( 'znhg_kallyas_theme_config' ) && ! empty( $_REQUEST['zn_pb_edit'] ) ) {
3313
+                $result = true;
3314
+            }
3315
+
3316
+            return $result;
3317
+        }
3318
+
3319
+        /**
3320
+         * Check for Bricks theme builder preview.
3321
+         *
3322
+         * @since 0.2.27
3323
+         *
3324
+         * @return bool
3325
+         */
3326
+        public static function is_bricks_preview() {
3327
+            $result = false;
3328
+
3329
+            if ( function_exists( 'bricks_is_builder' ) && ( bricks_is_builder() || bricks_is_builder_call() ) ) {
3330
+                $result = true;
3331
+            }
3332
+
3333
+            return $result;
3334
+        }
3335
+
3336
+        /**
3337
+         * General function to check if we are in a preview situation.
3338
+         *
3339
+         * @since 0.2.27
3340
+         *
3341
+         * @return bool
3342
+         */
3343
+        public static function is_preview() {
3344
+            $preview = false;
3345
+
3346
+            if ( self::is_block_editor() ) {
3347
+                return true;
3348
+            }
3349
+
3350
+            if( self::is_block_content_call() ) {
3351
+                $preview = true;
3352
+            } elseif ( self::is_divi_preview() ) {
3353
+                $preview = true;
3354
+            } elseif ( self::is_elementor_preview() ) {
3355
+                $preview = true;
3356
+            } elseif ( self::is_beaver_preview() ) {
3357
+                $preview = true;
3358
+            } elseif ( self::is_siteorigin_preview() ) {
3359
+                $preview = true;
3360
+            } elseif ( self::is_cornerstone_preview() ) {
3361
+                $preview = true;
3362
+            } elseif ( self::is_fusion_preview() ) {
3363
+                $preview = true;
3364
+            } elseif ( self::is_oxygen_preview() ) {
3365
+                $preview = true;
3366
+            } elseif( self::is_kallyas_zion_preview() ) {
3367
+                $preview = true;
3368
+            } elseif( self::is_bricks_preview() ) {
3369
+                $preview = true;
3370
+            }
3371
+
3372
+            return $preview;
3373
+        }
3374
+    }
3375
+
3376
+    global $ayecode_ui_settings;
3377
+
3378
+    /**
3379
+     * Run the class if found.
3380
+     */
3381
+    $ayecode_ui_settings = AyeCode_UI_Settings::instance();
3382 3382
 }
3383 3383
\ No newline at end of file
Please login to merge, or discard this patch.
vendor/ayecode/wp-ayecode-ui/ayecode-ui-loader.php 2 patches
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.30";
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.30";
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.
Spacing   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -6,39 +6,39 @@
 block discarded – undo
6 6
 /**
7 7
  * Bail if we are not in WP.
8 8
  */
9
-if ( ! defined( 'ABSPATH' ) ) {
9
+if (!defined('ABSPATH')) {
10 10
 	exit;
11 11
 }
12 12
 
13 13
 /**
14 14
  * Set the version only if its the current newest while loading.
15 15
  */
16
-add_action('after_setup_theme', function () {
17
-	global $ayecode_ui_version,$ayecode_ui_file_key;
16
+add_action('after_setup_theme', function() {
17
+	global $ayecode_ui_version, $ayecode_ui_file_key;
18 18
 	$this_version = "0.2.30";
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__ );
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 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
-add_action('after_setup_theme', function () {
28
+add_action('after_setup_theme', function() {
29 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' );
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 33
 	}
34 34
 },1);
35 35
 
36 36
 /**
37 37
  * Add the function that calls the class.
38 38
  */
39
-if(!function_exists('aui')){
40
-	function aui(){
41
-		if(!class_exists("AUI",false)){
39
+if (!function_exists('aui')) {
40
+	function aui() {
41
+		if (!class_exists("AUI", false)) {
42 42
 			return false;
43 43
 		}
44 44
 		return AUI::instance();
Please login to merge, or discard this patch.
vendor/ayecode/wp-super-duper/includes/class-super-duper-bricks-element.php 2 patches
Indentation   +248 added lines, -248 removed lines patch added patch discarded remove patch
@@ -6,246 +6,246 @@  discard block
 block discarded – undo
6 6
 
7 7
 class Super_Duper_Bricks_Element extends \Bricks\Element {
8 8
 
9
-	public $widget;
10
-
11
-	public function __construct( $element = null ) {
12
-
13
-
14
-		$block_icon = !empty($this->widget->options['block-icon']) ? $this->widget->options['block-icon'] : '';
15
-
16
-
17
-		$this->category = !empty($this->widget->options['textdomain']) ? esc_attr( $this->widget->options['textdomain'] ) : 'Super Duper';
18
-		$this->name     = $this->widget->id_base;
19
-		$this->icon     = (strpos($block_icon, 'fa') === 0) ? esc_attr($this->widget->options['block-icon']) : 'fas fa-globe-americas';
20
-
21
-		parent::__construct($element);
22
-	}
23
-
24
-	/**
25
-	 * Set the element name.
26
-	 *
27
-	 * @return array|string|string[]|null
28
-	 */
29
-	public function get_label() {
30
-		$escaped_text = esc_attr( $this->widget->name );
31
-		return str_replace( ' &gt; ', ' > ', $escaped_text ); // keep our > but have it safe
32
-	}
33
-
34
-	/**
35
-	 * Bricks function to set the controls
36
-	 *
37
-	 * @return void
38
-	 */
39
-	public function set_controls() {
40
-		$args = $this->sd_convert_arguments($this->widget);
41
-
42
-		if (!empty($args)) {
43
-			$this->controls = $this->controls + $args;
44
-		}
45
-
46
-	}
47
-
48
-	/**
49
-	 * Set the bricks control groups from the GD ones.
50
-	 *
51
-	 * @return void
52
-	 */
53
-	public function set_control_groups() {
54
-		$args = $this->sd_get_arguments();
55
-
56
-		$groups = array();
57
-		if(!empty($args)) {
58
-			foreach ($args as $k => $v) {
59
-				$g_slug = !empty($v['group']) ? sanitize_title( $v['group'] ) : '';
60
-				if($g_slug && empty($groups[$g_slug])) {
61
-					$groups[$g_slug] = array(
62
-						'title' => esc_html( $v['group'] ),
63
-						'tab' => 'content',
64
-					);
65
-				}
66
-			}
67
-		}
68
-
69
-		if(!empty($groups)) {
70
-			$this->control_groups = $this->control_groups + $groups;
71
-		}
72
-
73
-	}
74
-
75
-	/**
76
-	 * Get the setting input arguments.
77
-	 *
78
-	 * @return mixed
79
-	 */
80
-	public function sd_get_arguments() {
81
-		$args = $this->widget->set_arguments();
82
-		$arg_keys_subtract = $this->sd_remove_arguments();
83
-
84
-		if ( ! empty( $arg_keys_subtract ) ) {
85
-			foreach($arg_keys_subtract as $key ){
86
-				unset($args[$key]);
87
-			}
88
-		}
89
-
90
-		return $args;
91
-	}
92
-
93
-
94
-	/**
95
-	 * Simply use our own render function for the output.
96
-	 *
97
-	 * @return void
98
-	 */
99
-	public function render() {
100
-		$settings   = $this->sd_maybe_convert_values( $this->settings );
101
-
102
-
103
-		// set the AyeCode UI calss on the wrapper
104
-		$this->set_attribute( '_root', 'class', 'bsui' );
105
-
106
-		// we might need to add a placeholder here for previews.
107
-
108
-		// add the bricks attributes to wrapper
109
-		echo "<div {$this->render_attributes( '_root' )}>";
110
-		echo $this->widget->output($settings);
111
-		echo '</div>';
112
-	}
113
-
114
-	/**
115
-	 * Values can never be arrays so convert if bricks setting make it an array.
116
-	 *
117
-	 * @param $settings
118
-	 * @return mixed
119
-	 */
120
-	public function sd_maybe_convert_values( $settings ) {
121
-
122
-
123
-		if (!empty($settings)) {
124
-			foreach( $settings as $k => $v ) {
125
-				if(is_array($v)) {
126
-					$value = '';
127
-					// is color
128
-					if (isset($v['hex'])) {
129
-						$value = $v['hex'];
130
-					} elseif (isset($v['icon'])) {
131
-						$value = $v['icon'];
132
-					}
133
-
134
-
135
-					// set the value
136
-					$settings[$k] = $value;
137
-				}
138
-
139
-			}
140
-		}
141
-
142
-		return $settings;
143
-	}
144
-
145
-	/**
146
-	 * Convert SD arguments to Bricks arguments.
147
-	 *
148
-	 * @param $widget
149
-	 *
150
-	 * @return array
151
-	 */
152
-	public function sd_convert_arguments()
153
-	{
154
-		$bricks_args = array();
155
-
156
-		$args = $this->sd_get_arguments();
157
-
158
-		if (!empty($args)) {
159
-			foreach ($args as $key => $arg) {
160
-
161
-				// convert title
162
-				if (!empty($arg['title'])) {
163
-					$arg['label'] = $arg['title'];
164
-					unset($arg['title']);
165
-				}
166
-
167
-				// set fields not to use dynamic data
168
-				$arg['hasDynamicData'] = false;
169
-
170
-				if (!empty($arg['group'])) {
171
-					$arg['group'] =  sanitize_title($arg['group']);
172
-				}
173
-
174
-				$arg['rerender'] = true;
175
-
176
-				// required
177
-				if(!empty($arg['element_require'])) {
178
-					$arg['required'] = $this->sd_convert_required($arg['element_require']);
179
-					unset($arg['element_require']);
180
-				}
181
-
182
-				// icons
183
-				if ('icon' === $key) {
184
-					$arg['type'] = 'icon';
185
-				}
186
-
187
-				$bricks_args[$key] = $arg;
188
-
189
-			}
190
-
191
-		}
192
-
193
-		return $bricks_args;
194
-
195
-	}
196
-
197
-	/**
198
-	 * Convert the SD element_required to the Bricks required syntax.
199
-	 *
200
-	 * @param $element_require
201
-	 * @return array
202
-	 */
203
-	public function sd_convert_required($element_require) {
204
-		$bricks_required = [];
205
-
206
-		// Handle logical OR (||) for multiple values
207
-		if (strpos($element_require, '||') !== false) {
208
-			preg_match('/\[%(.+?)%\] *== *"(.*?)"/', $element_require, $matches);
209
-			if ($matches) {
210
-				$control_id = $matches[1];
211
-				preg_match_all('/\[%.*?%\] *== *"(.*?)"/', $element_require, $value_matches);
212
-				$values = $value_matches[1];
213
-				$bricks_required[] = [$control_id, '=', $values];
214
-			}
215
-			return $bricks_required;
216
-		}
217
-
218
-		// Match individual conditions
219
-		preg_match_all('/(!)?\[%(.*?)%\](?:\s*([!=<>]=?)\s*(".*?"|\'.*?\'|\d+))?/', $element_require, $matches, PREG_SET_ORDER);
220
-
221
-		foreach ($matches as $match) {
222
-			$is_negation = isset($match[1]) && $match[1] === '!';
223
-			$control_id = $match[2];
224
-			$operator = isset($match[3]) ? str_replace('==', '=', $match[3]) : ($is_negation ? '=' : '!=');
225
-			$value = isset($match[4]) ? trim($match[4], '"\'') : ($is_negation ? '' : '');
226
-
227
-			// Adjust for negation without explicit operator
228
-			if ($is_negation && !isset($match[3])) {
229
-				$operator = '=';
230
-				$value = '';
231
-			}
232
-
233
-			$bricks_required[] = [$control_id, $operator, $value];
234
-		}
235
-
236
-		return $bricks_required;
237
-	}
238
-
239
-
240
-	/**
241
-	 * A way to remove some settings by keys.
242
-	 *
243
-	 * @return array
244
-	 */
245
-	public function sd_remove_arguments()
246
-	{
247
-		return array();
248
-	}
9
+    public $widget;
10
+
11
+    public function __construct( $element = null ) {
12
+
13
+
14
+        $block_icon = !empty($this->widget->options['block-icon']) ? $this->widget->options['block-icon'] : '';
15
+
16
+
17
+        $this->category = !empty($this->widget->options['textdomain']) ? esc_attr( $this->widget->options['textdomain'] ) : 'Super Duper';
18
+        $this->name     = $this->widget->id_base;
19
+        $this->icon     = (strpos($block_icon, 'fa') === 0) ? esc_attr($this->widget->options['block-icon']) : 'fas fa-globe-americas';
20
+
21
+        parent::__construct($element);
22
+    }
23
+
24
+    /**
25
+     * Set the element name.
26
+     *
27
+     * @return array|string|string[]|null
28
+     */
29
+    public function get_label() {
30
+        $escaped_text = esc_attr( $this->widget->name );
31
+        return str_replace( ' &gt; ', ' > ', $escaped_text ); // keep our > but have it safe
32
+    }
33
+
34
+    /**
35
+     * Bricks function to set the controls
36
+     *
37
+     * @return void
38
+     */
39
+    public function set_controls() {
40
+        $args = $this->sd_convert_arguments($this->widget);
41
+
42
+        if (!empty($args)) {
43
+            $this->controls = $this->controls + $args;
44
+        }
45
+
46
+    }
47
+
48
+    /**
49
+     * Set the bricks control groups from the GD ones.
50
+     *
51
+     * @return void
52
+     */
53
+    public function set_control_groups() {
54
+        $args = $this->sd_get_arguments();
55
+
56
+        $groups = array();
57
+        if(!empty($args)) {
58
+            foreach ($args as $k => $v) {
59
+                $g_slug = !empty($v['group']) ? sanitize_title( $v['group'] ) : '';
60
+                if($g_slug && empty($groups[$g_slug])) {
61
+                    $groups[$g_slug] = array(
62
+                        'title' => esc_html( $v['group'] ),
63
+                        'tab' => 'content',
64
+                    );
65
+                }
66
+            }
67
+        }
68
+
69
+        if(!empty($groups)) {
70
+            $this->control_groups = $this->control_groups + $groups;
71
+        }
72
+
73
+    }
74
+
75
+    /**
76
+     * Get the setting input arguments.
77
+     *
78
+     * @return mixed
79
+     */
80
+    public function sd_get_arguments() {
81
+        $args = $this->widget->set_arguments();
82
+        $arg_keys_subtract = $this->sd_remove_arguments();
83
+
84
+        if ( ! empty( $arg_keys_subtract ) ) {
85
+            foreach($arg_keys_subtract as $key ){
86
+                unset($args[$key]);
87
+            }
88
+        }
89
+
90
+        return $args;
91
+    }
92
+
93
+
94
+    /**
95
+     * Simply use our own render function for the output.
96
+     *
97
+     * @return void
98
+     */
99
+    public function render() {
100
+        $settings   = $this->sd_maybe_convert_values( $this->settings );
101
+
102
+
103
+        // set the AyeCode UI calss on the wrapper
104
+        $this->set_attribute( '_root', 'class', 'bsui' );
105
+
106
+        // we might need to add a placeholder here for previews.
107
+
108
+        // add the bricks attributes to wrapper
109
+        echo "<div {$this->render_attributes( '_root' )}>";
110
+        echo $this->widget->output($settings);
111
+        echo '</div>';
112
+    }
113
+
114
+    /**
115
+     * Values can never be arrays so convert if bricks setting make it an array.
116
+     *
117
+     * @param $settings
118
+     * @return mixed
119
+     */
120
+    public function sd_maybe_convert_values( $settings ) {
121
+
122
+
123
+        if (!empty($settings)) {
124
+            foreach( $settings as $k => $v ) {
125
+                if(is_array($v)) {
126
+                    $value = '';
127
+                    // is color
128
+                    if (isset($v['hex'])) {
129
+                        $value = $v['hex'];
130
+                    } elseif (isset($v['icon'])) {
131
+                        $value = $v['icon'];
132
+                    }
133
+
134
+
135
+                    // set the value
136
+                    $settings[$k] = $value;
137
+                }
138
+
139
+            }
140
+        }
141
+
142
+        return $settings;
143
+    }
144
+
145
+    /**
146
+     * Convert SD arguments to Bricks arguments.
147
+     *
148
+     * @param $widget
149
+     *
150
+     * @return array
151
+     */
152
+    public function sd_convert_arguments()
153
+    {
154
+        $bricks_args = array();
155
+
156
+        $args = $this->sd_get_arguments();
157
+
158
+        if (!empty($args)) {
159
+            foreach ($args as $key => $arg) {
160
+
161
+                // convert title
162
+                if (!empty($arg['title'])) {
163
+                    $arg['label'] = $arg['title'];
164
+                    unset($arg['title']);
165
+                }
166
+
167
+                // set fields not to use dynamic data
168
+                $arg['hasDynamicData'] = false;
169
+
170
+                if (!empty($arg['group'])) {
171
+                    $arg['group'] =  sanitize_title($arg['group']);
172
+                }
173
+
174
+                $arg['rerender'] = true;
175
+
176
+                // required
177
+                if(!empty($arg['element_require'])) {
178
+                    $arg['required'] = $this->sd_convert_required($arg['element_require']);
179
+                    unset($arg['element_require']);
180
+                }
181
+
182
+                // icons
183
+                if ('icon' === $key) {
184
+                    $arg['type'] = 'icon';
185
+                }
186
+
187
+                $bricks_args[$key] = $arg;
188
+
189
+            }
190
+
191
+        }
192
+
193
+        return $bricks_args;
194
+
195
+    }
196
+
197
+    /**
198
+     * Convert the SD element_required to the Bricks required syntax.
199
+     *
200
+     * @param $element_require
201
+     * @return array
202
+     */
203
+    public function sd_convert_required($element_require) {
204
+        $bricks_required = [];
205
+
206
+        // Handle logical OR (||) for multiple values
207
+        if (strpos($element_require, '||') !== false) {
208
+            preg_match('/\[%(.+?)%\] *== *"(.*?)"/', $element_require, $matches);
209
+            if ($matches) {
210
+                $control_id = $matches[1];
211
+                preg_match_all('/\[%.*?%\] *== *"(.*?)"/', $element_require, $value_matches);
212
+                $values = $value_matches[1];
213
+                $bricks_required[] = [$control_id, '=', $values];
214
+            }
215
+            return $bricks_required;
216
+        }
217
+
218
+        // Match individual conditions
219
+        preg_match_all('/(!)?\[%(.*?)%\](?:\s*([!=<>]=?)\s*(".*?"|\'.*?\'|\d+))?/', $element_require, $matches, PREG_SET_ORDER);
220
+
221
+        foreach ($matches as $match) {
222
+            $is_negation = isset($match[1]) && $match[1] === '!';
223
+            $control_id = $match[2];
224
+            $operator = isset($match[3]) ? str_replace('==', '=', $match[3]) : ($is_negation ? '=' : '!=');
225
+            $value = isset($match[4]) ? trim($match[4], '"\'') : ($is_negation ? '' : '');
226
+
227
+            // Adjust for negation without explicit operator
228
+            if ($is_negation && !isset($match[3])) {
229
+                $operator = '=';
230
+                $value = '';
231
+            }
232
+
233
+            $bricks_required[] = [$control_id, $operator, $value];
234
+        }
235
+
236
+        return $bricks_required;
237
+    }
238
+
239
+
240
+    /**
241
+     * A way to remove some settings by keys.
242
+     *
243
+     * @return array
244
+     */
245
+    public function sd_remove_arguments()
246
+    {
247
+        return array();
248
+    }
249 249
 
250 250
 }
251 251
 
@@ -255,12 +255,12 @@  discard block
 block discarded – undo
255 255
  */
256 256
 add_action( 'wp_enqueue_scripts', function() {
257 257
 
258
-	// Check if we're in the Bricks Editor
259
-	if ( isset( $_GET['bricks'] ) && $_GET['bricks'] && bricks_is_builder_main() ) {
260
-		// Add inline script to the 'bricks-builder' script
261
-		wp_add_inline_script(
262
-			'bricks-builder',
263
-			"
258
+    // Check if we're in the Bricks Editor
259
+    if ( isset( $_GET['bricks'] ) && $_GET['bricks'] && bricks_is_builder_main() ) {
260
+        // Add inline script to the 'bricks-builder' script
261
+        wp_add_inline_script(
262
+            'bricks-builder',
263
+            "
264 264
 
265 265
 (function () {
266 266
     // Function to get the current breakpoint from the #bricks-preview class
@@ -467,6 +467,6 @@  discard block
 block discarded – undo
467 467
     addIconsToLabels();
468 468
 })();
469 469
 "
470
-		);
471
-	}
470
+        );
471
+    }
472 472
 });
Please login to merge, or discard this patch.
Spacing   +22 added lines, -22 removed lines patch added patch discarded remove patch
@@ -1,20 +1,20 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 
4
-if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
4
+if (!defined('ABSPATH')) exit; // Exit if accessed directly
5 5
 
6 6
 
7 7
 class Super_Duper_Bricks_Element extends \Bricks\Element {
8 8
 
9 9
 	public $widget;
10 10
 
11
-	public function __construct( $element = null ) {
11
+	public function __construct($element = null) {
12 12
 
13 13
 
14 14
 		$block_icon = !empty($this->widget->options['block-icon']) ? $this->widget->options['block-icon'] : '';
15 15
 
16 16
 
17
-		$this->category = !empty($this->widget->options['textdomain']) ? esc_attr( $this->widget->options['textdomain'] ) : 'Super Duper';
17
+		$this->category = !empty($this->widget->options['textdomain']) ? esc_attr($this->widget->options['textdomain']) : 'Super Duper';
18 18
 		$this->name     = $this->widget->id_base;
19 19
 		$this->icon     = (strpos($block_icon, 'fa') === 0) ? esc_attr($this->widget->options['block-icon']) : 'fas fa-globe-americas';
20 20
 
@@ -27,8 +27,8 @@  discard block
 block discarded – undo
27 27
 	 * @return array|string|string[]|null
28 28
 	 */
29 29
 	public function get_label() {
30
-		$escaped_text = esc_attr( $this->widget->name );
31
-		return str_replace( ' &gt; ', ' > ', $escaped_text ); // keep our > but have it safe
30
+		$escaped_text = esc_attr($this->widget->name);
31
+		return str_replace(' &gt; ', ' > ', $escaped_text); // keep our > but have it safe
32 32
 	}
33 33
 
34 34
 	/**
@@ -54,19 +54,19 @@  discard block
 block discarded – undo
54 54
 		$args = $this->sd_get_arguments();
55 55
 
56 56
 		$groups = array();
57
-		if(!empty($args)) {
57
+		if (!empty($args)) {
58 58
 			foreach ($args as $k => $v) {
59
-				$g_slug = !empty($v['group']) ? sanitize_title( $v['group'] ) : '';
60
-				if($g_slug && empty($groups[$g_slug])) {
59
+				$g_slug = !empty($v['group']) ? sanitize_title($v['group']) : '';
60
+				if ($g_slug && empty($groups[$g_slug])) {
61 61
 					$groups[$g_slug] = array(
62
-						'title' => esc_html( $v['group'] ),
62
+						'title' => esc_html($v['group']),
63 63
 						'tab' => 'content',
64 64
 					);
65 65
 				}
66 66
 			}
67 67
 		}
68 68
 
69
-		if(!empty($groups)) {
69
+		if (!empty($groups)) {
70 70
 			$this->control_groups = $this->control_groups + $groups;
71 71
 		}
72 72
 
@@ -81,8 +81,8 @@  discard block
 block discarded – undo
81 81
 		$args = $this->widget->set_arguments();
82 82
 		$arg_keys_subtract = $this->sd_remove_arguments();
83 83
 
84
-		if ( ! empty( $arg_keys_subtract ) ) {
85
-			foreach($arg_keys_subtract as $key ){
84
+		if (!empty($arg_keys_subtract)) {
85
+			foreach ($arg_keys_subtract as $key) {
86 86
 				unset($args[$key]);
87 87
 			}
88 88
 		}
@@ -97,16 +97,16 @@  discard block
 block discarded – undo
97 97
 	 * @return void
98 98
 	 */
99 99
 	public function render() {
100
-		$settings   = $this->sd_maybe_convert_values( $this->settings );
100
+		$settings = $this->sd_maybe_convert_values($this->settings);
101 101
 
102 102
 
103 103
 		// set the AyeCode UI calss on the wrapper
104
-		$this->set_attribute( '_root', 'class', 'bsui' );
104
+		$this->set_attribute('_root', 'class', 'bsui');
105 105
 
106 106
 		// we might need to add a placeholder here for previews.
107 107
 
108 108
 		// add the bricks attributes to wrapper
109
-		echo "<div {$this->render_attributes( '_root' )}>";
109
+		echo "<div {$this->render_attributes('_root')}>";
110 110
 		echo $this->widget->output($settings);
111 111
 		echo '</div>';
112 112
 	}
@@ -117,12 +117,12 @@  discard block
 block discarded – undo
117 117
 	 * @param $settings
118 118
 	 * @return mixed
119 119
 	 */
120
-	public function sd_maybe_convert_values( $settings ) {
120
+	public function sd_maybe_convert_values($settings) {
121 121
 
122 122
 
123 123
 		if (!empty($settings)) {
124
-			foreach( $settings as $k => $v ) {
125
-				if(is_array($v)) {
124
+			foreach ($settings as $k => $v) {
125
+				if (is_array($v)) {
126 126
 					$value = '';
127 127
 					// is color
128 128
 					if (isset($v['hex'])) {
@@ -168,13 +168,13 @@  discard block
 block discarded – undo
168 168
 				$arg['hasDynamicData'] = false;
169 169
 
170 170
 				if (!empty($arg['group'])) {
171
-					$arg['group'] =  sanitize_title($arg['group']);
171
+					$arg['group'] = sanitize_title($arg['group']);
172 172
 				}
173 173
 
174 174
 				$arg['rerender'] = true;
175 175
 
176 176
 				// required
177
-				if(!empty($arg['element_require'])) {
177
+				if (!empty($arg['element_require'])) {
178 178
 					$arg['required'] = $this->sd_convert_required($arg['element_require']);
179 179
 					unset($arg['element_require']);
180 180
 				}
@@ -253,10 +253,10 @@  discard block
 block discarded – undo
253 253
 /**
254 254
  * This implements the desktop, tablet and mobile breakpoints views with our fields that are hidden on these types and adda the icon after the label to show which it applies to.
255 255
  */
256
-add_action( 'wp_enqueue_scripts', function() {
256
+add_action('wp_enqueue_scripts', function() {
257 257
 
258 258
 	// Check if we're in the Bricks Editor
259
-	if ( isset( $_GET['bricks'] ) && $_GET['bricks'] && bricks_is_builder_main() ) {
259
+	if (isset($_GET['bricks']) && $_GET['bricks'] && bricks_is_builder_main()) {
260 260
 		// Add inline script to the 'bricks-builder' script
261 261
 		wp_add_inline_script(
262 262
 			'bricks-builder',
Please login to merge, or discard this patch.
vendor/ayecode/wp-super-duper/sd-plugin.php 1 patch
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -14,26 +14,26 @@
 block discarded – undo
14 14
  * Tested up to: 6.7
15 15
  */
16 16
 
17
-if ( ! defined( 'ABSPATH' ) ) {
17
+if (!defined('ABSPATH')) {
18 18
 	exit;
19 19
 }
20 20
 
21
-if ( ! class_exists( 'WP_Super_Duper' ) ) {
21
+if (!class_exists('WP_Super_Duper')) {
22 22
 	// include the class if needed
23
-	include_once( dirname( __FILE__ ) . "/wp-super-duper.php" );
23
+	include_once(dirname(__FILE__) . "/wp-super-duper.php");
24 24
 }
25 25
 
26 26
 /*
27 27
  * Hello world example.
28 28
  */
29
-include_once( dirname( __FILE__ ) . "/hello-world.php" );
29
+include_once(dirname(__FILE__) . "/hello-world.php");
30 30
 
31 31
 /*
32 32
  * Map example.
33 33
  */
34
-include_once( dirname( __FILE__ ) . "/map.php" );
34
+include_once(dirname(__FILE__) . "/map.php");
35 35
 
36 36
 
37
-if ( ! function_exists( 'sd_get_class_build_keys' ) ) {
38
-	include_once( dirname( __FILE__ ) . "/sd-functions.php" );
37
+if (!function_exists('sd_get_class_build_keys')) {
38
+	include_once(dirname(__FILE__) . "/sd-functions.php");
39 39
 }
40 40
\ No newline at end of file
Please login to merge, or discard this patch.
vendor/ayecode/wp-super-duper/wp-super-duper.php 2 patches
Indentation   +2637 added lines, -2637 removed lines patch added patch discarded remove patch
@@ -1,147 +1,147 @@  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.2.16' );
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
-
59
-			// nested blocks can't work as a widget
60
-			if(!empty($this->options['nested-block'])){
61
-				if(empty($this->options['output_types'])){
62
-					$this->options['output_types'] = array('shortcode','block');
63
-				}elseif (($key = array_search('widget', $this->options['output_types'])) !== false) {
64
-					unset($this->options['output_types'][$key]);
65
-				}
66
-			}
8
+    define( 'SUPER_DUPER_VER', '1.2.16' );
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;
67 30
 
68
-			// init parent
69
-			if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){
70
-				parent::__construct( $options['base_id'], $options['name'], $options['widget_ops'] );
71
-			}
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
+
59
+            // nested blocks can't work as a widget
60
+            if(!empty($this->options['nested-block'])){
61
+                if(empty($this->options['output_types'])){
62
+                    $this->options['output_types'] = array('shortcode','block');
63
+                }elseif (($key = array_search('widget', $this->options['output_types'])) !== false) {
64
+                    unset($this->options['output_types'][$key]);
65
+                }
66
+            }
72 67
 
68
+            // init parent
69
+            if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){
70
+                parent::__construct( $options['base_id'], $options['name'], $options['widget_ops'] );
71
+            }
73 72
 
74
-			if ( isset( $options['class_name'] ) ) {
75
-				// register widget
76
-				$this->class_name = $options['class_name'];
77 73
 
78
-				// register shortcode, this needs to be done even for blocks and widgets
79
-				$this->register_shortcode();
74
+            if ( isset( $options['class_name'] ) ) {
75
+                // register widget
76
+                $this->class_name = $options['class_name'];
80 77
 
78
+                // register shortcode, this needs to be done even for blocks and widgets
79
+                $this->register_shortcode();
81 80
 
82
-				// Fusion Builder (avada) support
83
-				if ( function_exists( 'fusion_builder_map' ) ) {
84
-					add_action( 'init', array( $this, 'register_fusion_element' ) );
85
-				}
81
+
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 87
                 // maybe load the Bricks transformer class
88 88
                 if( class_exists('\Bricks\Elements', false) ){
89
-					add_action( 'init', array( $this, 'load_bricks_element_class' ) );
89
+                    add_action( 'init', array( $this, 'load_bricks_element_class' ) );
90 90
                 }
91 91
 
92
-				// register block
93
-				if(empty($this->options['output_types']) || in_array('block',$this->options['output_types'])){
94
-					add_action( 'admin_enqueue_scripts', array( $this, 'register_block' ) );
95
-				}
96
-			}
92
+                // register block
93
+                if(empty($this->options['output_types']) || in_array('block',$this->options['output_types'])){
94
+                    add_action( 'admin_enqueue_scripts', array( $this, 'register_block' ) );
95
+                }
96
+            }
97 97
 
98
-			// add the CSS and JS we need ONCE
99
-			global $sd_widget_scripts;
98
+            // add the CSS and JS we need ONCE
99
+            global $sd_widget_scripts;
100 100
 
101
-			if ( ! $sd_widget_scripts ) {
102
-				wp_add_inline_script( 'admin-widgets', $this->widget_js() );
103
-				wp_add_inline_script( 'customize-controls', $this->widget_js() );
104
-				wp_add_inline_style( 'widgets', $this->widget_css() );
101
+            if ( ! $sd_widget_scripts ) {
102
+                wp_add_inline_script( 'admin-widgets', $this->widget_js() );
103
+                wp_add_inline_script( 'customize-controls', $this->widget_js() );
104
+                wp_add_inline_style( 'widgets', $this->widget_css() );
105 105
 
106
-				// maybe add elementor editor styles
107
-				add_action( 'elementor/editor/after_enqueue_styles', array( $this, 'elementor_editor_styles' ) );
106
+                // maybe add elementor editor styles
107
+                add_action( 'elementor/editor/after_enqueue_styles', array( $this, 'elementor_editor_styles' ) );
108 108
 
109
-				$sd_widget_scripts = true;
109
+                $sd_widget_scripts = true;
110 110
 
111
-				// add shortcode insert button once
112
-				add_action( 'media_buttons', array( $this, 'wp_media_buttons' ), 1 );
113
-				add_action( 'media_buttons', array( $this, 'shortcode_insert_button' ) );
114
-				// generatepress theme sections compatibility
115
-				if ( function_exists( 'generate_sections_sections_metabox' ) ) {
116
-					add_action( 'generate_sections_metabox', array( $this, 'shortcode_insert_button_script' ) );
117
-				}
118
-				/* Load script on Divi theme builder page */
119
-				if ( function_exists( 'et_builder_is_tb_admin_screen' ) && et_builder_is_tb_admin_screen() ) {
120
-					add_thickbox();
121
-					add_action( 'admin_footer', array( $this, 'shortcode_insert_button_script' ) );
122
-				}
111
+                // add shortcode insert button once
112
+                add_action( 'media_buttons', array( $this, 'wp_media_buttons' ), 1 );
113
+                add_action( 'media_buttons', array( $this, 'shortcode_insert_button' ) );
114
+                // generatepress theme sections compatibility
115
+                if ( function_exists( 'generate_sections_sections_metabox' ) ) {
116
+                    add_action( 'generate_sections_metabox', array( $this, 'shortcode_insert_button_script' ) );
117
+                }
118
+                /* Load script on Divi theme builder page */
119
+                if ( function_exists( 'et_builder_is_tb_admin_screen' ) && et_builder_is_tb_admin_screen() ) {
120
+                    add_thickbox();
121
+                    add_action( 'admin_footer', array( $this, 'shortcode_insert_button_script' ) );
122
+                }
123 123
 
124
-				if ( $this->is_preview() ) {
125
-					add_action( 'wp_footer', array( $this, 'shortcode_insert_button_script' ) );
126
-					// this makes the insert button work for elementor
127
-					add_action( 'elementor/editor/after_enqueue_scripts', array(
128
-						$this,
129
-						'shortcode_insert_button_script'
130
-					) ); // for elementor
131
-				}
132
-				// this makes the insert button work for cornerstone
133
-				add_action( 'wp_print_footer_scripts', array( __CLASS__, 'maybe_cornerstone_builder' ) );
124
+                if ( $this->is_preview() ) {
125
+                    add_action( 'wp_footer', array( $this, 'shortcode_insert_button_script' ) );
126
+                    // this makes the insert button work for elementor
127
+                    add_action( 'elementor/editor/after_enqueue_scripts', array(
128
+                        $this,
129
+                        'shortcode_insert_button_script'
130
+                    ) ); // for elementor
131
+                }
132
+                // this makes the insert button work for cornerstone
133
+                add_action( 'wp_print_footer_scripts', array( __CLASS__, 'maybe_cornerstone_builder' ) );
134 134
 
135
-				add_action( 'wp_ajax_super_duper_get_widget_settings', array( __CLASS__, 'get_widget_settings' ) );
136
-				add_action( 'wp_ajax_super_duper_get_picker', array( __CLASS__, 'get_picker' ) );
135
+                add_action( 'wp_ajax_super_duper_get_widget_settings', array( __CLASS__, 'get_widget_settings' ) );
136
+                add_action( 'wp_ajax_super_duper_get_picker', array( __CLASS__, 'get_picker' ) );
137 137
 
138
-				// add generator text to head
139
-				add_action( 'admin_head', array( $this, 'generator' ), 99 );
140
-				add_action( 'wp_head', array( $this, 'generator' ), 99 );
141
-			}
138
+                // add generator text to head
139
+                add_action( 'admin_head', array( $this, 'generator' ), 99 );
140
+                add_action( 'wp_head', array( $this, 'generator' ), 99 );
141
+            }
142 142
 
143
-			do_action( 'wp_super_duper_widget_init', $options, $this );
144
-		}
143
+            do_action( 'wp_super_duper_widget_init', $options, $this );
144
+        }
145 145
 
146 146
         /**
147 147
          * Load the Bricks conversion class if we are running Bricks.
@@ -151,163 +151,163 @@  discard block
 block discarded – undo
151 151
                     include_once __DIR__ . '/includes/class-super-duper-bricks-element.php';
152 152
         }
153 153
 
154
-		/**
155
-		 * The register widget function
156
-		 * @return void
157
-		 */
158
-		public function _register() {
159
-			if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){
160
-				parent::_register();
161
-			}
162
-		}
163
-
164
-		/**
165
-		 * Add our widget CSS to elementor editor.
166
-		 */
167
-		public function elementor_editor_styles() {
168
-			wp_add_inline_style( 'elementor-editor', $this->widget_css( false ) );
169
-		}
170
-
171
-		public function register_fusion_element() {
172
-
173
-			$options = $this->options;
174
-
175
-			if ( $this->base_id ) {
176
-
177
-				$params = $this->get_fusion_params();
178
-
179
-				$args = array(
180
-					'name'            => $options['name'],
181
-					'shortcode'       => $this->base_id,
182
-					'icon'            => $options['block-icon'] ? $options['block-icon'] : 'far fa-square',
183
-					'allow_generator' => true,
184
-				);
185
-
186
-				if ( ! empty( $params ) ) {
187
-					$args['params'] = $params;
188
-				}
189
-
190
-				fusion_builder_map( $args );
191
-			}
154
+        /**
155
+         * The register widget function
156
+         * @return void
157
+         */
158
+        public function _register() {
159
+            if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){
160
+                parent::_register();
161
+            }
162
+        }
192 163
 
193
-		}
164
+        /**
165
+         * Add our widget CSS to elementor editor.
166
+         */
167
+        public function elementor_editor_styles() {
168
+            wp_add_inline_style( 'elementor-editor', $this->widget_css( false ) );
169
+        }
194 170
 
195
-		public function get_fusion_params() {
196
-			$params    = array();
197
-			$arguments = $this->get_arguments();
198
-
199
-			if ( ! empty( $arguments ) ) {
200
-				foreach ( $arguments as $key => $val ) {
201
-					$param = array();
202
-					// type
203
-					$param['type'] = str_replace(
204
-						array(
205
-							"text",
206
-							"number",
207
-							"email",
208
-							"color",
209
-							"checkbox"
210
-						),
211
-						array(
212
-							"textfield",
213
-							"textfield",
214
-							"textfield",
215
-							"colorpicker",
216
-							"select",
171
+        public function register_fusion_element() {
217 172
 
218
-						),
219
-						$val['type'] );
173
+            $options = $this->options;
220 174
 
221
-					// multiselect
222
-					if ( $val['type'] == 'multiselect' || ( ( $param['type'] == 'select' || $val['type'] == 'select' ) && ! empty( $val['multiple'] ) ) ) {
223
-						$param['type']     = 'multiple_select';
224
-						$param['multiple'] = true;
225
-					}
175
+            if ( $this->base_id ) {
226 176
 
227
-					// heading
228
-					$param['heading'] = isset( $val['title'] ) ? $val['title'] : '';
177
+                $params = $this->get_fusion_params();
229 178
 
230
-					// description
231
-					$param['description'] = isset( $val['desc'] ) ? $val['desc'] : '';
179
+                $args = array(
180
+                    'name'            => $options['name'],
181
+                    'shortcode'       => $this->base_id,
182
+                    'icon'            => $options['block-icon'] ? $options['block-icon'] : 'far fa-square',
183
+                    'allow_generator' => true,
184
+                );
232 185
 
233
-					// param_name
234
-					$param['param_name'] = $key;
186
+                if ( ! empty( $params ) ) {
187
+                    $args['params'] = $params;
188
+                }
235 189
 
236
-					// Default
237
-					$param['default'] = isset( $val['default'] ) ? $val['default'] : '';
190
+                fusion_builder_map( $args );
191
+            }
238 192
 
239
-					// Group
240
-					if ( isset( $val['group'] ) ) {
241
-						$param['group'] = $val['group'];
242
-					}
193
+        }
243 194
 
244
-					// value
245
-					if ( $val['type'] == 'checkbox' ) {
246
-						if ( isset( $val['default'] ) && $val['default'] == '0' ) {
247
-							unset( $param['default'] );
248
-						}
249
-						$param['value'] = array( '0' => __( "No", 'ayecode-connect' ), '1' => __( "Yes", 'ayecode-connect' ) );
250
-					} elseif ( $param['type'] == 'select' || $param['type'] == 'multiple_select' ) {
251
-						$param['value'] = isset( $val['options'] ) ? $val['options'] : array();
252
-					} else {
253
-						$param['value'] = isset( $val['default'] ) ? $val['default'] : '';
254
-					}
195
+        public function get_fusion_params() {
196
+            $params    = array();
197
+            $arguments = $this->get_arguments();
198
+
199
+            if ( ! empty( $arguments ) ) {
200
+                foreach ( $arguments as $key => $val ) {
201
+                    $param = array();
202
+                    // type
203
+                    $param['type'] = str_replace(
204
+                        array(
205
+                            "text",
206
+                            "number",
207
+                            "email",
208
+                            "color",
209
+                            "checkbox"
210
+                        ),
211
+                        array(
212
+                            "textfield",
213
+                            "textfield",
214
+                            "textfield",
215
+                            "colorpicker",
216
+                            "select",
217
+
218
+                        ),
219
+                        $val['type'] );
220
+
221
+                    // multiselect
222
+                    if ( $val['type'] == 'multiselect' || ( ( $param['type'] == 'select' || $val['type'] == 'select' ) && ! empty( $val['multiple'] ) ) ) {
223
+                        $param['type']     = 'multiple_select';
224
+                        $param['multiple'] = true;
225
+                    }
226
+
227
+                    // heading
228
+                    $param['heading'] = isset( $val['title'] ) ? $val['title'] : '';
229
+
230
+                    // description
231
+                    $param['description'] = isset( $val['desc'] ) ? $val['desc'] : '';
232
+
233
+                    // param_name
234
+                    $param['param_name'] = $key;
235
+
236
+                    // Default
237
+                    $param['default'] = isset( $val['default'] ) ? $val['default'] : '';
238
+
239
+                    // Group
240
+                    if ( isset( $val['group'] ) ) {
241
+                        $param['group'] = $val['group'];
242
+                    }
243
+
244
+                    // value
245
+                    if ( $val['type'] == 'checkbox' ) {
246
+                        if ( isset( $val['default'] ) && $val['default'] == '0' ) {
247
+                            unset( $param['default'] );
248
+                        }
249
+                        $param['value'] = array( '0' => __( "No", 'ayecode-connect' ), '1' => __( "Yes", 'ayecode-connect' ) );
250
+                    } elseif ( $param['type'] == 'select' || $param['type'] == 'multiple_select' ) {
251
+                        $param['value'] = isset( $val['options'] ) ? $val['options'] : array();
252
+                    } else {
253
+                        $param['value'] = isset( $val['default'] ) ? $val['default'] : '';
254
+                    }
255
+
256
+                    // setup the param
257
+                    $params[] = $param;
255 258
 
256
-					// setup the param
257
-					$params[] = $param;
259
+                }
260
+            }
258 261
 
259
-				}
260
-			}
261 262
 
263
+            return $params;
264
+        }
262 265
 
263
-			return $params;
264
-		}
266
+        /**
267
+         * Maybe insert the shortcode inserter button in the footer if we are in the cornerstone builder
268
+         */
269
+        public static function maybe_cornerstone_builder() {
270
+            if ( did_action( 'cornerstone_before_boot_app' ) ) {
271
+                self::shortcode_insert_button_script();
272
+            }
273
+        }
265 274
 
266
-		/**
267
-		 * Maybe insert the shortcode inserter button in the footer if we are in the cornerstone builder
268
-		 */
269
-		public static function maybe_cornerstone_builder() {
270
-			if ( did_action( 'cornerstone_before_boot_app' ) ) {
271
-				self::shortcode_insert_button_script();
272
-			}
273
-		}
275
+        /**
276
+         * A function to ge the shortcode builder picker html.
277
+         *
278
+         * @param string $editor_id
279
+         *
280
+         * @return string
281
+         */
282
+        public static function get_picker( $editor_id = '' ) {
274 283
 
275
-		/**
276
-		 * A function to ge the shortcode builder picker html.
277
-		 *
278
-		 * @param string $editor_id
279
-		 *
280
-		 * @return string
281
-		 */
282
-		public static function get_picker( $editor_id = '' ) {
283
-
284
-			ob_start();
285
-			if ( isset( $_POST['editor_id'] ) ) {
286
-				$editor_id = esc_attr( $_POST['editor_id'] );
287
-			} elseif ( isset( $_REQUEST['et_fb'] ) ) {
288
-				$editor_id = 'main_content_content_vb_tiny_mce';
289
-			}
284
+            ob_start();
285
+            if ( isset( $_POST['editor_id'] ) ) {
286
+                $editor_id = esc_attr( $_POST['editor_id'] );
287
+            } elseif ( isset( $_REQUEST['et_fb'] ) ) {
288
+                $editor_id = 'main_content_content_vb_tiny_mce';
289
+            }
290 290
 
291
-			global $sd_widgets;
291
+            global $sd_widgets;
292 292
 
293 293
 //			print_r($sd_widgets);exit;
294
-			?>
294
+            ?>
295 295
 
296 296
 			<div class="sd-shortcode-left-wrap">
297 297
 				<?php
298
-				ksort( $sd_widgets );
299
-				//				print_r($sd_widgets);exit;
300
-				if ( ! empty( $sd_widgets ) ) {
301
-					echo '<select class="widefat" onchange="sd_get_shortcode_options(this);">';
302
-					echo "<option>" . __( 'Select shortcode', 'ayecode-connect' ) . "</option>";
303
-					foreach ( $sd_widgets as $shortcode => $class ) {
304
-						if(!empty($class['output_types']) && !in_array('shortcode', $class['output_types'])){ continue; }
305
-						echo "<option value='" . esc_attr( $shortcode ) . "'>" . esc_attr( $shortcode ) . " (" . esc_attr( $class['name'] ) . ")</option>";
306
-					}
307
-					echo "</select>";
298
+                ksort( $sd_widgets );
299
+                //				print_r($sd_widgets);exit;
300
+                if ( ! empty( $sd_widgets ) ) {
301
+                    echo '<select class="widefat" onchange="sd_get_shortcode_options(this);">';
302
+                    echo "<option>" . __( 'Select shortcode', 'ayecode-connect' ) . "</option>";
303
+                    foreach ( $sd_widgets as $shortcode => $class ) {
304
+                        if(!empty($class['output_types']) && !in_array('shortcode', $class['output_types'])){ continue; }
305
+                        echo "<option value='" . esc_attr( $shortcode ) . "'>" . esc_attr( $shortcode ) . " (" . esc_attr( $class['name'] ) . ")</option>";
306
+                    }
307
+                    echo "</select>";
308 308
 
309
-				}
310
-				?>
309
+                }
310
+                ?>
311 311
 				<div class="sd-shortcode-settings"></div>
312 312
 
313 313
 			</div>
@@ -318,8 +318,8 @@  discard block
 block discarded – undo
318 318
 					<?php if ( $editor_id != '' ) { ?>
319 319
 						<button class="button sd-insert-shortcode-button"
320 320
 								onclick="sd_insert_shortcode(<?php if ( ! empty( $editor_id ) ) {
321
-									echo "'" . $editor_id . "'";
322
-								} ?>)"><?php _e( 'Insert shortcode', 'ayecode-connect' ); ?></button>
321
+                                    echo "'" . $editor_id . "'";
322
+                                } ?>)"><?php _e( 'Insert shortcode', 'ayecode-connect' ); ?></button>
323 323
 					<?php } ?>
324 324
 					<button class="button"
325 325
 							onclick="sd_copy_to_clipboard()"><?php _e( 'Copy shortcode' ); ?></button>
@@ -327,150 +327,150 @@  discard block
 block discarded – undo
327 327
 			</div>
328 328
 			<?php
329 329
 
330
-			$html = ob_get_clean();
331
-
332
-			if ( wp_doing_ajax() ) {
333
-				echo $html;
334
-				$should_die = true;
330
+            $html = ob_get_clean();
335 331
 
336
-				// some builder get the editor via ajax so we should not die on those occasions
337
-				$dont_die = array(
338
-					'parent_tag',// WP Bakery
339
-					'avia_request' // enfold
340
-				);
341
-
342
-				foreach ( $dont_die as $request ) {
343
-					if ( isset( $_REQUEST[ $request ] ) ) {
344
-						$should_die = false;
345
-					}
346
-				}
332
+            if ( wp_doing_ajax() ) {
333
+                echo $html;
334
+                $should_die = true;
347 335
 
348
-				if ( $should_die ) {
349
-					wp_die();
350
-				}
336
+                // some builder get the editor via ajax so we should not die on those occasions
337
+                $dont_die = array(
338
+                    'parent_tag',// WP Bakery
339
+                    'avia_request' // enfold
340
+                );
351 341
 
352
-			} else {
353
-				return $html;
354
-			}
342
+                foreach ( $dont_die as $request ) {
343
+                    if ( isset( $_REQUEST[ $request ] ) ) {
344
+                        $should_die = false;
345
+                    }
346
+                }
355 347
 
356
-			return '';
348
+                if ( $should_die ) {
349
+                    wp_die();
350
+                }
357 351
 
358
-		}
352
+            } else {
353
+                return $html;
354
+            }
359 355
 
360
-		/**
361
-		 * Output the version in the header.
362
-		 */
363
-		public function generator() {
364
-			$file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) );
365
-			$plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) );
366
-
367
-			// Find source plugin/theme of SD
368
-			$source = array();
369
-			if ( strpos( $file, $plugins_dir ) !== false ) {
370
-				$source = explode( "/", plugin_basename( $file ) );
371
-			} else if ( function_exists( 'get_theme_root' ) ) {
372
-				$themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) );
373
-
374
-				if ( strpos( $file, $themes_dir ) !== false ) {
375
-					$source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) );
376
-				}
377
-			}
356
+            return '';
378 357
 
379
-			echo '<meta name="generator" content="WP Super Duper v' . esc_attr( $this->version ) . '"' . ( ! empty( $source[0] ) ? ' data-sd-source="' . esc_attr( $source[0] ) . '"' : '' ) . ' />';
380
-		}
358
+        }
381 359
 
382
-		/**
383
-		 * Get widget settings.
384
-		 *
385
-		 * @since 1.0.0
386
-		 */
387
-		public static function get_widget_settings() {
388
-			global $sd_widgets;
389
-
390
-			$shortcode = isset( $_REQUEST['shortcode'] ) && $_REQUEST['shortcode'] ? sanitize_title_with_dashes( $_REQUEST['shortcode'] ) : '';
391
-			if ( ! $shortcode ) {
392
-				wp_die();
393
-			}
394
-			$widget_args = isset( $sd_widgets[ $shortcode ] ) ? $sd_widgets[ $shortcode ] : '';
395
-			if ( ! $widget_args ) {
396
-				wp_die();
397
-			}
398
-			$class_name = isset( $widget_args['class_name'] ) && $widget_args['class_name'] ? $widget_args['class_name'] : '';
399
-			if ( ! $class_name ) {
400
-				wp_die();
401
-			}
360
+        /**
361
+         * Output the version in the header.
362
+         */
363
+        public function generator() {
364
+            $file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) );
365
+            $plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) );
366
+
367
+            // Find source plugin/theme of SD
368
+            $source = array();
369
+            if ( strpos( $file, $plugins_dir ) !== false ) {
370
+                $source = explode( "/", plugin_basename( $file ) );
371
+            } else if ( function_exists( 'get_theme_root' ) ) {
372
+                $themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) );
373
+
374
+                if ( strpos( $file, $themes_dir ) !== false ) {
375
+                    $source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) );
376
+                }
377
+            }
402 378
 
403
-			// invoke an instance method
404
-			$widget = new $class_name;
379
+            echo '<meta name="generator" content="WP Super Duper v' . esc_attr( $this->version ) . '"' . ( ! empty( $source[0] ) ? ' data-sd-source="' . esc_attr( $source[0] ) . '"' : '' ) . ' />';
380
+        }
405 381
 
406
-			ob_start();
407
-			$widget->form( array() );
408
-			$form = ob_get_clean();
409
-			echo "<form id='$shortcode'>" . $form . "<div class=\"widget-control-save\"></div></form>";
410
-			echo "<style>" . $widget->widget_css() . "</style>";
411
-			echo "<script>" . $widget->widget_js() . "</script>";
412
-			?>
382
+        /**
383
+         * Get widget settings.
384
+         *
385
+         * @since 1.0.0
386
+         */
387
+        public static function get_widget_settings() {
388
+            global $sd_widgets;
389
+
390
+            $shortcode = isset( $_REQUEST['shortcode'] ) && $_REQUEST['shortcode'] ? sanitize_title_with_dashes( $_REQUEST['shortcode'] ) : '';
391
+            if ( ! $shortcode ) {
392
+                wp_die();
393
+            }
394
+            $widget_args = isset( $sd_widgets[ $shortcode ] ) ? $sd_widgets[ $shortcode ] : '';
395
+            if ( ! $widget_args ) {
396
+                wp_die();
397
+            }
398
+            $class_name = isset( $widget_args['class_name'] ) && $widget_args['class_name'] ? $widget_args['class_name'] : '';
399
+            if ( ! $class_name ) {
400
+                wp_die();
401
+            }
402
+
403
+            // invoke an instance method
404
+            $widget = new $class_name;
405
+
406
+            ob_start();
407
+            $widget->form( array() );
408
+            $form = ob_get_clean();
409
+            echo "<form id='$shortcode'>" . $form . "<div class=\"widget-control-save\"></div></form>";
410
+            echo "<style>" . $widget->widget_css() . "</style>";
411
+            echo "<script>" . $widget->widget_js() . "</script>";
412
+            ?>
413 413
 			<?php
414
-			wp_die();
415
-		}
416
-
417
-		/**
418
-		 * Insert shortcode builder button to classic editor (not inside Gutenberg, not needed).
419
-		 *
420
-		 * @param string $editor_id Optional. Shortcode editor id. Default null.
421
-		 * @param string $insert_shortcode_function Optional. Insert shortcode function. Default null.
422
-		 *
423
-		 *@since 1.0.0
424
-		 *
425
-		 */
426
-		public static function shortcode_insert_button( $editor_id = '', $insert_shortcode_function = '' ) {
427
-			global $sd_widgets, $shortcode_insert_button_once;
428
-			if ( $shortcode_insert_button_once ) {
429
-				return;
430
-			}
431
-			add_thickbox();
432
-
433
-
434
-			/**
435
-			 * Cornerstone makes us play dirty tricks :/
436
-			 * 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.
437
-			 */
438
-			if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
439
-				echo '<span id="insert-media-button">';
440
-			}
441
-
442
-			echo self::shortcode_button( 'this', 'true' );
443
-
444
-			// see opening note
445
-			if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
446
-				echo '</span>'; // end #insert-media-button
447
-			}
448
-
449
-			// Add separate script for generatepress theme sections
450
-			if ( function_exists( 'generate_sections_sections_metabox' ) && did_action( 'generate_sections_metabox' ) ) {
451
-			} else {
452
-				self::shortcode_insert_button_script( $editor_id, $insert_shortcode_function );
453
-			}
414
+            wp_die();
415
+        }
454 416
 
455
-			$shortcode_insert_button_once = true;
456
-		}
417
+        /**
418
+         * Insert shortcode builder button to classic editor (not inside Gutenberg, not needed).
419
+         *
420
+         * @param string $editor_id Optional. Shortcode editor id. Default null.
421
+         * @param string $insert_shortcode_function Optional. Insert shortcode function. Default null.
422
+         *
423
+         *@since 1.0.0
424
+         *
425
+         */
426
+        public static function shortcode_insert_button( $editor_id = '', $insert_shortcode_function = '' ) {
427
+            global $sd_widgets, $shortcode_insert_button_once;
428
+            if ( $shortcode_insert_button_once ) {
429
+                return;
430
+            }
431
+            add_thickbox();
432
+
433
+
434
+            /**
435
+             * Cornerstone makes us play dirty tricks :/
436
+             * 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.
437
+             */
438
+            if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
439
+                echo '<span id="insert-media-button">';
440
+            }
441
+
442
+            echo self::shortcode_button( 'this', 'true' );
443
+
444
+            // see opening note
445
+            if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
446
+                echo '</span>'; // end #insert-media-button
447
+            }
448
+
449
+            // Add separate script for generatepress theme sections
450
+            if ( function_exists( 'generate_sections_sections_metabox' ) && did_action( 'generate_sections_metabox' ) ) {
451
+            } else {
452
+                self::shortcode_insert_button_script( $editor_id, $insert_shortcode_function );
453
+            }
454
+
455
+            $shortcode_insert_button_once = true;
456
+        }
457 457
 
458
-		/**
459
-		 * Gets the shortcode insert button html.
460
-		 *
461
-		 * @param string $id
462
-		 * @param string $search_for_id
463
-		 *
464
-		 * @return mixed
465
-		 */
466
-		public static function shortcode_button( $id = '', $search_for_id = '' ) {
467
-			ob_start();
468
-			?>
458
+        /**
459
+         * Gets the shortcode insert button html.
460
+         *
461
+         * @param string $id
462
+         * @param string $search_for_id
463
+         *
464
+         * @return mixed
465
+         */
466
+        public static function shortcode_button( $id = '', $search_for_id = '' ) {
467
+            ob_start();
468
+            ?>
469 469
 			<span class="sd-lable-shortcode-inserter">
470 470
 				<a onclick="sd_ajax_get_picker(<?php echo $id;
471
-				if ( $search_for_id ) {
472
-					echo "," . $search_for_id;
473
-				} ?>);" href="#TB_inline?width=100%&height=550&inlineId=super-duper-content-ajaxed"
471
+                if ( $search_for_id ) {
472
+                    echo "," . $search_for_id;
473
+                } ?>);" href="#TB_inline?width=100%&height=550&inlineId=super-duper-content-ajaxed"
474 474
 				   class="thickbox button super-duper-content-open" title="Add Shortcode">
475 475
 					<span style="vertical-align: middle;line-height: 18px;font-size: 20px;"
476 476
 						  class="dashicons dashicons-screenoptions"></span>
@@ -481,21 +481,21 @@  discard block
 block discarded – undo
481 481
 			</span>
482 482
 
483 483
 			<?php
484
-			$html = ob_get_clean();
484
+            $html = ob_get_clean();
485 485
 
486
-			// remove line breaks so we can use it in js
487
-			return preg_replace( "/\r|\n/", "", trim( $html ) );
488
-		}
486
+            // remove line breaks so we can use it in js
487
+            return preg_replace( "/\r|\n/", "", trim( $html ) );
488
+        }
489 489
 
490
-		/**
491
-		 * Makes SD work with the siteOrigin page builder.
492
-		 *
493
-		 * @return mixed
494
-		 *@since 1.0.6
495
-		 */
496
-		public static function siteorigin_js() {
497
-			ob_start();
498
-			?>
490
+        /**
491
+         * Makes SD work with the siteOrigin page builder.
492
+         *
493
+         * @return mixed
494
+         *@since 1.0.6
495
+         */
496
+        public static function siteorigin_js() {
497
+            ob_start();
498
+            ?>
499 499
 			<script>
500 500
 				/**
501 501
 				 * Check a form to see what items should be shown or hidden.
@@ -571,29 +571,29 @@  discard block
 block discarded – undo
571 571
 				});
572 572
 			</script>
573 573
 			<?php
574
-			$output = ob_get_clean();
574
+            $output = ob_get_clean();
575 575
 
576
-			/*
576
+            /*
577 577
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
578 578
 			 */
579 579
 
580
-			return str_replace( array(
581
-				'<script>',
582
-				'</script>'
583
-			), '', $output );
584
-		}
580
+            return str_replace( array(
581
+                '<script>',
582
+                '</script>'
583
+            ), '', $output );
584
+        }
585 585
 
586
-		/**
587
-		 * Output the JS and CSS for the shortcode insert button.
588
-		 *
589
-		 * @param string $editor_id
590
-		 * @param string $insert_shortcode_function
591
-		 *
592
-		 *@since 1.0.6
593
-		 *
594
-		 */
595
-		public static function shortcode_insert_button_script( $editor_id = '', $insert_shortcode_function = '' ) {
596
-			?>
586
+        /**
587
+         * Output the JS and CSS for the shortcode insert button.
588
+         *
589
+         * @param string $editor_id
590
+         * @param string $insert_shortcode_function
591
+         *
592
+         *@since 1.0.6
593
+         *
594
+         */
595
+        public static function shortcode_insert_button_script( $editor_id = '', $insert_shortcode_function = '' ) {
596
+            ?>
597 597
 			<style>
598 598
 				.sd-shortcode-left-wrap {
599 599
 					float: left;
@@ -721,35 +721,35 @@  discard block
 block discarded – undo
721 721
 				<?php } ?>
722 722
 			</style>
723 723
 			<?php
724
-			if ( class_exists( 'SiteOrigin_Panels' ) ) {
725
-				echo "<script>" . self::siteorigin_js() . "</script>";
726
-			}
727
-			?>
724
+            if ( class_exists( 'SiteOrigin_Panels' ) ) {
725
+                echo "<script>" . self::siteorigin_js() . "</script>";
726
+            }
727
+            ?>
728 728
 			<script>
729 729
 				<?php
730
-				if(! empty( $insert_shortcode_function )){
731
-					echo $insert_shortcode_function;
732
-				}else{
733
-
734
-				/**
735
-				 * Function for super duper insert shortcode.
736
-				 *
737
-				 * @since 1.0.0
738
-				 */
739
-				?>
730
+                if(! empty( $insert_shortcode_function )){
731
+                    echo $insert_shortcode_function;
732
+                }else{
733
+
734
+                /**
735
+                 * Function for super duper insert shortcode.
736
+                 *
737
+                 * @since 1.0.0
738
+                 */
739
+                ?>
740 740
 				function sd_insert_shortcode($editor_id) {
741 741
 					$shortcode = jQuery('#TB_ajaxContent #sd-shortcode-output').val();
742 742
 					if ($shortcode) {
743 743
 						if (!$editor_id) {
744 744
 							<?php
745
-							if ( isset( $_REQUEST['et_fb'] ) ) {
746
-								echo '$editor_id = "#main_content_content_vb_tiny_mce";';
747
-							} elseif ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) {
748
-								echo '$editor_id = "#elementor-controls .wp-editor-container textarea";';
749
-							} else {
750
-								echo '$editor_id = "#wp-content-editor-container textarea";';
751
-							}
752
-							?>
745
+                            if ( isset( $_REQUEST['et_fb'] ) ) {
746
+                                echo '$editor_id = "#main_content_content_vb_tiny_mce";';
747
+                            } elseif ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) {
748
+                                echo '$editor_id = "#elementor-controls .wp-editor-container textarea";';
749
+                            } else {
750
+                                echo '$editor_id = "#wp-content-editor-container textarea";';
751
+                            }
752
+                            ?>
753 753
 						} else {
754 754
 							$editor_id = '#' + $editor_id;
755 755
 						}
@@ -1063,18 +1063,18 @@  discard block
 block discarded – undo
1063 1063
 				}
1064 1064
 			</script>
1065 1065
 			<?php
1066
-		}
1066
+        }
1067 1067
 
1068
-		/**
1069
-		 * Gets some CSS for the widgets screen.
1070
-		 *
1071
-		 * @param bool $advanced If we should include advanced CSS.
1072
-		 *
1073
-		 * @return mixed
1074
-		 */
1075
-		public function widget_css( $advanced = true ) {
1076
-			ob_start();
1077
-			?>
1068
+        /**
1069
+         * Gets some CSS for the widgets screen.
1070
+         *
1071
+         * @param bool $advanced If we should include advanced CSS.
1072
+         *
1073
+         * @return mixed
1074
+         */
1075
+        public function widget_css( $advanced = true ) {
1076
+            ob_start();
1077
+            ?>
1078 1078
 			<style>
1079 1079
 				<?php if( $advanced ){ ?>
1080 1080
 				.sd-advanced-setting {
@@ -1114,26 +1114,26 @@  discard block
 block discarded – undo
1114 1114
 				.elementor-control .sd-argument select[multiple] option{padding:3px}
1115 1115
 			</style>
1116 1116
 			<?php
1117
-			$output = ob_get_clean();
1117
+            $output = ob_get_clean();
1118 1118
 
1119
-			/*
1119
+            /*
1120 1120
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
1121 1121
 			 */
1122 1122
 
1123
-			return str_replace( array(
1124
-				'<style>',
1125
-				'</style>'
1126
-			), '', $output );
1127
-		}
1123
+            return str_replace( array(
1124
+                '<style>',
1125
+                '</style>'
1126
+            ), '', $output );
1127
+        }
1128 1128
 
1129
-		/**
1130
-		 * Gets some JS for the widgets screen.
1131
-		 *
1132
-		 * @return mixed
1133
-		 */
1134
-		public function widget_js() {
1135
-			ob_start();
1136
-			?>
1129
+        /**
1130
+         * Gets some JS for the widgets screen.
1131
+         *
1132
+         * @return mixed
1133
+         */
1134
+        public function widget_js() {
1135
+            ob_start();
1136
+            ?>
1137 1137
 			<script>
1138 1138
 
1139 1139
 				/**
@@ -1284,513 +1284,513 @@  discard block
 block discarded – undo
1284 1284
 				<?php do_action( 'wp_super_duper_widget_js', $this ); ?>
1285 1285
 			</script>
1286 1286
 			<?php
1287
-			$output = ob_get_clean();
1287
+            $output = ob_get_clean();
1288 1288
 
1289
-			/*
1289
+            /*
1290 1290
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
1291 1291
 			 */
1292 1292
 
1293
-			return str_replace( array(
1294
-				'<script>',
1295
-				'</script>'
1296
-			), '', $output );
1297
-		}
1293
+            return str_replace( array(
1294
+                '<script>',
1295
+                '</script>'
1296
+            ), '', $output );
1297
+        }
1298 1298
 
1299 1299
 
1300
-		/**
1301
-		 * Set the name from the argument key.
1302
-		 *
1303
-		 * @param $options
1304
-		 *
1305
-		 * @return mixed
1306
-		 */
1307
-		private function add_name_from_key( $options, $arguments = false ) {
1308
-			if ( ! empty( $options['arguments'] ) ) {
1309
-				foreach ( $options['arguments'] as $key => $val ) {
1310
-					$options['arguments'][ $key ]['name'] = $key;
1311
-				}
1312
-			} elseif ( $arguments && is_array( $options ) && ! empty( $options ) ) {
1313
-				foreach ( $options as $key => $val ) {
1314
-					$options[ $key ]['name'] = $key;
1315
-				}
1316
-			}
1300
+        /**
1301
+         * Set the name from the argument key.
1302
+         *
1303
+         * @param $options
1304
+         *
1305
+         * @return mixed
1306
+         */
1307
+        private function add_name_from_key( $options, $arguments = false ) {
1308
+            if ( ! empty( $options['arguments'] ) ) {
1309
+                foreach ( $options['arguments'] as $key => $val ) {
1310
+                    $options['arguments'][ $key ]['name'] = $key;
1311
+                }
1312
+            } elseif ( $arguments && is_array( $options ) && ! empty( $options ) ) {
1313
+                foreach ( $options as $key => $val ) {
1314
+                    $options[ $key ]['name'] = $key;
1315
+                }
1316
+            }
1317 1317
 
1318
-			return $options;
1319
-		}
1318
+            return $options;
1319
+        }
1320 1320
 
1321
-		/**
1322
-		 * Register the parent shortcode.
1323
-		 *
1324
-		 * @since 1.0.0
1325
-		 */
1326
-		public function register_shortcode() {
1327
-			add_shortcode( $this->base_id, array( $this, 'shortcode_output' ) );
1328
-			add_action( 'wp_ajax_super_duper_output_shortcode', array( $this, 'render_shortcode' ) );
1329
-		}
1321
+        /**
1322
+         * Register the parent shortcode.
1323
+         *
1324
+         * @since 1.0.0
1325
+         */
1326
+        public function register_shortcode() {
1327
+            add_shortcode( $this->base_id, array( $this, 'shortcode_output' ) );
1328
+            add_action( 'wp_ajax_super_duper_output_shortcode', array( $this, 'render_shortcode' ) );
1329
+        }
1330 1330
 
1331
-		/**
1332
-		 * Render the shortcode via ajax so we can return it to Gutenberg.
1333
-		 *
1334
-		 * @since 1.0.0
1335
-		 */
1336
-		public function render_shortcode() {
1337
-			check_ajax_referer( 'super_duper_output_shortcode', '_ajax_nonce', true );
1338
-			if ( ! current_user_can( 'manage_options' ) ) {
1339
-				wp_die();
1340
-			}
1331
+        /**
1332
+         * Render the shortcode via ajax so we can return it to Gutenberg.
1333
+         *
1334
+         * @since 1.0.0
1335
+         */
1336
+        public function render_shortcode() {
1337
+            check_ajax_referer( 'super_duper_output_shortcode', '_ajax_nonce', true );
1338
+            if ( ! current_user_can( 'manage_options' ) ) {
1339
+                wp_die();
1340
+            }
1341
+
1342
+            // we might need the $post value here so lets set it.
1343
+            if ( isset( $_POST['post_id'] ) && $_POST['post_id'] ) {
1344
+                $post_obj = get_post( absint( $_POST['post_id'] ) );
1345
+                if ( ! empty( $post_obj ) && empty( $post ) ) {
1346
+                    global $post;
1347
+                    $post = $post_obj;
1348
+                }
1349
+            }
1350
+
1351
+            if ( isset( $_POST['shortcode'] ) && $_POST['shortcode'] ) {
1352
+                $is_preview = $this->is_preview();
1353
+                $shortcode_name   = sanitize_title_with_dashes( $_POST['shortcode'] );
1354
+                $attributes_array = isset( $_POST['attributes'] ) && $_POST['attributes'] ? $_POST['attributes'] : array();
1355
+                $attributes       = '';
1356
+                if ( ! empty( $attributes_array ) ) {
1357
+                    foreach ( $attributes_array as $key => $value ) {
1358
+                        if ( is_array( $value ) ) {
1359
+                            $value = implode( ",", $value );
1360
+                        }
1361
+
1362
+                        if ( ! empty( $value ) ) {
1363
+                            $value = wp_unslash( $value );
1364
+
1365
+                            // Encode [ and ].
1366
+                            if ( $is_preview ) {
1367
+                                $value = $this->encode_shortcodes( $value );
1368
+                            }
1369
+                        }
1370
+                        $attributes .= " " . esc_attr( sanitize_title_with_dashes( $key ) ) . "='" . esc_attr( $value ) . "' ";
1371
+                    }
1372
+                }
1341 1373
 
1342
-			// we might need the $post value here so lets set it.
1343
-			if ( isset( $_POST['post_id'] ) && $_POST['post_id'] ) {
1344
-				$post_obj = get_post( absint( $_POST['post_id'] ) );
1345
-				if ( ! empty( $post_obj ) && empty( $post ) ) {
1346
-					global $post;
1347
-					$post = $post_obj;
1348
-				}
1349
-			}
1374
+                $shortcode = "[" . esc_attr( $shortcode_name ) . " " . $attributes . "]";
1350 1375
 
1351
-			if ( isset( $_POST['shortcode'] ) && $_POST['shortcode'] ) {
1352
-				$is_preview = $this->is_preview();
1353
-				$shortcode_name   = sanitize_title_with_dashes( $_POST['shortcode'] );
1354
-				$attributes_array = isset( $_POST['attributes'] ) && $_POST['attributes'] ? $_POST['attributes'] : array();
1355
-				$attributes       = '';
1356
-				if ( ! empty( $attributes_array ) ) {
1357
-					foreach ( $attributes_array as $key => $value ) {
1358
-						if ( is_array( $value ) ) {
1359
-							$value = implode( ",", $value );
1360
-						}
1376
+                $content = do_shortcode( $shortcode );
1361 1377
 
1362
-						if ( ! empty( $value ) ) {
1363
-							$value = wp_unslash( $value );
1378
+                // Decode [ and ].
1379
+                if ( ! empty( $content ) && $is_preview ) {
1380
+                    $content = $this->decode_shortcodes( $content );
1381
+                }
1364 1382
 
1365
-							// Encode [ and ].
1366
-							if ( $is_preview ) {
1367
-								$value = $this->encode_shortcodes( $value );
1368
-							}
1369
-						}
1370
-						$attributes .= " " . esc_attr( sanitize_title_with_dashes( $key ) ) . "='" . esc_attr( $value ) . "' ";
1371
-					}
1372
-				}
1383
+                echo $content;
1384
+            }
1385
+            wp_die();
1386
+        }
1373 1387
 
1374
-				$shortcode = "[" . esc_attr( $shortcode_name ) . " " . $attributes . "]";
1388
+        /**
1389
+         * Output the shortcode.
1390
+         *
1391
+         * @param array $args
1392
+         * @param string $content
1393
+         *
1394
+         * @return string
1395
+         */
1396
+        public function shortcode_output( $args = array(), $content = '' ) {
1397
+            $_instance = $args;
1398
+
1399
+            $args = $this->argument_values( $args );
1400
+
1401
+            // add extra argument so we know its a output to gutenberg
1402
+            //$args
1403
+            $args = $this->string_to_bool( $args );
1404
+
1405
+            // if we have a enclosed shortcode we add it to the special `html` argument
1406
+            if ( ! empty( $content ) ) {
1407
+                $args['html'] = $content;
1408
+            }
1409
+
1410
+            if ( ! $this->is_preview() ) {
1411
+                /**
1412
+                 * Filters the settings for a particular widget args.
1413
+                 *
1414
+                 * @param array          $args      The current widget instance's settings.
1415
+                 * @param WP_Super_Duper $widget    The current widget settings.
1416
+                 * @param array          $_instance An array of default widget arguments.
1417
+                 *
1418
+                 *@since 1.0.28
1419
+                 *
1420
+                 */
1421
+                $args = apply_filters( 'wp_super_duper_widget_display_callback', $args, $this, $_instance );
1422
+
1423
+                if ( ! is_array( $args ) ) {
1424
+                    return $args;
1425
+                }
1426
+            }
1427
+
1428
+            $class = isset( $this->options['widget_ops']['classname'] ) ? esc_attr( $this->options['widget_ops']['classname'] ) : '';
1429
+            $class .= " sdel-".$this->get_instance_hash();
1430
+
1431
+            $class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
1432
+            $class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
1433
+
1434
+            $attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
1435
+            $attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
1436
+
1437
+            $shortcode_args = array();
1438
+            $output         = '';
1439
+            $no_wrap        = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
1440
+            if ( isset( $args['no_wrap'] ) && $args['no_wrap'] ) {
1441
+                $no_wrap = true;
1442
+            }
1443
+            $main_content = $this->output( $args, $shortcode_args, $content );
1444
+            if ( $main_content && ! $no_wrap ) {
1445
+                // wrap the shortcode in a div with the same class as the widget
1446
+                $output .= '<div class="' . $class . '" ' . $attrs . '>';
1447
+                if ( ! empty( $args['title'] ) ) {
1448
+                    // if its a shortcode and there is a title try to grab the title wrappers
1449
+                    $shortcode_args = array( 'before_title' => '', 'after_title' => '' );
1450
+                    if ( empty( $instance ) ) {
1451
+                        global $wp_registered_sidebars;
1452
+                        if ( ! empty( $wp_registered_sidebars ) ) {
1453
+                            foreach ( $wp_registered_sidebars as $sidebar ) {
1454
+                                if ( ! empty( $sidebar['before_title'] ) ) {
1455
+                                    $shortcode_args['before_title'] = $sidebar['before_title'];
1456
+                                    $shortcode_args['after_title']  = $sidebar['after_title'];
1457
+                                    break;
1458
+                                }
1459
+                            }
1460
+                        }
1461
+                    }
1462
+                    $output .= $this->output_title( $shortcode_args, $args );
1463
+                }
1464
+                $output .= $main_content;
1465
+                $output .= '</div>';
1466
+            } elseif ( $main_content && $no_wrap ) {
1467
+                $output .= $main_content;
1468
+            }
1469
+
1470
+            // if preview show a placeholder if empty
1471
+            if ( $this->is_preview() && $output == '' ) {
1472
+                $output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
1473
+            }
1474
+
1475
+            return apply_filters( 'wp_super_duper_widget_output', $output, $args, $shortcode_args, $this );
1476
+        }
1375 1477
 
1376
-				$content = do_shortcode( $shortcode );
1478
+        /**
1479
+         * Placeholder text to show if output is empty and we are on a preview/builder page.
1480
+         *
1481
+         * @param string $name
1482
+         *
1483
+         * @return string
1484
+         */
1485
+        public function preview_placeholder_text( $name = '' ) {
1486
+            return "<div style='background:#0185ba33;padding: 10px;border: 4px #ccc dashed;'>" . wp_sprintf( __( 'Placeholder for: %s', 'ayecode-connect' ), $name ) . "</div>";
1487
+        }
1377 1488
 
1378
-				// Decode [ and ].
1379
-				if ( ! empty( $content ) && $is_preview ) {
1380
-					$content = $this->decode_shortcodes( $content );
1381
-				}
1489
+        /**
1490
+         * Sometimes booleans values can be turned to strings, so we fix that.
1491
+         *
1492
+         * @param $options
1493
+         *
1494
+         * @return mixed
1495
+         */
1496
+        public function string_to_bool( $options ) {
1497
+            // convert bool strings to booleans
1498
+            foreach ( $options as $key => $val ) {
1499
+                if ( $val == 'false' ) {
1500
+                    $options[ $key ] = false;
1501
+                } elseif ( $val == 'true' ) {
1502
+                    $options[ $key ] = true;
1503
+                }
1504
+            }
1382 1505
 
1383
-				echo $content;
1384
-			}
1385
-			wp_die();
1386
-		}
1506
+            return $options;
1507
+        }
1387 1508
 
1388
-		/**
1389
-		 * Output the shortcode.
1390
-		 *
1391
-		 * @param array $args
1392
-		 * @param string $content
1393
-		 *
1394
-		 * @return string
1395
-		 */
1396
-		public function shortcode_output( $args = array(), $content = '' ) {
1397
-			$_instance = $args;
1398
-
1399
-			$args = $this->argument_values( $args );
1400
-
1401
-			// add extra argument so we know its a output to gutenberg
1402
-			//$args
1403
-			$args = $this->string_to_bool( $args );
1404
-
1405
-			// if we have a enclosed shortcode we add it to the special `html` argument
1406
-			if ( ! empty( $content ) ) {
1407
-				$args['html'] = $content;
1408
-			}
1509
+        /**
1510
+         * Get the argument values that are also filterable.
1511
+         *
1512
+         * @param $instance
1513
+         *
1514
+         * @return array
1515
+         *@since 1.0.12 Don't set checkbox default value if the value is empty.
1516
+         *
1517
+         */
1518
+        public function argument_values( $instance ) {
1519
+            $argument_values = array();
1520
+
1521
+            // set widget instance
1522
+            $this->instance = $instance;
1523
+
1524
+            if ( empty( $this->arguments ) ) {
1525
+                $this->arguments = $this->get_arguments();
1526
+            }
1527
+
1528
+            if ( ! empty( $this->arguments ) ) {
1529
+                foreach ( $this->arguments as $key => $args ) {
1530
+                    // set the input name from the key
1531
+                    $args['name'] = $key;
1532
+                    //
1533
+                    $argument_values[ $key ] = isset( $instance[ $key ] ) ? $instance[ $key ] : '';
1534
+                    if ( $args['type'] == 'checkbox' && $argument_values[ $key ] == '' ) {
1535
+                        // don't set default for an empty checkbox
1536
+                    } elseif ( $argument_values[ $key ] == '' && isset( $args['default'] ) ) {
1537
+                        $argument_values[ $key ] = $args['default'];
1538
+                    }
1539
+                }
1540
+            }
1409 1541
 
1410
-			if ( ! $this->is_preview() ) {
1411
-				/**
1412
-				 * Filters the settings for a particular widget args.
1413
-				 *
1414
-				 * @param array          $args      The current widget instance's settings.
1415
-				 * @param WP_Super_Duper $widget    The current widget settings.
1416
-				 * @param array          $_instance An array of default widget arguments.
1417
-				 *
1418
-				 *@since 1.0.28
1419
-				 *
1420
-				 */
1421
-				$args = apply_filters( 'wp_super_duper_widget_display_callback', $args, $this, $_instance );
1542
+            return $argument_values;
1543
+        }
1422 1544
 
1423
-				if ( ! is_array( $args ) ) {
1424
-					return $args;
1425
-				}
1426
-			}
1545
+        /**
1546
+         * Set arguments in super duper.
1547
+         *
1548
+         * @return array Set arguments.
1549
+         *@since 1.0.0
1550
+         *
1551
+         */
1552
+        public function set_arguments() {
1553
+            return $this->arguments;
1554
+        }
1427 1555
 
1428
-			$class = isset( $this->options['widget_ops']['classname'] ) ? esc_attr( $this->options['widget_ops']['classname'] ) : '';
1429
-			$class .= " sdel-".$this->get_instance_hash();
1556
+        /**
1557
+         * Get arguments in super duper.
1558
+         *
1559
+         * @return array Get arguments.
1560
+         *@since 1.0.0
1561
+         *
1562
+         */
1563
+        public function get_arguments() {
1564
+            if ( empty( $this->arguments ) ) {
1565
+                $this->arguments = $this->set_arguments();
1566
+            }
1430 1567
 
1431
-			$class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
1432
-			$class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
1568
+            $this->arguments = apply_filters( 'wp_super_duper_arguments', $this->arguments, $this->options, $this->instance );
1569
+            $this->arguments = $this->add_name_from_key( $this->arguments, true );
1433 1570
 
1434
-			$attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
1435
-			$attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
1571
+            return $this->arguments;
1572
+        }
1436 1573
 
1437
-			$shortcode_args = array();
1438
-			$output         = '';
1439
-			$no_wrap        = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
1440
-			if ( isset( $args['no_wrap'] ) && $args['no_wrap'] ) {
1441
-				$no_wrap = true;
1442
-			}
1443
-			$main_content = $this->output( $args, $shortcode_args, $content );
1444
-			if ( $main_content && ! $no_wrap ) {
1445
-				// wrap the shortcode in a div with the same class as the widget
1446
-				$output .= '<div class="' . $class . '" ' . $attrs . '>';
1447
-				if ( ! empty( $args['title'] ) ) {
1448
-					// if its a shortcode and there is a title try to grab the title wrappers
1449
-					$shortcode_args = array( 'before_title' => '', 'after_title' => '' );
1450
-					if ( empty( $instance ) ) {
1451
-						global $wp_registered_sidebars;
1452
-						if ( ! empty( $wp_registered_sidebars ) ) {
1453
-							foreach ( $wp_registered_sidebars as $sidebar ) {
1454
-								if ( ! empty( $sidebar['before_title'] ) ) {
1455
-									$shortcode_args['before_title'] = $sidebar['before_title'];
1456
-									$shortcode_args['after_title']  = $sidebar['after_title'];
1457
-									break;
1458
-								}
1459
-							}
1460
-						}
1461
-					}
1462
-					$output .= $this->output_title( $shortcode_args, $args );
1463
-				}
1464
-				$output .= $main_content;
1465
-				$output .= '</div>';
1466
-			} elseif ( $main_content && $no_wrap ) {
1467
-				$output .= $main_content;
1468
-			}
1574
+        /**
1575
+         * This is the main output class for all 3 items, widget, shortcode and block, it is extended in the calling class.
1576
+         *
1577
+         * @param array $args
1578
+         * @param array $widget_args
1579
+         * @param string $content
1580
+         */
1581
+        public function output( $args = array(), $widget_args = array(), $content = '' ) {
1469 1582
 
1470
-			// if preview show a placeholder if empty
1471
-			if ( $this->is_preview() && $output == '' ) {
1472
-				$output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
1473
-			}
1583
+        }
1474 1584
 
1475
-			return apply_filters( 'wp_super_duper_widget_output', $output, $args, $shortcode_args, $this );
1476
-		}
1585
+        /**
1586
+         * Add the dynamic block code inline when the wp-block in enqueued.
1587
+         */
1588
+        public function register_block() {
1589
+            wp_add_inline_script( 'wp-blocks', $this->block() );
1590
+            if ( class_exists( 'SiteOrigin_Panels' ) ) {
1591
+                wp_add_inline_script( 'wp-blocks', $this->siteorigin_js() );
1592
+            }
1593
+        }
1477 1594
 
1478
-		/**
1479
-		 * Placeholder text to show if output is empty and we are on a preview/builder page.
1480
-		 *
1481
-		 * @param string $name
1482
-		 *
1483
-		 * @return string
1484
-		 */
1485
-		public function preview_placeholder_text( $name = '' ) {
1486
-			return "<div style='background:#0185ba33;padding: 10px;border: 4px #ccc dashed;'>" . wp_sprintf( __( 'Placeholder for: %s', 'ayecode-connect' ), $name ) . "</div>";
1487
-		}
1595
+        /**
1596
+         * Check if we need to show advanced options.
1597
+         *
1598
+         * @return bool
1599
+         */
1600
+        public function block_show_advanced() {
1488 1601
 
1489
-		/**
1490
-		 * Sometimes booleans values can be turned to strings, so we fix that.
1491
-		 *
1492
-		 * @param $options
1493
-		 *
1494
-		 * @return mixed
1495
-		 */
1496
-		public function string_to_bool( $options ) {
1497
-			// convert bool strings to booleans
1498
-			foreach ( $options as $key => $val ) {
1499
-				if ( $val == 'false' ) {
1500
-					$options[ $key ] = false;
1501
-				} elseif ( $val == 'true' ) {
1502
-					$options[ $key ] = true;
1503
-				}
1504
-			}
1602
+            $show      = false;
1603
+            $arguments = $this->get_arguments();
1505 1604
 
1506
-			return $options;
1507
-		}
1605
+            if ( ! empty( $arguments ) ) {
1606
+                foreach ( $arguments as $argument ) {
1607
+                    if ( isset( $argument['advanced'] ) && $argument['advanced'] ) {
1608
+                        $show = true;
1609
+                        break; // no need to continue if we know we have it
1610
+                    }
1611
+                }
1612
+            }
1508 1613
 
1509
-		/**
1510
-		 * Get the argument values that are also filterable.
1511
-		 *
1512
-		 * @param $instance
1513
-		 *
1514
-		 * @return array
1515
-		 *@since 1.0.12 Don't set checkbox default value if the value is empty.
1516
-		 *
1517
-		 */
1518
-		public function argument_values( $instance ) {
1519
-			$argument_values = array();
1520
-
1521
-			// set widget instance
1522
-			$this->instance = $instance;
1523
-
1524
-			if ( empty( $this->arguments ) ) {
1525
-				$this->arguments = $this->get_arguments();
1526
-			}
1614
+            return $show;
1615
+        }
1527 1616
 
1528
-			if ( ! empty( $this->arguments ) ) {
1529
-				foreach ( $this->arguments as $key => $args ) {
1530
-					// set the input name from the key
1531
-					$args['name'] = $key;
1532
-					//
1533
-					$argument_values[ $key ] = isset( $instance[ $key ] ) ? $instance[ $key ] : '';
1534
-					if ( $args['type'] == 'checkbox' && $argument_values[ $key ] == '' ) {
1535
-						// don't set default for an empty checkbox
1536
-					} elseif ( $argument_values[ $key ] == '' && isset( $args['default'] ) ) {
1537
-						$argument_values[ $key ] = $args['default'];
1538
-					}
1539
-				}
1540
-			}
1617
+        /**
1618
+         * Get the url path to the current folder.
1619
+         *
1620
+         * @return string
1621
+         */
1622
+        public function get_url() {
1623
+            $url = $this->url;
1541 1624
 
1542
-			return $argument_values;
1543
-		}
1625
+            if ( ! $url ) {
1626
+                $content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) );
1627
+                $content_url = untrailingslashit( WP_CONTENT_URL );
1544 1628
 
1545
-		/**
1546
-		 * Set arguments in super duper.
1547
-		 *
1548
-		 * @return array Set arguments.
1549
-		 *@since 1.0.0
1550
-		 *
1551
-		 */
1552
-		public function set_arguments() {
1553
-			return $this->arguments;
1554
-		}
1629
+                // Replace http:// to https://.
1630
+                if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) {
1631
+                    $content_url = str_replace( 'http://', 'https://', $content_url );
1632
+                }
1555 1633
 
1556
-		/**
1557
-		 * Get arguments in super duper.
1558
-		 *
1559
-		 * @return array Get arguments.
1560
-		 *@since 1.0.0
1561
-		 *
1562
-		 */
1563
-		public function get_arguments() {
1564
-			if ( empty( $this->arguments ) ) {
1565
-				$this->arguments = $this->set_arguments();
1566
-			}
1634
+                // Check if we are inside a plugin
1635
+                $file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) );
1636
+                $url = str_replace( $content_dir, $content_url, $file_dir );
1637
+                $url = trailingslashit( $url );
1638
+                $this->url = $url;
1639
+            }
1567 1640
 
1568
-			$this->arguments = apply_filters( 'wp_super_duper_arguments', $this->arguments, $this->options, $this->instance );
1569
-			$this->arguments = $this->add_name_from_key( $this->arguments, true );
1641
+            return $url;
1642
+        }
1570 1643
 
1571
-			return $this->arguments;
1572
-		}
1644
+        /**
1645
+         * Get the url path to the current folder.
1646
+         *
1647
+         * @return string
1648
+         */
1649
+        public function get_url_old() {
1573 1650
 
1574
-		/**
1575
-		 * This is the main output class for all 3 items, widget, shortcode and block, it is extended in the calling class.
1576
-		 *
1577
-		 * @param array $args
1578
-		 * @param array $widget_args
1579
-		 * @param string $content
1580
-		 */
1581
-		public function output( $args = array(), $widget_args = array(), $content = '' ) {
1651
+            $url = $this->url;
1582 1652
 
1583
-		}
1653
+            if ( ! $url ) {
1654
+                // check if we are inside a plugin
1655
+                $file_dir = str_replace( "/includes", "", dirname( __FILE__ ) );
1584 1656
 
1585
-		/**
1586
-		 * Add the dynamic block code inline when the wp-block in enqueued.
1587
-		 */
1588
-		public function register_block() {
1589
-			wp_add_inline_script( 'wp-blocks', $this->block() );
1590
-			if ( class_exists( 'SiteOrigin_Panels' ) ) {
1591
-				wp_add_inline_script( 'wp-blocks', $this->siteorigin_js() );
1592
-			}
1593
-		}
1657
+                $dir_parts = explode( "/wp-content/", $file_dir );
1658
+                $url_parts = explode( "/wp-content/", plugins_url() );
1594 1659
 
1595
-		/**
1596
-		 * Check if we need to show advanced options.
1597
-		 *
1598
-		 * @return bool
1599
-		 */
1600
-		public function block_show_advanced() {
1601
-
1602
-			$show      = false;
1603
-			$arguments = $this->get_arguments();
1604
-
1605
-			if ( ! empty( $arguments ) ) {
1606
-				foreach ( $arguments as $argument ) {
1607
-					if ( isset( $argument['advanced'] ) && $argument['advanced'] ) {
1608
-						$show = true;
1609
-						break; // no need to continue if we know we have it
1610
-					}
1611
-				}
1612
-			}
1660
+                if ( ! empty( $url_parts[0] ) && ! empty( $dir_parts[1] ) ) {
1661
+                    $url       = trailingslashit( $url_parts[0] . "/wp-content/" . $dir_parts[1] );
1662
+                    $this->url = $url;
1663
+                }
1664
+            }
1613 1665
 
1614
-			return $show;
1615
-		}
1616 1666
 
1617
-		/**
1618
-		 * Get the url path to the current folder.
1619
-		 *
1620
-		 * @return string
1621
-		 */
1622
-		public function get_url() {
1623
-			$url = $this->url;
1624
-
1625
-			if ( ! $url ) {
1626
-				$content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) );
1627
-				$content_url = untrailingslashit( WP_CONTENT_URL );
1628
-
1629
-				// Replace http:// to https://.
1630
-				if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) {
1631
-					$content_url = str_replace( 'http://', 'https://', $content_url );
1632
-				}
1667
+            return $url;
1668
+        }
1633 1669
 
1634
-				// Check if we are inside a plugin
1635
-				$file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) );
1636
-				$url = str_replace( $content_dir, $content_url, $file_dir );
1637
-				$url = trailingslashit( $url );
1638
-				$this->url = $url;
1639
-			}
1670
+        /**
1671
+         * Generate the block icon.
1672
+         *
1673
+         * Enables the use of Font Awesome icons.
1674
+         *
1675
+         * @note xlink:href is actually deprecated but href is not supported by all so we use both.
1676
+         *
1677
+         * @param $icon
1678
+         *
1679
+         * @return string
1680
+         *@since 1.1.0
1681
+         */
1682
+        public function get_block_icon( $icon ) {
1683
+
1684
+            // check if we have a Font Awesome icon
1685
+            $fa_type = '';
1686
+            if ( substr( $icon, 0, 7 ) === "fas fa-" ) {
1687
+                $fa_type = 'solid';
1688
+            } elseif ( substr( $icon, 0, 7 ) === "far fa-" ) {
1689
+                $fa_type = 'regular';
1690
+            } elseif ( substr( $icon, 0, 7 ) === "fab fa-" ) {
1691
+                $fa_type = 'brands';
1692
+            } else {
1693
+                $icon = "'" . $icon . "'";
1694
+            }
1695
+
1696
+            // set the icon if we found one
1697
+            if ( $fa_type ) {
1698
+                $fa_icon = str_replace( array( "fas fa-", "far fa-", "fab fa-" ), "", $icon );
1699
+                $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 . "'}))";
1700
+            }
1701
+
1702
+            return $icon;
1703
+        }
1640 1704
 
1641
-			return $url;
1642
-		}
1705
+        public function group_arguments( $arguments ) {
1706
+            if ( ! empty( $arguments ) ) {
1707
+                $temp_arguments = array();
1708
+                $general        = __( "General", 'ayecode-connect' );
1709
+                $add_sections   = false;
1710
+                foreach ( $arguments as $key => $args ) {
1711
+                    if ( isset( $args['group'] ) ) {
1712
+                        $temp_arguments[ $args['group'] ][ $key ] = $args;
1713
+                        $add_sections                             = true;
1714
+                    } else {
1715
+                        $temp_arguments[ $general ][ $key ] = $args;
1716
+                    }
1717
+                }
1643 1718
 
1644
-		/**
1645
-		 * Get the url path to the current folder.
1646
-		 *
1647
-		 * @return string
1648
-		 */
1649
-		public function get_url_old() {
1650
-
1651
-			$url = $this->url;
1652
-
1653
-			if ( ! $url ) {
1654
-				// check if we are inside a plugin
1655
-				$file_dir = str_replace( "/includes", "", dirname( __FILE__ ) );
1656
-
1657
-				$dir_parts = explode( "/wp-content/", $file_dir );
1658
-				$url_parts = explode( "/wp-content/", plugins_url() );
1659
-
1660
-				if ( ! empty( $url_parts[0] ) && ! empty( $dir_parts[1] ) ) {
1661
-					$url       = trailingslashit( $url_parts[0] . "/wp-content/" . $dir_parts[1] );
1662
-					$this->url = $url;
1663
-				}
1664
-			}
1665
-
1666
-
1667
-			return $url;
1668
-		}
1669
-
1670
-		/**
1671
-		 * Generate the block icon.
1672
-		 *
1673
-		 * Enables the use of Font Awesome icons.
1674
-		 *
1675
-		 * @note xlink:href is actually deprecated but href is not supported by all so we use both.
1676
-		 *
1677
-		 * @param $icon
1678
-		 *
1679
-		 * @return string
1680
-		 *@since 1.1.0
1681
-		 */
1682
-		public function get_block_icon( $icon ) {
1683
-
1684
-			// check if we have a Font Awesome icon
1685
-			$fa_type = '';
1686
-			if ( substr( $icon, 0, 7 ) === "fas fa-" ) {
1687
-				$fa_type = 'solid';
1688
-			} elseif ( substr( $icon, 0, 7 ) === "far fa-" ) {
1689
-				$fa_type = 'regular';
1690
-			} elseif ( substr( $icon, 0, 7 ) === "fab fa-" ) {
1691
-				$fa_type = 'brands';
1692
-			} else {
1693
-				$icon = "'" . $icon . "'";
1694
-			}
1695
-
1696
-			// set the icon if we found one
1697
-			if ( $fa_type ) {
1698
-				$fa_icon = str_replace( array( "fas fa-", "far fa-", "fab fa-" ), "", $icon );
1699
-				$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 . "'}))";
1700
-			}
1701
-
1702
-			return $icon;
1703
-		}
1719
+                // only add sections if more than one
1720
+                if ( $add_sections ) {
1721
+                    $arguments = $temp_arguments;
1722
+                }
1723
+            }
1704 1724
 
1705
-		public function group_arguments( $arguments ) {
1706
-			if ( ! empty( $arguments ) ) {
1707
-				$temp_arguments = array();
1708
-				$general        = __( "General", 'ayecode-connect' );
1709
-				$add_sections   = false;
1710
-				foreach ( $arguments as $key => $args ) {
1711
-					if ( isset( $args['group'] ) ) {
1712
-						$temp_arguments[ $args['group'] ][ $key ] = $args;
1713
-						$add_sections                             = true;
1714
-					} else {
1715
-						$temp_arguments[ $general ][ $key ] = $args;
1716
-					}
1717
-				}
1725
+            return $arguments;
1726
+        }
1718 1727
 
1719
-				// only add sections if more than one
1720
-				if ( $add_sections ) {
1721
-					$arguments = $temp_arguments;
1722
-				}
1723
-			}
1728
+        /**
1729
+         * Parse used group tabs.
1730
+         *
1731
+         * @since 1.1.17
1732
+         */
1733
+        public function group_block_tabs( $tabs, $arguments ) {
1734
+            if ( ! empty( $tabs ) && ! empty( $arguments ) ) {
1735
+                $has_sections = false;
1736
+
1737
+                foreach ( $this->arguments as $key => $args ) {
1738
+                    if ( isset( $args['group'] ) ) {
1739
+                        $has_sections = true;
1740
+                        break;
1741
+                    }
1742
+                }
1724 1743
 
1725
-			return $arguments;
1726
-		}
1744
+                if ( ! $has_sections ) {
1745
+                    return $tabs;
1746
+                }
1727 1747
 
1728
-		/**
1729
-		 * Parse used group tabs.
1730
-		 *
1731
-		 * @since 1.1.17
1732
-		 */
1733
-		public function group_block_tabs( $tabs, $arguments ) {
1734
-			if ( ! empty( $tabs ) && ! empty( $arguments ) ) {
1735
-				$has_sections = false;
1736
-
1737
-				foreach ( $this->arguments as $key => $args ) {
1738
-					if ( isset( $args['group'] ) ) {
1739
-						$has_sections = true;
1740
-						break;
1741
-					}
1742
-				}
1748
+                $new_tabs = array();
1743 1749
 
1744
-				if ( ! $has_sections ) {
1745
-					return $tabs;
1746
-				}
1750
+                foreach ( $tabs as $tab_key => $tab ) {
1751
+                    $new_groups = array();
1747 1752
 
1748
-				$new_tabs = array();
1753
+                    if ( ! empty( $tab['groups'] ) && is_array( $tab['groups'] ) ) {
1754
+                        foreach ( $tab['groups'] as $group ) {
1755
+                            if ( isset( $arguments[ $group ] ) ) {
1756
+                                $new_groups[] = $group;
1757
+                            }
1758
+                        }
1759
+                    }
1749 1760
 
1750
-				foreach ( $tabs as $tab_key => $tab ) {
1751
-					$new_groups = array();
1761
+                    if ( ! empty( $new_groups ) ) {
1762
+                        $tab['groups'] = $new_groups;
1752 1763
 
1753
-					if ( ! empty( $tab['groups'] ) && is_array( $tab['groups'] ) ) {
1754
-						foreach ( $tab['groups'] as $group ) {
1755
-							if ( isset( $arguments[ $group ] ) ) {
1756
-								$new_groups[] = $group;
1757
-							}
1758
-						}
1759
-					}
1764
+                        $new_tabs[ $tab_key ] = $tab;
1765
+                    }
1766
+                }
1760 1767
 
1761
-					if ( ! empty( $new_groups ) ) {
1762
-						$tab['groups'] = $new_groups;
1768
+                $tabs = $new_tabs;
1769
+            }
1763 1770
 
1764
-						$new_tabs[ $tab_key ] = $tab;
1765
-					}
1766
-				}
1771
+            return $tabs;
1772
+        }
1767 1773
 
1768
-				$tabs = $new_tabs;
1769
-			}
1774
+        /**
1775
+         * Output the JS for building the dynamic Guntenberg block.
1776
+         *
1777
+         * @return mixed
1778
+         *@since 1.0.9 Save numbers as numbers and not strings.
1779
+         * @since 1.1.0 Font Awesome classes can be used for icons.
1780
+         * @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.
1781
+         */
1782
+        public function block() {
1783
+            global $sd_is_js_functions_loaded, $aui_bs5;
1770 1784
 
1771
-			return $tabs;
1772
-		}
1785
+            $show_advanced = $this->block_show_advanced();
1773 1786
 
1774
-		/**
1775
-		 * Output the JS for building the dynamic Guntenberg block.
1776
-		 *
1777
-		 * @return mixed
1778
-		 *@since 1.0.9 Save numbers as numbers and not strings.
1779
-		 * @since 1.1.0 Font Awesome classes can be used for icons.
1780
-		 * @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.
1781
-		 */
1782
-		public function block() {
1783
-			global $sd_is_js_functions_loaded, $aui_bs5;
1784
-
1785
-			$show_advanced = $this->block_show_advanced();
1786
-
1787
-			ob_start();
1788
-			?>
1787
+            ob_start();
1788
+            ?>
1789 1789
 			<script>
1790 1790
 			<?php
1791
-			if ( ! $sd_is_js_functions_loaded ) {
1792
-				$sd_is_js_functions_loaded = true;
1793
-			?>
1791
+            if ( ! $sd_is_js_functions_loaded ) {
1792
+                $sd_is_js_functions_loaded = true;
1793
+            ?>
1794 1794
 function sd_show_view_options($this){
1795 1795
 	if(jQuery($this).html().length){
1796 1796
 		jQuery($this).html('');
@@ -2244,8 +2244,8 @@  discard block
 block discarded – undo
2244 2244
 				$classes = [];
2245 2245
 
2246 2246
 				<?php
2247
-				if($aui_bs5){
2248
-					?>
2247
+                if($aui_bs5){
2248
+                    ?>
2249 2249
 				$aui_bs5 = true;
2250 2250
 				$p_ml = 'ms-';
2251 2251
 				$p_mr = 'me-';
@@ -2253,8 +2253,8 @@  discard block
 block discarded – undo
2253 2253
 				$p_pl = 'ps-';
2254 2254
 				$p_pr = 'pe-';
2255 2255
 					<?php
2256
-				}else{
2257
-						?>
2256
+                }else{
2257
+                        ?>
2258 2258
 				$aui_bs5 = false;
2259 2259
 				$p_ml = 'ml-';
2260 2260
 				$p_mr = 'mr-';
@@ -2262,8 +2262,8 @@  discard block
 block discarded – undo
2262 2262
 				$p_pl = 'pl-';
2263 2263
 				$p_pr = 'pr-';
2264 2264
 					<?php
2265
-				}
2266
-				?>
2265
+                }
2266
+                ?>
2267 2267
 
2268 2268
 				// margins
2269 2269
 				if ( $args['mt'] !== undefined && $args['mt'] !== '' ) { $classes.push( "mt-" + $args['mt'] );  $mt = $args['mt']; }else{$mt = null;}
@@ -2447,12 +2447,12 @@  discard block
 block discarded – undo
2447 2447
 			<?php
2448 2448
 
2449 2449
 
2450
-			}
2450
+            }
2451 2451
 
2452
-			if(method_exists($this,'block_global_js')){
2453
-					echo $this->block_global_js();
2454
-			}
2455
-			?>
2452
+            if(method_exists($this,'block_global_js')){
2453
+                    echo $this->block_global_js();
2454
+            }
2455
+            ?>
2456 2456
 
2457 2457
 jQuery(function() {
2458 2458
 
@@ -2505,13 +2505,13 @@  discard block
 block discarded – undo
2505 2505
 						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/.
2506 2506
 						supports: {
2507 2507
 							<?php
2508
-							if(!isset($this->options['block-supports']['renaming'])){
2509
-								$this->options['block-supports']['renaming'] = false;
2510
-							}
2511
-							if ( isset( $this->options['block-supports'] ) ) {
2512
-								echo $this->array_to_attributes( $this->options['block-supports'] );
2513
-							}
2514
-							?>
2508
+                            if(!isset($this->options['block-supports']['renaming'])){
2509
+                                $this->options['block-supports']['renaming'] = false;
2510
+                            }
2511
+                            if ( isset( $this->options['block-supports'] ) ) {
2512
+                                echo $this->array_to_attributes( $this->options['block-supports'] );
2513
+                            }
2514
+                            ?>
2515 2515
 						},
2516 2516
 						__experimentalLabel( attributes, { context } ) {
2517 2517
 							var visibility_html = attributes && attributes.visibility_conditions ? ' &#128065;' : '';
@@ -2521,174 +2521,174 @@  discard block
 block discarded – undo
2521 2521
 						},
2522 2522
 						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.
2523 2523
 						<?php if ( isset( $this->options['block-keywords'] ) ) {
2524
-						echo "keywords : " . $this->options['block-keywords'] . ",";
2525
-						}
2526
-
2527
-
2528
-						// block hover preview.
2529
-						$example_args = array();
2530
-						if(!empty($this->arguments)){
2531
-							foreach($this->arguments as $key => $a_args){
2532
-								if(isset($a_args['example'])){
2533
-									$example_args[$key] = $a_args['example'];
2534
-								}
2535
-							}
2536
-						}
2537
-						$viewport_width = isset($this->options['example']['viewportWidth']) ? 'viewportWidth: '.absint($this->options['example']['viewportWidth']) : '';
2538
-						$example_inner_blocks = !empty($this->options['example']['innerBlocks']) && is_array($this->options['example']['innerBlocks']) ? 'innerBlocks: ' . wp_json_encode($this->options['example']['innerBlocks']) : '';
2539
-						if( isset( $this->options['example'] ) && $this->options['example'] === false ){
2540
-							// no preview if set to false
2541
-						}elseif( !empty( $example_args ) ){
2542
-							echo "example : {attributes:{".$this->array_to_attributes( $example_args )."},$viewport_width},";
2543
-						}elseif( !empty( $this->options['example'] ) ){
2544
-							unset($this->options['example']['viewportWidth']);
2545
-							unset($this->options['example']['innerBlocks']);
2546
-							$example_atts = $this->array_to_attributes( $this->options['example'] );
2547
-							$example_parts = array();
2548
-							if($example_atts){
2549
-								$example_parts[] = rtrim($example_atts,",");
2550
-							}
2551
-							if($viewport_width){
2552
-								$example_parts[] = $viewport_width;
2553
-							}
2554
-							if($example_inner_blocks){
2555
-								$example_parts[] = $example_inner_blocks;
2556
-							}
2557
-							if(!empty($example_parts)){
2558
-								echo "example : {".implode(',', $example_parts)."},";
2559
-							}
2560
-						}else{
2561
-							echo 'example : {viewportWidth: 500},';
2562
-						}
2563
-
2564
-
2565
-
2566
-						// limit to parent
2567
-						if( !empty( $this->options['parent'] ) ){
2568
-							echo "parent : " . wp_json_encode( $this->options['parent'] ) . ",";
2569
-						}
2570
-
2571
-						// limit allowed blocks
2572
-						if( !empty( $this->options['allowed-blocks'] ) ){
2573
-							echo "allowedBlocks : " . wp_json_encode( $this->options['allowed-blocks'] ) . ",";
2574
-						}
2575
-
2576
-						// maybe set no_wrap
2577
-						$no_wrap = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
2578
-						if ( isset( $this->arguments['no_wrap'] ) && $this->arguments['no_wrap'] ) {
2579
-							$no_wrap = true;
2580
-						}
2581
-						if ( $no_wrap ) {
2582
-							$this->options['block-wrap'] = '';
2583
-						}
2584
-
2585
-						// maybe load the drag/drop functions.
2586
-						$img_drag_drop = false;
2587
-
2588
-						$show_alignment = false;
2589
-						// align feature
2590
-						/*echo "supports: {";
2524
+                        echo "keywords : " . $this->options['block-keywords'] . ",";
2525
+                        }
2526
+
2527
+
2528
+                        // block hover preview.
2529
+                        $example_args = array();
2530
+                        if(!empty($this->arguments)){
2531
+                            foreach($this->arguments as $key => $a_args){
2532
+                                if(isset($a_args['example'])){
2533
+                                    $example_args[$key] = $a_args['example'];
2534
+                                }
2535
+                            }
2536
+                        }
2537
+                        $viewport_width = isset($this->options['example']['viewportWidth']) ? 'viewportWidth: '.absint($this->options['example']['viewportWidth']) : '';
2538
+                        $example_inner_blocks = !empty($this->options['example']['innerBlocks']) && is_array($this->options['example']['innerBlocks']) ? 'innerBlocks: ' . wp_json_encode($this->options['example']['innerBlocks']) : '';
2539
+                        if( isset( $this->options['example'] ) && $this->options['example'] === false ){
2540
+                            // no preview if set to false
2541
+                        }elseif( !empty( $example_args ) ){
2542
+                            echo "example : {attributes:{".$this->array_to_attributes( $example_args )."},$viewport_width},";
2543
+                        }elseif( !empty( $this->options['example'] ) ){
2544
+                            unset($this->options['example']['viewportWidth']);
2545
+                            unset($this->options['example']['innerBlocks']);
2546
+                            $example_atts = $this->array_to_attributes( $this->options['example'] );
2547
+                            $example_parts = array();
2548
+                            if($example_atts){
2549
+                                $example_parts[] = rtrim($example_atts,",");
2550
+                            }
2551
+                            if($viewport_width){
2552
+                                $example_parts[] = $viewport_width;
2553
+                            }
2554
+                            if($example_inner_blocks){
2555
+                                $example_parts[] = $example_inner_blocks;
2556
+                            }
2557
+                            if(!empty($example_parts)){
2558
+                                echo "example : {".implode(',', $example_parts)."},";
2559
+                            }
2560
+                        }else{
2561
+                            echo 'example : {viewportWidth: 500},';
2562
+                        }
2563
+
2564
+
2565
+
2566
+                        // limit to parent
2567
+                        if( !empty( $this->options['parent'] ) ){
2568
+                            echo "parent : " . wp_json_encode( $this->options['parent'] ) . ",";
2569
+                        }
2570
+
2571
+                        // limit allowed blocks
2572
+                        if( !empty( $this->options['allowed-blocks'] ) ){
2573
+                            echo "allowedBlocks : " . wp_json_encode( $this->options['allowed-blocks'] ) . ",";
2574
+                        }
2575
+
2576
+                        // maybe set no_wrap
2577
+                        $no_wrap = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
2578
+                        if ( isset( $this->arguments['no_wrap'] ) && $this->arguments['no_wrap'] ) {
2579
+                            $no_wrap = true;
2580
+                        }
2581
+                        if ( $no_wrap ) {
2582
+                            $this->options['block-wrap'] = '';
2583
+                        }
2584
+
2585
+                        // maybe load the drag/drop functions.
2586
+                        $img_drag_drop = false;
2587
+
2588
+                        $show_alignment = false;
2589
+                        // align feature
2590
+                        /*echo "supports: {";
2591 2591
 						echo "	align: true,";
2592 2592
 						echo "  html: false";
2593 2593
 						echo "},";*/
2594 2594
 
2595 2595
 
2596
-							echo "attributes : {";
2597
-
2598
-							if ( $show_advanced ) {
2599
-								echo "show_advanced: {";
2600
-								echo "	type: 'boolean',";
2601
-								echo "  default: false,";
2602
-								echo "},";
2603
-							}
2604
-
2605
-							// block wrap element
2606
-							if ( ! empty( $this->options['block-wrap'] ) ) { //@todo we should validate this?
2607
-								echo "block_wrap: {";
2608
-								echo "	type: 'string',";
2609
-								echo "  default: '" . esc_attr( $this->options['block-wrap'] ) . "',";
2610
-								echo "},";
2611
-							}
2612
-
2613
-
2614
-							if ( ! empty( $this->arguments ) ) {
2615
-
2616
-								foreach ( $this->arguments as $key => $args ) {
2617
-
2618
-									if( $args['type'] == 'image' ||  $args['type'] == 'images' ){
2619
-										$img_drag_drop = true;
2620
-									}
2621
-
2622
-									// set if we should show alignment
2623
-									if ( $key == 'alignment' ) {
2624
-										$show_alignment = true;
2625
-									}
2626
-
2627
-									$extra = '';
2628
-
2629
-									if ( $args['type'] == 'notice' ||  $args['type'] == 'tab' ) {
2630
-										continue;
2631
-									}
2632
-									elseif ( $args['type'] == 'checkbox' ) {
2633
-										$type    = 'boolean';
2634
-										$default = isset( $args['default'] ) && $args['default'] ? 'true' : 'false';
2635
-									} elseif ( $args['type'] == 'number' ) {
2636
-										$type    = 'number';
2637
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2638
-									} elseif ( $args['type'] == 'select' && ! empty( $args['multiple'] ) ) {
2639
-										$type = 'array';
2640
-										if ( isset( $args['default'] ) && is_array( $args['default'] ) ) {
2641
-											$default = ! empty( $args['default'] ) ? "['" . implode( "','", $args['default'] ) . "']" : "[]";
2642
-										} else {
2643
-											$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2644
-										}
2645
-									} elseif ( $args['type'] == 'tagselect' ) {
2646
-										$type    = 'array';
2647
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2648
-									} elseif ( $args['type'] == 'multiselect' ) {
2649
-										$type    = 'array';
2650
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2651
-									} elseif ( $args['type'] == 'image_xy' ) {
2652
-										$type    = 'object';
2653
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2654
-									} elseif ( $args['type'] == 'image' ) {
2655
-										$type    = 'string';
2656
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2657
-
2658
-										// add a field for ID
2659
-	//                                    echo $key . "_id : {";
2660
-	//                                    echo "type : 'number',";
2661
-	//                                    echo "},";
2662
-	//                                    echo $key . "_xy : {";
2663
-	//                                    echo "type : 'object',";
2664
-	//                                    echo "},";
2665
-
2666
-									} else {
2667
-										$type    = !empty($args['hidden_type']) ? esc_attr($args['hidden_type']) : 'string';
2668
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2669
-
2670
-									}
2671
-									echo $key . " : {";
2672
-									echo "type : '$type',";
2673
-									echo "default : $default,";
2674
-									echo "},";
2675
-								}
2676
-							}
2677
-
2678
-							echo "content : {type : 'string',default: 'Please select the attributes in the block settings'},";
2679
-							echo "sd_shortcode : {type : 'string',default: ''},";
2680
-
2681
-							if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){
2682
-								echo "sd_shortcode_close : {type : 'string',default: ''},";
2683
-							}
2684
-
2685
-							echo "className: { type: 'string', default: '' },";
2686
-
2687
-							echo "},";
2688
-
2689
-
2690
-
2691
-						?>
2596
+                            echo "attributes : {";
2597
+
2598
+                            if ( $show_advanced ) {
2599
+                                echo "show_advanced: {";
2600
+                                echo "	type: 'boolean',";
2601
+                                echo "  default: false,";
2602
+                                echo "},";
2603
+                            }
2604
+
2605
+                            // block wrap element
2606
+                            if ( ! empty( $this->options['block-wrap'] ) ) { //@todo we should validate this?
2607
+                                echo "block_wrap: {";
2608
+                                echo "	type: 'string',";
2609
+                                echo "  default: '" . esc_attr( $this->options['block-wrap'] ) . "',";
2610
+                                echo "},";
2611
+                            }
2612
+
2613
+
2614
+                            if ( ! empty( $this->arguments ) ) {
2615
+
2616
+                                foreach ( $this->arguments as $key => $args ) {
2617
+
2618
+                                    if( $args['type'] == 'image' ||  $args['type'] == 'images' ){
2619
+                                        $img_drag_drop = true;
2620
+                                    }
2621
+
2622
+                                    // set if we should show alignment
2623
+                                    if ( $key == 'alignment' ) {
2624
+                                        $show_alignment = true;
2625
+                                    }
2626
+
2627
+                                    $extra = '';
2628
+
2629
+                                    if ( $args['type'] == 'notice' ||  $args['type'] == 'tab' ) {
2630
+                                        continue;
2631
+                                    }
2632
+                                    elseif ( $args['type'] == 'checkbox' ) {
2633
+                                        $type    = 'boolean';
2634
+                                        $default = isset( $args['default'] ) && $args['default'] ? 'true' : 'false';
2635
+                                    } elseif ( $args['type'] == 'number' ) {
2636
+                                        $type    = 'number';
2637
+                                        $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2638
+                                    } elseif ( $args['type'] == 'select' && ! empty( $args['multiple'] ) ) {
2639
+                                        $type = 'array';
2640
+                                        if ( isset( $args['default'] ) && is_array( $args['default'] ) ) {
2641
+                                            $default = ! empty( $args['default'] ) ? "['" . implode( "','", $args['default'] ) . "']" : "[]";
2642
+                                        } else {
2643
+                                            $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2644
+                                        }
2645
+                                    } elseif ( $args['type'] == 'tagselect' ) {
2646
+                                        $type    = 'array';
2647
+                                        $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2648
+                                    } elseif ( $args['type'] == 'multiselect' ) {
2649
+                                        $type    = 'array';
2650
+                                        $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2651
+                                    } elseif ( $args['type'] == 'image_xy' ) {
2652
+                                        $type    = 'object';
2653
+                                        $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2654
+                                    } elseif ( $args['type'] == 'image' ) {
2655
+                                        $type    = 'string';
2656
+                                        $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2657
+
2658
+                                        // add a field for ID
2659
+    //                                    echo $key . "_id : {";
2660
+    //                                    echo "type : 'number',";
2661
+    //                                    echo "},";
2662
+    //                                    echo $key . "_xy : {";
2663
+    //                                    echo "type : 'object',";
2664
+    //                                    echo "},";
2665
+
2666
+                                    } else {
2667
+                                        $type    = !empty($args['hidden_type']) ? esc_attr($args['hidden_type']) : 'string';
2668
+                                        $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2669
+
2670
+                                    }
2671
+                                    echo $key . " : {";
2672
+                                    echo "type : '$type',";
2673
+                                    echo "default : $default,";
2674
+                                    echo "},";
2675
+                                }
2676
+                            }
2677
+
2678
+                            echo "content : {type : 'string',default: 'Please select the attributes in the block settings'},";
2679
+                            echo "sd_shortcode : {type : 'string',default: ''},";
2680
+
2681
+                            if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){
2682
+                                echo "sd_shortcode_close : {type : 'string',default: ''},";
2683
+                            }
2684
+
2685
+                            echo "className: { type: 'string', default: '' },";
2686
+
2687
+                            echo "},";
2688
+
2689
+
2690
+
2691
+                        ?>
2692 2692
 
2693 2693
 						// The "edit" property must be a valid function.
2694 2694
 						edit: function (props) {
@@ -2763,10 +2763,10 @@  discard block
 block discarded – undo
2763 2763
 							}
2764 2764
 
2765 2765
 							<?php
2766
-							if(!empty($this->options['block-edit-raw'])) {
2767
-								echo $this->options['block-edit-raw']; // strings have to be in single quotes, may cause issues
2768
-							}else{
2769
-							?>
2766
+                            if(!empty($this->options['block-edit-raw'])) {
2767
+                                echo $this->options['block-edit-raw']; // strings have to be in single quotes, may cause issues
2768
+                            }else{
2769
+                            ?>
2770 2770
 
2771 2771
 function hasSelectedInnerBlock(props) {
2772 2772
 	const select = wp.data.select('core/editor');
@@ -2788,9 +2788,9 @@  discard block
 block discarded – undo
2788 2788
 
2789 2789
 	var $value = '';
2790 2790
 	<?php
2791
-	// if we have a post_type and a category then link them
2792
-	if( isset($this->arguments['post_type']) && isset($this->arguments['category']) && !empty($this->arguments['category']['post_type_linked']) ){
2793
-	?>
2791
+    // if we have a post_type and a category then link them
2792
+    if( isset($this->arguments['post_type']) && isset($this->arguments['category']) && !empty($this->arguments['category']['post_type_linked']) ){
2793
+    ?>
2794 2794
 	if(typeof(prev_attributes[props.clientId]) != 'undefined' && selectedBlock && selectedBlock.clientId === props.clientId){
2795 2795
 		$pt = props.attributes.post_type;
2796 2796
 		if(post_type_rest_slugs.length){
@@ -2803,11 +2803,11 @@  discard block
 block discarded – undo
2803 2803
 			term_query_type = $pt;
2804 2804
 		}
2805 2805
 <?php
2806
-	$cat_path = '';
2807
-	if ( ! empty( $this->arguments['post_type']['onchange_rest']['path'] ) ) {
2808
-		$cat_path = esc_js( strip_tags( $this->arguments['post_type']['onchange_rest']['path'] ) );
2809
-		$cat_path = str_replace( array( '&quot;', '&#039;' ), array( '"', "'" ), $cat_path );
2810
-	}
2806
+    $cat_path = '';
2807
+    if ( ! empty( $this->arguments['post_type']['onchange_rest']['path'] ) ) {
2808
+        $cat_path = esc_js( strip_tags( $this->arguments['post_type']['onchange_rest']['path'] ) );
2809
+        $cat_path = str_replace( array( '&quot;', '&#039;' ), array( '"', "'" ), $cat_path );
2810
+    }
2811 2811
 ?>
2812 2812
 		/* taxonomies */
2813 2813
 		if($value && 'post_type' in prev_attributes[props.clientId] && 'category' in prev_attributes[props.clientId] && run){
@@ -2899,7 +2899,7 @@  discard block
 block discarded – undo
2899 2899
 <?php
2900 2900
 $current_screen = function_exists('get_current_screen') ? get_current_screen() : '';
2901 2901
 if(!empty($current_screen->base) && $current_screen->base==='widgets'){
2902
-	echo 'const { deviceType } = "";';
2902
+    echo 'const { deviceType } = "";';
2903 2903
 }else{
2904 2904
 ?>
2905 2905
 /** Get device type const. */
@@ -2963,8 +2963,8 @@  discard block
 block discarded – undo
2963 2963
 										'attributes': props.attributes,
2964 2964
 										'block_parent_name': parentBlocks.length ? parentBlocks[parentBlocks.length - 1].name : '',
2965 2965
 										'post_id': <?php global $post; if ( isset( $post->ID ) ) {
2966
-										echo $post->ID;
2967
-									}else{echo '0';}?>,
2966
+                                        echo $post->ID;
2967
+                                    }else{echo '0';}?>,
2968 2968
 										'_ajax_nonce': '<?php echo wp_create_nonce( 'super_duper_output_shortcode' );?>'
2969 2969
 									};
2970 2970
 
@@ -2978,20 +2978,20 @@  discard block
 block discarded – undo
2978 2978
 										}
2979 2979
 
2980 2980
 										 <?php
2981
-										if(!empty($this->options['nested-block'])){
2982
-											?>
2981
+                                        if(!empty($this->options['nested-block'])){
2982
+                                            ?>
2983 2983
 											// props.setAttributes({content: env});
2984 2984
 										is_fetching = false;
2985 2985
 										prev_attributes[props.clientId] = props.attributes;
2986 2986
 											 <?php
2987
-										}else{
2988
-										?>
2987
+                                        }else{
2988
+                                        ?>
2989 2989
 										props.setAttributes({content: env});
2990 2990
 										is_fetching = false;
2991 2991
 										prev_attributes[props.clientId] = props.attributes;
2992 2992
 										<?php
2993
-										}
2994
-										?>
2993
+                                        }
2994
+                                        ?>
2995 2995
 
2996 2996
 
2997 2997
 										// if AUI is active call the js init function
@@ -3010,31 +3010,31 @@  discard block
 block discarded – undo
3010 3010
 							}
3011 3011
 
3012 3012
 							<?php
3013
-							if(!empty($this->options['block-edit-js'])) {
3014
-								echo  $this->options['block-edit-js'] ; // strings have to be in single quotes, may cause issues
3015
-							}
3013
+                            if(!empty($this->options['block-edit-js'])) {
3014
+                                echo  $this->options['block-edit-js'] ; // strings have to be in single quotes, may cause issues
3015
+                            }
3016 3016
 
3017 3017
 
3018 3018
 
3019 3019
 
3020
-							if(empty($this->options['block-save-return'])){
3021
-							?>
3020
+                            if(empty($this->options['block-save-return'])){
3021
+                            ?>
3022 3022
 								///////////////////////////////////////////////////////////////////////
3023 3023
 
3024 3024
 									 // build the shortcode.
3025 3025
 								shortcode = "[<?php echo $this->options['base_id'];?>";
3026 3026
 								<?php
3027 3027
 
3028
-								if(! empty( $this->arguments )){
3028
+                                if(! empty( $this->arguments )){
3029 3029
 
3030
-								foreach($this->arguments as $key => $args){
3031
-								   // if($args['type']=='tabs'){continue;}
3030
+                                foreach($this->arguments as $key => $args){
3031
+                                    // if($args['type']=='tabs'){continue;}
3032 3032
 
3033
-								   // don't add metadata arguments
3034
-								   if (substr($key, 0, 9 ) === 'metadata_') {
3035
-									   continue;
3036
-								   }
3037
-								?>
3033
+                                    // don't add metadata arguments
3034
+                                    if (substr($key, 0, 9 ) === 'metadata_') {
3035
+                                        continue;
3036
+                                    }
3037
+                                ?>
3038 3038
 								if (props.attributes.hasOwnProperty("<?php echo esc_attr( $key );?>")) {
3039 3039
 									if ('<?php echo esc_attr( $key );?>' == 'html') {
3040 3040
 									} else if ('<?php echo esc_attr( $args['type'] );?>' == 'image_xy') {
@@ -3045,10 +3045,10 @@  discard block
 block discarded – undo
3045 3045
 									}
3046 3046
 								}
3047 3047
 								<?php
3048
-								}
3049
-								}
3048
+                                }
3049
+                                }
3050 3050
 
3051
-								?>
3051
+                                ?>
3052 3052
 								shortcode += "]";
3053 3053
 
3054 3054
 								if(shortcode){
@@ -3060,17 +3060,17 @@  discard block
 block discarded – undo
3060 3060
 
3061 3061
 
3062 3062
 									<?php
3063
-									if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){
3064
-										echo "props.setAttributes({sd_shortcode_close: '[/".esc_attr( $this->options['base_id'] )."]'});";
3065
-									}
3066
-									?>
3063
+                                    if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){
3064
+                                        echo "props.setAttributes({sd_shortcode_close: '[/".esc_attr( $this->options['base_id'] )."]'});";
3065
+                                    }
3066
+                                    ?>
3067 3067
 								}
3068 3068
 
3069 3069
 
3070 3070
 							///////////////////////////////////////////////////////////////////////
3071 3071
 							<?php
3072
-							} // end nested block check
3073
-							?>
3072
+                            } // end nested block check
3073
+                            ?>
3074 3074
 
3075 3075
 							return [
3076 3076
 
@@ -3094,10 +3094,10 @@  discard block
 block discarded – undo
3094 3094
 
3095 3095
 									<?php
3096 3096
 
3097
-									if(! empty( $this->arguments )){
3097
+                                    if(! empty( $this->arguments )){
3098 3098
 
3099
-									if ( $show_advanced ) {
3100
-									?>
3099
+                                    if ( $show_advanced ) {
3100
+                                    ?>
3101 3101
 									el('div', {
3102 3102
 											style: {'padding-left': '16px','padding-right': '16px'}
3103 3103
 										},
@@ -3114,119 +3114,119 @@  discard block
 block discarded – undo
3114 3114
 									)
3115 3115
 									,
3116 3116
 									<?php
3117
-									}
3118
-
3119
-									$arguments = $this->group_arguments( $this->arguments );
3120
-									$block_group_tabs = ! empty( $this->options['block_group_tabs'] ) ? $this->group_block_tabs( $this->options['block_group_tabs'], $arguments ) : array();
3121
-
3122
-									// Do we have sections?
3123
-									$has_sections = $arguments == $this->arguments ? false : true;
3124
-
3125
-									if($has_sections){
3126
-									$panel_count = 0;
3127
-									$open_tab = '';
3128
-
3129
-									$open_tab_groups = array();
3130
-									$used_tabs = array();
3131
-
3132
-									foreach ( $arguments as $key => $args ) {
3133
-										$close_tab = false;
3134
-										$close_tabs = false;
3135
-
3136
-										 if ( ! empty( $block_group_tabs ) ) {
3137
-											foreach ( $block_group_tabs as $tab_name => $tab_args ) {
3138
-												if ( in_array( $key, $tab_args['groups'] ) ) {
3139
-													$open_tab_groups[] = $key;
3140
-
3141
-													if ( $open_tab != $tab_name ) {
3142
-														$tab_args['tab']['tabs_open'] = $open_tab == '' ? true : false;
3143
-														$tab_args['tab']['open'] = true;
3144
-
3145
-														$this->block_tab_start( '', $tab_args );
3146
-														$open_tab = $tab_name;
3147
-														$used_tabs[] = $tab_name;
3148
-													}
3149
-
3150
-													if ( $open_tab_groups == $tab_args['groups'] ) {
3151
-														$close_tab = true;
3152
-														$open_tab_groups = array();
3153
-
3154
-														if ( $used_tabs == array_keys( $block_group_tabs ) ) {
3155
-															$close_tabs = true;
3156
-														}
3157
-													}
3158
-												}
3159
-											}
3160
-										}
3161
-										?>
3117
+                                    }
3118
+
3119
+                                    $arguments = $this->group_arguments( $this->arguments );
3120
+                                    $block_group_tabs = ! empty( $this->options['block_group_tabs'] ) ? $this->group_block_tabs( $this->options['block_group_tabs'], $arguments ) : array();
3121
+
3122
+                                    // Do we have sections?
3123
+                                    $has_sections = $arguments == $this->arguments ? false : true;
3124
+
3125
+                                    if($has_sections){
3126
+                                    $panel_count = 0;
3127
+                                    $open_tab = '';
3128
+
3129
+                                    $open_tab_groups = array();
3130
+                                    $used_tabs = array();
3131
+
3132
+                                    foreach ( $arguments as $key => $args ) {
3133
+                                        $close_tab = false;
3134
+                                        $close_tabs = false;
3135
+
3136
+                                            if ( ! empty( $block_group_tabs ) ) {
3137
+                                            foreach ( $block_group_tabs as $tab_name => $tab_args ) {
3138
+                                                if ( in_array( $key, $tab_args['groups'] ) ) {
3139
+                                                    $open_tab_groups[] = $key;
3140
+
3141
+                                                    if ( $open_tab != $tab_name ) {
3142
+                                                        $tab_args['tab']['tabs_open'] = $open_tab == '' ? true : false;
3143
+                                                        $tab_args['tab']['open'] = true;
3144
+
3145
+                                                        $this->block_tab_start( '', $tab_args );
3146
+                                                        $open_tab = $tab_name;
3147
+                                                        $used_tabs[] = $tab_name;
3148
+                                                    }
3149
+
3150
+                                                    if ( $open_tab_groups == $tab_args['groups'] ) {
3151
+                                                        $close_tab = true;
3152
+                                                        $open_tab_groups = array();
3153
+
3154
+                                                        if ( $used_tabs == array_keys( $block_group_tabs ) ) {
3155
+                                                            $close_tabs = true;
3156
+                                                        }
3157
+                                                    }
3158
+                                                }
3159
+                                            }
3160
+                                        }
3161
+                                        ?>
3162 3162
 										el(wp.components.PanelBody, {
3163 3163
 												title: '<?php esc_attr_e( $key ); ?>',
3164 3164
 												initialOpen: <?php if ( $panel_count ) {
3165
-												echo "false";
3166
-											} else {
3167
-												echo "true";
3168
-											}?>
3165
+                                                echo "false";
3166
+                                            } else {
3167
+                                                echo "true";
3168
+                                            }?>
3169 3169
 											},
3170 3170
 											<?php
3171
-											foreach ( $args as $k => $a ) {
3172
-												$this->block_tab_start( $k, $a );
3173
-												$this->block_row_start( $k, $a );
3174
-												$this->build_block_arguments( $k, $a );
3175
-												$this->block_row_end( $k, $a );
3176
-												$this->block_tab_end( $k, $a );
3177
-											}
3178
-											?>
3171
+                                            foreach ( $args as $k => $a ) {
3172
+                                                $this->block_tab_start( $k, $a );
3173
+                                                $this->block_row_start( $k, $a );
3174
+                                                $this->build_block_arguments( $k, $a );
3175
+                                                $this->block_row_end( $k, $a );
3176
+                                                $this->block_tab_end( $k, $a );
3177
+                                            }
3178
+                                            ?>
3179 3179
 										),
3180 3180
 										<?php
3181
-										$panel_count ++;
3181
+                                        $panel_count ++;
3182 3182
 
3183
-										if($close_tab || $close_tabs){
3184
-											$tab_args = array(
3185
-												'tab'	=> array(
3186
-													'tabs_close' => $close_tabs,
3187
-												'close' => true,
3188
-												)
3183
+                                        if($close_tab || $close_tabs){
3184
+                                            $tab_args = array(
3185
+                                                'tab'	=> array(
3186
+                                                    'tabs_close' => $close_tabs,
3187
+                                                'close' => true,
3188
+                                                )
3189 3189
 
3190
-											);
3191
-											$this->block_tab_end( '', $tab_args );
3190
+                                            );
3191
+                                            $this->block_tab_end( '', $tab_args );
3192 3192
 //											echo '###close'; print_r($tab_args);
3193
-											$panel_count = 0;
3194
-										}
3193
+                                            $panel_count = 0;
3194
+                                        }
3195 3195
 //
3196 3196
 
3197
-									}
3198
-									}else {
3199
-									?>
3197
+                                    }
3198
+                                    }else {
3199
+                                    ?>
3200 3200
 									el(wp.components.PanelBody, {
3201 3201
 											title: '<?php esc_attr_e( "Settings", 'ayecode-connect' ); ?>',
3202 3202
 											initialOpen: true
3203 3203
 										},
3204 3204
 										<?php
3205
-										foreach ( $this->arguments as $key => $args ) {
3206
-											$this->block_row_start( $key, $args );
3207
-											$this->build_block_arguments( $key, $args );
3208
-											$this->block_row_end( $key, $args );
3209
-										}
3210
-										?>
3205
+                                        foreach ( $this->arguments as $key => $args ) {
3206
+                                            $this->block_row_start( $key, $args );
3207
+                                            $this->build_block_arguments( $key, $args );
3208
+                                            $this->block_row_end( $key, $args );
3209
+                                        }
3210
+                                        ?>
3211 3211
 									),
3212 3212
 									<?php
3213
-									}
3213
+                                    }
3214 3214
 
3215
-									}
3216
-									?>
3215
+                                    }
3216
+                                    ?>
3217 3217
 
3218 3218
 								),
3219 3219
 
3220 3220
 								<?php
3221
-								// If the user sets block-output array then build it
3222
-								if ( ! empty( $this->options['block-output'] ) ) {
3223
-								$this->block_element( $this->options['block-output'] );
3224
-							}elseif(!empty($this->options['block-edit-return'])){
3225
-								   echo $this->options['block-edit-return'];
3226
-							}else{
3227
-								// if no block-output is set then we try and get the shortcode html output via ajax.
3228
-								$block_edit_wrap_tag = !empty($this->options['block_edit_wrap_tag']) ? esc_attr($this->options['block_edit_wrap_tag']) : 'div';
3229
-								?>
3221
+                                // If the user sets block-output array then build it
3222
+                                if ( ! empty( $this->options['block-output'] ) ) {
3223
+                                $this->block_element( $this->options['block-output'] );
3224
+                            }elseif(!empty($this->options['block-edit-return'])){
3225
+                                    echo $this->options['block-edit-return'];
3226
+                            }else{
3227
+                                // if no block-output is set then we try and get the shortcode html output via ajax.
3228
+                                $block_edit_wrap_tag = !empty($this->options['block_edit_wrap_tag']) ? esc_attr($this->options['block_edit_wrap_tag']) : 'div';
3229
+                                ?>
3230 3230
 								el('<?php echo esc_attr($block_edit_wrap_tag); ?>', wp.blockEditor.useBlockProps({
3231 3231
 									dangerouslySetInnerHTML: {__html: onChangeContent()},
3232 3232
 									className: props.className,
@@ -3234,13 +3234,13 @@  discard block
 block discarded – undo
3234 3234
 									style: {'minHeight': '30px'}
3235 3235
 								}))
3236 3236
 								<?php
3237
-								}
3238
-								?>
3237
+                                }
3238
+                                ?>
3239 3239
 							]; // end return
3240 3240
 
3241 3241
 							<?php
3242
-							} // end block-edit-raw else
3243
-							?>
3242
+                            } // end block-edit-raw else
3243
+                            ?>
3244 3244
 						},
3245 3245
 
3246 3246
 						// The "save" property must be specified and must be a valid function.
@@ -3254,16 +3254,16 @@  discard block
 block discarded – undo
3254 3254
 							$html = '';
3255 3255
 							<?php
3256 3256
 
3257
-							if(! empty( $this->arguments )){
3257
+                            if(! empty( $this->arguments )){
3258 3258
 
3259
-							foreach($this->arguments as $key => $args){
3260
-							   // if($args['type']=='tabs'){continue;}
3259
+                            foreach($this->arguments as $key => $args){
3260
+                                // if($args['type']=='tabs'){continue;}
3261 3261
 
3262
-							   // don't add metadata arguments
3263
-							   if (substr($key, 0, 9 ) === 'metadata_') {
3264
-								   continue;
3265
-							   }
3266
-							?>
3262
+                                // don't add metadata arguments
3263
+                                if (substr($key, 0, 9 ) === 'metadata_') {
3264
+                                    continue;
3265
+                                }
3266
+                            ?>
3267 3267
 							if (attr.hasOwnProperty("<?php echo esc_attr( $key );?>")) {
3268 3268
 								if ('<?php echo esc_attr( $key );?>' == 'html') {
3269 3269
 									$html = attr.<?php echo esc_attr( $key );?>;
@@ -3274,10 +3274,10 @@  discard block
 block discarded – undo
3274 3274
 								}
3275 3275
 							}
3276 3276
 							<?php
3277
-							}
3278
-							}
3277
+                            }
3278
+                            }
3279 3279
 
3280
-							?>
3280
+                            ?>
3281 3281
 							content += "]";
3282 3282
 							 content = '';
3283 3283
 
@@ -3287,7 +3287,7 @@  discard block
 block discarded – undo
3287 3287
 //                                $html = 'el( InnerBlocks.Content )';
3288 3288
 //                                <?php
3289 3289
 //                            }
3290
-							?>
3290
+                            ?>
3291 3291
 							// if has html element
3292 3292
 							if ($html) {
3293 3293
 								//content += $html + "[/<?php echo $this->options['base_id'];?>]";
@@ -3320,12 +3320,12 @@  discard block
 block discarded – undo
3320 3320
 //                                <x?php
3321 3321
 //							}else
3322 3322
 
3323
-							if(!empty($this->options['block-output'])){
3323
+                            if(!empty($this->options['block-output'])){
3324 3324
 //                               echo "return";
3325 3325
 //                               $this->block_element( $this->options['block-output'], true );
3326 3326
 //                               echo ";";
3327 3327
 
3328
-							   ?>
3328
+                                ?>
3329 3329
 							  return el(
3330 3330
 								   '',
3331 3331
 								   {},
@@ -3335,10 +3335,10 @@  discard block
 block discarded – undo
3335 3335
 							   );
3336 3336
 								<?php
3337 3337
 
3338
-							}elseif(!empty($this->options['block-save-return'])){
3339
-								   echo 'return ' . $this->options['block-save-return'];
3340
-							}elseif(!empty($this->options['nested-block'])){
3341
-								?>
3338
+                            }elseif(!empty($this->options['block-save-return'])){
3339
+                                    echo 'return ' . $this->options['block-save-return'];
3340
+                            }elseif(!empty($this->options['nested-block'])){
3341
+                                ?>
3342 3342
 							  return el(
3343 3343
 								   '',
3344 3344
 								   {},
@@ -3347,22 +3347,22 @@  discard block
 block discarded – undo
3347 3347
 								 //  el('', {dangerouslySetInnerHTML: {__html: "[/<?php echo $this->options['base_id'];?>]"}})
3348 3348
 							   );
3349 3349
 								<?php
3350
-							}elseif(!empty( $this->options['block-save-return'] ) ){
3351
-								echo "return ". $this->options['block-edit-return'].";";
3352
-							}elseif(isset( $this->options['block-wrap'] ) && $this->options['block-wrap'] == ''){
3353
-							?>
3350
+                            }elseif(!empty( $this->options['block-save-return'] ) ){
3351
+                                echo "return ". $this->options['block-edit-return'].";";
3352
+                            }elseif(isset( $this->options['block-wrap'] ) && $this->options['block-wrap'] == ''){
3353
+                            ?>
3354 3354
 							return content;
3355 3355
 							<?php
3356
-							}else{
3357
-							?>
3356
+                            }else{
3357
+                            ?>
3358 3358
 							var block_wrap = 'div';
3359 3359
 							if (attr.hasOwnProperty("block_wrap")) {
3360 3360
 								block_wrap = attr.block_wrap;
3361 3361
 							}
3362 3362
 							return el(block_wrap, wp.blockEditor.useBlockProps.save( {dangerouslySetInnerHTML: {__html: content}, className: align} ));
3363 3363
 							<?php
3364
-							}
3365
-							?>
3364
+                            }
3365
+                            ?>
3366 3366
 
3367 3367
 
3368 3368
 						}
@@ -3376,43 +3376,43 @@  discard block
 block discarded – undo
3376 3376
 				});
3377 3377
 			</script>
3378 3378
 			<?php
3379
-			$output = ob_get_clean();
3379
+            $output = ob_get_clean();
3380 3380
 
3381
-			/*
3381
+            /*
3382 3382
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
3383 3383
 			 */
3384 3384
 
3385
-			return str_replace( array(
3386
-				'<script>',
3387
-				'</script>'
3388
-			), '', $output );
3389
-		}
3385
+            return str_replace( array(
3386
+                '<script>',
3387
+                '</script>'
3388
+            ), '', $output );
3389
+        }
3390 3390
 
3391 3391
 
3392 3392
 
3393
-		public function block_row_start($key, $args){
3393
+        public function block_row_start($key, $args){
3394 3394
 
3395
-			// check for row
3396
-			if(!empty($args['row'])){
3395
+            // check for row
3396
+            if(!empty($args['row'])){
3397 3397
 
3398
-				if(!empty($args['row']['open'])){
3398
+                if(!empty($args['row']['open'])){
3399 3399
 
3400
-				// element require
3401
-				$element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3402
-				$device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3403
-				$device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3404
-				$device_type_icon = '';
3405
-				if($device_type=='Desktop'){
3406
-					$device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3407
-				}elseif($device_type=='Tablet'){
3408
-					$device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3409
-				}elseif($device_type=='Mobile'){
3410
-					$device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3411
-				}
3412
-				echo $element_require;
3413
-				echo $device_type_require;
3400
+                // element require
3401
+                $element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3402
+                $device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3403
+                $device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3404
+                $device_type_icon = '';
3405
+                if($device_type=='Desktop'){
3406
+                    $device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3407
+                }elseif($device_type=='Tablet'){
3408
+                    $device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3409
+                }elseif($device_type=='Mobile'){
3410
+                    $device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3411
+                }
3412
+                echo $element_require;
3413
+                echo $device_type_require;
3414 3414
 
3415
-					if(false){?><script><?php }?>
3415
+                    if(false){?><script><?php }?>
3416 3416
 						el('div', {
3417 3417
 								className: 'bsui components-base-control',
3418 3418
 							},
@@ -3425,8 +3425,8 @@  discard block
 block discarded – undo
3425 3425
 								<?php if($device_type_icon){ ?>
3426 3426
 									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)"}})
3427 3427
 								<?php
3428
-								}
3429
-								?>
3428
+                                }
3429
+                                ?>
3430 3430
 
3431 3431
 
3432 3432
 							),
@@ -3450,51 +3450,51 @@  discard block
 block discarded – undo
3450 3450
 									},
3451 3451
 
3452 3452
 					<?php
3453
-					if(false){?></script><?php }
3454
-				}elseif(!empty($args['row']['close'])){
3455
-					if(false){?><script><?php }?>
3453
+                    if(false){?></script><?php }
3454
+                }elseif(!empty($args['row']['close'])){
3455
+                    if(false){?><script><?php }?>
3456 3456
 						el(
3457 3457
 							'div',
3458 3458
 							{
3459 3459
 								className: 'col pl-0 ps-0',
3460 3460
 							},
3461 3461
 					<?php
3462
-					if(false){?></script><?php }
3463
-				}else{
3464
-					if(false){?><script><?php }?>
3462
+                    if(false){?></script><?php }
3463
+                }else{
3464
+                    if(false){?><script><?php }?>
3465 3465
 						el(
3466 3466
 							'div',
3467 3467
 							{
3468 3468
 								className: 'col pl-0 ps-0 pr-2 pe-2',
3469 3469
 							},
3470 3470
 					<?php
3471
-					if(false){?></script><?php }
3472
-				}
3471
+                    if(false){?></script><?php }
3472
+                }
3473 3473
 
3474
-			}
3474
+            }
3475 3475
 
3476
-		}
3476
+        }
3477 3477
 
3478
-		public function block_row_end($key, $args){
3478
+        public function block_row_end($key, $args){
3479 3479
 
3480
-			if(!empty($args['row'])){
3481
-				// maybe close
3482
-				if(!empty($args['row']['close'])){
3483
-					echo "))";
3484
-				}
3480
+            if(!empty($args['row'])){
3481
+                // maybe close
3482
+                if(!empty($args['row']['close'])){
3483
+                    echo "))";
3484
+                }
3485 3485
 
3486
-				echo "),";
3487
-			}
3488
-		}
3486
+                echo "),";
3487
+            }
3488
+        }
3489 3489
 
3490
-		public function block_tab_start($key, $args){
3490
+        public function block_tab_start($key, $args){
3491 3491
 
3492
-			// check for row
3493
-			if(!empty($args['tab'])){
3492
+            // check for row
3493
+            if(!empty($args['tab'])){
3494 3494
 
3495
-				if(!empty($args['tab']['tabs_open'])){
3495
+                if(!empty($args['tab']['tabs_open'])){
3496 3496
 
3497
-					if(false){?><script><?php }?>
3497
+                    if(false){?><script><?php }?>
3498 3498
 
3499 3499
 el('div',{className: 'bsui'},
3500 3500
 
@@ -3507,12 +3507,12 @@  discard block
 block discarded – undo
3507 3507
 										tabs: [
3508 3508
 
3509 3509
 					<?php
3510
-					if(false){?></script><?php }
3511
-				}
3510
+                    if(false){?></script><?php }
3511
+                }
3512 3512
 
3513
-				if(!empty($args['tab']['open'])){
3513
+                if(!empty($args['tab']['open'])){
3514 3514
 
3515
-					if(false){?><script><?php }?>
3515
+                    if(false){?><script><?php }?>
3516 3516
 							{
3517 3517
 												name: '<?php echo addslashes( esc_attr( $args['tab']['key']) ); ?>',
3518 3518
 												title: el('div', {dangerouslySetInnerHTML: {__html: '<?php echo addslashes( esc_attr( $args['tab']['title']) ); ?>'}}),
@@ -3521,93 +3521,93 @@  discard block
 block discarded – undo
3521 3521
 									className: 'components-base-control__help mb-0',
3522 3522
 									dangerouslySetInnerHTML: {__html:'<?php echo addslashes( $args['tab']['desc'] ); ?>'}
3523 3523
 								}),<?php }
3524
-					if(false){?></script><?php }
3525
-				}
3524
+                    if(false){?></script><?php }
3525
+                }
3526 3526
 
3527
-			}
3527
+            }
3528 3528
 
3529
-		}
3529
+        }
3530 3530
 
3531
-		public function block_tab_end($key, $args){
3531
+        public function block_tab_end($key, $args){
3532 3532
 
3533
-			if(!empty($args['tab'])){
3534
-				// maybe close
3535
-				if(!empty($args['tab']['close'])){
3536
-					echo ")}, /* tab close */";
3537
-				}
3533
+            if(!empty($args['tab'])){
3534
+                // maybe close
3535
+                if(!empty($args['tab']['close'])){
3536
+                    echo ")}, /* tab close */";
3537
+                }
3538 3538
 
3539
-				if(!empty($args['tab']['tabs_close'])){
3540
-					if(false){?><script><?php }?>
3539
+                if(!empty($args['tab']['tabs_close'])){
3540
+                    if(false){?><script><?php }?>
3541 3541
 						]}, ( tab ) => {
3542 3542
 								return tab.content;
3543 3543
 							}
3544 3544
 						)), /* tabs close */
3545 3545
 					<?php if(false){ ?></script><?php }
3546
-				}
3547
-			}
3548
-		}
3549
-
3550
-		public function build_block_arguments( $key, $args ) {
3551
-			$custom_attributes = ! empty( $args['custom_attributes'] ) ? $this->array_to_attributes( $args['custom_attributes'] ) : '';
3552
-			$options           = '';
3553
-			$extra             = '';
3554
-			$require           = '';
3555
-			$inside_elements   = '';
3556
-			$after_elements	   = '';
3557
-
3558
-			// `content` is a protected and special argument
3559
-			if ( $key == 'content' ) {
3560
-				return;
3561
-			}
3562
-
3563
-			$device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3564
-			$device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3565
-			$device_type_icon = '';
3566
-			if($device_type=='Desktop'){
3567
-				$device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3568
-			}elseif($device_type=='Tablet'){
3569
-				$device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3570
-			}elseif($device_type=='Mobile'){
3571
-				$device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3572
-			}
3573
-
3574
-			// icon
3575
-			$icon = '';
3576
-			if( !empty( $args['icon'] ) ){
3577
-				$icon .= "el('div', {";
3578
-									$icon .= "dangerouslySetInnerHTML: {__html: '".self::get_widget_icon( esc_attr($args['icon']))."'},";
3579
-									$icon .= "className: 'text-center',";
3580
-									$icon .= "title: '".addslashes( $args['title'] )."',";
3581
-								$icon .= "}),";
3582
-
3583
-				// blank title as its added to the icon.
3584
-				$args['title'] = '';
3585
-			}
3586
-
3587
-			// require advanced
3588
-			$require_advanced = ! empty( $args['advanced'] ) ? "props.attributes.show_advanced && " : "";
3589
-
3590
-			// element require
3591
-			$element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3592
-
3546
+                }
3547
+            }
3548
+        }
3593 3549
 
3594
-			$onchange  = "props.setAttributes({ $key: $key } )";
3595
-			$onchangecomplete  = "";
3596
-			$value     = "props.attributes.$key";
3597
-			$text_type = array( 'text', 'password', 'number', 'email', 'tel', 'url', 'colorx','range' );
3598
-			if ( in_array( $args['type'], $text_type ) ) {
3599
-				$type = 'TextControl';
3600
-				// Save numbers as numbers and not strings
3601
-				if ( $args['type'] == 'number' ) {
3602
-					$onchange = "props.setAttributes({ $key: $key ? Number($key) : '' } )";
3603
-				}
3550
+        public function build_block_arguments( $key, $args ) {
3551
+            $custom_attributes = ! empty( $args['custom_attributes'] ) ? $this->array_to_attributes( $args['custom_attributes'] ) : '';
3552
+            $options           = '';
3553
+            $extra             = '';
3554
+            $require           = '';
3555
+            $inside_elements   = '';
3556
+            $after_elements	   = '';
3557
+
3558
+            // `content` is a protected and special argument
3559
+            if ( $key == 'content' ) {
3560
+                return;
3561
+            }
3562
+
3563
+            $device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3564
+            $device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3565
+            $device_type_icon = '';
3566
+            if($device_type=='Desktop'){
3567
+                $device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3568
+            }elseif($device_type=='Tablet'){
3569
+                $device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3570
+            }elseif($device_type=='Mobile'){
3571
+                $device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3572
+            }
3573
+
3574
+            // icon
3575
+            $icon = '';
3576
+            if( !empty( $args['icon'] ) ){
3577
+                $icon .= "el('div', {";
3578
+                                    $icon .= "dangerouslySetInnerHTML: {__html: '".self::get_widget_icon( esc_attr($args['icon']))."'},";
3579
+                                    $icon .= "className: 'text-center',";
3580
+                                    $icon .= "title: '".addslashes( $args['title'] )."',";
3581
+                                $icon .= "}),";
3582
+
3583
+                // blank title as its added to the icon.
3584
+                $args['title'] = '';
3585
+            }
3586
+
3587
+            // require advanced
3588
+            $require_advanced = ! empty( $args['advanced'] ) ? "props.attributes.show_advanced && " : "";
3589
+
3590
+            // element require
3591
+            $element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3592
+
3593
+
3594
+            $onchange  = "props.setAttributes({ $key: $key } )";
3595
+            $onchangecomplete  = "";
3596
+            $value     = "props.attributes.$key";
3597
+            $text_type = array( 'text', 'password', 'number', 'email', 'tel', 'url', 'colorx','range' );
3598
+            if ( in_array( $args['type'], $text_type ) ) {
3599
+                $type = 'TextControl';
3600
+                // Save numbers as numbers and not strings
3601
+                if ( $args['type'] == 'number' ) {
3602
+                    $onchange = "props.setAttributes({ $key: $key ? Number($key) : '' } )";
3603
+                }
3604 3604
 
3605
-				if (substr($key, 0, 9 ) === 'metadata_') {
3606
-					$real_key = str_replace('metadata_','', $key );
3607
-					$onchange = "props.setAttributes({ metadata: { $real_key: $key } } )";
3608
-					$value     = "props.attributes.metadata && props.attributes.metadata.$real_key ? props.attributes.metadata.$real_key : ''";
3609
-				}
3610
-			}
3605
+                if (substr($key, 0, 9 ) === 'metadata_') {
3606
+                    $real_key = str_replace('metadata_','', $key );
3607
+                    $onchange = "props.setAttributes({ metadata: { $real_key: $key } } )";
3608
+                    $value     = "props.attributes.metadata && props.attributes.metadata.$real_key ? props.attributes.metadata.$real_key : ''";
3609
+                }
3610
+            }
3611 3611
 //			else if ( $args['type'] == 'popup' ) {
3612 3612
 //				$type = 'TextControl';
3613 3613
 //				$args['type'] == 'text';
@@ -3625,21 +3625,21 @@  discard block
 block discarded – undo
3625 3625
 //
3626 3626
 //				$value     = "props.attributes.$key ? props.attributes.$key : ''";
3627 3627
 //			}
3628
-			else if ( $args['type'] == 'styleid' ) {
3629
-				$type = 'TextControl';
3630
-				$args['type'] == 'text';
3631
-				// Save numbers as numbers and not strings
3632
-				$value     = "props.attributes.$key ? props.attributes.$key : ''";
3633
-			}else if ( $args['type'] == 'notice' ) {
3634
-
3635
-				$notice_message = !empty($args['desc']) ? addslashes($args['desc']) : '';
3636
-				$notice_status = !empty($args['status']) ? esc_attr($args['status']) : 'info';
3637
-
3638
-				$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'}}))),";
3639
-				echo $notice_message ? $element_require . $notice : '';
3640
-				return;
3641
-			}
3642
-			/*
3628
+            else if ( $args['type'] == 'styleid' ) {
3629
+                $type = 'TextControl';
3630
+                $args['type'] == 'text';
3631
+                // Save numbers as numbers and not strings
3632
+                $value     = "props.attributes.$key ? props.attributes.$key : ''";
3633
+            }else if ( $args['type'] == 'notice' ) {
3634
+
3635
+                $notice_message = !empty($args['desc']) ? addslashes($args['desc']) : '';
3636
+                $notice_status = !empty($args['status']) ? esc_attr($args['status']) : 'info';
3637
+
3638
+                $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'}}))),";
3639
+                echo $notice_message ? $element_require . $notice : '';
3640
+                return;
3641
+            }
3642
+            /*
3643 3643
 			 * https://www.wptricks.com/question/set-current-tab-on-a-gutenberg-tabpanel-component-from-outside-that-component/ es5 layout
3644 3644
 						elseif($args['type']=='tabs'){
3645 3645
 							?>
@@ -3692,22 +3692,22 @@  discard block
 block discarded – undo
3692 3692
 							return;
3693 3693
 						}
3694 3694
 */
3695
-			elseif ( $args['type'] == 'color' ) {
3696
-				$type = 'ColorPicker';
3697
-				$onchange = "";
3698
-				$extra = "color: $value,";
3699
-				if(!empty($args['disable_alpha'])){
3700
-					$extra .= "disableAlpha: true,";
3701
-				}
3702
-				$onchangecomplete = "onChangeComplete: function($key) {
3695
+            elseif ( $args['type'] == 'color' ) {
3696
+                $type = 'ColorPicker';
3697
+                $onchange = "";
3698
+                $extra = "color: $value,";
3699
+                if(!empty($args['disable_alpha'])){
3700
+                    $extra .= "disableAlpha: true,";
3701
+                }
3702
+                $onchangecomplete = "onChangeComplete: function($key) {
3703 3703
 				value =  $key.rgb.a && $key.rgb.a < 1 ? \"rgba(\"+$key.rgb.r+\",\"+$key.rgb.g+\",\"+$key.rgb.b+\",\"+$key.rgb.a+\")\" : $key.hex;
3704 3704
 						props.setAttributes({
3705 3705
 							$key: value
3706 3706
 						});
3707 3707
 					},";
3708
-			}elseif ( $args['type'] == 'gradient' ) {
3709
-				$type = 'GradientPicker';
3710
-				$extra .= "gradients: [{
3708
+            }elseif ( $args['type'] == 'gradient' ) {
3709
+                $type = 'GradientPicker';
3710
+                $extra .= "gradients: [{
3711 3711
 			name: 'Vivid cyan blue to vivid purple',
3712 3712
 			gradient:
3713 3713
 				'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
@@ -3744,10 +3744,10 @@  discard block
 block discarded – undo
3744 3744
 			slug: 'cool-to-warm-spectrum',
3745 3745
 		}],";
3746 3746
 
3747
-			}elseif ( $args['type'] == 'image' ) {
3747
+            }elseif ( $args['type'] == 'image' ) {
3748 3748
 //                print_r($args);
3749 3749
 
3750
-				$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,{
3750
+                $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,{
3751 3751
 							url:  props.attributes.{$key}_use_featured === true ? 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxzdmcgYmFzZVByb2ZpbGU9InRpbnkiIGhlaWdodD0iNDAwIiB2ZXJzaW9uPSIxLjIiIHdpZHRoPSI0MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6ZXY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLWV2ZW50cyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzIC8+PHJlY3QgZmlsbD0iI2QzZDNkMyIgaGVpZ2h0PSI0MDAiIHdpZHRoPSI0MDAiIHg9IjAiIHk9IjAiIC8+PGxpbmUgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxMCIgeDE9IjAiIHgyPSI0MDAiIHkxPSIwIiB5Mj0iNDAwIiAvPjxsaW5lIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMTAiIHgxPSIwIiB4Mj0iNDAwIiB5MT0iNDAwIiB5Mj0iMCIgLz48cmVjdCBmaWxsPSIjZDNkM2QzIiBoZWlnaHQ9IjUwIiB3aWR0aD0iMjE4LjAiIHg9IjkxLjAiIHk9IjE3NS4wIiAvPjx0ZXh0IGZpbGw9IndoaXRlIiBmb250LXNpemU9IjMwIiBmb250LXdlaWdodD0iYm9sZCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iMjAwLjAiIHk9IjIwNy41Ij5QTEFDRUhPTERFUjwvdGV4dD48L3N2Zz4='  : props.attributes.$key,
3752 3752
 							value: props.attributes.{$key}_xy.x !== undefined && props.attributes.{$key}_xy.x >= 0 ? props.attributes.{$key}_xy  : {x: 0.5,y: 0.5,},
3753 3753
 //                            value: props.attributes.{$key}_xy,
@@ -3768,16 +3768,16 @@  discard block
 block discarded – undo
3768 3768
 						}), ";
3769 3769
 
3770 3770
 
3771
-				$value = '""';
3772
-				$type = 'MediaUpload';
3773
-				$extra .= "onSelect: function(media){
3771
+                $value = '""';
3772
+                $type = 'MediaUpload';
3773
+                $extra .= "onSelect: function(media){
3774 3774
 					  return props.setAttributes({
3775 3775
 						  $key: media.url,
3776 3776
 						  {$key}_id: media.id
3777 3777
 						});
3778 3778
 					  },";
3779
-				   $extra .= "type: 'image',";
3780
-				   $extra .= "render: function (obj) {
3779
+                    $extra .= "type: 'image',";
3780
+                    $extra .= "render: function (obj) {
3781 3781
 						return el( 'div',{},
3782 3782
 						( !props.attributes.$key && !props.attributes.{$key}_use_featured ) && el( wp.components.Button, {
3783 3783
 						  className: 'components-button components-circular-option-picker__clear is-primary is-smallx',
@@ -3803,11 +3803,11 @@  discard block
 block discarded – undo
3803 3803
 
3804 3804
 
3805 3805
 					  }";
3806
-				$onchange = "";
3806
+                $onchange = "";
3807 3807
 
3808
-				//$inside_elements = ",el('div',{},'file upload')";
3809
-			} else if ( $args['type'] == 'images' ) {
3810
-				$img_preview = "props.attributes.$key && (function() {
3808
+                //$inside_elements = ",el('div',{},'file upload')";
3809
+            } else if ( $args['type'] == 'images' ) {
3810
+                $img_preview = "props.attributes.$key && (function() {
3811 3811
 	let uploads = JSON.parse('['+props.attributes.$key+']');
3812 3812
 	let images = [];
3813 3813
 	uploads.map((upload, index) => (
@@ -3834,9 +3834,9 @@  discard block
 block discarded – undo
3834 3834
 })(),";
3835 3835
 
3836 3836
 
3837
-				$value = '""';
3838
-				$type = 'MediaUpload';
3839
-				$extra .= "onSelect: function(media){
3837
+                $value = '""';
3838
+                $type = 'MediaUpload';
3839
+                $extra .= "onSelect: function(media){
3840 3840
 	let slim_images = props.attributes.$key ? JSON.parse('['+props.attributes.$key+']') : [];
3841 3841
 	if(media.length){
3842 3842
 		for (var i=0; i < media.length; i++) {
@@ -3849,9 +3849,9 @@  discard block
 block discarded – undo
3849 3849
 	}
3850 3850
 	return props.setAttributes({ $key: slimImagesV});
3851 3851
 },";
3852
-				$extra .= "type: 'image',";
3853
-				$extra .= "multiple: true,";
3854
-				$extra .= "render: function (obj) {
3852
+                $extra .= "type: 'image',";
3853
+                $extra .= "multiple: true,";
3854
+                $extra .= "render: function (obj) {
3855 3855
 	/* Init the sort */
3856 3856
 	enableDragSort('sd-sortable');
3857 3857
 	return el( 'div',{},
@@ -3878,40 +3878,40 @@  discard block
 block discarded – undo
3878 3878
 		)
3879 3879
 	)
3880 3880
 }";
3881
-				$onchange = "";
3882
-
3883
-				//$inside_elements = ",el('div',{},'file upload')";
3884
-			}
3885
-			elseif ( $args['type'] == 'checkbox' ) {
3886
-				$type = 'CheckboxControl';
3887
-				$extra .= "checked: props.attributes.$key,";
3888
-				$onchange = "props.setAttributes({ $key: ! props.attributes.$key } )";
3889
-			} elseif ( $args['type'] == 'textarea' ) {
3890
-				$type = 'TextareaControl';
3891
-
3892
-			} elseif ( $args['type'] == 'select' || $args['type'] == 'multiselect' ) {
3893
-				$type = 'SelectControl';
3894
-
3895
-				if($args['name'] == 'category' && !empty($args['post_type_linked'])){
3896
-					$options .= "options: taxonomies_".str_replace("-","_", $this->id).",";
3897
-				}elseif($args['name'] == 'sort_by' && !empty($args['post_type_linked'])){
3898
-					$options .= "options: sort_by_".str_replace("-","_", $this->id).",";
3899
-				}else {
3900
-
3901
-					if ( ! empty( $args['options'] ) ) {
3902
-						$options .= "options: [";
3903
-						foreach ( $args['options'] as $option_val => $option_label ) {
3904
-							$options .= "{ value: '" . esc_attr( $option_val ) . "', label: '" . esc_js( addslashes( $option_label ) ) . "' },";
3905
-						}
3906
-						$options .= "],";
3907
-					}
3908
-				}
3909
-				if ( isset( $args['multiple'] ) && $args['multiple'] ) { //@todo multiselect does not work at the moment: https://github.com/WordPress/gutenberg/issues/5550
3910
-					$extra .= ' multiple:true,style:{height:"auto",paddingRight:"8px","overflow-y":"auto"}, ';
3911
-				}
3881
+                $onchange = "";
3882
+
3883
+                //$inside_elements = ",el('div',{},'file upload')";
3884
+            }
3885
+            elseif ( $args['type'] == 'checkbox' ) {
3886
+                $type = 'CheckboxControl';
3887
+                $extra .= "checked: props.attributes.$key,";
3888
+                $onchange = "props.setAttributes({ $key: ! props.attributes.$key } )";
3889
+            } elseif ( $args['type'] == 'textarea' ) {
3890
+                $type = 'TextareaControl';
3891
+
3892
+            } elseif ( $args['type'] == 'select' || $args['type'] == 'multiselect' ) {
3893
+                $type = 'SelectControl';
3894
+
3895
+                if($args['name'] == 'category' && !empty($args['post_type_linked'])){
3896
+                    $options .= "options: taxonomies_".str_replace("-","_", $this->id).",";
3897
+                }elseif($args['name'] == 'sort_by' && !empty($args['post_type_linked'])){
3898
+                    $options .= "options: sort_by_".str_replace("-","_", $this->id).",";
3899
+                }else {
3900
+
3901
+                    if ( ! empty( $args['options'] ) ) {
3902
+                        $options .= "options: [";
3903
+                        foreach ( $args['options'] as $option_val => $option_label ) {
3904
+                            $options .= "{ value: '" . esc_attr( $option_val ) . "', label: '" . esc_js( addslashes( $option_label ) ) . "' },";
3905
+                        }
3906
+                        $options .= "],";
3907
+                    }
3908
+                }
3909
+                if ( isset( $args['multiple'] ) && $args['multiple'] ) { //@todo multiselect does not work at the moment: https://github.com/WordPress/gutenberg/issues/5550
3910
+                    $extra .= ' multiple:true,style:{height:"auto",paddingRight:"8px","overflow-y":"auto"}, ';
3911
+                }
3912 3912
 
3913
-				if($args['type'] == 'multiselect' ||  ( isset( $args['multiple'] ) && $args['multiple'] ) ){
3914
-					$after_elements	 .= "props.attributes.$key && el( wp.components.Button, {
3913
+                if($args['type'] == 'multiselect' ||  ( isset( $args['multiple'] ) && $args['multiple'] ) ){
3914
+                    $after_elements	 .= "props.attributes.$key && el( wp.components.Button, {
3915 3915
 									  className: 'components-button components-circular-option-picker__clear is-secondary is-small',
3916 3916
 									  style: {margin:'-8px 0 8px 0',display: 'block'},
3917 3917
 									  onClick: function(){
@@ -3922,8 +3922,8 @@  discard block
 block discarded – undo
3922 3922
 									},
3923 3923
 									'Clear'
3924 3924
 							),";
3925
-				}
3926
-			} elseif ( $args['type'] == 'tagselect' ) {
3925
+                }
3926
+            } elseif ( $args['type'] == 'tagselect' ) {
3927 3927
 //				$type = 'FormTokenField';
3928 3928
 //
3929 3929
 //				if ( ! empty( $args['options'] ) ) {
@@ -3958,20 +3958,20 @@  discard block
 block discarded – undo
3958 3958
 //				$value     = "[]";
3959 3959
 //				$extra .= ' __experimentalExpandOnFocus: true,';
3960 3960
 
3961
-			} else if ( $args['type'] == 'alignment' ) {
3962
-				$type = 'AlignmentToolbar'; // @todo this does not seem to work but cant find a example
3963
-			} else if ( $args['type'] == 'margins' ) {
3964
-
3965
-			} else if ( $args['type'] == 'visibility_conditions' && ( function_exists( 'wp_is_block_theme' ) && wp_is_block_theme() ) ) {
3966
-				$type = 'TextControl';
3967
-				$value = "(props.attributes.$key ? props.attributes.$key : '')";
3968
-				$args['type'] = 'text';
3969
-				$options .= 'disabled:true,';
3970
-				$bsvc_title = esc_attr( addslashes( $args['title'] ) );
3971
-				$bsvc_body = $this->block_visibility_fields( $args );
3972
-				// @TODO reset button
3973
-				$bsvc_footer = '<button type="button" class="btn btn-danger d-none">' . __( 'Reset', 'ayecode-connect' ) . '</button><button type="button" class="btn btn-secondary bs-vc-close text-white" data-bs-dismiss="modal">' . __( 'Close', 'ayecode-connect' ) . '</button><button type="button" class="btn btn-primary bs-vc-save">' . __( 'Save Rules', 'ayecode-connect' ) . '</button>';
3974
-				$after_elements .= "el('div', {className: 'components-base-control bs-vc-button-wrap'}, el(wp.components.Button, {
3961
+            } else if ( $args['type'] == 'alignment' ) {
3962
+                $type = 'AlignmentToolbar'; // @todo this does not seem to work but cant find a example
3963
+            } else if ( $args['type'] == 'margins' ) {
3964
+
3965
+            } else if ( $args['type'] == 'visibility_conditions' && ( function_exists( 'wp_is_block_theme' ) && wp_is_block_theme() ) ) {
3966
+                $type = 'TextControl';
3967
+                $value = "(props.attributes.$key ? props.attributes.$key : '')";
3968
+                $args['type'] = 'text';
3969
+                $options .= 'disabled:true,';
3970
+                $bsvc_title = esc_attr( addslashes( $args['title'] ) );
3971
+                $bsvc_body = $this->block_visibility_fields( $args );
3972
+                // @TODO reset button
3973
+                $bsvc_footer = '<button type="button" class="btn btn-danger d-none">' . __( 'Reset', 'ayecode-connect' ) . '</button><button type="button" class="btn btn-secondary bs-vc-close text-white" data-bs-dismiss="modal">' . __( 'Close', 'ayecode-connect' ) . '</button><button type="button" class="btn btn-primary bs-vc-save">' . __( 'Save Rules', 'ayecode-connect' ) . '</button>';
3974
+                $after_elements .= "el('div', {className: 'components-base-control bs-vc-button-wrap'}, el(wp.components.Button, {
3975 3975
 						className: 'components-button components-circular-option-picker__clear is-primary is-smallx',
3976 3976
 						onClick: function() {
3977 3977
 							var sValue = props.attributes." . $key . ";
@@ -3997,39 +3997,39 @@  discard block
 block discarded – undo
3997 3997
 					},
3998 3998
 					'" . addslashes( ! empty( $args['button_title'] ) ? $args['button_title'] : $args['title'] ) . "'
3999 3999
 				) ),";
4000
-			} else {
4001
-				return;// if we have not implemented the control then don't break the JS.
4002
-			}
4003
-
4004
-			// color input does not show the labels so we add them
4005
-			if($args['type']=='color'){
4006
-				// add show only if advanced
4007
-				echo $require_advanced;
4008
-				// add setting require if defined
4009
-				echo $element_require;
4010
-				echo "el('div', {style: {'marginBottom': '8px'}}, '".addslashes( $args['title'] )."'),";
4011
-			}
4012
-
4013
-			// add show only if advanced
4014
-			echo $require_advanced;
4015
-			// add setting require if defined
4016
-			echo $element_require;
4017
-			echo $device_type_require;
4018
-
4019
-			// icon
4020
-			echo $icon;
4021
-			?>
4000
+            } else {
4001
+                return;// if we have not implemented the control then don't break the JS.
4002
+            }
4003
+
4004
+            // color input does not show the labels so we add them
4005
+            if($args['type']=='color'){
4006
+                // add show only if advanced
4007
+                echo $require_advanced;
4008
+                // add setting require if defined
4009
+                echo $element_require;
4010
+                echo "el('div', {style: {'marginBottom': '8px'}}, '".addslashes( $args['title'] )."'),";
4011
+            }
4012
+
4013
+            // add show only if advanced
4014
+            echo $require_advanced;
4015
+            // add setting require if defined
4016
+            echo $element_require;
4017
+            echo $device_type_require;
4018
+
4019
+            // icon
4020
+            echo $icon;
4021
+            ?>
4022 4022
 			el( <?php echo $args['type'] == 'image' || $args['type'] == 'images' ? $type  : "wp.components.".$type; ?>, {
4023 4023
 			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
4024
-			} else { ?>'<?php echo addslashes( trim( esc_html( $args['title'] ) ) ); ?>'<?php } ?>,
4024
+            } else { ?>'<?php echo addslashes( trim( esc_html( $args['title'] ) ) ); ?>'<?php } ?>,
4025 4025
 			help: <?php echo ( isset( $args['desc'] ) ? "el('span', {dangerouslySetInnerHTML: {__html: '" . trim( wp_kses_post( addslashes( $args['desc'] ) ) ) . "'}})" : "''" ); ?>,
4026 4026
 			value: <?php echo $value; ?>,
4027 4027
 			<?php if ( $type == 'TextControl' && $args['type'] != 'text' ) {
4028
-				echo "type: '" . addslashes( $args['type'] ) . "',";
4029
-			} ?>
4028
+                echo "type: '" . addslashes( $args['type'] ) . "',";
4029
+            } ?>
4030 4030
 			<?php if ( ! empty( $args['placeholder'] ) ) {
4031
-				echo "placeholder: '" . esc_js( addslashes( trim( esc_html( $args['placeholder'] ) ) ) ) . "',";
4032
-			} ?>
4031
+                echo "placeholder: '" . esc_js( addslashes( trim( esc_html( $args['placeholder'] ) ) ) ) . "',";
4032
+            } ?>
4033 4033
 			<?php echo $options; ?>
4034 4034
 			<?php echo $extra; ?>
4035 4035
 			<?php echo $custom_attributes; ?>
@@ -4041,1266 +4041,1266 @@  discard block
 block discarded – undo
4041 4041
 			<?php } ?>
4042 4042
 		} <?php echo $inside_elements; ?> ),
4043 4043
 			<?php
4044
-			echo $after_elements;
4045
-		}
4044
+            echo $after_elements;
4045
+        }
4046 4046
 
4047
-		/**
4048
-		 * Convert an array of attributes to block string.
4049
-		 *
4050
-		 * @param $custom_attributes
4051
-		 *
4052
-		 * @return string
4053
-		 *@todo there is prob a faster way to do this, also we could add some validation here.
4054
-		 *
4055
-		 */
4056
-		public function array_to_attributes( $custom_attributes, $html = false ) {
4057
-			$attributes = '';
4058
-			if ( ! empty( $custom_attributes ) ) {
4059
-
4060
-				foreach ( $custom_attributes as $key => $val ) {
4061
-					if(is_array($val)){
4062
-						$attributes .= $key.': {'.$this->array_to_attributes( $val, $html ).'},';
4063
-					}else{
4064
-						$attributes .= $html ?  " $key='$val' " : "'$key': '$val',";
4065
-					}
4066
-				}
4047
+        /**
4048
+         * Convert an array of attributes to block string.
4049
+         *
4050
+         * @param $custom_attributes
4051
+         *
4052
+         * @return string
4053
+         *@todo there is prob a faster way to do this, also we could add some validation here.
4054
+         *
4055
+         */
4056
+        public function array_to_attributes( $custom_attributes, $html = false ) {
4057
+            $attributes = '';
4058
+            if ( ! empty( $custom_attributes ) ) {
4059
+
4060
+                foreach ( $custom_attributes as $key => $val ) {
4061
+                    if(is_array($val)){
4062
+                        $attributes .= $key.': {'.$this->array_to_attributes( $val, $html ).'},';
4063
+                    }else{
4064
+                        $attributes .= $html ?  " $key='$val' " : "'$key': '$val',";
4065
+                    }
4066
+                }
4067 4067
 
4068
-			}
4068
+            }
4069 4069
 
4070
-			return $attributes;
4071
-		}
4070
+            return $attributes;
4071
+        }
4072 4072
 
4073 4073
 
4074 4074
 
4075
-		/**
4076
-		 * A self looping function to create the output for JS block elements.
4077
-		 *
4078
-		 * This is what is output in the WP Editor visual view.
4079
-		 *
4080
-		 * @param $args
4081
-		 */
4082
-		public function block_element( $args, $save = false ) {
4075
+        /**
4076
+         * A self looping function to create the output for JS block elements.
4077
+         *
4078
+         * This is what is output in the WP Editor visual view.
4079
+         *
4080
+         * @param $args
4081
+         */
4082
+        public function block_element( $args, $save = false ) {
4083 4083
 
4084 4084
 //            print_r($args);echo '###';exit;
4085 4085
 
4086
-			if ( ! empty( $args ) ) {
4087
-				foreach ( $args as $element => $new_args ) {
4086
+            if ( ! empty( $args ) ) {
4087
+                foreach ( $args as $element => $new_args ) {
4088 4088
 
4089
-					if ( is_array( $new_args ) ) { // its an element
4089
+                    if ( is_array( $new_args ) ) { // its an element
4090 4090
 
4091 4091
 
4092
-						if ( isset( $new_args['element'] ) ) {
4092
+                        if ( isset( $new_args['element'] ) ) {
4093 4093
 
4094
-							if ( isset( $new_args['element_require'] ) ) {
4095
-								echo str_replace( array(
4096
-										"'+",
4097
-										"+'"
4098
-									), '', $this->block_props_replace( $new_args['element_require'] ) ) . " &&  ";
4099
-								unset( $new_args['element_require'] );
4100
-							}
4094
+                            if ( isset( $new_args['element_require'] ) ) {
4095
+                                echo str_replace( array(
4096
+                                        "'+",
4097
+                                        "+'"
4098
+                                    ), '', $this->block_props_replace( $new_args['element_require'] ) ) . " &&  ";
4099
+                                unset( $new_args['element_require'] );
4100
+                            }
4101 4101
 
4102
-							if($new_args['element']=='InnerBlocks'){
4103
-								echo "\n el( InnerBlocks, {";
4104
-							}elseif($new_args['element']=='innerBlocksProps'){
4105
-								$element = isset($new_args['inner_element']) ? esc_attr($new_args['inner_element']) : 'div';
4106
-							  //  echo "\n el( 'section', wp.blockEditor.useInnerBlocksProps( blockProps, {";
4102
+                            if($new_args['element']=='InnerBlocks'){
4103
+                                echo "\n el( InnerBlocks, {";
4104
+                            }elseif($new_args['element']=='innerBlocksProps'){
4105
+                                $element = isset($new_args['inner_element']) ? esc_attr($new_args['inner_element']) : 'div';
4106
+                                //  echo "\n el( 'section', wp.blockEditor.useInnerBlocksProps( blockProps, {";
4107 4107
 //                                echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( ";
4108
-								echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( ";
4109
-								echo $save ? "wp.blockEditor.useBlockProps.save( {" : "wp.blockEditor.useBlockProps( {";
4110
-								echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : '';
4111
-
4112
-								echo "} ), {";
4113
-								echo !empty($new_args['innerBlocksProps']) && !$save ? $this->block_element( $new_args['innerBlocksProps'],$save ) : '';
4114
-							//    echo '###';
4115
-
4116
-							  //  echo '###';
4117
-							}elseif($new_args['element']=='BlocksProps'){
4118
-
4119
-								if ( isset($new_args['if_inner_element']) ) {
4120
-									$element = $new_args['if_inner_element'];
4121
-								}else {
4122
-									$element = isset($new_args['inner_element']) ? "'".esc_attr($new_args['inner_element'])."'" : "'div'";
4123
-								}
4124
-
4125
-								unset($new_args['inner_element']);
4126
-								echo $save ? "\n el( $element, wp.blockEditor.useBlockProps.save( {" : "\n el( $element, wp.blockEditor.useBlockProps( {";
4127
-								echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : '';
4128
-
4129
-
4130
-							   // echo "} ),";
4131
-
4132
-							}else{
4133
-								echo "\n el( '" . $new_args['element'] . "', {";
4134
-							}
4135
-
4136
-
4137
-							// get the attributes
4138
-							foreach ( $new_args as $new_key => $new_value ) {
4139
-
4140
-
4141
-								if ( $new_key == 'element' || $new_key == 'content'|| $new_key == 'if_content' || $new_key == 'element_require' || $new_key == 'element_repeat' || is_array( $new_value ) ) {
4142
-									// do nothing
4143
-								} else {
4144
-									echo $this->block_element( array( $new_key => $new_value ),$save );
4145
-								}
4146
-							}
4147
-
4148
-							echo $new_args['element']=='BlocksProps' ? '} ),' : "},";// end attributes
4149
-
4150
-							// get the content
4151
-							$first_item = 0;
4152
-							foreach ( $new_args as $new_key => $new_value ) {
4153
-								if ( $new_key === 'content' || $new_key === 'if_content' || is_array( $new_value ) ) {
4154
-
4155
-									if ( $new_key === 'content' ) {
4156
-										echo "'" . $this->block_props_replace( wp_slash( $new_value ) ) . "'";
4157
-									}else if ( $new_key === 'if_content' ) {
4158
-										echo  $this->block_props_replace(  $new_value  );
4159
-									}
4160
-
4161
-									if ( is_array( $new_value ) ) {
4162
-
4163
-										if ( isset( $new_value['element_require'] ) ) {
4164
-											echo str_replace( array(
4165
-													"'+",
4166
-													"+'"
4167
-												), '', $this->block_props_replace( $new_value['element_require'] ) ) . " &&  ";
4168
-											unset( $new_value['element_require'] );
4169
-										}
4170
-
4171
-										if ( isset( $new_value['element_repeat'] ) ) {
4172
-											$x = 1;
4173
-											while ( $x <= absint( $new_value['element_repeat'] ) ) {
4174
-												$this->block_element( array( '' => $new_value ),$save );
4175
-												$x ++;
4176
-											}
4177
-										} else {
4178
-											$this->block_element( array( '' => $new_value ),$save );
4179
-										}
4180
-									}
4181
-									$first_item ++;
4182
-								}
4183
-							}
4184
-
4185
-							if($new_args['element']=='innerBlocksProps' || $new_args['element']=='xBlocksProps'){
4186
-								echo "))";// end content
4187
-							}else{
4188
-								echo ")";// end content
4189
-							}
4190
-
4191
-
4192
-							echo ", \n";
4193
-
4194
-						}
4195
-					} else {
4196
-
4197
-						if ( substr( $element, 0, 3 ) === "if_" ) {
4198
-							$extra = '';
4199
-							if( strpos($new_args, '[%WrapClass%]') !== false ){
4200
-								$new_args = str_replace('[%WrapClass%]"','" + sd_build_aui_class(props.attributes)',$new_args);
4201
-								$new_args = str_replace('[%WrapClass%]','+ sd_build_aui_class(props.attributes)',$new_args);
4202
-							}
4203
-							echo str_replace( "if_", "", $element ) . ": " . $this->block_props_replace( $new_args, true ) . ",";
4204
-						} elseif ( $element == 'style' &&  strpos($new_args, '[%WrapStyle%]') !== false ) {
4205
-							$new_args = str_replace('[%WrapStyle%]','',$new_args);
4206
-							echo $element . ": {..." . $this->block_props_replace( $new_args ) . " , ...sd_build_aui_styles(props.attributes) },";
4108
+                                echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( ";
4109
+                                echo $save ? "wp.blockEditor.useBlockProps.save( {" : "wp.blockEditor.useBlockProps( {";
4110
+                                echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : '';
4111
+
4112
+                                echo "} ), {";
4113
+                                echo !empty($new_args['innerBlocksProps']) && !$save ? $this->block_element( $new_args['innerBlocksProps'],$save ) : '';
4114
+                            //    echo '###';
4115
+
4116
+                                //  echo '###';
4117
+                            }elseif($new_args['element']=='BlocksProps'){
4118
+
4119
+                                if ( isset($new_args['if_inner_element']) ) {
4120
+                                    $element = $new_args['if_inner_element'];
4121
+                                }else {
4122
+                                    $element = isset($new_args['inner_element']) ? "'".esc_attr($new_args['inner_element'])."'" : "'div'";
4123
+                                }
4124
+
4125
+                                unset($new_args['inner_element']);
4126
+                                echo $save ? "\n el( $element, wp.blockEditor.useBlockProps.save( {" : "\n el( $element, wp.blockEditor.useBlockProps( {";
4127
+                                echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : '';
4128
+
4129
+
4130
+                                // echo "} ),";
4131
+
4132
+                            }else{
4133
+                                echo "\n el( '" . $new_args['element'] . "', {";
4134
+                            }
4135
+
4136
+
4137
+                            // get the attributes
4138
+                            foreach ( $new_args as $new_key => $new_value ) {
4139
+
4140
+
4141
+                                if ( $new_key == 'element' || $new_key == 'content'|| $new_key == 'if_content' || $new_key == 'element_require' || $new_key == 'element_repeat' || is_array( $new_value ) ) {
4142
+                                    // do nothing
4143
+                                } else {
4144
+                                    echo $this->block_element( array( $new_key => $new_value ),$save );
4145
+                                }
4146
+                            }
4147
+
4148
+                            echo $new_args['element']=='BlocksProps' ? '} ),' : "},";// end attributes
4149
+
4150
+                            // get the content
4151
+                            $first_item = 0;
4152
+                            foreach ( $new_args as $new_key => $new_value ) {
4153
+                                if ( $new_key === 'content' || $new_key === 'if_content' || is_array( $new_value ) ) {
4154
+
4155
+                                    if ( $new_key === 'content' ) {
4156
+                                        echo "'" . $this->block_props_replace( wp_slash( $new_value ) ) . "'";
4157
+                                    }else if ( $new_key === 'if_content' ) {
4158
+                                        echo  $this->block_props_replace(  $new_value  );
4159
+                                    }
4160
+
4161
+                                    if ( is_array( $new_value ) ) {
4162
+
4163
+                                        if ( isset( $new_value['element_require'] ) ) {
4164
+                                            echo str_replace( array(
4165
+                                                    "'+",
4166
+                                                    "+'"
4167
+                                                ), '', $this->block_props_replace( $new_value['element_require'] ) ) . " &&  ";
4168
+                                            unset( $new_value['element_require'] );
4169
+                                        }
4170
+
4171
+                                        if ( isset( $new_value['element_repeat'] ) ) {
4172
+                                            $x = 1;
4173
+                                            while ( $x <= absint( $new_value['element_repeat'] ) ) {
4174
+                                                $this->block_element( array( '' => $new_value ),$save );
4175
+                                                $x ++;
4176
+                                            }
4177
+                                        } else {
4178
+                                            $this->block_element( array( '' => $new_value ),$save );
4179
+                                        }
4180
+                                    }
4181
+                                    $first_item ++;
4182
+                                }
4183
+                            }
4184
+
4185
+                            if($new_args['element']=='innerBlocksProps' || $new_args['element']=='xBlocksProps'){
4186
+                                echo "))";// end content
4187
+                            }else{
4188
+                                echo ")";// end content
4189
+                            }
4190
+
4191
+
4192
+                            echo ", \n";
4193
+
4194
+                        }
4195
+                    } else {
4196
+
4197
+                        if ( substr( $element, 0, 3 ) === "if_" ) {
4198
+                            $extra = '';
4199
+                            if( strpos($new_args, '[%WrapClass%]') !== false ){
4200
+                                $new_args = str_replace('[%WrapClass%]"','" + sd_build_aui_class(props.attributes)',$new_args);
4201
+                                $new_args = str_replace('[%WrapClass%]','+ sd_build_aui_class(props.attributes)',$new_args);
4202
+                            }
4203
+                            echo str_replace( "if_", "", $element ) . ": " . $this->block_props_replace( $new_args, true ) . ",";
4204
+                        } elseif ( $element == 'style' &&  strpos($new_args, '[%WrapStyle%]') !== false ) {
4205
+                            $new_args = str_replace('[%WrapStyle%]','',$new_args);
4206
+                            echo $element . ": {..." . $this->block_props_replace( $new_args ) . " , ...sd_build_aui_styles(props.attributes) },";
4207 4207
 //                            echo $element . ": " . $this->block_props_replace( $new_args ) . ",";
4208
-						} elseif ( $element == 'style' ) {
4209
-							echo $element . ": " . $this->block_props_replace( $new_args ) . ",";
4210
-						} elseif ( ( $element == 'class' || $element == 'className'  ) &&  strpos($new_args, '[%WrapClass%]') !== false ) {
4211
-							$new_args = str_replace('[%WrapClass%]','',$new_args);
4212
-							echo $element . ": '" . $this->block_props_replace( $new_args ) . "' + sd_build_aui_class(props.attributes),";
4213
-						} elseif ( $element == 'template' && $new_args ) {
4214
-							echo $element . ": $new_args,";
4215
-						} else {
4216
-							echo $element . ": '" . $this->block_props_replace( $new_args ) . "',";
4217
-						}
4218
-
4219
-					}
4220
-				}
4221
-			}
4222
-		}
4223
-
4224
-		/**
4225
-		 * Replace block attributes placeholders with the proper naming.
4226
-		 *
4227
-		 * @param $string
4228
-		 *
4229
-		 * @return mixed
4230
-		 */
4231
-		public function block_props_replace( $string, $no_wrap = false ) {
4232
-			if ( $no_wrap ) {
4233
-				$string = str_replace( array( "[%", "%]", "%:checked]" ), array( "props.attributes.", "", "" ), $string );
4234
-			} else {
4235
-				$string = str_replace( array( "![%", "[%", "%]", "%:checked]" ), array( "'+!props.attributes.", "'+props.attributes.", "+'", "+'" ), $string );
4236
-			}
4237
-
4238
-			return $string;
4239
-		}
4240
-
4241
-		/**
4242
-		 * Outputs the content of the widget
4243
-		 *
4244
-		 * @param array $args
4245
-		 * @param array $instance
4246
-		 */
4247
-		public function widget( $args, $instance ) {
4248
-			if ( ! is_array( $args ) ) {
4249
-				$args = array();
4250
-			}
4251
-
4252
-			// Get the filtered values
4253
-			$argument_values = $this->argument_values( $instance );
4254
-			$argument_values = $this->string_to_bool( $argument_values );
4255
-			$output          = $this->output( $argument_values, $args );
4256
-
4257
-			$no_wrap = false;
4258
-			if ( isset( $argument_values['no_wrap'] ) && $argument_values['no_wrap'] ) {
4259
-				$no_wrap = true;
4260
-			}
4261
-
4262
-			ob_start();
4263
-			if ( $output && ! $no_wrap ) {
4264
-
4265
-				$class_original = $this->options['widget_ops']['classname'];
4266
-				$class = $this->options['widget_ops']['classname']." sdel-".$this->get_instance_hash();
4267
-
4268
-				// Before widget
4269
-				$before_widget = ! empty( $args['before_widget'] ) ? $args['before_widget'] : '';
4270
-				$before_widget = $before_widget ? str_replace( $class_original, $class, $before_widget ) : $before_widget;
4271
-				$before_widget = apply_filters( 'wp_super_duper_before_widget', $before_widget, $args, $instance, $this );
4272
-				$before_widget = apply_filters( 'wp_super_duper_before_widget_' . $this->base_id, $before_widget, $args, $instance, $this );
4273
-
4274
-				// After widget
4275
-				$after_widget = ! empty( $args['after_widget'] ) ? $args['after_widget'] : '';
4276
-				$after_widget = apply_filters( 'wp_super_duper_after_widget', $after_widget, $args, $instance, $this );
4277
-				$after_widget = apply_filters( 'wp_super_duper_after_widget_' . $this->base_id, $after_widget, $args, $instance, $this );
4278
-
4279
-				echo $before_widget;
4280
-				// elementor strips the widget wrapping div so we check for and add it back if needed
4281
-				if ( $this->is_elementor_widget_output() ) {
4282
-					// Filter class & attrs for elementor widget output.
4283
-					$class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
4284
-					$class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
4285
-
4286
-					$attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
4287
-					$attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
4288
-
4289
-					echo "<span class='" . esc_attr( $class  ) . "' " . $attrs . ">";
4290
-				}
4291
-				echo $this->output_title( $args, $instance );
4292
-				echo $output;
4293
-				if ( $this->is_elementor_widget_output() ) {
4294
-					echo "</span>";
4295
-				}
4296
-				echo $after_widget;
4297
-			} elseif ( $this->is_preview() && $output == '' ) {// if preview show a placeholder if empty
4298
-				$output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
4299
-				echo $output;
4300
-			} elseif ( $output && $no_wrap ) {
4301
-				echo $output;
4302
-			}
4303
-			$output = ob_get_clean();
4304
-
4305
-			$output = apply_filters( 'wp_super_duper_widget_output', $output, $instance, $args, $this );
4208
+                        } elseif ( $element == 'style' ) {
4209
+                            echo $element . ": " . $this->block_props_replace( $new_args ) . ",";
4210
+                        } elseif ( ( $element == 'class' || $element == 'className'  ) &&  strpos($new_args, '[%WrapClass%]') !== false ) {
4211
+                            $new_args = str_replace('[%WrapClass%]','',$new_args);
4212
+                            echo $element . ": '" . $this->block_props_replace( $new_args ) . "' + sd_build_aui_class(props.attributes),";
4213
+                        } elseif ( $element == 'template' && $new_args ) {
4214
+                            echo $element . ": $new_args,";
4215
+                        } else {
4216
+                            echo $element . ": '" . $this->block_props_replace( $new_args ) . "',";
4217
+                        }
4218
+
4219
+                    }
4220
+                }
4221
+            }
4222
+        }
4306 4223
 
4307
-			echo $output;
4308
-		}
4224
+        /**
4225
+         * Replace block attributes placeholders with the proper naming.
4226
+         *
4227
+         * @param $string
4228
+         *
4229
+         * @return mixed
4230
+         */
4231
+        public function block_props_replace( $string, $no_wrap = false ) {
4232
+            if ( $no_wrap ) {
4233
+                $string = str_replace( array( "[%", "%]", "%:checked]" ), array( "props.attributes.", "", "" ), $string );
4234
+            } else {
4235
+                $string = str_replace( array( "![%", "[%", "%]", "%:checked]" ), array( "'+!props.attributes.", "'+props.attributes.", "+'", "+'" ), $string );
4236
+            }
4237
+
4238
+            return $string;
4239
+        }
4309 4240
 
4310
-		/**
4311
-		 * Tests if the current output is inside a elementor container.
4312
-		 *
4313
-		 * @return bool
4314
-		 *@since 1.0.4
4315
-		 */
4316
-		public function is_elementor_widget_output() {
4317
-			$result = false;
4318
-			if ( defined( 'ELEMENTOR_VERSION' ) && isset( $this->number ) && $this->number == 'REPLACE_TO_ID' ) {
4319
-				$result = true;
4320
-			}
4241
+        /**
4242
+         * Outputs the content of the widget
4243
+         *
4244
+         * @param array $args
4245
+         * @param array $instance
4246
+         */
4247
+        public function widget( $args, $instance ) {
4248
+            if ( ! is_array( $args ) ) {
4249
+                $args = array();
4250
+            }
4251
+
4252
+            // Get the filtered values
4253
+            $argument_values = $this->argument_values( $instance );
4254
+            $argument_values = $this->string_to_bool( $argument_values );
4255
+            $output          = $this->output( $argument_values, $args );
4256
+
4257
+            $no_wrap = false;
4258
+            if ( isset( $argument_values['no_wrap'] ) && $argument_values['no_wrap'] ) {
4259
+                $no_wrap = true;
4260
+            }
4261
+
4262
+            ob_start();
4263
+            if ( $output && ! $no_wrap ) {
4264
+
4265
+                $class_original = $this->options['widget_ops']['classname'];
4266
+                $class = $this->options['widget_ops']['classname']." sdel-".$this->get_instance_hash();
4267
+
4268
+                // Before widget
4269
+                $before_widget = ! empty( $args['before_widget'] ) ? $args['before_widget'] : '';
4270
+                $before_widget = $before_widget ? str_replace( $class_original, $class, $before_widget ) : $before_widget;
4271
+                $before_widget = apply_filters( 'wp_super_duper_before_widget', $before_widget, $args, $instance, $this );
4272
+                $before_widget = apply_filters( 'wp_super_duper_before_widget_' . $this->base_id, $before_widget, $args, $instance, $this );
4273
+
4274
+                // After widget
4275
+                $after_widget = ! empty( $args['after_widget'] ) ? $args['after_widget'] : '';
4276
+                $after_widget = apply_filters( 'wp_super_duper_after_widget', $after_widget, $args, $instance, $this );
4277
+                $after_widget = apply_filters( 'wp_super_duper_after_widget_' . $this->base_id, $after_widget, $args, $instance, $this );
4278
+
4279
+                echo $before_widget;
4280
+                // elementor strips the widget wrapping div so we check for and add it back if needed
4281
+                if ( $this->is_elementor_widget_output() ) {
4282
+                    // Filter class & attrs for elementor widget output.
4283
+                    $class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
4284
+                    $class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
4285
+
4286
+                    $attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
4287
+                    $attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
4288
+
4289
+                    echo "<span class='" . esc_attr( $class  ) . "' " . $attrs . ">";
4290
+                }
4291
+                echo $this->output_title( $args, $instance );
4292
+                echo $output;
4293
+                if ( $this->is_elementor_widget_output() ) {
4294
+                    echo "</span>";
4295
+                }
4296
+                echo $after_widget;
4297
+            } elseif ( $this->is_preview() && $output == '' ) {// if preview show a placeholder if empty
4298
+                $output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
4299
+                echo $output;
4300
+            } elseif ( $output && $no_wrap ) {
4301
+                echo $output;
4302
+            }
4303
+            $output = ob_get_clean();
4304
+
4305
+            $output = apply_filters( 'wp_super_duper_widget_output', $output, $instance, $args, $this );
4306
+
4307
+            echo $output;
4308
+        }
4321 4309
 
4322
-			return $result;
4323
-		}
4310
+        /**
4311
+         * Tests if the current output is inside a elementor container.
4312
+         *
4313
+         * @return bool
4314
+         *@since 1.0.4
4315
+         */
4316
+        public function is_elementor_widget_output() {
4317
+            $result = false;
4318
+            if ( defined( 'ELEMENTOR_VERSION' ) && isset( $this->number ) && $this->number == 'REPLACE_TO_ID' ) {
4319
+                $result = true;
4320
+            }
4324 4321
 
4325
-		/**
4326
-		 * Tests if the current output is inside a elementor preview.
4327
-		 *
4328
-		 * @return bool
4329
-		 *@since 1.0.4
4330
-		 */
4331
-		public function is_elementor_preview() {
4332
-			$result = false;
4333
-			if ( isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' ) ) {
4334
-				$result = true;
4335
-			}
4322
+            return $result;
4323
+        }
4336 4324
 
4337
-			return $result;
4338
-		}
4325
+        /**
4326
+         * Tests if the current output is inside a elementor preview.
4327
+         *
4328
+         * @return bool
4329
+         *@since 1.0.4
4330
+         */
4331
+        public function is_elementor_preview() {
4332
+            $result = false;
4333
+            if ( isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' ) ) {
4334
+                $result = true;
4335
+            }
4339 4336
 
4340
-		/**
4341
-		 * Tests if the current output is inside a Divi preview.
4342
-		 *
4343
-		 * @return bool
4344
-		 *@since 1.0.6
4345
-		 */
4346
-		public function is_divi_preview() {
4347
-			$result = false;
4348
-			if ( isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) ) {
4349
-				$result = true;
4350
-			}
4337
+            return $result;
4338
+        }
4351 4339
 
4352
-			return $result;
4353
-		}
4340
+        /**
4341
+         * Tests if the current output is inside a Divi preview.
4342
+         *
4343
+         * @return bool
4344
+         *@since 1.0.6
4345
+         */
4346
+        public function is_divi_preview() {
4347
+            $result = false;
4348
+            if ( isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) ) {
4349
+                $result = true;
4350
+            }
4354 4351
 
4355
-		/**
4356
-		 * Tests if the current output is inside a Beaver builder preview.
4357
-		 *
4358
-		 * @return bool
4359
-		 *@since 1.0.6
4360
-		 */
4361
-		public function is_beaver_preview() {
4362
-			$result = false;
4363
-			if ( isset( $_REQUEST['fl_builder'] ) ) {
4364
-				$result = true;
4365
-			}
4352
+            return $result;
4353
+        }
4366 4354
 
4367
-			return $result;
4368
-		}
4355
+        /**
4356
+         * Tests if the current output is inside a Beaver builder preview.
4357
+         *
4358
+         * @return bool
4359
+         *@since 1.0.6
4360
+         */
4361
+        public function is_beaver_preview() {
4362
+            $result = false;
4363
+            if ( isset( $_REQUEST['fl_builder'] ) ) {
4364
+                $result = true;
4365
+            }
4369 4366
 
4370
-		/**
4371
-		 * Tests if the current output is inside a siteorigin builder preview.
4372
-		 *
4373
-		 * @return bool
4374
-		 *@since 1.0.6
4375
-		 */
4376
-		public function is_siteorigin_preview() {
4377
-			$result = false;
4378
-			if ( ! empty( $_REQUEST['siteorigin_panels_live_editor'] ) ) {
4379
-				$result = true;
4380
-			}
4367
+            return $result;
4368
+        }
4381 4369
 
4382
-			return $result;
4383
-		}
4370
+        /**
4371
+         * Tests if the current output is inside a siteorigin builder preview.
4372
+         *
4373
+         * @return bool
4374
+         *@since 1.0.6
4375
+         */
4376
+        public function is_siteorigin_preview() {
4377
+            $result = false;
4378
+            if ( ! empty( $_REQUEST['siteorigin_panels_live_editor'] ) ) {
4379
+                $result = true;
4380
+            }
4384 4381
 
4385
-		/**
4386
-		 * Tests if the current output is inside a cornerstone builder preview.
4387
-		 *
4388
-		 * @return bool
4389
-		 *@since 1.0.8
4390
-		 */
4391
-		public function is_cornerstone_preview() {
4392
-			$result = false;
4393
-			if ( ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint' ) {
4394
-				$result = true;
4395
-			}
4382
+            return $result;
4383
+        }
4396 4384
 
4397
-			return $result;
4398
-		}
4385
+        /**
4386
+         * Tests if the current output is inside a cornerstone builder preview.
4387
+         *
4388
+         * @return bool
4389
+         *@since 1.0.8
4390
+         */
4391
+        public function is_cornerstone_preview() {
4392
+            $result = false;
4393
+            if ( ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint' ) {
4394
+                $result = true;
4395
+            }
4399 4396
 
4400
-		/**
4401
-		 * Tests if the current output is inside a fusion builder preview.
4402
-		 *
4403
-		 * @return bool
4404
-		 *@since 1.1.0
4405
-		 */
4406
-		public function is_fusion_preview() {
4407
-			$result = false;
4408
-			if ( ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] ) ) {
4409
-				$result = true;
4410
-			}
4397
+            return $result;
4398
+        }
4411 4399
 
4412
-			return $result;
4413
-		}
4400
+        /**
4401
+         * Tests if the current output is inside a fusion builder preview.
4402
+         *
4403
+         * @return bool
4404
+         *@since 1.1.0
4405
+         */
4406
+        public function is_fusion_preview() {
4407
+            $result = false;
4408
+            if ( ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] ) ) {
4409
+                $result = true;
4410
+            }
4414 4411
 
4415
-		/**
4416
-		 * Tests if the current output is inside a Oxygen builder preview.
4417
-		 *
4418
-		 * @return bool
4419
-		 *@since 1.0.18
4420
-		 */
4421
-		public function is_oxygen_preview() {
4422
-			$result = false;
4423
-			if ( ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === "oxy_render_" || substr( $_REQUEST['action'], 0, 10 ) === "ct_render_" ) ) ) {
4424
-				$result = true;
4425
-			}
4412
+            return $result;
4413
+        }
4426 4414
 
4427
-			return $result;
4428
-		}
4415
+        /**
4416
+         * Tests if the current output is inside a Oxygen builder preview.
4417
+         *
4418
+         * @return bool
4419
+         *@since 1.0.18
4420
+         */
4421
+        public function is_oxygen_preview() {
4422
+            $result = false;
4423
+            if ( ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === "oxy_render_" || substr( $_REQUEST['action'], 0, 10 ) === "ct_render_" ) ) ) {
4424
+                $result = true;
4425
+            }
4429 4426
 
4430
-		/**
4431
-		 * Check for Kallyas theme Zion builder preview.
4432
-		 *
4433
-		 * @since 1.1.22
4434
-		 *
4435
-		 * @return bool True when preview page otherwise false.
4436
-		 */
4437
-		public function is_kallyas_zion_preview() {
4438
-			$result = false;
4439
-
4440
-			if ( function_exists( 'znhg_kallyas_theme_config' ) && ! empty( $_REQUEST['zn_pb_edit'] ) ) {
4441
-				$result = true;
4442
-			}
4427
+            return $result;
4428
+        }
4443 4429
 
4444
-			return $result;
4445
-		}
4430
+        /**
4431
+         * Check for Kallyas theme Zion builder preview.
4432
+         *
4433
+         * @since 1.1.22
4434
+         *
4435
+         * @return bool True when preview page otherwise false.
4436
+         */
4437
+        public function is_kallyas_zion_preview() {
4438
+            $result = false;
4446 4439
 
4447
-		/**
4448
-		 * Check for Bricks theme builder preview.
4449
-		 *
4450
-		 * @since 1.1.31
4451
-		 *
4452
-		 * @return bool True when preview page otherwise false.
4453
-		 */
4454
-		public function is_bricks_preview() {
4455
-			$result = false;
4456
-
4457
-			if ( function_exists( 'bricks_is_builder' ) && ( bricks_is_builder() || bricks_is_builder_call() ) ) {
4458
-				$result = true;
4459
-			}
4440
+            if ( function_exists( 'znhg_kallyas_theme_config' ) && ! empty( $_REQUEST['zn_pb_edit'] ) ) {
4441
+                $result = true;
4442
+            }
4460 4443
 
4461
-			return $result;
4462
-		}
4444
+            return $result;
4445
+        }
4463 4446
 
4464
-		/**
4465
-		 * General function to check if we are in a preview situation.
4466
-		 *
4467
-		 * @return bool
4468
-		 *@since 1.0.6
4469
-		 */
4470
-		public function is_preview() {
4471
-			$preview = false;
4472
-			if ( $this->is_divi_preview() ) {
4473
-				$preview = true;
4474
-			} elseif ( $this->is_elementor_preview() ) {
4475
-				$preview = true;
4476
-			} elseif ( $this->is_beaver_preview() ) {
4477
-				$preview = true;
4478
-			} elseif ( $this->is_siteorigin_preview() ) {
4479
-				$preview = true;
4480
-			} elseif ( $this->is_cornerstone_preview() ) {
4481
-				$preview = true;
4482
-			} elseif ( $this->is_fusion_preview() ) {
4483
-				$preview = true;
4484
-			} elseif ( $this->is_oxygen_preview() ) {
4485
-				$preview = true;
4486
-			} elseif( $this->is_kallyas_zion_preview() ) {
4487
-				$preview = true;
4488
-			} elseif( $this->is_block_content_call() ) {
4489
-				$preview = true;
4490
-			} elseif( $this->is_bricks_preview() ) {
4491
-				$preview = true;
4492
-			}
4447
+        /**
4448
+         * Check for Bricks theme builder preview.
4449
+         *
4450
+         * @since 1.1.31
4451
+         *
4452
+         * @return bool True when preview page otherwise false.
4453
+         */
4454
+        public function is_bricks_preview() {
4455
+            $result = false;
4493 4456
 
4494
-			return $preview;
4495
-		}
4457
+            if ( function_exists( 'bricks_is_builder' ) && ( bricks_is_builder() || bricks_is_builder_call() ) ) {
4458
+                $result = true;
4459
+            }
4496 4460
 
4497
-		/**
4498
-		 * Output the super title.
4499
-		 *
4500
-		 * @param $args
4501
-		 * @param array $instance
4502
-		 *
4503
-		 * @return string
4504
-		 */
4505
-		public function output_title( $args, $instance = array() ) {
4506
-			$output = '';
4507
-			if ( ! empty( $instance['title'] ) ) {
4508
-				/** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
4509
-				$title  = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );
4510
-
4511
-				if ( empty( $instance['widget_title_tag'] ) ) {
4512
-					if ( ! isset( $args['before_title'] ) ) {
4513
-						$args['before_title'] = '';
4514
-					}
4461
+            return $result;
4462
+        }
4515 4463
 
4516
-					if ( ! isset( $args['after_title'] ) ) {
4517
-						$args['after_title'] = '';
4518
-					}
4464
+        /**
4465
+         * General function to check if we are in a preview situation.
4466
+         *
4467
+         * @return bool
4468
+         *@since 1.0.6
4469
+         */
4470
+        public function is_preview() {
4471
+            $preview = false;
4472
+            if ( $this->is_divi_preview() ) {
4473
+                $preview = true;
4474
+            } elseif ( $this->is_elementor_preview() ) {
4475
+                $preview = true;
4476
+            } elseif ( $this->is_beaver_preview() ) {
4477
+                $preview = true;
4478
+            } elseif ( $this->is_siteorigin_preview() ) {
4479
+                $preview = true;
4480
+            } elseif ( $this->is_cornerstone_preview() ) {
4481
+                $preview = true;
4482
+            } elseif ( $this->is_fusion_preview() ) {
4483
+                $preview = true;
4484
+            } elseif ( $this->is_oxygen_preview() ) {
4485
+                $preview = true;
4486
+            } elseif( $this->is_kallyas_zion_preview() ) {
4487
+                $preview = true;
4488
+            } elseif( $this->is_block_content_call() ) {
4489
+                $preview = true;
4490
+            } elseif( $this->is_bricks_preview() ) {
4491
+                $preview = true;
4492
+            }
4493
+
4494
+            return $preview;
4495
+        }
4519 4496
 
4520
-					$output = $args['before_title'] . $title . $args['after_title'];
4521
-				} else {
4522
-					$tag 			= esc_attr( $instance['widget_title_tag'] );
4523
-					$allowed_tags 	= array( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span', 'div', 'p' );
4524
-					$title_tag      = in_array( $tag, $allowed_tags, true ) ? esc_attr( $tag ) : 'h2';
4525
-
4526
-					// classes
4527
-					$title_classes = array();
4528
-					$title_classes[] = !empty( $instance['widget_title_size_class'] ) ? sanitize_html_class( $instance['widget_title_size_class'] ) : '';
4529
-					$title_classes[] = !empty( $instance['widget_title_align_class'] ) ? sanitize_html_class( $instance['widget_title_align_class'] ) : '';
4530
-					$title_classes[] = !empty( $instance['widget_title_color_class'] ) ? "text-".sanitize_html_class( $instance['widget_title_color_class'] ) : '';
4531
-					$title_classes[] = !empty( $instance['widget_title_border_class'] ) ? sanitize_html_class( $instance['widget_title_border_class'] ) : '';
4532
-					$title_classes[] = !empty( $instance['widget_title_border_color_class'] ) ? "border-".sanitize_html_class( $instance['widget_title_border_color_class'] ) : '';
4533
-					$title_classes[] = !empty( $instance['widget_title_mt_class'] ) ? "mt-".absint( $instance['widget_title_mt_class'] ) : '';
4534
-					$title_classes[] = !empty( $instance['widget_title_mr_class'] ) ? "mr-".absint( $instance['widget_title_mr_class'] ) : '';
4535
-					$title_classes[] = !empty( $instance['widget_title_mb_class'] ) ? "mb-".absint( $instance['widget_title_mb_class'] ) : '';
4536
-					$title_classes[] = !empty( $instance['widget_title_ml_class'] ) ? "ml-".absint( $instance['widget_title_ml_class'] ) : '';
4537
-					$title_classes[] = !empty( $instance['widget_title_pt_class'] ) ? "pt-".absint( $instance['widget_title_pt_class'] ) : '';
4538
-					$title_classes[] = !empty( $instance['widget_title_pr_class'] ) ? "pr-".absint( $instance['widget_title_pr_class'] ) : '';
4539
-					$title_classes[] = !empty( $instance['widget_title_pb_class'] ) ? "pb-".absint( $instance['widget_title_pb_class'] ) : '';
4540
-					$title_classes[] = !empty( $instance['widget_title_pl_class'] ) ? "pl-".absint( $instance['widget_title_pl_class'] ) : '';
4541
-
4542
-					$class = !empty( $title_classes ) ? implode(" ",$title_classes) : '';
4543
-					$output = "<$title_tag class='$class' >$title</$title_tag>";
4544
-				}
4497
+        /**
4498
+         * Output the super title.
4499
+         *
4500
+         * @param $args
4501
+         * @param array $instance
4502
+         *
4503
+         * @return string
4504
+         */
4505
+        public function output_title( $args, $instance = array() ) {
4506
+            $output = '';
4507
+            if ( ! empty( $instance['title'] ) ) {
4508
+                /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
4509
+                $title  = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );
4510
+
4511
+                if ( empty( $instance['widget_title_tag'] ) ) {
4512
+                    if ( ! isset( $args['before_title'] ) ) {
4513
+                        $args['before_title'] = '';
4514
+                    }
4515
+
4516
+                    if ( ! isset( $args['after_title'] ) ) {
4517
+                        $args['after_title'] = '';
4518
+                    }
4519
+
4520
+                    $output = $args['before_title'] . $title . $args['after_title'];
4521
+                } else {
4522
+                    $tag 			= esc_attr( $instance['widget_title_tag'] );
4523
+                    $allowed_tags 	= array( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span', 'div', 'p' );
4524
+                    $title_tag      = in_array( $tag, $allowed_tags, true ) ? esc_attr( $tag ) : 'h2';
4525
+
4526
+                    // classes
4527
+                    $title_classes = array();
4528
+                    $title_classes[] = !empty( $instance['widget_title_size_class'] ) ? sanitize_html_class( $instance['widget_title_size_class'] ) : '';
4529
+                    $title_classes[] = !empty( $instance['widget_title_align_class'] ) ? sanitize_html_class( $instance['widget_title_align_class'] ) : '';
4530
+                    $title_classes[] = !empty( $instance['widget_title_color_class'] ) ? "text-".sanitize_html_class( $instance['widget_title_color_class'] ) : '';
4531
+                    $title_classes[] = !empty( $instance['widget_title_border_class'] ) ? sanitize_html_class( $instance['widget_title_border_class'] ) : '';
4532
+                    $title_classes[] = !empty( $instance['widget_title_border_color_class'] ) ? "border-".sanitize_html_class( $instance['widget_title_border_color_class'] ) : '';
4533
+                    $title_classes[] = !empty( $instance['widget_title_mt_class'] ) ? "mt-".absint( $instance['widget_title_mt_class'] ) : '';
4534
+                    $title_classes[] = !empty( $instance['widget_title_mr_class'] ) ? "mr-".absint( $instance['widget_title_mr_class'] ) : '';
4535
+                    $title_classes[] = !empty( $instance['widget_title_mb_class'] ) ? "mb-".absint( $instance['widget_title_mb_class'] ) : '';
4536
+                    $title_classes[] = !empty( $instance['widget_title_ml_class'] ) ? "ml-".absint( $instance['widget_title_ml_class'] ) : '';
4537
+                    $title_classes[] = !empty( $instance['widget_title_pt_class'] ) ? "pt-".absint( $instance['widget_title_pt_class'] ) : '';
4538
+                    $title_classes[] = !empty( $instance['widget_title_pr_class'] ) ? "pr-".absint( $instance['widget_title_pr_class'] ) : '';
4539
+                    $title_classes[] = !empty( $instance['widget_title_pb_class'] ) ? "pb-".absint( $instance['widget_title_pb_class'] ) : '';
4540
+                    $title_classes[] = !empty( $instance['widget_title_pl_class'] ) ? "pl-".absint( $instance['widget_title_pl_class'] ) : '';
4541
+
4542
+                    $class = !empty( $title_classes ) ? implode(" ",$title_classes) : '';
4543
+                    $output = "<$title_tag class='$class' >$title</$title_tag>";
4544
+                }
4545 4545
 
4546
-			}
4546
+            }
4547 4547
 
4548
-			return $output;
4549
-		}
4548
+            return $output;
4549
+        }
4550 4550
 
4551
-		/**
4552
-		 * Outputs the options form inputs for the widget.
4553
-		 *
4554
-		 * @param array $instance The widget options.
4555
-		 */
4556
-		public function form( $instance ) {
4551
+        /**
4552
+         * Outputs the options form inputs for the widget.
4553
+         *
4554
+         * @param array $instance The widget options.
4555
+         */
4556
+        public function form( $instance ) {
4557 4557
 
4558
-			// set widget instance
4559
-			$this->instance = $instance;
4558
+            // set widget instance
4559
+            $this->instance = $instance;
4560 4560
 
4561
-			// set it as a SD widget
4562
-			echo $this->widget_advanced_toggle();
4561
+            // set it as a SD widget
4562
+            echo $this->widget_advanced_toggle();
4563 4563
 
4564
-			echo "<p>" . esc_attr( $this->options['widget_ops']['description'] ) . "</p>";
4565
-			$arguments_raw = $this->get_arguments();
4564
+            echo "<p>" . esc_attr( $this->options['widget_ops']['description'] ) . "</p>";
4565
+            $arguments_raw = $this->get_arguments();
4566 4566
 
4567
-			if ( is_array( $arguments_raw ) ) {
4567
+            if ( is_array( $arguments_raw ) ) {
4568 4568
 
4569
-				$arguments = $this->group_arguments( $arguments_raw );
4569
+                $arguments = $this->group_arguments( $arguments_raw );
4570 4570
 
4571
-				// Do we have sections?
4572
-				$has_sections = $arguments == $arguments_raw ? false : true;
4571
+                // Do we have sections?
4572
+                $has_sections = $arguments == $arguments_raw ? false : true;
4573 4573
 
4574 4574
 
4575
-				if ( $has_sections ) {
4576
-					$panel_count = 0;
4577
-					foreach ( $arguments as $key => $args ) {
4575
+                if ( $has_sections ) {
4576
+                    $panel_count = 0;
4577
+                    foreach ( $arguments as $key => $args ) {
4578 4578
 
4579
-						?>
4579
+                        ?>
4580 4580
 						<script>
4581 4581
 							//							jQuery(this).find("i").toggleClass("fas fa-chevron-up fas fa-chevron-down");jQuery(this).next().toggle();
4582 4582
 						</script>
4583 4583
 						<?php
4584 4584
 
4585
-						$hide       = $panel_count ? ' style="display:none;" ' : '';
4586
-						$icon_class = $panel_count ? 'fas fa-chevron-up' : 'fas fa-chevron-down';
4587
-						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>";
4588
-						echo "<div class='sd-toggle-group sd-input-group-" . sanitize_title_with_dashes( $key ) . "' $hide>";
4585
+                        $hide       = $panel_count ? ' style="display:none;" ' : '';
4586
+                        $icon_class = $panel_count ? 'fas fa-chevron-up' : 'fas fa-chevron-down';
4587
+                        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>";
4588
+                        echo "<div class='sd-toggle-group sd-input-group-" . sanitize_title_with_dashes( $key ) . "' $hide>";
4589 4589
 
4590
-						foreach ( $args as $k => $a ) {
4590
+                        foreach ( $args as $k => $a ) {
4591 4591
 
4592
-							$this->widget_inputs_row_start($k, $a);
4593
-							$this->widget_inputs( $a, $instance );
4594
-							$this->widget_inputs_row_end($k, $a);
4592
+                            $this->widget_inputs_row_start($k, $a);
4593
+                            $this->widget_inputs( $a, $instance );
4594
+                            $this->widget_inputs_row_end($k, $a);
4595 4595
 
4596
-						}
4596
+                        }
4597 4597
 
4598
-						echo "</div>";
4598
+                        echo "</div>";
4599 4599
 
4600
-						$panel_count ++;
4600
+                        $panel_count ++;
4601 4601
 
4602
-					}
4603
-				} else {
4604
-					foreach ( $arguments as $key => $args ) {
4605
-						$this->widget_inputs_row_start($key, $args);
4606
-						$this->widget_inputs( $args, $instance );
4607
-						$this->widget_inputs_row_end($key, $args);
4608
-					}
4609
-				}
4602
+                    }
4603
+                } else {
4604
+                    foreach ( $arguments as $key => $args ) {
4605
+                        $this->widget_inputs_row_start($key, $args);
4606
+                        $this->widget_inputs( $args, $instance );
4607
+                        $this->widget_inputs_row_end($key, $args);
4608
+                    }
4609
+                }
4610 4610
 
4611
-			}
4612
-		}
4611
+            }
4612
+        }
4613 4613
 
4614
-		public function widget_inputs_row_start( $key, $args ) {
4615
-			if ( ! empty( $args['row'] ) ) {
4616
-				// Maybe open
4617
-				if ( ! empty( $args['row']['open'] ) ) {
4618
-					?>
4614
+        public function widget_inputs_row_start( $key, $args ) {
4615
+            if ( ! empty( $args['row'] ) ) {
4616
+                // Maybe open
4617
+                if ( ! empty( $args['row']['open'] ) ) {
4618
+                    ?>
4619 4619
 					<div class='bsui sd-argument' data-argument='<?php echo esc_attr( $args['row']['key'] ); ?>' data-element_require='<?php echo ( ! empty( $args['row']['element_require'] ) ? $this->convert_element_require( $args['row']['element_require'] ) : '' ); ?>'>
4620 4620
 					<?php if ( ! empty( $args['row']['title'] ) ) { ?>
4621 4621
 					<?php
4622
-						if ( isset( $args['row']['icon'] ) ) {
4623
-							$args['row']['icon'] = '';
4624
-						}
4625
-
4626
-						if ( ! isset( $args['row']['device_type'] ) && isset( $args['device_type'] ) ) {
4627
-							$args['row']['device_type'] = $args['device_type'];
4628
-						}
4629
-					?>
4622
+                        if ( isset( $args['row']['icon'] ) ) {
4623
+                            $args['row']['icon'] = '';
4624
+                        }
4625
+
4626
+                        if ( ! isset( $args['row']['device_type'] ) && isset( $args['device_type'] ) ) {
4627
+                            $args['row']['device_type'] = $args['device_type'];
4628
+                        }
4629
+                    ?>
4630 4630
 					<label class="mb-0"><?php echo $this->widget_field_title( $args['row'] ); ?><?php echo $this->widget_field_desc( $args['row'] ); ?></label>
4631 4631
 					<?php } ?>
4632 4632
 					<div class='row<?php echo ( ! empty( $args['row']['class'] ) ? ' ' . esc_attr( $args['row']['class'] ) : '' ); ?>'>
4633 4633
 					<div class='col pr-2'>
4634 4634
 					<?php
4635
-				} else if ( ! empty( $args['row']['close'] ) ) {
4636
-					echo "<div class='col pl-0 ps-0'>";
4637
-				} else {
4638
-					echo "<div class='col pl-0 ps-0 pr-2 pe-2'>";
4639
-				}
4640
-			}
4641
-		}
4642
-
4643
-		public function widget_inputs_row_end( $key, $args ) {
4644
-			if ( ! empty( $args['row'] ) ) {
4645
-				// Maybe close
4646
-				if ( ! empty( $args['row']['close'] ) ) {
4647
-					echo "</div></div>";
4648
-				}
4649
-				echo "</div>";
4650
-			}
4651
-		}
4652
-
4653
-		/**
4654
-		 * Get the hidden input that when added makes the advanced button show on widget settings.
4655
-		 *
4656
-		 * @return string
4657
-		 */
4658
-		public function widget_advanced_toggle() {
4659
-
4660
-			$output = '';
4661
-			if ( $this->block_show_advanced() ) {
4662
-				$val = 1;
4663
-			} else {
4664
-				$val = 0;
4665
-			}
4635
+                } else if ( ! empty( $args['row']['close'] ) ) {
4636
+                    echo "<div class='col pl-0 ps-0'>";
4637
+                } else {
4638
+                    echo "<div class='col pl-0 ps-0 pr-2 pe-2'>";
4639
+                }
4640
+            }
4641
+        }
4666 4642
 
4667
-			$output .= "<input type='hidden'  class='sd-show-advanced' value='$val' />";
4643
+        public function widget_inputs_row_end( $key, $args ) {
4644
+            if ( ! empty( $args['row'] ) ) {
4645
+                // Maybe close
4646
+                if ( ! empty( $args['row']['close'] ) ) {
4647
+                    echo "</div></div>";
4648
+                }
4649
+                echo "</div>";
4650
+            }
4651
+        }
4668 4652
 
4669
-			return $output;
4670
-		}
4653
+        /**
4654
+         * Get the hidden input that when added makes the advanced button show on widget settings.
4655
+         *
4656
+         * @return string
4657
+         */
4658
+        public function widget_advanced_toggle() {
4671 4659
 
4672
-		/**
4673
-		 * Convert require element.
4674
-		 *
4675
-		 * @param string $input Input element.
4676
-		 *
4677
-		 * @return string $output
4678
-		 *@since 1.0.0
4679
-		 *
4680
-		 */
4681
-		public function convert_element_require( $input ) {
4682
-			$input = str_replace( "'", '"', $input );// we only want double quotes
4683
-
4684
-			$output = esc_attr( str_replace( array( "[%", "%]", "%:checked]" ), array(
4685
-				"jQuery(form).find('[data-argument=\"",
4686
-				"\"]').find('input,select,textarea').val()",
4687
-				"\"]').find('input:checked').val()"
4688
-			), $input ) );
4689
-
4690
-			return $output;
4691
-		}
4660
+            $output = '';
4661
+            if ( $this->block_show_advanced() ) {
4662
+                $val = 1;
4663
+            } else {
4664
+                $val = 0;
4665
+            }
4692 4666
 
4693
-		/**
4694
-		 * Builds the inputs for the widget options.
4695
-		 *
4696
-		 * @param $args
4697
-		 * @param $instance
4698
-		 */
4699
-		public function widget_inputs( $args, $instance ) {
4700
-
4701
-			$class             = "";
4702
-			$element_require   = "";
4703
-			$custom_attributes = "";
4704
-
4705
-			// get value
4706
-			if ( isset( $instance[ $args['name'] ] ) ) {
4707
-				$value = $instance[ $args['name'] ];
4708
-			} elseif ( ! isset( $instance[ $args['name'] ] ) && ! empty( $args['default'] ) ) {
4709
-				$value = is_array( $args['default'] ) ? array_map( "esc_html", $args['default'] ) : esc_html( $args['default'] );
4710
-			} else {
4711
-				$value = '';
4712
-			}
4667
+            $output .= "<input type='hidden'  class='sd-show-advanced' value='$val' />";
4713 4668
 
4714
-			// get placeholder
4715
-			if ( ! empty( $args['placeholder'] ) ) {
4716
-				$placeholder = "placeholder='" . esc_html( $args['placeholder'] ) . "'";
4717
-			} else {
4718
-				$placeholder = '';
4719
-			}
4669
+            return $output;
4670
+        }
4720 4671
 
4721
-			// get if advanced
4722
-			if ( isset( $args['advanced'] ) && $args['advanced'] ) {
4723
-				$class .= " sd-advanced-setting ";
4724
-			}
4672
+        /**
4673
+         * Convert require element.
4674
+         *
4675
+         * @param string $input Input element.
4676
+         *
4677
+         * @return string $output
4678
+         *@since 1.0.0
4679
+         *
4680
+         */
4681
+        public function convert_element_require( $input ) {
4682
+            $input = str_replace( "'", '"', $input );// we only want double quotes
4725 4683
 
4726
-			// element_require
4727
-			if ( isset( $args['element_require'] ) && $args['element_require'] ) {
4728
-				$element_require = $args['element_require'];
4729
-			}
4684
+            $output = esc_attr( str_replace( array( "[%", "%]", "%:checked]" ), array(
4685
+                "jQuery(form).find('[data-argument=\"",
4686
+                "\"]').find('input,select,textarea').val()",
4687
+                "\"]').find('input:checked').val()"
4688
+            ), $input ) );
4730 4689
 
4731
-			// custom_attributes
4732
-			if ( isset( $args['custom_attributes'] ) && $args['custom_attributes'] ) {
4733
-				$custom_attributes = $this->array_to_attributes( $args['custom_attributes'], true );
4734
-			}
4690
+            return $output;
4691
+        }
4735 4692
 
4736
-			// before wrapper
4737
-			?>
4693
+        /**
4694
+         * Builds the inputs for the widget options.
4695
+         *
4696
+         * @param $args
4697
+         * @param $instance
4698
+         */
4699
+        public function widget_inputs( $args, $instance ) {
4700
+
4701
+            $class             = "";
4702
+            $element_require   = "";
4703
+            $custom_attributes = "";
4704
+
4705
+            // get value
4706
+            if ( isset( $instance[ $args['name'] ] ) ) {
4707
+                $value = $instance[ $args['name'] ];
4708
+            } elseif ( ! isset( $instance[ $args['name'] ] ) && ! empty( $args['default'] ) ) {
4709
+                $value = is_array( $args['default'] ) ? array_map( "esc_html", $args['default'] ) : esc_html( $args['default'] );
4710
+            } else {
4711
+                $value = '';
4712
+            }
4713
+
4714
+            // get placeholder
4715
+            if ( ! empty( $args['placeholder'] ) ) {
4716
+                $placeholder = "placeholder='" . esc_html( $args['placeholder'] ) . "'";
4717
+            } else {
4718
+                $placeholder = '';
4719
+            }
4720
+
4721
+            // get if advanced
4722
+            if ( isset( $args['advanced'] ) && $args['advanced'] ) {
4723
+                $class .= " sd-advanced-setting ";
4724
+            }
4725
+
4726
+            // element_require
4727
+            if ( isset( $args['element_require'] ) && $args['element_require'] ) {
4728
+                $element_require = $args['element_require'];
4729
+            }
4730
+
4731
+            // custom_attributes
4732
+            if ( isset( $args['custom_attributes'] ) && $args['custom_attributes'] ) {
4733
+                $custom_attributes = $this->array_to_attributes( $args['custom_attributes'], true );
4734
+            }
4735
+
4736
+            // before wrapper
4737
+            ?>
4738 4738
 			<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 );} ?>'>
4739 4739
 			<?php
4740
-			switch ( $args['type'] ) {
4741
-				//array('text','password','number','email','tel','url','color')
4742
-				case "text":
4743
-				case "password":
4744
-				case "number":
4745
-				case "email":
4746
-				case "tel":
4747
-				case "url":
4748
-				case "color":
4749
-					?>
4740
+            switch ( $args['type'] ) {
4741
+                //array('text','password','number','email','tel','url','color')
4742
+                case "text":
4743
+                case "password":
4744
+                case "number":
4745
+                case "email":
4746
+                case "tel":
4747
+                case "url":
4748
+                case "color":
4749
+                    ?>
4750 4750
 					<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>
4751 4751
 					<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 ); ?>">
4752 4752
 					<?php
4753 4753
 
4754
-					break;
4755
-				case "select":
4756
-					$multiple = isset( $args['multiple'] ) && $args['multiple'] ? true : false;
4757
-					if ( $multiple ) {
4758
-						if ( empty( $value ) ) {
4759
-							$value = array();
4760
-						}
4761
-					}
4762
-					?>
4754
+                    break;
4755
+                case "select":
4756
+                    $multiple = isset( $args['multiple'] ) && $args['multiple'] ? true : false;
4757
+                    if ( $multiple ) {
4758
+                        if ( empty( $value ) ) {
4759
+                            $value = array();
4760
+                        }
4761
+                    }
4762
+                    ?>
4763 4763
 					<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>
4764 4764
 					<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 "[]"; } ?>"
4765 4765
 						<?php if ( $multiple ) {
4766
-							echo "multiple";
4767
-						} //@todo not implemented yet due to gutenberg not supporting it
4768
-						?>>
4766
+                            echo "multiple";
4767
+                        } //@todo not implemented yet due to gutenberg not supporting it
4768
+                        ?>>
4769 4769
 						<?php
4770 4770
 
4771
-						if ( ! empty( $args['options'] ) ) {
4772
-							foreach ( $args['options'] as $val => $label ) {
4773
-								if ( $multiple ) {
4774
-									$selected = in_array( $val, $value ) ? 'selected="selected"' : '';
4775
-								} else {
4776
-									$selected = selected( $value, $val, false );
4777
-								}
4778
-								echo "<option value='$val' " . $selected . ">$label</option>";
4779
-							}
4780
-						}
4781
-						?>
4771
+                        if ( ! empty( $args['options'] ) ) {
4772
+                            foreach ( $args['options'] as $val => $label ) {
4773
+                                if ( $multiple ) {
4774
+                                    $selected = in_array( $val, $value ) ? 'selected="selected"' : '';
4775
+                                } else {
4776
+                                    $selected = selected( $value, $val, false );
4777
+                                }
4778
+                                echo "<option value='$val' " . $selected . ">$label</option>";
4779
+                            }
4780
+                        }
4781
+                        ?>
4782 4782
 					</select>
4783 4783
 					<?php
4784
-					break;
4785
-				case "checkbox":
4786
-					?>
4784
+                    break;
4785
+                case "checkbox":
4786
+                    ?>
4787 4787
 					<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">
4788 4788
 					<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>
4789 4789
 					<?php
4790
-					break;
4791
-				case "textarea":
4792
-					?>
4790
+                    break;
4791
+                case "textarea":
4792
+                    ?>
4793 4793
 					<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>
4794 4794
 					<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>
4795 4795
 					<?php
4796 4796
 
4797
-					break;
4798
-				case "hidden":
4799
-					?>
4797
+                    break;
4798
+                case "hidden":
4799
+                    ?>
4800 4800
 					<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 ); ?>">
4801 4801
 					<?php
4802
-					break;
4803
-				default:
4804
-					echo "No input type found!"; // @todo we need to add more input types.
4805
-			}
4806
-			// after wrapper
4807
-			?></p><?php
4808
-		}
4802
+                    break;
4803
+                default:
4804
+                    echo "No input type found!"; // @todo we need to add more input types.
4805
+            }
4806
+            // after wrapper
4807
+            ?></p><?php
4808
+        }
4809 4809
 
4810
-		public function get_widget_icon($icon = 'box-top', $title = ''){
4811
-			if($icon=='box-top'){
4812
-				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>';
4813
-			}elseif($icon=='box-right'){
4814
-				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>';
4815
-			}elseif($icon=='box-bottom'){
4816
-				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>';
4817
-			}elseif($icon=='box-left'){
4818
-				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>';
4819
-			}
4820
-		}
4810
+        public function get_widget_icon($icon = 'box-top', $title = ''){
4811
+            if($icon=='box-top'){
4812
+                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>';
4813
+            }elseif($icon=='box-right'){
4814
+                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>';
4815
+            }elseif($icon=='box-bottom'){
4816
+                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>';
4817
+            }elseif($icon=='box-left'){
4818
+                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>';
4819
+            }
4820
+        }
4821 4821
 
4822
-		/**
4823
-		 * Get the widget input description html.
4824
-		 *
4825
-		 * @param $args
4826
-		 *
4827
-		 * @return string
4828
-		 * @todo, need to make its own tooltip script
4829
-		 */
4830
-		public function widget_field_desc( $args ) {
4831
-
4832
-			$description = '';
4833
-			if ( isset( $args['desc'] ) && $args['desc'] ) {
4834
-				if ( isset( $args['desc_tip'] ) && $args['desc_tip'] ) {
4835
-					$description = $this->desc_tip( $args['desc'] );
4836
-				} else {
4837
-					$description = '<span class="description">' . wp_kses_post( $args['desc'] ) . '</span>';
4838
-				}
4839
-			}
4822
+        /**
4823
+         * Get the widget input description html.
4824
+         *
4825
+         * @param $args
4826
+         *
4827
+         * @return string
4828
+         * @todo, need to make its own tooltip script
4829
+         */
4830
+        public function widget_field_desc( $args ) {
4831
+
4832
+            $description = '';
4833
+            if ( isset( $args['desc'] ) && $args['desc'] ) {
4834
+                if ( isset( $args['desc_tip'] ) && $args['desc_tip'] ) {
4835
+                    $description = $this->desc_tip( $args['desc'] );
4836
+                } else {
4837
+                    $description = '<span class="description">' . wp_kses_post( $args['desc'] ) . '</span>';
4838
+                }
4839
+            }
4840 4840
 
4841
-			return $description;
4842
-		}
4841
+            return $description;
4842
+        }
4843 4843
 
4844
-		/**
4845
-		 * Get the widget input title html.
4846
-		 *
4847
-		 * @param $args
4848
-		 *
4849
-		 * @return string
4850
-		 */
4851
-		public function widget_field_title( $args ) {
4852
-			$title = '';
4853
-
4854
-			if ( isset( $args['title'] ) && $args['title'] ) {
4855
-				if ( ! empty( $args['device_type'] ) ) {
4856
-					$args['title'] .= ' (' . $args['device_type'] . ')'; // Append device type to title.
4857
-				}
4844
+        /**
4845
+         * Get the widget input title html.
4846
+         *
4847
+         * @param $args
4848
+         *
4849
+         * @return string
4850
+         */
4851
+        public function widget_field_title( $args ) {
4852
+            $title = '';
4858 4853
 
4859
-				if ( isset( $args['icon'] ) && $args['icon'] ) {
4860
-					$title = self::get_widget_icon( $args['icon'], $args['title']  );
4861
-				} else {
4862
-					$title = esc_attr( $args['title'] );
4863
-				}
4864
-			}
4854
+            if ( isset( $args['title'] ) && $args['title'] ) {
4855
+                if ( ! empty( $args['device_type'] ) ) {
4856
+                    $args['title'] .= ' (' . $args['device_type'] . ')'; // Append device type to title.
4857
+                }
4865 4858
 
4866
-			return $title;
4867
-		}
4859
+                if ( isset( $args['icon'] ) && $args['icon'] ) {
4860
+                    $title = self::get_widget_icon( $args['icon'], $args['title']  );
4861
+                } else {
4862
+                    $title = esc_attr( $args['title'] );
4863
+                }
4864
+            }
4868 4865
 
4869
-		/**
4870
-		 * Get the tool tip html.
4871
-		 *
4872
-		 * @param $tip
4873
-		 * @param bool $allow_html
4874
-		 *
4875
-		 * @return string
4876
-		 */
4877
-		function desc_tip( $tip, $allow_html = false ) {
4878
-			if ( $allow_html ) {
4879
-				$tip = $this->sanitize_tooltip( $tip );
4880
-			} else {
4881
-				$tip = esc_attr( $tip );
4882
-			}
4866
+            return $title;
4867
+        }
4883 4868
 
4884
-			return '<span class="gd-help-tip dashicons dashicons-editor-help" title="' . $tip . '"></span>';
4885
-		}
4869
+        /**
4870
+         * Get the tool tip html.
4871
+         *
4872
+         * @param $tip
4873
+         * @param bool $allow_html
4874
+         *
4875
+         * @return string
4876
+         */
4877
+        function desc_tip( $tip, $allow_html = false ) {
4878
+            if ( $allow_html ) {
4879
+                $tip = $this->sanitize_tooltip( $tip );
4880
+            } else {
4881
+                $tip = esc_attr( $tip );
4882
+            }
4883
+
4884
+            return '<span class="gd-help-tip dashicons dashicons-editor-help" title="' . $tip . '"></span>';
4885
+        }
4886 4886
 
4887
-		/**
4888
-		 * Sanitize a string destined to be a tooltip.
4889
-		 *
4890
-		 * @param string $var
4891
-		 *
4892
-		 * @return string
4893
-		 */
4894
-		public function sanitize_tooltip( $var ) {
4895
-			return htmlspecialchars( wp_kses( html_entity_decode( $var ), array(
4896
-				'br'     => array(),
4897
-				'em'     => array(),
4898
-				'strong' => array(),
4899
-				'small'  => array(),
4900
-				'span'   => array(),
4901
-				'ul'     => array(),
4902
-				'li'     => array(),
4903
-				'ol'     => array(),
4904
-				'p'      => array(),
4905
-			) ) );
4906
-		}
4887
+        /**
4888
+         * Sanitize a string destined to be a tooltip.
4889
+         *
4890
+         * @param string $var
4891
+         *
4892
+         * @return string
4893
+         */
4894
+        public function sanitize_tooltip( $var ) {
4895
+            return htmlspecialchars( wp_kses( html_entity_decode( $var ), array(
4896
+                'br'     => array(),
4897
+                'em'     => array(),
4898
+                'strong' => array(),
4899
+                'small'  => array(),
4900
+                'span'   => array(),
4901
+                'ul'     => array(),
4902
+                'li'     => array(),
4903
+                'ol'     => array(),
4904
+                'p'      => array(),
4905
+            ) ) );
4906
+        }
4907 4907
 
4908
-		/**
4909
-		 * Processing widget options on save
4910
-		 *
4911
-		 * @param array $new_instance The new options
4912
-		 * @param array $old_instance The previous options
4913
-		 *
4914
-		 * @return array
4915
-		 * @todo we should add some sanitation here.
4916
-		 */
4917
-		public function update( $new_instance, $old_instance ) {
4918
-
4919
-			//save the widget
4920
-			$instance = array_merge( (array) $old_instance, (array) $new_instance );
4921
-
4922
-			// set widget instance
4923
-			$this->instance = $instance;
4924
-
4925
-			if ( empty( $this->arguments ) ) {
4926
-				$this->get_arguments();
4927
-			}
4908
+        /**
4909
+         * Processing widget options on save
4910
+         *
4911
+         * @param array $new_instance The new options
4912
+         * @param array $old_instance The previous options
4913
+         *
4914
+         * @return array
4915
+         * @todo we should add some sanitation here.
4916
+         */
4917
+        public function update( $new_instance, $old_instance ) {
4928 4918
 
4929
-			// check for checkboxes
4930
-			if ( ! empty( $this->arguments ) ) {
4931
-				foreach ( $this->arguments as $argument ) {
4932
-					if ( isset( $argument['type'] ) && $argument['type'] == 'checkbox' && ! isset( $new_instance[ $argument['name'] ] ) ) {
4933
-						$instance[ $argument['name'] ] = '0';
4934
-					}
4935
-				}
4936
-			}
4919
+            //save the widget
4920
+            $instance = array_merge( (array) $old_instance, (array) $new_instance );
4937 4921
 
4938
-			return $instance;
4939
-		}
4922
+            // set widget instance
4923
+            $this->instance = $instance;
4940 4924
 
4941
-		/**
4942
-		 * Checks if the current call is a ajax call to get the block content.
4943
-		 *
4944
-		 * This can be used in your widget to return different content as the block content.
4945
-		 *
4946
-		 * @return bool
4947
-		 *@since 1.0.3
4948
-		 */
4949
-		public function is_block_content_call() {
4950
-			$result = false;
4951
-			if ( wp_doing_ajax() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'super_duper_output_shortcode' ) {
4952
-				$result = true;
4953
-			}
4925
+            if ( empty( $this->arguments ) ) {
4926
+                $this->get_arguments();
4927
+            }
4954 4928
 
4955
-			return $result;
4956
-		}
4929
+            // check for checkboxes
4930
+            if ( ! empty( $this->arguments ) ) {
4931
+                foreach ( $this->arguments as $argument ) {
4932
+                    if ( isset( $argument['type'] ) && $argument['type'] == 'checkbox' && ! isset( $new_instance[ $argument['name'] ] ) ) {
4933
+                        $instance[ $argument['name'] ] = '0';
4934
+                    }
4935
+                }
4936
+            }
4957 4937
 
4958
-		/**
4959
-		 * Get an instance hash that will be unique to the type and settings.
4960
-		 *
4961
-		 * @return string
4962
-		 *@since 1.0.20
4963
-		 */
4964
-		public function get_instance_hash(){
4965
-			$instance_string = $this->base_id.serialize($this->instance);
4966
-			return hash('crc32b',$instance_string);
4967
-		}
4938
+            return $instance;
4939
+        }
4968 4940
 
4969
-		/**
4970
-		 * Generate and return inline styles from CSS rules that will match the unique class of the instance.
4971
-		 *
4972
-		 * @param array $rules
4973
-		 *
4974
-		 * @return string
4975
-		 *@since 1.0.20
4976
-		 */
4977
-		public function get_instance_style($rules = array()){
4978
-			$css = '';
4979
-
4980
-			if(!empty($rules)){
4981
-				$rules = array_unique($rules);
4982
-				$instance_hash = $this->get_instance_hash();
4983
-				$css .= "<style>";
4984
-				foreach($rules as $rule){
4985
-					$css .= ".sdel-$instance_hash $rule";
4986
-				}
4987
-				$css .= "</style>";
4988
-			}
4941
+        /**
4942
+         * Checks if the current call is a ajax call to get the block content.
4943
+         *
4944
+         * This can be used in your widget to return different content as the block content.
4945
+         *
4946
+         * @return bool
4947
+         *@since 1.0.3
4948
+         */
4949
+        public function is_block_content_call() {
4950
+            $result = false;
4951
+            if ( wp_doing_ajax() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'super_duper_output_shortcode' ) {
4952
+                $result = true;
4953
+            }
4989 4954
 
4990
-			return $css;
4991
-		}
4955
+            return $result;
4956
+        }
4957
+
4958
+        /**
4959
+         * Get an instance hash that will be unique to the type and settings.
4960
+         *
4961
+         * @return string
4962
+         *@since 1.0.20
4963
+         */
4964
+        public function get_instance_hash(){
4965
+            $instance_string = $this->base_id.serialize($this->instance);
4966
+            return hash('crc32b',$instance_string);
4967
+        }
4968
+
4969
+        /**
4970
+         * Generate and return inline styles from CSS rules that will match the unique class of the instance.
4971
+         *
4972
+         * @param array $rules
4973
+         *
4974
+         * @return string
4975
+         *@since 1.0.20
4976
+         */
4977
+        public function get_instance_style($rules = array()){
4978
+            $css = '';
4979
+
4980
+            if(!empty($rules)){
4981
+                $rules = array_unique($rules);
4982
+                $instance_hash = $this->get_instance_hash();
4983
+                $css .= "<style>";
4984
+                foreach($rules as $rule){
4985
+                    $css .= ".sdel-$instance_hash $rule";
4986
+                }
4987
+                $css .= "</style>";
4988
+            }
4989
+
4990
+            return $css;
4991
+        }
4992 4992
 
4993
-		/**
4994
-		 * Encode shortcodes tags.
4995
-		 *
4996
-		 * @param string $content Content to search for shortcode tags.
4997
-		 *
4993
+        /**
4994
+         * Encode shortcodes tags.
4995
+         *
4996
+         * @param string $content Content to search for shortcode tags.
4997
+         *
4998 4998
 *@return string Content with shortcode tags removed.
4999
-		 *@since 1.0.28
5000
-		 *
5001
-		 */
5002
-		public function encode_shortcodes( $content ) {
5003
-			// Avoids existing encoded tags.
5004
-			$trans   = array(
5005
-				'&#91;' => '&#091;',
5006
-				'&#93;' => '&#093;',
5007
-				'&amp;#91;' => '&#091;',
5008
-				'&amp;#93;' => '&#093;',
5009
-				'&lt;' => '&0lt;',
5010
-				'&gt;' => '&0gt;',
5011
-				'&amp;lt;' => '&0lt;',
5012
-				'&amp;gt;' => '&0gt;',
5013
-			);
5014
-
5015
-			$content = strtr( $content, $trans );
5016
-
5017
-			$trans   = array(
5018
-				'[' => '&#91;',
5019
-				']' => '&#93;',
5020
-				'<' => '&lt;',
5021
-				'>' => '&gt;',
5022
-				'"' => '&quot;',
5023
-				"'" => '&#39;',
5024
-			);
5025
-
5026
-			$content = strtr( $content, $trans );
5027
-
5028
-			return $content;
5029
-		}
4999
+         *@since 1.0.28
5000
+         *
5001
+         */
5002
+        public function encode_shortcodes( $content ) {
5003
+            // Avoids existing encoded tags.
5004
+            $trans   = array(
5005
+                '&#91;' => '&#091;',
5006
+                '&#93;' => '&#093;',
5007
+                '&amp;#91;' => '&#091;',
5008
+                '&amp;#93;' => '&#093;',
5009
+                '&lt;' => '&0lt;',
5010
+                '&gt;' => '&0gt;',
5011
+                '&amp;lt;' => '&0lt;',
5012
+                '&amp;gt;' => '&0gt;',
5013
+            );
5014
+
5015
+            $content = strtr( $content, $trans );
5016
+
5017
+            $trans   = array(
5018
+                '[' => '&#91;',
5019
+                ']' => '&#93;',
5020
+                '<' => '&lt;',
5021
+                '>' => '&gt;',
5022
+                '"' => '&quot;',
5023
+                "'" => '&#39;',
5024
+            );
5025
+
5026
+            $content = strtr( $content, $trans );
5027
+
5028
+            return $content;
5029
+        }
5030 5030
 
5031
-		/**
5032
-		 * Remove encoded shortcod tags.
5033
-		 *
5034
-		 * @param string $content Content to search for shortcode tags.
5035
-		 *
5031
+        /**
5032
+         * Remove encoded shortcod tags.
5033
+         *
5034
+         * @param string $content Content to search for shortcode tags.
5035
+         *
5036 5036
 *@return string Content with decoded shortcode tags.
5037
-		 *@since 1.0.28
5038
-		 *
5039
-		 */
5040
-		public function decode_shortcodes( $content ) {
5041
-			$trans   = array(
5042
-				'&#91;' => '[',
5043
-				'&#93;' => ']',
5044
-				'&amp;#91;' => '[',
5045
-				'&amp;#93;' => ']',
5046
-				'&lt;' => '<',
5047
-				'&gt;' => '>',
5048
-				'&amp;lt;' => '<',
5049
-				'&amp;gt;' => '>',
5050
-				'&quot;' => '"',
5051
-				'&apos;' => "'",
5052
-			);
5053
-
5054
-			$content = strtr( $content, $trans );
5055
-
5056
-			$trans   = array(
5057
-				'&#091;' => '&#91;',
5058
-				'&#093;' => '&#93;',
5059
-				'&amp;#091;' => '&#91;',
5060
-				'&amp;#093;' => '&#93;',
5061
-				'&0lt;' => '&lt;',
5062
-				'&0gt;' => '&gt;',
5063
-				'&amp;0lt;' => '&lt;',
5064
-				'&amp;0gt;' => '&gt;',
5065
-			);
5066
-
5067
-			$content = strtr( $content, $trans );
5068
-
5069
-			return $content;
5070
-		}
5071
-
5072
-		public function block_visibility_fields( $args ) {
5073
-			$value = ! empty( $args['value'] ) ? esc_attr( $args['value'] ) : '';
5074
-			$content = '<div class="bs-vc-rule-template d-none">';
5075
-				$content .= '<div class="p-3 pb-0 mb-3 border border-1 rounded-1 position-relative bs-vc-rule" data-bs-index="BSVCINDEX" >';
5076
-					$content .= '<div class="row">';
5077
-						$content .= '<div class="col-sm-12">';
5078
-							$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', 'ayecode-connect' ) . '"><i class="fas fa-circle-minus fs-6"></i></span></div>';
5079
-							$content .= aui()->select(
5080
-								array(
5081
-									'id'          => 'bsvc_rule_BSVCINDEX',
5082
-									'name'        => 'bsvc_rule_BSVCINDEX',
5083
-									'label'       => __( 'Rule', 'ayecode-connect' ),
5084
-									'placeholder' => __( 'Select Rule...', 'ayecode-connect' ),
5085
-									'class'       => 'bsvc_rule form-select-sm no-select2 mw-100',
5086
-									'options'     => sd_visibility_rules_options(),
5087
-									'default'     => '',
5088
-									'value'       => '',
5089
-									'label_type'  => '',
5090
-									'select2'     => false,
5091
-									'input_group_left' => __( 'Rule:', 'ayecode-connect' ),
5092
-									'extra_attributes' => array(
5093
-										'data-minimum-results-for-search' => '-1'
5094
-									)
5095
-								)
5096
-							);
5097
-
5098
-						$content .= '</div>';
5099
-
5100
-						if ( class_exists( 'GeoDirectory' ) ) {
5101
-							$content .= '<div class="col-md-7 col-sm-12">';
5102
-
5103
-								$content .= aui()->select(
5104
-									array(
5105
-										'id'          => 'bsvc_gd_field_BSVCINDEX',
5106
-										'name'        => 'bsvc_gd_field_BSVCINDEX',
5107
-										'label'       => __( 'FIELD', 'ayecode-connect' ),
5108
-										'placeholder' => __( 'FIELD', 'ayecode-connect' ),
5109
-										'class'       => 'bsvc_gd_field form-select-sm no-select2 mw-100',
5110
-										'options'     => sd_visibility_gd_field_options(),
5111
-										'default'     => '',
5112
-										'value'       => '',
5113
-										'label_type'  => '',
5114
-										'select2'     => false,
5115
-										'element_require'  => '[%bsvc_rule_BSVCINDEX%]=="gd_field"',
5116
-										'extra_attributes' => array(
5117
-											'data-minimum-results-for-search' => '-1'
5118
-										)
5119
-									)
5120
-								);
5121
-
5122
-							$content .= '</div>';
5123
-							$content .= '<div class="col-md-5 col-sm-12">';
5124
-
5125
-								$content .= aui()->select(
5126
-									array(
5127
-										'id'          => 'bsvc_gd_field_condition_BSVCINDEX',
5128
-										'name'        => 'bsvc_gd_field_condition_BSVCINDEX',
5129
-										'label'       => __( 'CONDITION', 'ayecode-connect' ),
5130
-										'placeholder' => __( 'CONDITION', 'ayecode-connect' ),
5131
-										'class'       => 'bsvc_gd_field_condition form-select-sm no-select2 mw-100',
5132
-										'options'     => sd_visibility_field_condition_options(),
5133
-										'default'     => '',
5134
-										'value'       => '',
5135
-										'label_type'  => '',
5136
-										'select2'     => false,
5137
-										'element_require'  => '[%bsvc_rule_BSVCINDEX%]=="gd_field"',
5138
-										'extra_attributes' => array(
5139
-											'data-minimum-results-for-search' => '-1'
5140
-										)
5141
-									)
5142
-								);
5143
-
5144
-							$content .= '</div>';
5145
-							$content .= '<div class="col-sm-12">';
5146
-
5147
-								$content .= aui()->input(
5148
-									array(
5149
-										'type'            => 'text',
5150
-										'id'              => 'bsvc_gd_field_search_BSVCINDEX',
5151
-										'name'            => 'bsvc_gd_field_search_BSVCINDEX',
5152
-										'label'           => __( 'VALUE TO MATCH', 'ayecode-connect' ),
5153
-										'class'           => 'bsvc_gd_field_search form-control-sm',
5154
-										'placeholder'     => __( 'VALUE TO MATCH', 'ayecode-connect' ),
5155
-										'label_type'      => '',
5156
-										'value'           => '',
5157
-										'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")'
5158
-									)
5159
-								);
5037
+         *@since 1.0.28
5038
+         *
5039
+         */
5040
+        public function decode_shortcodes( $content ) {
5041
+            $trans   = array(
5042
+                '&#91;' => '[',
5043
+                '&#93;' => ']',
5044
+                '&amp;#91;' => '[',
5045
+                '&amp;#93;' => ']',
5046
+                '&lt;' => '<',
5047
+                '&gt;' => '>',
5048
+                '&amp;lt;' => '<',
5049
+                '&amp;gt;' => '>',
5050
+                '&quot;' => '"',
5051
+                '&apos;' => "'",
5052
+            );
5053
+
5054
+            $content = strtr( $content, $trans );
5055
+
5056
+            $trans   = array(
5057
+                '&#091;' => '&#91;',
5058
+                '&#093;' => '&#93;',
5059
+                '&amp;#091;' => '&#91;',
5060
+                '&amp;#093;' => '&#93;',
5061
+                '&0lt;' => '&lt;',
5062
+                '&0gt;' => '&gt;',
5063
+                '&amp;0lt;' => '&lt;',
5064
+                '&amp;0gt;' => '&gt;',
5065
+            );
5066
+
5067
+            $content = strtr( $content, $trans );
5068
+
5069
+            return $content;
5070
+        }
5160 5071
 
5161
-							$content .= '</div>';
5162
-						}
5072
+        public function block_visibility_fields( $args ) {
5073
+            $value = ! empty( $args['value'] ) ? esc_attr( $args['value'] ) : '';
5074
+            $content = '<div class="bs-vc-rule-template d-none">';
5075
+                $content .= '<div class="p-3 pb-0 mb-3 border border-1 rounded-1 position-relative bs-vc-rule" data-bs-index="BSVCINDEX" >';
5076
+                    $content .= '<div class="row">';
5077
+                        $content .= '<div class="col-sm-12">';
5078
+                            $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', 'ayecode-connect' ) . '"><i class="fas fa-circle-minus fs-6"></i></span></div>';
5079
+                            $content .= aui()->select(
5080
+                                array(
5081
+                                    'id'          => 'bsvc_rule_BSVCINDEX',
5082
+                                    'name'        => 'bsvc_rule_BSVCINDEX',
5083
+                                    'label'       => __( 'Rule', 'ayecode-connect' ),
5084
+                                    'placeholder' => __( 'Select Rule...', 'ayecode-connect' ),
5085
+                                    'class'       => 'bsvc_rule form-select-sm no-select2 mw-100',
5086
+                                    'options'     => sd_visibility_rules_options(),
5087
+                                    'default'     => '',
5088
+                                    'value'       => '',
5089
+                                    'label_type'  => '',
5090
+                                    'select2'     => false,
5091
+                                    'input_group_left' => __( 'Rule:', 'ayecode-connect' ),
5092
+                                    'extra_attributes' => array(
5093
+                                        'data-minimum-results-for-search' => '-1'
5094
+                                    )
5095
+                                )
5096
+                            );
5097
+
5098
+                        $content .= '</div>';
5099
+
5100
+                        if ( class_exists( 'GeoDirectory' ) ) {
5101
+                            $content .= '<div class="col-md-7 col-sm-12">';
5102
+
5103
+                                $content .= aui()->select(
5104
+                                    array(
5105
+                                        'id'          => 'bsvc_gd_field_BSVCINDEX',
5106
+                                        'name'        => 'bsvc_gd_field_BSVCINDEX',
5107
+                                        'label'       => __( 'FIELD', 'ayecode-connect' ),
5108
+                                        'placeholder' => __( 'FIELD', 'ayecode-connect' ),
5109
+                                        'class'       => 'bsvc_gd_field form-select-sm no-select2 mw-100',
5110
+                                        'options'     => sd_visibility_gd_field_options(),
5111
+                                        'default'     => '',
5112
+                                        'value'       => '',
5113
+                                        'label_type'  => '',
5114
+                                        'select2'     => false,
5115
+                                        'element_require'  => '[%bsvc_rule_BSVCINDEX%]=="gd_field"',
5116
+                                        'extra_attributes' => array(
5117
+                                            'data-minimum-results-for-search' => '-1'
5118
+                                        )
5119
+                                    )
5120
+                                );
5121
+
5122
+                            $content .= '</div>';
5123
+                            $content .= '<div class="col-md-5 col-sm-12">';
5124
+
5125
+                                $content .= aui()->select(
5126
+                                    array(
5127
+                                        'id'          => 'bsvc_gd_field_condition_BSVCINDEX',
5128
+                                        'name'        => 'bsvc_gd_field_condition_BSVCINDEX',
5129
+                                        'label'       => __( 'CONDITION', 'ayecode-connect' ),
5130
+                                        'placeholder' => __( 'CONDITION', 'ayecode-connect' ),
5131
+                                        'class'       => 'bsvc_gd_field_condition form-select-sm no-select2 mw-100',
5132
+                                        'options'     => sd_visibility_field_condition_options(),
5133
+                                        'default'     => '',
5134
+                                        'value'       => '',
5135
+                                        'label_type'  => '',
5136
+                                        'select2'     => false,
5137
+                                        'element_require'  => '[%bsvc_rule_BSVCINDEX%]=="gd_field"',
5138
+                                        'extra_attributes' => array(
5139
+                                            'data-minimum-results-for-search' => '-1'
5140
+                                        )
5141
+                                    )
5142
+                                );
5143
+
5144
+                            $content .= '</div>';
5145
+                            $content .= '<div class="col-sm-12">';
5146
+
5147
+                                $content .= aui()->input(
5148
+                                    array(
5149
+                                        'type'            => 'text',
5150
+                                        'id'              => 'bsvc_gd_field_search_BSVCINDEX',
5151
+                                        'name'            => 'bsvc_gd_field_search_BSVCINDEX',
5152
+                                        'label'           => __( 'VALUE TO MATCH', 'ayecode-connect' ),
5153
+                                        'class'           => 'bsvc_gd_field_search form-control-sm',
5154
+                                        'placeholder'     => __( 'VALUE TO MATCH', 'ayecode-connect' ),
5155
+                                        'label_type'      => '',
5156
+                                        'value'           => '',
5157
+                                        '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")'
5158
+                                    )
5159
+                                );
5160
+
5161
+                            $content .= '</div>';
5162
+                        }
5163
+
5164
+                    $content .= '</div>';
5165
+
5166
+                    $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:', 'ayecode-connect' ) . '</label>';
5167
+                        $role_options = sd_user_roles_options();
5168
+
5169
+                        $role_option_i = 0;
5170
+                        foreach ( $role_options as $role_option_key => $role_option_name ) {
5171
+                            $role_option_i++;
5172
+
5173
+                            $content .= '<div class="col-sm-6">';
5174
+                            $content .= aui()->input(
5175
+                                array(
5176
+                                    'id'               => 'bsvc_user_roles_BSVCINDEX_' . $role_option_i,
5177
+                                    'name'             => 'bsvc_user_roles_BSVCINDEX[]',
5178
+                                    'type'             => 'checkbox',
5179
+                                    'label'            => $role_option_name,
5180
+                                    'label_type'       => 'hidden',
5181
+                                    'class'            => 'bsvc_user_roles',
5182
+                                    'value'            => $role_option_key,
5183
+                                    'switch'           => 'md',
5184
+                                    'no_wrap'          => true
5185
+                                )
5186
+                            );
5187
+                            $content .= '</div>';
5188
+                        }
5189
+                    $content .= '</div>';
5190
+                $content .= '</div>';
5191
+            $content .= '</div>';
5192
+            $content .= '<form id="bs-vc-modal-form" class="bs-vc-modal-form">';
5193
+            $content .= '<div class="bs-vc-rule-sets"></div>';
5194
+            $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', 'ayecode-connect' ) . '</button></div></div>';
5195
+            $content .= '<div class="row"><div class="col-md-6 col-sm-12">';
5196
+            $content .= aui()->select(
5197
+                array(
5198
+                    'id'          => 'bsvc_output',
5199
+                    'name'        => 'bsvc_output',
5200
+                    'label'       => __( 'What should happen if rules met.', 'ayecode-connect' ),
5201
+                    'placeholder' => __( 'Default Output', 'ayecode-connect' ),
5202
+                    'class'       => 'bsvc_output form-select-sm no-select2 mw-100',
5203
+                    'options'     => sd_visibility_output_options(),
5204
+                    'default'     => '',
5205
+                    'value'       => '',
5206
+                    'label_type'  => 'top',
5207
+                    'select2'     => false,
5208
+                    'extra_attributes' => array(
5209
+                        'data-minimum-results-for-search' => '-1'
5210
+                    )
5211
+                )
5212
+            );
5213
+
5214
+            $content .= '</div><div class="col-md-6 col-sm-12">';
5215
+
5216
+            $content .= aui()->select(
5217
+                array(
5218
+                    'id'              => 'bsvc_page',
5219
+                    'name'            => 'bsvc_page',
5220
+                    'label'           => __( 'Page Content', 'ayecode-connect' ),
5221
+                    'placeholder'     => __( 'Select Page ID...', 'ayecode-connect' ),
5222
+                    'class'           => 'bsvc_page form-select-sm no-select2 mw-100',
5223
+                    'options'         => sd_template_page_options(),
5224
+                    'default'         => '',
5225
+                    'value'           => '',
5226
+                    'label_type'      => 'top',
5227
+                    'select2'         => false,
5228
+                    'element_require' => '[%bsvc_output%]=="page"'
5229
+                )
5230
+            );
5231
+
5232
+            $content .= aui()->select(
5233
+                array(
5234
+                    'id'          => 'bsvc_tmpl_part',
5235
+                    'name'        => 'bsvc_tmpl_part',
5236
+                    'label'       => __( 'Template Part', 'ayecode-connect' ),
5237
+                    'placeholder' => __( 'Select Template Part...', 'ayecode-connect' ),
5238
+                    'class'       => 'bsvc_tmpl_part form-select-sm no-select2 mw-100',
5239
+                    'options'     => sd_template_part_options(),
5240
+                    'default'     => '',
5241
+                    'value'       => '',
5242
+                    'label_type'  => 'top',
5243
+                    'select2'     => false,
5244
+                    'element_require'  => '[%bsvc_output%]=="template_part"',
5245
+                    'extra_attributes' => array(
5246
+                        'data-minimum-results-for-search' => '-1'
5247
+                    )
5248
+                )
5249
+            );
5250
+
5251
+            $content .= aui()->select(
5252
+                array(
5253
+                    'id'               => 'bsvc_message_type',
5254
+                    'name'             => 'bsvc_message_type',
5255
+                    'label'            => __( 'Custom Message Type', 'ayecode-connect' ),
5256
+                    'placeholder'      => __( 'Default (none)', 'ayecode-connect' ),
5257
+                    'class'            => 'bsvc_message_type form-select-sm no-select2 mw-100',
5258
+                    'options'          => sd_aui_colors(),
5259
+                    'default'          => '',
5260
+                    'value'            => '',
5261
+                    'label_type'       => 'top',
5262
+                    'select2'          => false,
5263
+                    'element_require'  => '[%bsvc_output%]=="message"',
5264
+                    'extra_attributes' => array(
5265
+                        'data-minimum-results-for-search' => '-1'
5266
+                    )
5267
+                )
5268
+            );
5269
+
5270
+            $content .= '</div><div class="col-sm-12">';
5271
+
5272
+            $content .= aui()->input(
5273
+                array(
5274
+                    'type'            => 'text',
5275
+                    'id'              => 'bsvc_message',
5276
+                    'name'            => 'bsvc_message',
5277
+                    'label'           => '',
5278
+                    'class'           => 'bsvc_message form-control-sm',
5279
+                    'placeholder'     => __( 'CUSTOM MESSAGE TO SHOW', 'ayecode-connect' ),
5280
+                    'label_type'      => '',
5281
+                    'value'           => '',
5282
+                    'form_group_class' => ' ',
5283
+                    'element_require' => '[%bsvc_output%]=="message"',
5284
+                )
5285
+            );
5286
+
5287
+            $content .= '</div></div></form><input type="hidden" id="bsvc_raw_value" name="bsvc_raw_value" value="' . $value . '">';
5288
+
5289
+            return $content;
5290
+        }
5163 5291
 
5164
-					$content .= '</div>';
5165
-
5166
-					$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:', 'ayecode-connect' ) . '</label>';
5167
-						$role_options = sd_user_roles_options();
5168
-
5169
-						$role_option_i = 0;
5170
-						foreach ( $role_options as $role_option_key => $role_option_name ) {
5171
-							$role_option_i++;
5172
-
5173
-							$content .= '<div class="col-sm-6">';
5174
-							$content .= aui()->input(
5175
-								array(
5176
-									'id'               => 'bsvc_user_roles_BSVCINDEX_' . $role_option_i,
5177
-									'name'             => 'bsvc_user_roles_BSVCINDEX[]',
5178
-									'type'             => 'checkbox',
5179
-									'label'            => $role_option_name,
5180
-									'label_type'       => 'hidden',
5181
-									'class'            => 'bsvc_user_roles',
5182
-									'value'            => $role_option_key,
5183
-									'switch'           => 'md',
5184
-									'no_wrap'          => true
5185
-								)
5186
-							);
5187
-							$content .= '</div>';
5188
-						}
5189
-					$content .= '</div>';
5190
-				$content .= '</div>';
5191
-			$content .= '</div>';
5192
-			$content .= '<form id="bs-vc-modal-form" class="bs-vc-modal-form">';
5193
-			$content .= '<div class="bs-vc-rule-sets"></div>';
5194
-			$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', 'ayecode-connect' ) . '</button></div></div>';
5195
-			$content .= '<div class="row"><div class="col-md-6 col-sm-12">';
5196
-			$content .= aui()->select(
5197
-				array(
5198
-					'id'          => 'bsvc_output',
5199
-					'name'        => 'bsvc_output',
5200
-					'label'       => __( 'What should happen if rules met.', 'ayecode-connect' ),
5201
-					'placeholder' => __( 'Default Output', 'ayecode-connect' ),
5202
-					'class'       => 'bsvc_output form-select-sm no-select2 mw-100',
5203
-					'options'     => sd_visibility_output_options(),
5204
-					'default'     => '',
5205
-					'value'       => '',
5206
-					'label_type'  => 'top',
5207
-					'select2'     => false,
5208
-					'extra_attributes' => array(
5209
-						'data-minimum-results-for-search' => '-1'
5210
-					)
5211
-				)
5212
-			);
5213
-
5214
-			$content .= '</div><div class="col-md-6 col-sm-12">';
5215
-
5216
-			$content .= aui()->select(
5217
-				array(
5218
-					'id'              => 'bsvc_page',
5219
-					'name'            => 'bsvc_page',
5220
-					'label'           => __( 'Page Content', 'ayecode-connect' ),
5221
-					'placeholder'     => __( 'Select Page ID...', 'ayecode-connect' ),
5222
-					'class'           => 'bsvc_page form-select-sm no-select2 mw-100',
5223
-					'options'         => sd_template_page_options(),
5224
-					'default'         => '',
5225
-					'value'           => '',
5226
-					'label_type'      => 'top',
5227
-					'select2'         => false,
5228
-					'element_require' => '[%bsvc_output%]=="page"'
5229
-				)
5230
-			);
5231
-
5232
-			$content .= aui()->select(
5233
-				array(
5234
-					'id'          => 'bsvc_tmpl_part',
5235
-					'name'        => 'bsvc_tmpl_part',
5236
-					'label'       => __( 'Template Part', 'ayecode-connect' ),
5237
-					'placeholder' => __( 'Select Template Part...', 'ayecode-connect' ),
5238
-					'class'       => 'bsvc_tmpl_part form-select-sm no-select2 mw-100',
5239
-					'options'     => sd_template_part_options(),
5240
-					'default'     => '',
5241
-					'value'       => '',
5242
-					'label_type'  => 'top',
5243
-					'select2'     => false,
5244
-					'element_require'  => '[%bsvc_output%]=="template_part"',
5245
-					'extra_attributes' => array(
5246
-						'data-minimum-results-for-search' => '-1'
5247
-					)
5248
-				)
5249
-			);
5250
-
5251
-			$content .= aui()->select(
5252
-				array(
5253
-					'id'               => 'bsvc_message_type',
5254
-					'name'             => 'bsvc_message_type',
5255
-					'label'            => __( 'Custom Message Type', 'ayecode-connect' ),
5256
-					'placeholder'      => __( 'Default (none)', 'ayecode-connect' ),
5257
-					'class'            => 'bsvc_message_type form-select-sm no-select2 mw-100',
5258
-					'options'          => sd_aui_colors(),
5259
-					'default'          => '',
5260
-					'value'            => '',
5261
-					'label_type'       => 'top',
5262
-					'select2'          => false,
5263
-					'element_require'  => '[%bsvc_output%]=="message"',
5264
-					'extra_attributes' => array(
5265
-						'data-minimum-results-for-search' => '-1'
5266
-					)
5267
-				)
5268
-			);
5269
-
5270
-			$content .= '</div><div class="col-sm-12">';
5271
-
5272
-			$content .= aui()->input(
5273
-				array(
5274
-					'type'            => 'text',
5275
-					'id'              => 'bsvc_message',
5276
-					'name'            => 'bsvc_message',
5277
-					'label'           => '',
5278
-					'class'           => 'bsvc_message form-control-sm',
5279
-					'placeholder'     => __( 'CUSTOM MESSAGE TO SHOW', 'ayecode-connect' ),
5280
-					'label_type'      => '',
5281
-					'value'           => '',
5282
-					'form_group_class' => ' ',
5283
-					'element_require' => '[%bsvc_output%]=="message"',
5284
-				)
5285
-			);
5286
-
5287
-			$content .= '</div></div></form><input type="hidden" id="bsvc_raw_value" name="bsvc_raw_value" value="' . $value . '">';
5288
-
5289
-			return $content;
5290
-		}
5292
+        /**
5293
+         * Handle media_buttons hook.
5294
+         *
5295
+         * @since 1.2.7
5296
+         */
5297
+        public function wp_media_buttons() {
5298
+            global $shortcode_insert_button_once;
5291 5299
 
5292
-		/**
5293
-		 * Handle media_buttons hook.
5294
-		 *
5295
-		 * @since 1.2.7
5296
-		 */
5297
-		public function wp_media_buttons() {
5298
-			global $shortcode_insert_button_once;
5299
-
5300
-			// Fix conflicts with UpSolution Core in header template edit element.
5301
-			if ( defined( 'US_CORE_DIR' ) && ! empty( $_REQUEST['action'] ) && $_REQUEST['action'] == 'us_ajax_hb_get_ebuilder_html' ) {
5302
-				$shortcode_insert_button_once = true;
5303
-			}
5304
-		}
5305
-	}
5300
+            // Fix conflicts with UpSolution Core in header template edit element.
5301
+            if ( defined( 'US_CORE_DIR' ) && ! empty( $_REQUEST['action'] ) && $_REQUEST['action'] == 'us_ajax_hb_get_ebuilder_html' ) {
5302
+                $shortcode_insert_button_once = true;
5303
+            }
5304
+        }
5305
+    }
5306 5306
 }
Please login to merge, or discard this patch.
Spacing   +820 added lines, -820 removed lines patch added patch discarded remove patch
@@ -1,11 +1,11 @@  discard block
 block discarded – undo
1 1
 <?php
2
-if ( ! defined( 'ABSPATH' ) ) {
2
+if (!defined('ABSPATH')) {
3 3
 	exit;
4 4
 }
5 5
 
6
-if ( ! class_exists( 'WP_Super_Duper' ) ) {
6
+if (!class_exists('WP_Super_Duper')) {
7 7
 
8
-	define( 'SUPER_DUPER_VER', '1.2.16' );
8
+	define('SUPER_DUPER_VER', '1.2.16');
9 9
 
10 10
 	/**
11 11
 	 * A Class to be able to create a Widget, Shortcode or Block to be able to output content for WordPress.
@@ -38,40 +38,40 @@  discard block
 block discarded – undo
38 38
 		/**
39 39
 		 * Take the array options and use them to build.
40 40
 		 */
41
-		public function __construct( $options ) {
41
+		public function __construct($options) {
42 42
 			global $sd_widgets;
43 43
 
44
-			$sd_widgets[ $options['base_id'] ] = array(
44
+			$sd_widgets[$options['base_id']] = array(
45 45
 				'name'       => $options['name'],
46 46
 				'class_name' => $options['class_name'],
47 47
 				'output_types' => !empty($options['output_types']) ? $options['output_types'] : array()
48 48
 			);
49
-			$this->base_id                     = $options['base_id'];
49
+			$this->base_id = $options['base_id'];
50 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 );
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 54
 			$this->options = $options;
55 55
 
56 56
 			$this->base_id   = $options['base_id'];
57
-			$this->arguments = isset( $options['arguments'] ) ? $options['arguments'] : array();
57
+			$this->arguments = isset($options['arguments']) ? $options['arguments'] : array();
58 58
 
59 59
 			// nested blocks can't work as a widget
60
-			if(!empty($this->options['nested-block'])){
61
-				if(empty($this->options['output_types'])){
62
-					$this->options['output_types'] = array('shortcode','block');
60
+			if (!empty($this->options['nested-block'])) {
61
+				if (empty($this->options['output_types'])) {
62
+					$this->options['output_types'] = array('shortcode', 'block');
63 63
 				}elseif (($key = array_search('widget', $this->options['output_types'])) !== false) {
64 64
 					unset($this->options['output_types'][$key]);
65 65
 				}
66 66
 			}
67 67
 
68 68
 			// init parent
69
-			if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){
70
-				parent::__construct( $options['base_id'], $options['name'], $options['widget_ops'] );
69
+			if (empty($this->options['output_types']) || in_array('widget', $this->options['output_types'])) {
70
+				parent::__construct($options['base_id'], $options['name'], $options['widget_ops']);
71 71
 			}
72 72
 
73 73
 
74
-			if ( isset( $options['class_name'] ) ) {
74
+			if (isset($options['class_name'])) {
75 75
 				// register widget
76 76
 				$this->class_name = $options['class_name'];
77 77
 
@@ -80,67 +80,67 @@  discard block
 block discarded – undo
80 80
 
81 81
 
82 82
 				// Fusion Builder (avada) support
83
-				if ( function_exists( 'fusion_builder_map' ) ) {
84
-					add_action( 'init', array( $this, 'register_fusion_element' ) );
83
+				if (function_exists('fusion_builder_map')) {
84
+					add_action('init', array($this, 'register_fusion_element'));
85 85
 				}
86 86
 
87 87
                 // maybe load the Bricks transformer class
88
-                if( class_exists('\Bricks\Elements', false) ){
89
-					add_action( 'init', array( $this, 'load_bricks_element_class' ) );
88
+                if (class_exists('\Bricks\Elements', false)) {
89
+					add_action('init', array($this, 'load_bricks_element_class'));
90 90
                 }
91 91
 
92 92
 				// register block
93
-				if(empty($this->options['output_types']) || in_array('block',$this->options['output_types'])){
94
-					add_action( 'admin_enqueue_scripts', array( $this, 'register_block' ) );
93
+				if (empty($this->options['output_types']) || in_array('block', $this->options['output_types'])) {
94
+					add_action('admin_enqueue_scripts', array($this, 'register_block'));
95 95
 				}
96 96
 			}
97 97
 
98 98
 			// add the CSS and JS we need ONCE
99 99
 			global $sd_widget_scripts;
100 100
 
101
-			if ( ! $sd_widget_scripts ) {
102
-				wp_add_inline_script( 'admin-widgets', $this->widget_js() );
103
-				wp_add_inline_script( 'customize-controls', $this->widget_js() );
104
-				wp_add_inline_style( 'widgets', $this->widget_css() );
101
+			if (!$sd_widget_scripts) {
102
+				wp_add_inline_script('admin-widgets', $this->widget_js());
103
+				wp_add_inline_script('customize-controls', $this->widget_js());
104
+				wp_add_inline_style('widgets', $this->widget_css());
105 105
 
106 106
 				// maybe add elementor editor styles
107
-				add_action( 'elementor/editor/after_enqueue_styles', array( $this, 'elementor_editor_styles' ) );
107
+				add_action('elementor/editor/after_enqueue_styles', array($this, 'elementor_editor_styles'));
108 108
 
109 109
 				$sd_widget_scripts = true;
110 110
 
111 111
 				// add shortcode insert button once
112
-				add_action( 'media_buttons', array( $this, 'wp_media_buttons' ), 1 );
113
-				add_action( 'media_buttons', array( $this, 'shortcode_insert_button' ) );
112
+				add_action('media_buttons', array($this, 'wp_media_buttons'), 1);
113
+				add_action('media_buttons', array($this, 'shortcode_insert_button'));
114 114
 				// generatepress theme sections compatibility
115
-				if ( function_exists( 'generate_sections_sections_metabox' ) ) {
116
-					add_action( 'generate_sections_metabox', array( $this, 'shortcode_insert_button_script' ) );
115
+				if (function_exists('generate_sections_sections_metabox')) {
116
+					add_action('generate_sections_metabox', array($this, 'shortcode_insert_button_script'));
117 117
 				}
118 118
 				/* Load script on Divi theme builder page */
119
-				if ( function_exists( 'et_builder_is_tb_admin_screen' ) && et_builder_is_tb_admin_screen() ) {
119
+				if (function_exists('et_builder_is_tb_admin_screen') && et_builder_is_tb_admin_screen()) {
120 120
 					add_thickbox();
121
-					add_action( 'admin_footer', array( $this, 'shortcode_insert_button_script' ) );
121
+					add_action('admin_footer', array($this, 'shortcode_insert_button_script'));
122 122
 				}
123 123
 
124
-				if ( $this->is_preview() ) {
125
-					add_action( 'wp_footer', array( $this, 'shortcode_insert_button_script' ) );
124
+				if ($this->is_preview()) {
125
+					add_action('wp_footer', array($this, 'shortcode_insert_button_script'));
126 126
 					// this makes the insert button work for elementor
127
-					add_action( 'elementor/editor/after_enqueue_scripts', array(
127
+					add_action('elementor/editor/after_enqueue_scripts', array(
128 128
 						$this,
129 129
 						'shortcode_insert_button_script'
130
-					) ); // for elementor
130
+					)); // for elementor
131 131
 				}
132 132
 				// this makes the insert button work for cornerstone
133
-				add_action( 'wp_print_footer_scripts', array( __CLASS__, 'maybe_cornerstone_builder' ) );
133
+				add_action('wp_print_footer_scripts', array(__CLASS__, 'maybe_cornerstone_builder'));
134 134
 
135
-				add_action( 'wp_ajax_super_duper_get_widget_settings', array( __CLASS__, 'get_widget_settings' ) );
136
-				add_action( 'wp_ajax_super_duper_get_picker', array( __CLASS__, 'get_picker' ) );
135
+				add_action('wp_ajax_super_duper_get_widget_settings', array(__CLASS__, 'get_widget_settings'));
136
+				add_action('wp_ajax_super_duper_get_picker', array(__CLASS__, 'get_picker'));
137 137
 
138 138
 				// add generator text to head
139
-				add_action( 'admin_head', array( $this, 'generator' ), 99 );
140
-				add_action( 'wp_head', array( $this, 'generator' ), 99 );
139
+				add_action('admin_head', array($this, 'generator'), 99);
140
+				add_action('wp_head', array($this, 'generator'), 99);
141 141
 			}
142 142
 
143
-			do_action( 'wp_super_duper_widget_init', $options, $this );
143
+			do_action('wp_super_duper_widget_init', $options, $this);
144 144
 		}
145 145
 
146 146
         /**
@@ -156,7 +156,7 @@  discard block
 block discarded – undo
156 156
 		 * @return void
157 157
 		 */
158 158
 		public function _register() {
159
-			if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){
159
+			if (empty($this->options['output_types']) || in_array('widget', $this->options['output_types'])) {
160 160
 				parent::_register();
161 161
 			}
162 162
 		}
@@ -165,14 +165,14 @@  discard block
 block discarded – undo
165 165
 		 * Add our widget CSS to elementor editor.
166 166
 		 */
167 167
 		public function elementor_editor_styles() {
168
-			wp_add_inline_style( 'elementor-editor', $this->widget_css( false ) );
168
+			wp_add_inline_style('elementor-editor', $this->widget_css(false));
169 169
 		}
170 170
 
171 171
 		public function register_fusion_element() {
172 172
 
173 173
 			$options = $this->options;
174 174
 
175
-			if ( $this->base_id ) {
175
+			if ($this->base_id) {
176 176
 
177 177
 				$params = $this->get_fusion_params();
178 178
 
@@ -183,11 +183,11 @@  discard block
 block discarded – undo
183 183
 					'allow_generator' => true,
184 184
 				);
185 185
 
186
-				if ( ! empty( $params ) ) {
186
+				if (!empty($params)) {
187 187
 					$args['params'] = $params;
188 188
 				}
189 189
 
190
-				fusion_builder_map( $args );
190
+				fusion_builder_map($args);
191 191
 			}
192 192
 
193 193
 		}
@@ -196,8 +196,8 @@  discard block
 block discarded – undo
196 196
 			$params    = array();
197 197
 			$arguments = $this->get_arguments();
198 198
 
199
-			if ( ! empty( $arguments ) ) {
200
-				foreach ( $arguments as $key => $val ) {
199
+			if (!empty($arguments)) {
200
+				foreach ($arguments as $key => $val) {
201 201
 					$param = array();
202 202
 					// type
203 203
 					$param['type'] = str_replace(
@@ -219,38 +219,38 @@  discard block
 block discarded – undo
219 219
 						$val['type'] );
220 220
 
221 221
 					// multiselect
222
-					if ( $val['type'] == 'multiselect' || ( ( $param['type'] == 'select' || $val['type'] == 'select' ) && ! empty( $val['multiple'] ) ) ) {
222
+					if ($val['type'] == 'multiselect' || (($param['type'] == 'select' || $val['type'] == 'select') && !empty($val['multiple']))) {
223 223
 						$param['type']     = 'multiple_select';
224 224
 						$param['multiple'] = true;
225 225
 					}
226 226
 
227 227
 					// heading
228
-					$param['heading'] = isset( $val['title'] ) ? $val['title'] : '';
228
+					$param['heading'] = isset($val['title']) ? $val['title'] : '';
229 229
 
230 230
 					// description
231
-					$param['description'] = isset( $val['desc'] ) ? $val['desc'] : '';
231
+					$param['description'] = isset($val['desc']) ? $val['desc'] : '';
232 232
 
233 233
 					// param_name
234 234
 					$param['param_name'] = $key;
235 235
 
236 236
 					// Default
237
-					$param['default'] = isset( $val['default'] ) ? $val['default'] : '';
237
+					$param['default'] = isset($val['default']) ? $val['default'] : '';
238 238
 
239 239
 					// Group
240
-					if ( isset( $val['group'] ) ) {
240
+					if (isset($val['group'])) {
241 241
 						$param['group'] = $val['group'];
242 242
 					}
243 243
 
244 244
 					// value
245
-					if ( $val['type'] == 'checkbox' ) {
246
-						if ( isset( $val['default'] ) && $val['default'] == '0' ) {
247
-							unset( $param['default'] );
245
+					if ($val['type'] == 'checkbox') {
246
+						if (isset($val['default']) && $val['default'] == '0') {
247
+							unset($param['default']);
248 248
 						}
249
-						$param['value'] = array( '0' => __( "No", 'ayecode-connect' ), '1' => __( "Yes", 'ayecode-connect' ) );
250
-					} elseif ( $param['type'] == 'select' || $param['type'] == 'multiple_select' ) {
251
-						$param['value'] = isset( $val['options'] ) ? $val['options'] : array();
249
+						$param['value'] = array('0' => __("No", 'ayecode-connect'), '1' => __("Yes", 'ayecode-connect'));
250
+					} elseif ($param['type'] == 'select' || $param['type'] == 'multiple_select') {
251
+						$param['value'] = isset($val['options']) ? $val['options'] : array();
252 252
 					} else {
253
-						$param['value'] = isset( $val['default'] ) ? $val['default'] : '';
253
+						$param['value'] = isset($val['default']) ? $val['default'] : '';
254 254
 					}
255 255
 
256 256
 					// setup the param
@@ -267,7 +267,7 @@  discard block
 block discarded – undo
267 267
 		 * Maybe insert the shortcode inserter button in the footer if we are in the cornerstone builder
268 268
 		 */
269 269
 		public static function maybe_cornerstone_builder() {
270
-			if ( did_action( 'cornerstone_before_boot_app' ) ) {
270
+			if (did_action('cornerstone_before_boot_app')) {
271 271
 				self::shortcode_insert_button_script();
272 272
 			}
273 273
 		}
@@ -279,12 +279,12 @@  discard block
 block discarded – undo
279 279
 		 *
280 280
 		 * @return string
281 281
 		 */
282
-		public static function get_picker( $editor_id = '' ) {
282
+		public static function get_picker($editor_id = '') {
283 283
 
284 284
 			ob_start();
285
-			if ( isset( $_POST['editor_id'] ) ) {
286
-				$editor_id = esc_attr( $_POST['editor_id'] );
287
-			} elseif ( isset( $_REQUEST['et_fb'] ) ) {
285
+			if (isset($_POST['editor_id'])) {
286
+				$editor_id = esc_attr($_POST['editor_id']);
287
+			} elseif (isset($_REQUEST['et_fb'])) {
288 288
 				$editor_id = 'main_content_content_vb_tiny_mce';
289 289
 			}
290 290
 
@@ -295,14 +295,14 @@  discard block
 block discarded – undo
295 295
 
296 296
 			<div class="sd-shortcode-left-wrap">
297 297
 				<?php
298
-				ksort( $sd_widgets );
298
+				ksort($sd_widgets);
299 299
 				//				print_r($sd_widgets);exit;
300
-				if ( ! empty( $sd_widgets ) ) {
300
+				if (!empty($sd_widgets)) {
301 301
 					echo '<select class="widefat" onchange="sd_get_shortcode_options(this);">';
302
-					echo "<option>" . __( 'Select shortcode', 'ayecode-connect' ) . "</option>";
303
-					foreach ( $sd_widgets as $shortcode => $class ) {
304
-						if(!empty($class['output_types']) && !in_array('shortcode', $class['output_types'])){ continue; }
305
-						echo "<option value='" . esc_attr( $shortcode ) . "'>" . esc_attr( $shortcode ) . " (" . esc_attr( $class['name'] ) . ")</option>";
302
+					echo "<option>" . __('Select shortcode', 'ayecode-connect') . "</option>";
303
+					foreach ($sd_widgets as $shortcode => $class) {
304
+						if (!empty($class['output_types']) && !in_array('shortcode', $class['output_types'])) { continue; }
305
+						echo "<option value='" . esc_attr($shortcode) . "'>" . esc_attr($shortcode) . " (" . esc_attr($class['name']) . ")</option>";
306 306
 					}
307 307
 					echo "</select>";
308 308
 
@@ -315,37 +315,37 @@  discard block
 block discarded – undo
315 315
 			<div class="sd-shortcode-right-wrap">
316 316
 				<textarea id='sd-shortcode-output' disabled></textarea>
317 317
 				<div id='sd-shortcode-output-actions'>
318
-					<?php if ( $editor_id != '' ) { ?>
318
+					<?php if ($editor_id != '') { ?>
319 319
 						<button class="button sd-insert-shortcode-button"
320
-								onclick="sd_insert_shortcode(<?php if ( ! empty( $editor_id ) ) {
320
+								onclick="sd_insert_shortcode(<?php if (!empty($editor_id)) {
321 321
 									echo "'" . $editor_id . "'";
322
-								} ?>)"><?php _e( 'Insert shortcode', 'ayecode-connect' ); ?></button>
322
+								} ?>)"><?php _e('Insert shortcode', 'ayecode-connect'); ?></button>
323 323
 					<?php } ?>
324 324
 					<button class="button"
325
-							onclick="sd_copy_to_clipboard()"><?php _e( 'Copy shortcode' ); ?></button>
325
+							onclick="sd_copy_to_clipboard()"><?php _e('Copy shortcode'); ?></button>
326 326
 				</div>
327 327
 			</div>
328 328
 			<?php
329 329
 
330 330
 			$html = ob_get_clean();
331 331
 
332
-			if ( wp_doing_ajax() ) {
332
+			if (wp_doing_ajax()) {
333 333
 				echo $html;
334 334
 				$should_die = true;
335 335
 
336 336
 				// some builder get the editor via ajax so we should not die on those occasions
337 337
 				$dont_die = array(
338
-					'parent_tag',// WP Bakery
338
+					'parent_tag', // WP Bakery
339 339
 					'avia_request' // enfold
340 340
 				);
341 341
 
342
-				foreach ( $dont_die as $request ) {
343
-					if ( isset( $_REQUEST[ $request ] ) ) {
342
+				foreach ($dont_die as $request) {
343
+					if (isset($_REQUEST[$request])) {
344 344
 						$should_die = false;
345 345
 					}
346 346
 				}
347 347
 
348
-				if ( $should_die ) {
348
+				if ($should_die) {
349 349
 					wp_die();
350 350
 				}
351 351
 
@@ -361,22 +361,22 @@  discard block
 block discarded – undo
361 361
 		 * Output the version in the header.
362 362
 		 */
363 363
 		public function generator() {
364
-			$file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) );
365
-			$plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) );
364
+			$file = str_replace(array("/", "\\"), "/", realpath(__FILE__));
365
+			$plugins_dir = str_replace(array("/", "\\"), "/", realpath(WP_PLUGIN_DIR));
366 366
 
367 367
 			// Find source plugin/theme of SD
368 368
 			$source = array();
369
-			if ( strpos( $file, $plugins_dir ) !== false ) {
370
-				$source = explode( "/", plugin_basename( $file ) );
371
-			} else if ( function_exists( 'get_theme_root' ) ) {
372
-				$themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) );
369
+			if (strpos($file, $plugins_dir) !== false) {
370
+				$source = explode("/", plugin_basename($file));
371
+			} else if (function_exists('get_theme_root')) {
372
+				$themes_dir = str_replace(array("/", "\\"), "/", realpath(get_theme_root()));
373 373
 
374
-				if ( strpos( $file, $themes_dir ) !== false ) {
375
-					$source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) );
374
+				if (strpos($file, $themes_dir) !== false) {
375
+					$source = explode("/", ltrim(str_replace($themes_dir, "", $file), "/"));
376 376
 				}
377 377
 			}
378 378
 
379
-			echo '<meta name="generator" content="WP Super Duper v' . esc_attr( $this->version ) . '"' . ( ! empty( $source[0] ) ? ' data-sd-source="' . esc_attr( $source[0] ) . '"' : '' ) . ' />';
379
+			echo '<meta name="generator" content="WP Super Duper v' . esc_attr($this->version) . '"' . (!empty($source[0]) ? ' data-sd-source="' . esc_attr($source[0]) . '"' : '') . ' />';
380 380
 		}
381 381
 
382 382
 		/**
@@ -387,16 +387,16 @@  discard block
 block discarded – undo
387 387
 		public static function get_widget_settings() {
388 388
 			global $sd_widgets;
389 389
 
390
-			$shortcode = isset( $_REQUEST['shortcode'] ) && $_REQUEST['shortcode'] ? sanitize_title_with_dashes( $_REQUEST['shortcode'] ) : '';
391
-			if ( ! $shortcode ) {
390
+			$shortcode = isset($_REQUEST['shortcode']) && $_REQUEST['shortcode'] ? sanitize_title_with_dashes($_REQUEST['shortcode']) : '';
391
+			if (!$shortcode) {
392 392
 				wp_die();
393 393
 			}
394
-			$widget_args = isset( $sd_widgets[ $shortcode ] ) ? $sd_widgets[ $shortcode ] : '';
395
-			if ( ! $widget_args ) {
394
+			$widget_args = isset($sd_widgets[$shortcode]) ? $sd_widgets[$shortcode] : '';
395
+			if (!$widget_args) {
396 396
 				wp_die();
397 397
 			}
398
-			$class_name = isset( $widget_args['class_name'] ) && $widget_args['class_name'] ? $widget_args['class_name'] : '';
399
-			if ( ! $class_name ) {
398
+			$class_name = isset($widget_args['class_name']) && $widget_args['class_name'] ? $widget_args['class_name'] : '';
399
+			if (!$class_name) {
400 400
 				wp_die();
401 401
 			}
402 402
 
@@ -404,7 +404,7 @@  discard block
 block discarded – undo
404 404
 			$widget = new $class_name;
405 405
 
406 406
 			ob_start();
407
-			$widget->form( array() );
407
+			$widget->form(array());
408 408
 			$form = ob_get_clean();
409 409
 			echo "<form id='$shortcode'>" . $form . "<div class=\"widget-control-save\"></div></form>";
410 410
 			echo "<style>" . $widget->widget_css() . "</style>";
@@ -423,9 +423,9 @@  discard block
 block discarded – undo
423 423
 		 *@since 1.0.0
424 424
 		 *
425 425
 		 */
426
-		public static function shortcode_insert_button( $editor_id = '', $insert_shortcode_function = '' ) {
426
+		public static function shortcode_insert_button($editor_id = '', $insert_shortcode_function = '') {
427 427
 			global $sd_widgets, $shortcode_insert_button_once;
428
-			if ( $shortcode_insert_button_once ) {
428
+			if ($shortcode_insert_button_once) {
429 429
 				return;
430 430
 			}
431 431
 			add_thickbox();
@@ -435,21 +435,21 @@  discard block
 block discarded – undo
435 435
 			 * Cornerstone makes us play dirty tricks :/
436 436
 			 * 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.
437 437
 			 */
438
-			if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
438
+			if (function_exists('cornerstone_plugin_init') && !is_admin()) {
439 439
 				echo '<span id="insert-media-button">';
440 440
 			}
441 441
 
442
-			echo self::shortcode_button( 'this', 'true' );
442
+			echo self::shortcode_button('this', 'true');
443 443
 
444 444
 			// see opening note
445
-			if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
445
+			if (function_exists('cornerstone_plugin_init') && !is_admin()) {
446 446
 				echo '</span>'; // end #insert-media-button
447 447
 			}
448 448
 
449 449
 			// Add separate script for generatepress theme sections
450
-			if ( function_exists( 'generate_sections_sections_metabox' ) && did_action( 'generate_sections_metabox' ) ) {
450
+			if (function_exists('generate_sections_sections_metabox') && did_action('generate_sections_metabox')) {
451 451
 			} else {
452
-				self::shortcode_insert_button_script( $editor_id, $insert_shortcode_function );
452
+				self::shortcode_insert_button_script($editor_id, $insert_shortcode_function);
453 453
 			}
454 454
 
455 455
 			$shortcode_insert_button_once = true;
@@ -463,12 +463,12 @@  discard block
 block discarded – undo
463 463
 		 *
464 464
 		 * @return mixed
465 465
 		 */
466
-		public static function shortcode_button( $id = '', $search_for_id = '' ) {
466
+		public static function shortcode_button($id = '', $search_for_id = '') {
467 467
 			ob_start();
468 468
 			?>
469 469
 			<span class="sd-lable-shortcode-inserter">
470 470
 				<a onclick="sd_ajax_get_picker(<?php echo $id;
471
-				if ( $search_for_id ) {
471
+				if ($search_for_id) {
472 472
 					echo "," . $search_for_id;
473 473
 				} ?>);" href="#TB_inline?width=100%&height=550&inlineId=super-duper-content-ajaxed"
474 474
 				   class="thickbox button super-duper-content-open" title="Add Shortcode">
@@ -484,7 +484,7 @@  discard block
 block discarded – undo
484 484
 			$html = ob_get_clean();
485 485
 
486 486
 			// remove line breaks so we can use it in js
487
-			return preg_replace( "/\r|\n/", "", trim( $html ) );
487
+			return preg_replace("/\r|\n/", "", trim($html));
488 488
 		}
489 489
 
490 490
 		/**
@@ -542,7 +542,7 @@  discard block
 block discarded – undo
542 542
 						jQuery($this).data('sd-widget-enabled', true);
543 543
 					}
544 544
 
545
-					var $button = '<button title="<?php _e( 'Advanced Settings', 'ayecode-connect' );?>" class="button button-primary right sd-advanced-button" onclick="sd_so_toggle_advanced(this);return false;"><i class="fas fa-sliders-h" aria-hidden="true"></i></button>';
545
+					var $button = '<button title="<?php _e('Advanced Settings', 'ayecode-connect'); ?>" class="button button-primary right sd-advanced-button" onclick="sd_so_toggle_advanced(this);return false;"><i class="fas fa-sliders-h" aria-hidden="true"></i></button>';
546 546
 					var form = jQuery($this).parents('' + $selector + '');
547 547
 
548 548
 					if (jQuery($this).val() == '1' && jQuery(form).find('.sd-advanced-button').length == 0) {
@@ -577,10 +577,10 @@  discard block
 block discarded – undo
577 577
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
578 578
 			 */
579 579
 
580
-			return str_replace( array(
580
+			return str_replace(array(
581 581
 				'<script>',
582 582
 				'</script>'
583
-			), '', $output );
583
+			), '', $output);
584 584
 		}
585 585
 
586 586
 		/**
@@ -592,7 +592,7 @@  discard block
 block discarded – undo
592 592
 		 *@since 1.0.6
593 593
 		 *
594 594
 		 */
595
-		public static function shortcode_insert_button_script( $editor_id = '', $insert_shortcode_function = '' ) {
595
+		public static function shortcode_insert_button_script($editor_id = '', $insert_shortcode_function = '') {
596 596
 			?>
597 597
 			<style>
598 598
 				.sd-shortcode-left-wrap {
@@ -711,25 +711,25 @@  discard block
 block discarded – undo
711 711
 					width: 100%;
712 712
 				}
713 713
 
714
-				<?php if ( function_exists( 'generate_sections_sections_metabox' ) ) { ?>
714
+				<?php if (function_exists('generate_sections_sections_metabox')) { ?>
715 715
 				.generate-sections-modal #custom-media-buttons > .sd-lable-shortcode-inserter {
716 716
 					display: inline;
717 717
 				}
718 718
 				<?php } ?>
719
-				<?php if ( function_exists( 'et_builder_is_tb_admin_screen' ) && et_builder_is_tb_admin_screen() ) { ?>
719
+				<?php if (function_exists('et_builder_is_tb_admin_screen') && et_builder_is_tb_admin_screen()) { ?>
720 720
 				body.divi_page_et_theme_builder div#TB_window.gd-tb-window{z-index:9999999}
721 721
 				<?php } ?>
722 722
 			</style>
723 723
 			<?php
724
-			if ( class_exists( 'SiteOrigin_Panels' ) ) {
724
+			if (class_exists('SiteOrigin_Panels')) {
725 725
 				echo "<script>" . self::siteorigin_js() . "</script>";
726 726
 			}
727 727
 			?>
728 728
 			<script>
729 729
 				<?php
730
-				if(! empty( $insert_shortcode_function )){
730
+				if (!empty($insert_shortcode_function)) {
731 731
 					echo $insert_shortcode_function;
732
-				}else{
732
+				} else {
733 733
 
734 734
 				/**
735 735
 				 * Function for super duper insert shortcode.
@@ -742,9 +742,9 @@  discard block
 block discarded – undo
742 742
 					if ($shortcode) {
743 743
 						if (!$editor_id) {
744 744
 							<?php
745
-							if ( isset( $_REQUEST['et_fb'] ) ) {
745
+							if (isset($_REQUEST['et_fb'])) {
746 746
 								echo '$editor_id = "#main_content_content_vb_tiny_mce";';
747
-							} elseif ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) {
747
+							} elseif (isset($_REQUEST['action']) && $_REQUEST['action'] == 'elementor') {
748 748
 								echo '$editor_id = "#elementor-controls .wp-editor-container textarea";';
749 749
 							} else {
750 750
 								echo '$editor_id = "#wp-content-editor-container textarea";';
@@ -827,11 +827,11 @@  discard block
 block discarded – undo
827 827
 							'shortcode': $short_code,
828 828
 							'attributes': 123,
829 829
 							'post_id': 321,
830
-							'_ajax_nonce': '<?php echo wp_create_nonce( 'super_duper_output_shortcode' );?>'
830
+							'_ajax_nonce': '<?php echo wp_create_nonce('super_duper_output_shortcode'); ?>'
831 831
 						};
832 832
 
833 833
 						if (typeof ajaxurl === 'undefined') {
834
-							var ajaxurl = "<?php echo admin_url( 'admin-ajax.php' );?>";
834
+							var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
835 835
 						}
836 836
 
837 837
 						jQuery.post(ajaxurl, data, function (response) {
@@ -1030,11 +1030,11 @@  discard block
 block discarded – undo
1030 1030
 					var data = {
1031 1031
 						'action': 'super_duper_get_picker',
1032 1032
 						'editor_id': $id,
1033
-						'_ajax_nonce': '<?php echo wp_create_nonce( 'super_duper_picker' );?>'
1033
+						'_ajax_nonce': '<?php echo wp_create_nonce('super_duper_picker'); ?>'
1034 1034
 					};
1035 1035
 
1036 1036
 					if (!ajaxurl) {
1037
-						var ajaxurl = "<?php echo admin_url( 'admin-ajax.php' ); ?>";
1037
+						var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
1038 1038
 					}
1039 1039
 
1040 1040
 					jQuery.post(ajaxurl, data, function (response) {
@@ -1056,9 +1056,9 @@  discard block
 block discarded – undo
1056 1056
 				 */
1057 1057
 				function sd_shortcode_button($id) {
1058 1058
 					if ($id) {
1059
-						return '<?php echo self::shortcode_button( "\\''+\$id+'\\'" );?>';
1059
+						return '<?php echo self::shortcode_button("\\''+\$id+'\\'"); ?>';
1060 1060
 					} else {
1061
-						return '<?php echo self::shortcode_button();?>';
1061
+						return '<?php echo self::shortcode_button(); ?>';
1062 1062
 					}
1063 1063
 				}
1064 1064
 			</script>
@@ -1072,11 +1072,11 @@  discard block
 block discarded – undo
1072 1072
 		 *
1073 1073
 		 * @return mixed
1074 1074
 		 */
1075
-		public function widget_css( $advanced = true ) {
1075
+		public function widget_css($advanced = true) {
1076 1076
 			ob_start();
1077 1077
 			?>
1078 1078
 			<style>
1079
-				<?php if( $advanced ){ ?>
1079
+				<?php if ($advanced) { ?>
1080 1080
 				.sd-advanced-setting {
1081 1081
 					display: none;
1082 1082
 				}
@@ -1120,10 +1120,10 @@  discard block
 block discarded – undo
1120 1120
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
1121 1121
 			 */
1122 1122
 
1123
-			return str_replace( array(
1123
+			return str_replace(array(
1124 1124
 				'<style>',
1125 1125
 				'</style>'
1126
-			), '', $output );
1126
+			), '', $output);
1127 1127
 		}
1128 1128
 
1129 1129
 		/**
@@ -1190,7 +1190,7 @@  discard block
 block discarded – undo
1190 1190
 						jQuery($this).data('sd-widget-enabled', true);
1191 1191
 					}
1192 1192
 
1193
-					var $button = '<button title="<?php _e( 'Advanced Settings', 'ayecode-connect' );?>" style="line-height: 28px;" class="button button-primary right sd-advanced-button" onclick="sd_toggle_advanced(this);return false;"><span class="dashicons dashicons-admin-settings" style="width: 28px;font-size: 28px;"></span></button>';
1193
+					var $button = '<button title="<?php _e('Advanced Settings', 'ayecode-connect'); ?>" style="line-height: 28px;" class="button button-primary right sd-advanced-button" onclick="sd_toggle_advanced(this);return false;"><span class="dashicons dashicons-admin-settings" style="width: 28px;font-size: 28px;"></span></button>';
1194 1194
 					var form = $form ? $form : jQuery($this).parents('' + $selector + '');
1195 1195
 
1196 1196
 					if (jQuery($this).val() == '1' && jQuery(form).find('.sd-advanced-button').length == 0) {
@@ -1281,7 +1281,7 @@  discard block
 block discarded – undo
1281 1281
 					});
1282 1282
 
1283 1283
 				}
1284
-				<?php do_action( 'wp_super_duper_widget_js', $this ); ?>
1284
+				<?php do_action('wp_super_duper_widget_js', $this); ?>
1285 1285
 			</script>
1286 1286
 			<?php
1287 1287
 			$output = ob_get_clean();
@@ -1290,10 +1290,10 @@  discard block
 block discarded – undo
1290 1290
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
1291 1291
 			 */
1292 1292
 
1293
-			return str_replace( array(
1293
+			return str_replace(array(
1294 1294
 				'<script>',
1295 1295
 				'</script>'
1296
-			), '', $output );
1296
+			), '', $output);
1297 1297
 		}
1298 1298
 
1299 1299
 
@@ -1304,14 +1304,14 @@  discard block
 block discarded – undo
1304 1304
 		 *
1305 1305
 		 * @return mixed
1306 1306
 		 */
1307
-		private function add_name_from_key( $options, $arguments = false ) {
1308
-			if ( ! empty( $options['arguments'] ) ) {
1309
-				foreach ( $options['arguments'] as $key => $val ) {
1310
-					$options['arguments'][ $key ]['name'] = $key;
1307
+		private function add_name_from_key($options, $arguments = false) {
1308
+			if (!empty($options['arguments'])) {
1309
+				foreach ($options['arguments'] as $key => $val) {
1310
+					$options['arguments'][$key]['name'] = $key;
1311 1311
 				}
1312
-			} elseif ( $arguments && is_array( $options ) && ! empty( $options ) ) {
1313
-				foreach ( $options as $key => $val ) {
1314
-					$options[ $key ]['name'] = $key;
1312
+			} elseif ($arguments && is_array($options) && !empty($options)) {
1313
+				foreach ($options as $key => $val) {
1314
+					$options[$key]['name'] = $key;
1315 1315
 				}
1316 1316
 			}
1317 1317
 
@@ -1324,8 +1324,8 @@  discard block
 block discarded – undo
1324 1324
 		 * @since 1.0.0
1325 1325
 		 */
1326 1326
 		public function register_shortcode() {
1327
-			add_shortcode( $this->base_id, array( $this, 'shortcode_output' ) );
1328
-			add_action( 'wp_ajax_super_duper_output_shortcode', array( $this, 'render_shortcode' ) );
1327
+			add_shortcode($this->base_id, array($this, 'shortcode_output'));
1328
+			add_action('wp_ajax_super_duper_output_shortcode', array($this, 'render_shortcode'));
1329 1329
 		}
1330 1330
 
1331 1331
 		/**
@@ -1334,50 +1334,50 @@  discard block
 block discarded – undo
1334 1334
 		 * @since 1.0.0
1335 1335
 		 */
1336 1336
 		public function render_shortcode() {
1337
-			check_ajax_referer( 'super_duper_output_shortcode', '_ajax_nonce', true );
1338
-			if ( ! current_user_can( 'manage_options' ) ) {
1337
+			check_ajax_referer('super_duper_output_shortcode', '_ajax_nonce', true);
1338
+			if (!current_user_can('manage_options')) {
1339 1339
 				wp_die();
1340 1340
 			}
1341 1341
 
1342 1342
 			// we might need the $post value here so lets set it.
1343
-			if ( isset( $_POST['post_id'] ) && $_POST['post_id'] ) {
1344
-				$post_obj = get_post( absint( $_POST['post_id'] ) );
1345
-				if ( ! empty( $post_obj ) && empty( $post ) ) {
1343
+			if (isset($_POST['post_id']) && $_POST['post_id']) {
1344
+				$post_obj = get_post(absint($_POST['post_id']));
1345
+				if (!empty($post_obj) && empty($post)) {
1346 1346
 					global $post;
1347 1347
 					$post = $post_obj;
1348 1348
 				}
1349 1349
 			}
1350 1350
 
1351
-			if ( isset( $_POST['shortcode'] ) && $_POST['shortcode'] ) {
1351
+			if (isset($_POST['shortcode']) && $_POST['shortcode']) {
1352 1352
 				$is_preview = $this->is_preview();
1353
-				$shortcode_name   = sanitize_title_with_dashes( $_POST['shortcode'] );
1354
-				$attributes_array = isset( $_POST['attributes'] ) && $_POST['attributes'] ? $_POST['attributes'] : array();
1353
+				$shortcode_name   = sanitize_title_with_dashes($_POST['shortcode']);
1354
+				$attributes_array = isset($_POST['attributes']) && $_POST['attributes'] ? $_POST['attributes'] : array();
1355 1355
 				$attributes       = '';
1356
-				if ( ! empty( $attributes_array ) ) {
1357
-					foreach ( $attributes_array as $key => $value ) {
1358
-						if ( is_array( $value ) ) {
1359
-							$value = implode( ",", $value );
1356
+				if (!empty($attributes_array)) {
1357
+					foreach ($attributes_array as $key => $value) {
1358
+						if (is_array($value)) {
1359
+							$value = implode(",", $value);
1360 1360
 						}
1361 1361
 
1362
-						if ( ! empty( $value ) ) {
1363
-							$value = wp_unslash( $value );
1362
+						if (!empty($value)) {
1363
+							$value = wp_unslash($value);
1364 1364
 
1365 1365
 							// Encode [ and ].
1366
-							if ( $is_preview ) {
1367
-								$value = $this->encode_shortcodes( $value );
1366
+							if ($is_preview) {
1367
+								$value = $this->encode_shortcodes($value);
1368 1368
 							}
1369 1369
 						}
1370
-						$attributes .= " " . esc_attr( sanitize_title_with_dashes( $key ) ) . "='" . esc_attr( $value ) . "' ";
1370
+						$attributes .= " " . esc_attr(sanitize_title_with_dashes($key)) . "='" . esc_attr($value) . "' ";
1371 1371
 					}
1372 1372
 				}
1373 1373
 
1374
-				$shortcode = "[" . esc_attr( $shortcode_name ) . " " . $attributes . "]";
1374
+				$shortcode = "[" . esc_attr($shortcode_name) . " " . $attributes . "]";
1375 1375
 
1376
-				$content = do_shortcode( $shortcode );
1376
+				$content = do_shortcode($shortcode);
1377 1377
 
1378 1378
 				// Decode [ and ].
1379
-				if ( ! empty( $content ) && $is_preview ) {
1380
-					$content = $this->decode_shortcodes( $content );
1379
+				if (!empty($content) && $is_preview) {
1380
+					$content = $this->decode_shortcodes($content);
1381 1381
 				}
1382 1382
 
1383 1383
 				echo $content;
@@ -1393,21 +1393,21 @@  discard block
 block discarded – undo
1393 1393
 		 *
1394 1394
 		 * @return string
1395 1395
 		 */
1396
-		public function shortcode_output( $args = array(), $content = '' ) {
1396
+		public function shortcode_output($args = array(), $content = '') {
1397 1397
 			$_instance = $args;
1398 1398
 
1399
-			$args = $this->argument_values( $args );
1399
+			$args = $this->argument_values($args);
1400 1400
 
1401 1401
 			// add extra argument so we know its a output to gutenberg
1402 1402
 			//$args
1403
-			$args = $this->string_to_bool( $args );
1403
+			$args = $this->string_to_bool($args);
1404 1404
 
1405 1405
 			// if we have a enclosed shortcode we add it to the special `html` argument
1406
-			if ( ! empty( $content ) ) {
1406
+			if (!empty($content)) {
1407 1407
 				$args['html'] = $content;
1408 1408
 			}
1409 1409
 
1410
-			if ( ! $this->is_preview() ) {
1410
+			if (!$this->is_preview()) {
1411 1411
 				/**
1412 1412
 				 * Filters the settings for a particular widget args.
1413 1413
 				 *
@@ -1418,40 +1418,40 @@  discard block
 block discarded – undo
1418 1418
 				 *@since 1.0.28
1419 1419
 				 *
1420 1420
 				 */
1421
-				$args = apply_filters( 'wp_super_duper_widget_display_callback', $args, $this, $_instance );
1421
+				$args = apply_filters('wp_super_duper_widget_display_callback', $args, $this, $_instance);
1422 1422
 
1423
-				if ( ! is_array( $args ) ) {
1423
+				if (!is_array($args)) {
1424 1424
 					return $args;
1425 1425
 				}
1426 1426
 			}
1427 1427
 
1428
-			$class = isset( $this->options['widget_ops']['classname'] ) ? esc_attr( $this->options['widget_ops']['classname'] ) : '';
1429
-			$class .= " sdel-".$this->get_instance_hash();
1428
+			$class = isset($this->options['widget_ops']['classname']) ? esc_attr($this->options['widget_ops']['classname']) : '';
1429
+			$class .= " sdel-" . $this->get_instance_hash();
1430 1430
 
1431
-			$class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
1432
-			$class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
1431
+			$class = apply_filters('wp_super_duper_div_classname', $class, $args, $this);
1432
+			$class = apply_filters('wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this);
1433 1433
 
1434
-			$attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
1435
-			$attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
1434
+			$attrs = apply_filters('wp_super_duper_div_attrs', '', $args, $this);
1435
+			$attrs = apply_filters('wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this);
1436 1436
 
1437 1437
 			$shortcode_args = array();
1438 1438
 			$output         = '';
1439
-			$no_wrap        = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
1440
-			if ( isset( $args['no_wrap'] ) && $args['no_wrap'] ) {
1439
+			$no_wrap        = isset($this->options['no_wrap']) && $this->options['no_wrap'] ? true : false;
1440
+			if (isset($args['no_wrap']) && $args['no_wrap']) {
1441 1441
 				$no_wrap = true;
1442 1442
 			}
1443
-			$main_content = $this->output( $args, $shortcode_args, $content );
1444
-			if ( $main_content && ! $no_wrap ) {
1443
+			$main_content = $this->output($args, $shortcode_args, $content);
1444
+			if ($main_content && !$no_wrap) {
1445 1445
 				// wrap the shortcode in a div with the same class as the widget
1446 1446
 				$output .= '<div class="' . $class . '" ' . $attrs . '>';
1447
-				if ( ! empty( $args['title'] ) ) {
1447
+				if (!empty($args['title'])) {
1448 1448
 					// if its a shortcode and there is a title try to grab the title wrappers
1449
-					$shortcode_args = array( 'before_title' => '', 'after_title' => '' );
1450
-					if ( empty( $instance ) ) {
1449
+					$shortcode_args = array('before_title' => '', 'after_title' => '');
1450
+					if (empty($instance)) {
1451 1451
 						global $wp_registered_sidebars;
1452
-						if ( ! empty( $wp_registered_sidebars ) ) {
1453
-							foreach ( $wp_registered_sidebars as $sidebar ) {
1454
-								if ( ! empty( $sidebar['before_title'] ) ) {
1452
+						if (!empty($wp_registered_sidebars)) {
1453
+							foreach ($wp_registered_sidebars as $sidebar) {
1454
+								if (!empty($sidebar['before_title'])) {
1455 1455
 									$shortcode_args['before_title'] = $sidebar['before_title'];
1456 1456
 									$shortcode_args['after_title']  = $sidebar['after_title'];
1457 1457
 									break;
@@ -1459,20 +1459,20 @@  discard block
 block discarded – undo
1459 1459
 							}
1460 1460
 						}
1461 1461
 					}
1462
-					$output .= $this->output_title( $shortcode_args, $args );
1462
+					$output .= $this->output_title($shortcode_args, $args);
1463 1463
 				}
1464 1464
 				$output .= $main_content;
1465 1465
 				$output .= '</div>';
1466
-			} elseif ( $main_content && $no_wrap ) {
1466
+			} elseif ($main_content && $no_wrap) {
1467 1467
 				$output .= $main_content;
1468 1468
 			}
1469 1469
 
1470 1470
 			// if preview show a placeholder if empty
1471
-			if ( $this->is_preview() && $output == '' ) {
1472
-				$output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
1471
+			if ($this->is_preview() && $output == '') {
1472
+				$output = $this->preview_placeholder_text("{{" . $this->base_id . "}}");
1473 1473
 			}
1474 1474
 
1475
-			return apply_filters( 'wp_super_duper_widget_output', $output, $args, $shortcode_args, $this );
1475
+			return apply_filters('wp_super_duper_widget_output', $output, $args, $shortcode_args, $this);
1476 1476
 		}
1477 1477
 
1478 1478
 		/**
@@ -1482,8 +1482,8 @@  discard block
 block discarded – undo
1482 1482
 		 *
1483 1483
 		 * @return string
1484 1484
 		 */
1485
-		public function preview_placeholder_text( $name = '' ) {
1486
-			return "<div style='background:#0185ba33;padding: 10px;border: 4px #ccc dashed;'>" . wp_sprintf( __( 'Placeholder for: %s', 'ayecode-connect' ), $name ) . "</div>";
1485
+		public function preview_placeholder_text($name = '') {
1486
+			return "<div style='background:#0185ba33;padding: 10px;border: 4px #ccc dashed;'>" . wp_sprintf(__('Placeholder for: %s', 'ayecode-connect'), $name) . "</div>";
1487 1487
 		}
1488 1488
 
1489 1489
 		/**
@@ -1493,13 +1493,13 @@  discard block
 block discarded – undo
1493 1493
 		 *
1494 1494
 		 * @return mixed
1495 1495
 		 */
1496
-		public function string_to_bool( $options ) {
1496
+		public function string_to_bool($options) {
1497 1497
 			// convert bool strings to booleans
1498
-			foreach ( $options as $key => $val ) {
1499
-				if ( $val == 'false' ) {
1500
-					$options[ $key ] = false;
1501
-				} elseif ( $val == 'true' ) {
1502
-					$options[ $key ] = true;
1498
+			foreach ($options as $key => $val) {
1499
+				if ($val == 'false') {
1500
+					$options[$key] = false;
1501
+				} elseif ($val == 'true') {
1502
+					$options[$key] = true;
1503 1503
 				}
1504 1504
 			}
1505 1505
 
@@ -1515,26 +1515,26 @@  discard block
 block discarded – undo
1515 1515
 		 *@since 1.0.12 Don't set checkbox default value if the value is empty.
1516 1516
 		 *
1517 1517
 		 */
1518
-		public function argument_values( $instance ) {
1518
+		public function argument_values($instance) {
1519 1519
 			$argument_values = array();
1520 1520
 
1521 1521
 			// set widget instance
1522 1522
 			$this->instance = $instance;
1523 1523
 
1524
-			if ( empty( $this->arguments ) ) {
1524
+			if (empty($this->arguments)) {
1525 1525
 				$this->arguments = $this->get_arguments();
1526 1526
 			}
1527 1527
 
1528
-			if ( ! empty( $this->arguments ) ) {
1529
-				foreach ( $this->arguments as $key => $args ) {
1528
+			if (!empty($this->arguments)) {
1529
+				foreach ($this->arguments as $key => $args) {
1530 1530
 					// set the input name from the key
1531 1531
 					$args['name'] = $key;
1532 1532
 					//
1533
-					$argument_values[ $key ] = isset( $instance[ $key ] ) ? $instance[ $key ] : '';
1534
-					if ( $args['type'] == 'checkbox' && $argument_values[ $key ] == '' ) {
1533
+					$argument_values[$key] = isset($instance[$key]) ? $instance[$key] : '';
1534
+					if ($args['type'] == 'checkbox' && $argument_values[$key] == '') {
1535 1535
 						// don't set default for an empty checkbox
1536
-					} elseif ( $argument_values[ $key ] == '' && isset( $args['default'] ) ) {
1537
-						$argument_values[ $key ] = $args['default'];
1536
+					} elseif ($argument_values[$key] == '' && isset($args['default'])) {
1537
+						$argument_values[$key] = $args['default'];
1538 1538
 					}
1539 1539
 				}
1540 1540
 			}
@@ -1561,12 +1561,12 @@  discard block
 block discarded – undo
1561 1561
 		 *
1562 1562
 		 */
1563 1563
 		public function get_arguments() {
1564
-			if ( empty( $this->arguments ) ) {
1564
+			if (empty($this->arguments)) {
1565 1565
 				$this->arguments = $this->set_arguments();
1566 1566
 			}
1567 1567
 
1568
-			$this->arguments = apply_filters( 'wp_super_duper_arguments', $this->arguments, $this->options, $this->instance );
1569
-			$this->arguments = $this->add_name_from_key( $this->arguments, true );
1568
+			$this->arguments = apply_filters('wp_super_duper_arguments', $this->arguments, $this->options, $this->instance);
1569
+			$this->arguments = $this->add_name_from_key($this->arguments, true);
1570 1570
 
1571 1571
 			return $this->arguments;
1572 1572
 		}
@@ -1578,7 +1578,7 @@  discard block
 block discarded – undo
1578 1578
 		 * @param array $widget_args
1579 1579
 		 * @param string $content
1580 1580
 		 */
1581
-		public function output( $args = array(), $widget_args = array(), $content = '' ) {
1581
+		public function output($args = array(), $widget_args = array(), $content = '') {
1582 1582
 
1583 1583
 		}
1584 1584
 
@@ -1586,9 +1586,9 @@  discard block
 block discarded – undo
1586 1586
 		 * Add the dynamic block code inline when the wp-block in enqueued.
1587 1587
 		 */
1588 1588
 		public function register_block() {
1589
-			wp_add_inline_script( 'wp-blocks', $this->block() );
1590
-			if ( class_exists( 'SiteOrigin_Panels' ) ) {
1591
-				wp_add_inline_script( 'wp-blocks', $this->siteorigin_js() );
1589
+			wp_add_inline_script('wp-blocks', $this->block());
1590
+			if (class_exists('SiteOrigin_Panels')) {
1591
+				wp_add_inline_script('wp-blocks', $this->siteorigin_js());
1592 1592
 			}
1593 1593
 		}
1594 1594
 
@@ -1602,9 +1602,9 @@  discard block
 block discarded – undo
1602 1602
 			$show      = false;
1603 1603
 			$arguments = $this->get_arguments();
1604 1604
 
1605
-			if ( ! empty( $arguments ) ) {
1606
-				foreach ( $arguments as $argument ) {
1607
-					if ( isset( $argument['advanced'] ) && $argument['advanced'] ) {
1605
+			if (!empty($arguments)) {
1606
+				foreach ($arguments as $argument) {
1607
+					if (isset($argument['advanced']) && $argument['advanced']) {
1608 1608
 						$show = true;
1609 1609
 						break; // no need to continue if we know we have it
1610 1610
 					}
@@ -1622,19 +1622,19 @@  discard block
 block discarded – undo
1622 1622
 		public function get_url() {
1623 1623
 			$url = $this->url;
1624 1624
 
1625
-			if ( ! $url ) {
1626
-				$content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) );
1627
-				$content_url = untrailingslashit( WP_CONTENT_URL );
1625
+			if (!$url) {
1626
+				$content_dir = wp_normalize_path(untrailingslashit(WP_CONTENT_DIR));
1627
+				$content_url = untrailingslashit(WP_CONTENT_URL);
1628 1628
 
1629 1629
 				// Replace http:// to https://.
1630
-				if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) {
1631
-					$content_url = str_replace( 'http://', 'https://', $content_url );
1630
+				if (strpos($content_url, 'http://') === 0 && strpos(plugins_url(), 'https://') === 0) {
1631
+					$content_url = str_replace('http://', 'https://', $content_url);
1632 1632
 				}
1633 1633
 
1634 1634
 				// Check if we are inside a plugin
1635
-				$file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) );
1636
-				$url = str_replace( $content_dir, $content_url, $file_dir );
1637
-				$url = trailingslashit( $url );
1635
+				$file_dir = str_replace("/includes", "", wp_normalize_path(dirname(__FILE__)));
1636
+				$url = str_replace($content_dir, $content_url, $file_dir);
1637
+				$url = trailingslashit($url);
1638 1638
 				$this->url = $url;
1639 1639
 			}
1640 1640
 
@@ -1650,15 +1650,15 @@  discard block
 block discarded – undo
1650 1650
 
1651 1651
 			$url = $this->url;
1652 1652
 
1653
-			if ( ! $url ) {
1653
+			if (!$url) {
1654 1654
 				// check if we are inside a plugin
1655
-				$file_dir = str_replace( "/includes", "", dirname( __FILE__ ) );
1655
+				$file_dir = str_replace("/includes", "", dirname(__FILE__));
1656 1656
 
1657
-				$dir_parts = explode( "/wp-content/", $file_dir );
1658
-				$url_parts = explode( "/wp-content/", plugins_url() );
1657
+				$dir_parts = explode("/wp-content/", $file_dir);
1658
+				$url_parts = explode("/wp-content/", plugins_url());
1659 1659
 
1660
-				if ( ! empty( $url_parts[0] ) && ! empty( $dir_parts[1] ) ) {
1661
-					$url       = trailingslashit( $url_parts[0] . "/wp-content/" . $dir_parts[1] );
1660
+				if (!empty($url_parts[0]) && !empty($dir_parts[1])) {
1661
+					$url       = trailingslashit($url_parts[0] . "/wp-content/" . $dir_parts[1]);
1662 1662
 					$this->url = $url;
1663 1663
 				}
1664 1664
 			}
@@ -1679,45 +1679,45 @@  discard block
 block discarded – undo
1679 1679
 		 * @return string
1680 1680
 		 *@since 1.1.0
1681 1681
 		 */
1682
-		public function get_block_icon( $icon ) {
1682
+		public function get_block_icon($icon) {
1683 1683
 
1684 1684
 			// check if we have a Font Awesome icon
1685 1685
 			$fa_type = '';
1686
-			if ( substr( $icon, 0, 7 ) === "fas fa-" ) {
1686
+			if (substr($icon, 0, 7) === "fas fa-") {
1687 1687
 				$fa_type = 'solid';
1688
-			} elseif ( substr( $icon, 0, 7 ) === "far fa-" ) {
1688
+			} elseif (substr($icon, 0, 7) === "far fa-") {
1689 1689
 				$fa_type = 'regular';
1690
-			} elseif ( substr( $icon, 0, 7 ) === "fab fa-" ) {
1690
+			} elseif (substr($icon, 0, 7) === "fab fa-") {
1691 1691
 				$fa_type = 'brands';
1692 1692
 			} else {
1693 1693
 				$icon = "'" . $icon . "'";
1694 1694
 			}
1695 1695
 
1696 1696
 			// set the icon if we found one
1697
-			if ( $fa_type ) {
1698
-				$fa_icon = str_replace( array( "fas fa-", "far fa-", "fab fa-" ), "", $icon );
1697
+			if ($fa_type) {
1698
+				$fa_icon = str_replace(array("fas fa-", "far fa-", "fab fa-"), "", $icon);
1699 1699
 				$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 . "'}))";
1700 1700
 			}
1701 1701
 
1702 1702
 			return $icon;
1703 1703
 		}
1704 1704
 
1705
-		public function group_arguments( $arguments ) {
1706
-			if ( ! empty( $arguments ) ) {
1705
+		public function group_arguments($arguments) {
1706
+			if (!empty($arguments)) {
1707 1707
 				$temp_arguments = array();
1708
-				$general        = __( "General", 'ayecode-connect' );
1708
+				$general        = __("General", 'ayecode-connect');
1709 1709
 				$add_sections   = false;
1710
-				foreach ( $arguments as $key => $args ) {
1711
-					if ( isset( $args['group'] ) ) {
1712
-						$temp_arguments[ $args['group'] ][ $key ] = $args;
1710
+				foreach ($arguments as $key => $args) {
1711
+					if (isset($args['group'])) {
1712
+						$temp_arguments[$args['group']][$key] = $args;
1713 1713
 						$add_sections                             = true;
1714 1714
 					} else {
1715
-						$temp_arguments[ $general ][ $key ] = $args;
1715
+						$temp_arguments[$general][$key] = $args;
1716 1716
 					}
1717 1717
 				}
1718 1718
 
1719 1719
 				// only add sections if more than one
1720
-				if ( $add_sections ) {
1720
+				if ($add_sections) {
1721 1721
 					$arguments = $temp_arguments;
1722 1722
 				}
1723 1723
 			}
@@ -1730,38 +1730,38 @@  discard block
 block discarded – undo
1730 1730
 		 *
1731 1731
 		 * @since 1.1.17
1732 1732
 		 */
1733
-		public function group_block_tabs( $tabs, $arguments ) {
1734
-			if ( ! empty( $tabs ) && ! empty( $arguments ) ) {
1733
+		public function group_block_tabs($tabs, $arguments) {
1734
+			if (!empty($tabs) && !empty($arguments)) {
1735 1735
 				$has_sections = false;
1736 1736
 
1737
-				foreach ( $this->arguments as $key => $args ) {
1738
-					if ( isset( $args['group'] ) ) {
1737
+				foreach ($this->arguments as $key => $args) {
1738
+					if (isset($args['group'])) {
1739 1739
 						$has_sections = true;
1740 1740
 						break;
1741 1741
 					}
1742 1742
 				}
1743 1743
 
1744
-				if ( ! $has_sections ) {
1744
+				if (!$has_sections) {
1745 1745
 					return $tabs;
1746 1746
 				}
1747 1747
 
1748 1748
 				$new_tabs = array();
1749 1749
 
1750
-				foreach ( $tabs as $tab_key => $tab ) {
1750
+				foreach ($tabs as $tab_key => $tab) {
1751 1751
 					$new_groups = array();
1752 1752
 
1753
-					if ( ! empty( $tab['groups'] ) && is_array( $tab['groups'] ) ) {
1754
-						foreach ( $tab['groups'] as $group ) {
1755
-							if ( isset( $arguments[ $group ] ) ) {
1753
+					if (!empty($tab['groups']) && is_array($tab['groups'])) {
1754
+						foreach ($tab['groups'] as $group) {
1755
+							if (isset($arguments[$group])) {
1756 1756
 								$new_groups[] = $group;
1757 1757
 							}
1758 1758
 						}
1759 1759
 					}
1760 1760
 
1761
-					if ( ! empty( $new_groups ) ) {
1761
+					if (!empty($new_groups)) {
1762 1762
 						$tab['groups'] = $new_groups;
1763 1763
 
1764
-						$new_tabs[ $tab_key ] = $tab;
1764
+						$new_tabs[$tab_key] = $tab;
1765 1765
 					}
1766 1766
 				}
1767 1767
 
@@ -1788,7 +1788,7 @@  discard block
 block discarded – undo
1788 1788
 			?>
1789 1789
 			<script>
1790 1790
 			<?php
1791
-			if ( ! $sd_is_js_functions_loaded ) {
1791
+			if (!$sd_is_js_functions_loaded) {
1792 1792
 				$sd_is_js_functions_loaded = true;
1793 1793
 			?>
1794 1794
 function sd_show_view_options($this){
@@ -2065,7 +2065,7 @@  discard block
 block discarded – undo
2065 2065
 	}
2066 2066
 }
2067 2067
 
2068
-<?php if( !isset( $_REQUEST['sd-block-recover-debug'] ) ){ ?>
2068
+<?php if (!isset($_REQUEST['sd-block-recover-debug'])) { ?>
2069 2069
 // Wait will window is loaded before calling.
2070 2070
 window.onload = function() {
2071 2071
 	sd_auto_recover_blocks();
@@ -2244,7 +2244,7 @@  discard block
 block discarded – undo
2244 2244
 				$classes = [];
2245 2245
 
2246 2246
 				<?php
2247
-				if($aui_bs5){
2247
+				if ($aui_bs5) {
2248 2248
 					?>
2249 2249
 				$aui_bs5 = true;
2250 2250
 				$p_ml = 'ms-';
@@ -2253,7 +2253,7 @@  discard block
 block discarded – undo
2253 2253
 				$p_pl = 'ps-';
2254 2254
 				$p_pr = 'pe-';
2255 2255
 					<?php
2256
-				}else{
2256
+				} else {
2257 2257
 						?>
2258 2258
 				$aui_bs5 = false;
2259 2259
 				$p_ml = 'ml-';
@@ -2441,7 +2441,7 @@  discard block
 block discarded – undo
2441 2441
 			}
2442 2442
 
2443 2443
 			function sd_get_class_build_keys(){
2444
-				return <?php echo json_encode(sd_get_class_build_keys());?>;
2444
+				return <?php echo json_encode(sd_get_class_build_keys()); ?>;
2445 2445
 			}
2446 2446
 
2447 2447
 			<?php
@@ -2449,7 +2449,7 @@  discard block
 block discarded – undo
2449 2449
 
2450 2450
 			}
2451 2451
 
2452
-			if(method_exists($this,'block_global_js')){
2452
+			if (method_exists($this, 'block_global_js')) {
2453 2453
 					echo $this->block_global_js();
2454 2454
 			}
2455 2455
 			?>
@@ -2481,9 +2481,9 @@  discard block
 block discarded – undo
2481 2481
 					var InnerBlocks = blockEditor.InnerBlocks;
2482 2482
 
2483 2483
 					var term_query_type = '';
2484
-					var post_type_rest_slugs = <?php if(! empty( $this->arguments ) && isset($this->arguments['post_type']['onchange_rest']['values'])){echo "[".json_encode($this->arguments['post_type']['onchange_rest']['values'])."]";}else{echo "[]";} ?>;
2485
-					const taxonomies_<?php echo str_replace("-","_", $this->id);?> = [{label: "Please wait", value: 0}];
2486
-					const sort_by_<?php echo str_replace("-","_", $this->id);?> = [{label: "Please wait", value: 0}];
2484
+					var post_type_rest_slugs = <?php if (!empty($this->arguments) && isset($this->arguments['post_type']['onchange_rest']['values'])) {echo "[" . json_encode($this->arguments['post_type']['onchange_rest']['values']) . "]"; } else {echo "[]"; } ?>;
2485
+					const taxonomies_<?php echo str_replace("-", "_", $this->id); ?> = [{label: "Please wait", value: 0}];
2486
+					const sort_by_<?php echo str_replace("-", "_", $this->id); ?> = [{label: "Please wait", value: 0}];
2487 2487
 					const MediaUpload = wp.blockEditor.MediaUpload;
2488 2488
 
2489 2489
 					/**
@@ -2498,87 +2498,87 @@  discard block
 block discarded – undo
2498 2498
 					 * @return {?WPBlock}          The block, if it has been successfully
2499 2499
 					 *                             registered; otherwise `undefined`.
2500 2500
 					 */
2501
-					registerBlockType('<?php echo str_replace( "_", "-", sanitize_title_with_dashes( $this->options['textdomain'] ) . '/' . sanitize_title_with_dashes( $this->options['class_name'] ) );  ?>', { // Block name. Block names must be string that contains a namespace prefix. Example: my-plugin/my-custom-block.
2502
-						apiVersion: <?php echo isset($this->options['block-api-version']) ? absint($this->options['block-api-version']) : 2 ; ?>,
2503
-						title: '<?php echo addslashes( $this->options['name'] ); ?>', // Block title.
2504
-						description: '<?php echo addslashes( $this->options['widget_ops']['description'] )?>', // Block title.
2505
-						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/.
2501
+					registerBlockType('<?php echo str_replace("_", "-", sanitize_title_with_dashes($this->options['textdomain']) . '/' . sanitize_title_with_dashes($this->options['class_name'])); ?>', { // Block name. Block names must be string that contains a namespace prefix. Example: my-plugin/my-custom-block.
2502
+						apiVersion: <?php echo isset($this->options['block-api-version']) ? absint($this->options['block-api-version']) : 2; ?>,
2503
+						title: '<?php echo addslashes($this->options['name']); ?>', // Block title.
2504
+						description: '<?php echo addslashes($this->options['widget_ops']['description'])?>', // Block title.
2505
+						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/.
2506 2506
 						supports: {
2507 2507
 							<?php
2508
-							if(!isset($this->options['block-supports']['renaming'])){
2508
+							if (!isset($this->options['block-supports']['renaming'])) {
2509 2509
 								$this->options['block-supports']['renaming'] = false;
2510 2510
 							}
2511
-							if ( isset( $this->options['block-supports'] ) ) {
2512
-								echo $this->array_to_attributes( $this->options['block-supports'] );
2511
+							if (isset($this->options['block-supports'])) {
2512
+								echo $this->array_to_attributes($this->options['block-supports']);
2513 2513
 							}
2514 2514
 							?>
2515 2515
 						},
2516 2516
 						__experimentalLabel( attributes, { context } ) {
2517 2517
 							var visibility_html = attributes && attributes.visibility_conditions ? ' &#128065;' : '';
2518 2518
 							var metadata_name = attributes && attributes.metadata && attributes.metadata.name ? attributes.metadata.name : '';
2519
-							var label_name = <?php echo !empty($this->options['block-label']) ? $this->options['block-label'] : "'" . esc_attr( addslashes( $this->options['name'] ) ) . "'"; ?>;
2519
+							var label_name = <?php echo !empty($this->options['block-label']) ? $this->options['block-label'] : "'" . esc_attr(addslashes($this->options['name'])) . "'"; ?>;
2520 2520
 							return metadata_name ? metadata_name + visibility_html  : label_name + visibility_html;
2521 2521
 						},
2522
-						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.
2523
-						<?php if ( isset( $this->options['block-keywords'] ) ) {
2522
+						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.
2523
+						<?php if (isset($this->options['block-keywords'])) {
2524 2524
 						echo "keywords : " . $this->options['block-keywords'] . ",";
2525 2525
 						}
2526 2526
 
2527 2527
 
2528 2528
 						// block hover preview.
2529 2529
 						$example_args = array();
2530
-						if(!empty($this->arguments)){
2531
-							foreach($this->arguments as $key => $a_args){
2532
-								if(isset($a_args['example'])){
2530
+						if (!empty($this->arguments)) {
2531
+							foreach ($this->arguments as $key => $a_args) {
2532
+								if (isset($a_args['example'])) {
2533 2533
 									$example_args[$key] = $a_args['example'];
2534 2534
 								}
2535 2535
 							}
2536 2536
 						}
2537
-						$viewport_width = isset($this->options['example']['viewportWidth']) ? 'viewportWidth: '.absint($this->options['example']['viewportWidth']) : '';
2537
+						$viewport_width = isset($this->options['example']['viewportWidth']) ? 'viewportWidth: ' . absint($this->options['example']['viewportWidth']) : '';
2538 2538
 						$example_inner_blocks = !empty($this->options['example']['innerBlocks']) && is_array($this->options['example']['innerBlocks']) ? 'innerBlocks: ' . wp_json_encode($this->options['example']['innerBlocks']) : '';
2539
-						if( isset( $this->options['example'] ) && $this->options['example'] === false ){
2539
+						if (isset($this->options['example']) && $this->options['example'] === false) {
2540 2540
 							// no preview if set to false
2541
-						}elseif( !empty( $example_args ) ){
2542
-							echo "example : {attributes:{".$this->array_to_attributes( $example_args )."},$viewport_width},";
2543
-						}elseif( !empty( $this->options['example'] ) ){
2541
+						}elseif (!empty($example_args)) {
2542
+							echo "example : {attributes:{" . $this->array_to_attributes($example_args) . "},$viewport_width},";
2543
+						}elseif (!empty($this->options['example'])) {
2544 2544
 							unset($this->options['example']['viewportWidth']);
2545 2545
 							unset($this->options['example']['innerBlocks']);
2546
-							$example_atts = $this->array_to_attributes( $this->options['example'] );
2546
+							$example_atts = $this->array_to_attributes($this->options['example']);
2547 2547
 							$example_parts = array();
2548
-							if($example_atts){
2549
-								$example_parts[] = rtrim($example_atts,",");
2548
+							if ($example_atts) {
2549
+								$example_parts[] = rtrim($example_atts, ",");
2550 2550
 							}
2551
-							if($viewport_width){
2551
+							if ($viewport_width) {
2552 2552
 								$example_parts[] = $viewport_width;
2553 2553
 							}
2554
-							if($example_inner_blocks){
2554
+							if ($example_inner_blocks) {
2555 2555
 								$example_parts[] = $example_inner_blocks;
2556 2556
 							}
2557
-							if(!empty($example_parts)){
2558
-								echo "example : {".implode(',', $example_parts)."},";
2557
+							if (!empty($example_parts)) {
2558
+								echo "example : {" . implode(',', $example_parts) . "},";
2559 2559
 							}
2560
-						}else{
2560
+						} else {
2561 2561
 							echo 'example : {viewportWidth: 500},';
2562 2562
 						}
2563 2563
 
2564 2564
 
2565 2565
 
2566 2566
 						// limit to parent
2567
-						if( !empty( $this->options['parent'] ) ){
2568
-							echo "parent : " . wp_json_encode( $this->options['parent'] ) . ",";
2567
+						if (!empty($this->options['parent'])) {
2568
+							echo "parent : " . wp_json_encode($this->options['parent']) . ",";
2569 2569
 						}
2570 2570
 
2571 2571
 						// limit allowed blocks
2572
-						if( !empty( $this->options['allowed-blocks'] ) ){
2573
-							echo "allowedBlocks : " . wp_json_encode( $this->options['allowed-blocks'] ) . ",";
2572
+						if (!empty($this->options['allowed-blocks'])) {
2573
+							echo "allowedBlocks : " . wp_json_encode($this->options['allowed-blocks']) . ",";
2574 2574
 						}
2575 2575
 
2576 2576
 						// maybe set no_wrap
2577
-						$no_wrap = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
2578
-						if ( isset( $this->arguments['no_wrap'] ) && $this->arguments['no_wrap'] ) {
2577
+						$no_wrap = isset($this->options['no_wrap']) && $this->options['no_wrap'] ? true : false;
2578
+						if (isset($this->arguments['no_wrap']) && $this->arguments['no_wrap']) {
2579 2579
 							$no_wrap = true;
2580 2580
 						}
2581
-						if ( $no_wrap ) {
2581
+						if ($no_wrap) {
2582 2582
 							$this->options['block-wrap'] = '';
2583 2583
 						}
2584 2584
 
@@ -2595,7 +2595,7 @@  discard block
 block discarded – undo
2595 2595
 
2596 2596
 							echo "attributes : {";
2597 2597
 
2598
-							if ( $show_advanced ) {
2598
+							if ($show_advanced) {
2599 2599
 								echo "show_advanced: {";
2600 2600
 								echo "	type: 'boolean',";
2601 2601
 								echo "  default: false,";
@@ -2603,57 +2603,57 @@  discard block
 block discarded – undo
2603 2603
 							}
2604 2604
 
2605 2605
 							// block wrap element
2606
-							if ( ! empty( $this->options['block-wrap'] ) ) { //@todo we should validate this?
2606
+							if (!empty($this->options['block-wrap'])) { //@todo we should validate this?
2607 2607
 								echo "block_wrap: {";
2608 2608
 								echo "	type: 'string',";
2609
-								echo "  default: '" . esc_attr( $this->options['block-wrap'] ) . "',";
2609
+								echo "  default: '" . esc_attr($this->options['block-wrap']) . "',";
2610 2610
 								echo "},";
2611 2611
 							}
2612 2612
 
2613 2613
 
2614
-							if ( ! empty( $this->arguments ) ) {
2614
+							if (!empty($this->arguments)) {
2615 2615
 
2616
-								foreach ( $this->arguments as $key => $args ) {
2616
+								foreach ($this->arguments as $key => $args) {
2617 2617
 
2618
-									if( $args['type'] == 'image' ||  $args['type'] == 'images' ){
2618
+									if ($args['type'] == 'image' || $args['type'] == 'images') {
2619 2619
 										$img_drag_drop = true;
2620 2620
 									}
2621 2621
 
2622 2622
 									// set if we should show alignment
2623
-									if ( $key == 'alignment' ) {
2623
+									if ($key == 'alignment') {
2624 2624
 										$show_alignment = true;
2625 2625
 									}
2626 2626
 
2627 2627
 									$extra = '';
2628 2628
 
2629
-									if ( $args['type'] == 'notice' ||  $args['type'] == 'tab' ) {
2629
+									if ($args['type'] == 'notice' || $args['type'] == 'tab') {
2630 2630
 										continue;
2631 2631
 									}
2632
-									elseif ( $args['type'] == 'checkbox' ) {
2632
+									elseif ($args['type'] == 'checkbox') {
2633 2633
 										$type    = 'boolean';
2634
-										$default = isset( $args['default'] ) && $args['default'] ? 'true' : 'false';
2635
-									} elseif ( $args['type'] == 'number' ) {
2634
+										$default = isset($args['default']) && $args['default'] ? 'true' : 'false';
2635
+									} elseif ($args['type'] == 'number') {
2636 2636
 										$type    = 'number';
2637
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2638
-									} elseif ( $args['type'] == 'select' && ! empty( $args['multiple'] ) ) {
2637
+										$default = isset($args['default']) ? "'" . $args['default'] . "'" : "''";
2638
+									} elseif ($args['type'] == 'select' && !empty($args['multiple'])) {
2639 2639
 										$type = 'array';
2640
-										if ( isset( $args['default'] ) && is_array( $args['default'] ) ) {
2641
-											$default = ! empty( $args['default'] ) ? "['" . implode( "','", $args['default'] ) . "']" : "[]";
2640
+										if (isset($args['default']) && is_array($args['default'])) {
2641
+											$default = !empty($args['default']) ? "['" . implode("','", $args['default']) . "']" : "[]";
2642 2642
 										} else {
2643
-											$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2643
+											$default = isset($args['default']) ? "'" . $args['default'] . "'" : "''";
2644 2644
 										}
2645
-									} elseif ( $args['type'] == 'tagselect' ) {
2645
+									} elseif ($args['type'] == 'tagselect') {
2646 2646
 										$type    = 'array';
2647
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2648
-									} elseif ( $args['type'] == 'multiselect' ) {
2647
+										$default = isset($args['default']) ? "'" . $args['default'] . "'" : "''";
2648
+									} elseif ($args['type'] == 'multiselect') {
2649 2649
 										$type    = 'array';
2650
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2651
-									} elseif ( $args['type'] == 'image_xy' ) {
2650
+										$default = isset($args['default']) ? "'" . $args['default'] . "'" : "''";
2651
+									} elseif ($args['type'] == 'image_xy') {
2652 2652
 										$type    = 'object';
2653
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2654
-									} elseif ( $args['type'] == 'image' ) {
2653
+										$default = isset($args['default']) ? "'" . $args['default'] . "'" : "''";
2654
+									} elseif ($args['type'] == 'image') {
2655 2655
 										$type    = 'string';
2656
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2656
+										$default = isset($args['default']) ? "'" . $args['default'] . "'" : "''";
2657 2657
 
2658 2658
 										// add a field for ID
2659 2659
 	//                                    echo $key . "_id : {";
@@ -2665,7 +2665,7 @@  discard block
 block discarded – undo
2665 2665
 
2666 2666
 									} else {
2667 2667
 										$type    = !empty($args['hidden_type']) ? esc_attr($args['hidden_type']) : 'string';
2668
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2668
+										$default = isset($args['default']) ? "'" . $args['default'] . "'" : "''";
2669 2669
 
2670 2670
 									}
2671 2671
 									echo $key . " : {";
@@ -2678,7 +2678,7 @@  discard block
 block discarded – undo
2678 2678
 							echo "content : {type : 'string',default: 'Please select the attributes in the block settings'},";
2679 2679
 							echo "sd_shortcode : {type : 'string',default: ''},";
2680 2680
 
2681
-							if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){
2681
+							if (!empty($this->options['nested-block']) || !empty($this->arguments['html'])) {
2682 2682
 								echo "sd_shortcode_close : {type : 'string',default: ''},";
2683 2683
 							}
2684 2684
 
@@ -2697,7 +2697,7 @@  discard block
 block discarded – undo
2697 2697
 
2698 2698
 <?php
2699 2699
 // only include the drag/drop functions if required.
2700
-if( $img_drag_drop ){
2700
+if ($img_drag_drop) {
2701 2701
 
2702 2702
 ?>
2703 2703
 
@@ -2763,9 +2763,9 @@  discard block
 block discarded – undo
2763 2763
 							}
2764 2764
 
2765 2765
 							<?php
2766
-							if(!empty($this->options['block-edit-raw'])) {
2766
+							if (!empty($this->options['block-edit-raw'])) {
2767 2767
 								echo $this->options['block-edit-raw']; // strings have to be in single quotes, may cause issues
2768
-							}else{
2768
+							} else {
2769 2769
 							?>
2770 2770
 
2771 2771
 function hasSelectedInnerBlock(props) {
@@ -2789,7 +2789,7 @@  discard block
 block discarded – undo
2789 2789
 	var $value = '';
2790 2790
 	<?php
2791 2791
 	// if we have a post_type and a category then link them
2792
-	if( isset($this->arguments['post_type']) && isset($this->arguments['category']) && !empty($this->arguments['category']['post_type_linked']) ){
2792
+	if (isset($this->arguments['post_type']) && isset($this->arguments['category']) && !empty($this->arguments['category']['post_type_linked'])) {
2793 2793
 	?>
2794 2794
 	if(typeof(prev_attributes[props.clientId]) != 'undefined' && selectedBlock && selectedBlock.clientId === props.clientId){
2795 2795
 		$pt = props.attributes.post_type;
@@ -2804,9 +2804,9 @@  discard block
 block discarded – undo
2804 2804
 		}
2805 2805
 <?php
2806 2806
 	$cat_path = '';
2807
-	if ( ! empty( $this->arguments['post_type']['onchange_rest']['path'] ) ) {
2808
-		$cat_path = esc_js( strip_tags( $this->arguments['post_type']['onchange_rest']['path'] ) );
2809
-		$cat_path = str_replace( array( '&quot;', '&#039;' ), array( '"', "'" ), $cat_path );
2807
+	if (!empty($this->arguments['post_type']['onchange_rest']['path'])) {
2808
+		$cat_path = esc_js(strip_tags($this->arguments['post_type']['onchange_rest']['path']));
2809
+		$cat_path = str_replace(array('&quot;', '&#039;'), array('"', "'"), $cat_path);
2810 2810
 	}
2811 2811
 ?>
2812 2812
 		/* taxonomies */
@@ -2814,15 +2814,15 @@  discard block
 block discarded – undo
2814 2814
 			if (!window.gdCPTCats) {
2815 2815
 				window.gdCPTCats = [];
2816 2816
 			}
2817
-			var gdCatPath = "<?php echo ( ! empty( $cat_path ) ? $cat_path : "/wp/v2/" + $value + "/categories/?per_page=100" ); ?>";
2817
+			var gdCatPath = "<?php echo (!empty($cat_path) ? $cat_path : "/wp/v2/" +$value + "/categories/?per_page=100"); ?>";
2818 2818
 			if (window.gdCPTCats[gdCatPath]) {
2819 2819
 				terms = window.gdCPTCats[gdCatPath];
2820
-				while (taxonomies_<?php echo str_replace("-","_", $this->id);?>.length) {
2821
-					taxonomies_<?php echo str_replace("-","_", $this->id);?>.pop();
2820
+				while (taxonomies_<?php echo str_replace("-", "_", $this->id); ?>.length) {
2821
+					taxonomies_<?php echo str_replace("-", "_", $this->id); ?>.pop();
2822 2822
 				}
2823
-				taxonomies_<?php echo str_replace("-","_", $this->id);?>.push({label: "All", value: 0});
2823
+				taxonomies_<?php echo str_replace("-", "_", $this->id); ?>.push({label: "All", value: 0});
2824 2824
 				jQuery.each( terms, function( key, val ) {
2825
-					taxonomies_<?php echo str_replace("-","_", $this->id);?>.push({label: val.name, value: val.id});
2825
+					taxonomies_<?php echo str_replace("-", "_", $this->id); ?>.push({label: val.name, value: val.id});
2826 2826
 				});
2827 2827
 
2828 2828
 				/* Setting the value back and fourth fixes the no update issue that sometimes happens where it won't update the options. */
@@ -2832,12 +2832,12 @@  discard block
 block discarded – undo
2832 2832
 			} else {
2833 2833
 				wp.apiFetch({path: gdCatPath}).then(terms => {
2834 2834
 					window.gdCPTCats[gdCatPath] = terms;
2835
-					while (taxonomies_<?php echo str_replace("-","_", $this->id);?>.length) {
2836
-						taxonomies_<?php echo str_replace("-","_", $this->id);?>.pop();
2835
+					while (taxonomies_<?php echo str_replace("-", "_", $this->id); ?>.length) {
2836
+						taxonomies_<?php echo str_replace("-", "_", $this->id); ?>.pop();
2837 2837
 					}
2838
-					taxonomies_<?php echo str_replace("-","_", $this->id);?>.push({label: "All", value: 0});
2838
+					taxonomies_<?php echo str_replace("-", "_", $this->id); ?>.push({label: "All", value: 0});
2839 2839
 					jQuery.each( terms, function( key, val ) {
2840
-						taxonomies_<?php echo str_replace("-","_", $this->id);?>.push({label: val.name, value: val.id});
2840
+						taxonomies_<?php echo str_replace("-", "_", $this->id); ?>.push({label: val.name, value: val.id});
2841 2841
 					});
2842 2842
 
2843 2843
 					/* Setting the value back and fourth fixes the no update issue that sometimes happens where it won't update the options. */
@@ -2845,7 +2845,7 @@  discard block
 block discarded – undo
2845 2845
 					props.setAttributes({category: [0] });
2846 2846
 					props.setAttributes({category: $old_cat_value });
2847 2847
 
2848
-					return taxonomies_<?php echo str_replace("-","_", $this->id);?>;
2848
+					return taxonomies_<?php echo str_replace("-", "_", $this->id); ?>;
2849 2849
 				});
2850 2850
 			}
2851 2851
 		}
@@ -2857,12 +2857,12 @@  discard block
 block discarded – undo
2857 2857
 			}
2858 2858
 			if (window.gdCPTSort[$pt]) {
2859 2859
 				response = window.gdCPTSort[$pt];
2860
-				while (sort_by_<?php echo str_replace("-","_", $this->id);?>.length) {
2861
-					sort_by_<?php echo str_replace("-","_", $this->id);?>.pop();
2860
+				while (sort_by_<?php echo str_replace("-", "_", $this->id); ?>.length) {
2861
+					sort_by_<?php echo str_replace("-", "_", $this->id); ?>.pop();
2862 2862
 				}
2863 2863
 
2864 2864
 				jQuery.each( response, function( key, val ) {
2865
-					sort_by_<?php echo str_replace("-","_", $this->id);?>.push({label: val, value: key});
2865
+					sort_by_<?php echo str_replace("-", "_", $this->id); ?>.push({label: val, value: key});
2866 2866
 				});
2867 2867
 
2868 2868
 				// setting the value back and fourth fixes the no update issue that sometimes happens where it won't update the options.
@@ -2877,12 +2877,12 @@  discard block
 block discarded – undo
2877 2877
 				jQuery.post(ajaxurl, data, function(response) {
2878 2878
 					response = JSON.parse(response);
2879 2879
 					window.gdCPTSort[$pt] = response;
2880
-					while (sort_by_<?php echo str_replace("-","_", $this->id);?>.length) {
2881
-						sort_by_<?php echo str_replace("-","_", $this->id);?>.pop();
2880
+					while (sort_by_<?php echo str_replace("-", "_", $this->id); ?>.length) {
2881
+						sort_by_<?php echo str_replace("-", "_", $this->id); ?>.pop();
2882 2882
 					}
2883 2883
 
2884 2884
 					jQuery.each( response, function( key, val ) {
2885
-						sort_by_<?php echo str_replace("-","_", $this->id);?>.push({label: val, value: key});
2885
+						sort_by_<?php echo str_replace("-", "_", $this->id); ?>.push({label: val, value: key});
2886 2886
 					});
2887 2887
 
2888 2888
 					// setting the value back and fourth fixes the no update issue that sometimes happens where it won't update the options.
@@ -2890,7 +2890,7 @@  discard block
 block discarded – undo
2890 2890
 					props.setAttributes({sort_by: [0] });
2891 2891
 					props.setAttributes({sort_by: $old_sort_by_value });
2892 2892
 
2893
-					return sort_by_<?php echo str_replace("-","_", $this->id);?>;
2893
+					return sort_by_<?php echo str_replace("-", "_", $this->id); ?>;
2894 2894
 				});
2895 2895
 			}
2896 2896
 		}
@@ -2898,9 +2898,9 @@  discard block
 block discarded – undo
2898 2898
 	<?php } ?>
2899 2899
 <?php
2900 2900
 $current_screen = function_exists('get_current_screen') ? get_current_screen() : '';
2901
-if(!empty($current_screen->base) && $current_screen->base==='widgets'){
2901
+if (!empty($current_screen->base) && $current_screen->base === 'widgets') {
2902 2902
 	echo 'const { deviceType } = "";';
2903
-}else{
2903
+} else {
2904 2904
 ?>
2905 2905
 /** Get device type const. */
2906 2906
 const wpVersion = '<?php global $wp_version; echo esc_attr($wp_version); ?>';
@@ -2959,13 +2959,13 @@  discard block
 block discarded – undo
2959 2959
 
2960 2960
 									var data = {
2961 2961
 										'action': 'super_duper_output_shortcode',
2962
-										'shortcode': '<?php echo $this->options['base_id'];?>',
2962
+										'shortcode': '<?php echo $this->options['base_id']; ?>',
2963 2963
 										'attributes': props.attributes,
2964 2964
 										'block_parent_name': parentBlocks.length ? parentBlocks[parentBlocks.length - 1].name : '',
2965
-										'post_id': <?php global $post; if ( isset( $post->ID ) ) {
2965
+										'post_id': <?php global $post; if (isset($post->ID)) {
2966 2966
 										echo $post->ID;
2967
-									}else{echo '0';}?>,
2968
-										'_ajax_nonce': '<?php echo wp_create_nonce( 'super_duper_output_shortcode' );?>'
2967
+									} else {echo '0'; }?>,
2968
+										'_ajax_nonce': '<?php echo wp_create_nonce('super_duper_output_shortcode'); ?>'
2969 2969
 									};
2970 2970
 
2971 2971
 									jQuery.post(ajaxurl, data, function (response) {
@@ -2974,17 +2974,17 @@  discard block
 block discarded – undo
2974 2974
 
2975 2975
 										// if the content is empty then we place some placeholder text
2976 2976
 										if (env == '') {
2977
-											env = "<div style='background:#0185ba33;padding: 10px;border: 4px #ccc dashed;'>" + "<?php _e( 'Placeholder for:', 'ayecode-connect' );?> " + props.name + "</div>";
2977
+											env = "<div style='background:#0185ba33;padding: 10px;border: 4px #ccc dashed;'>" + "<?php _e('Placeholder for:', 'ayecode-connect'); ?> " + props.name + "</div>";
2978 2978
 										}
2979 2979
 
2980 2980
 										 <?php
2981
-										if(!empty($this->options['nested-block'])){
2981
+										if (!empty($this->options['nested-block'])) {
2982 2982
 											?>
2983 2983
 											// props.setAttributes({content: env});
2984 2984
 										is_fetching = false;
2985 2985
 										prev_attributes[props.clientId] = props.attributes;
2986 2986
 											 <?php
2987
-										}else{
2987
+										} else {
2988 2988
 										?>
2989 2989
 										props.setAttributes({content: env});
2990 2990
 										is_fetching = false;
@@ -3010,38 +3010,38 @@  discard block
 block discarded – undo
3010 3010
 							}
3011 3011
 
3012 3012
 							<?php
3013
-							if(!empty($this->options['block-edit-js'])) {
3014
-								echo  $this->options['block-edit-js'] ; // strings have to be in single quotes, may cause issues
3013
+							if (!empty($this->options['block-edit-js'])) {
3014
+								echo  $this->options['block-edit-js']; // strings have to be in single quotes, may cause issues
3015 3015
 							}
3016 3016
 
3017 3017
 
3018 3018
 
3019 3019
 
3020
-							if(empty($this->options['block-save-return'])){
3020
+							if (empty($this->options['block-save-return'])) {
3021 3021
 							?>
3022 3022
 								///////////////////////////////////////////////////////////////////////
3023 3023
 
3024 3024
 									 // build the shortcode.
3025
-								shortcode = "[<?php echo $this->options['base_id'];?>";
3025
+								shortcode = "[<?php echo $this->options['base_id']; ?>";
3026 3026
 								<?php
3027 3027
 
3028
-								if(! empty( $this->arguments )){
3028
+								if (!empty($this->arguments)) {
3029 3029
 
3030
-								foreach($this->arguments as $key => $args){
3030
+								foreach ($this->arguments as $key => $args) {
3031 3031
 								   // if($args['type']=='tabs'){continue;}
3032 3032
 
3033 3033
 								   // don't add metadata arguments
3034
-								   if (substr($key, 0, 9 ) === 'metadata_') {
3034
+								   if (substr($key, 0, 9) === 'metadata_') {
3035 3035
 									   continue;
3036 3036
 								   }
3037 3037
 								?>
3038
-								if (props.attributes.hasOwnProperty("<?php echo esc_attr( $key );?>")) {
3039
-									if ('<?php echo esc_attr( $key );?>' == 'html') {
3040
-									} else if ('<?php echo esc_attr( $args['type'] );?>' == 'image_xy') {
3041
-										shortcode += props.attributes.<?php echo esc_attr( $key );?>.length && ( props.attributes.<?php echo esc_attr( $key );?>.x.length || props.attributes.<?php echo esc_attr( $key );?>.y.length ) ? " <?php echo esc_attr( $key );?>='{x:" + props.attributes.<?php echo esc_attr( $key );?>.x + ",y:"+props.attributes.<?php echo esc_attr( $key );?>.y +"}' " : "";
3038
+								if (props.attributes.hasOwnProperty("<?php echo esc_attr($key); ?>")) {
3039
+									if ('<?php echo esc_attr($key); ?>' == 'html') {
3040
+									} else if ('<?php echo esc_attr($args['type']); ?>' == 'image_xy') {
3041
+										shortcode += props.attributes.<?php echo esc_attr($key); ?>.length && ( props.attributes.<?php echo esc_attr($key); ?>.x.length || props.attributes.<?php echo esc_attr($key); ?>.y.length ) ? " <?php echo esc_attr($key); ?>='{x:" + props.attributes.<?php echo esc_attr($key); ?>.x + ",y:"+props.attributes.<?php echo esc_attr($key); ?>.y +"}' " : "";
3042 3042
 									} else {
3043
-										//shortcode += props.attributes.<?php echo esc_attr( $key );?>.length ? " <?php echo esc_attr( $key );?>='" + props.attributes.<?php echo esc_attr( $key );?>.toString().replace('\'','&#39;') + "' " : "";
3044
-										shortcode +=  " <?php echo esc_attr( $key );?>='" + props.attributes.<?php echo esc_attr( $key );?>.toString().replace('\'','&#39;') + "' ";
3043
+										//shortcode += props.attributes.<?php echo esc_attr($key); ?>.length ? " <?php echo esc_attr($key); ?>='" + props.attributes.<?php echo esc_attr($key); ?>.toString().replace('\'','&#39;') + "' " : "";
3044
+										shortcode +=  " <?php echo esc_attr($key); ?>='" + props.attributes.<?php echo esc_attr($key); ?>.toString().replace('\'','&#39;') + "' ";
3045 3045
 									}
3046 3046
 								}
3047 3047
 								<?php
@@ -3060,8 +3060,8 @@  discard block
 block discarded – undo
3060 3060
 
3061 3061
 
3062 3062
 									<?php
3063
-									if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){
3064
-										echo "props.setAttributes({sd_shortcode_close: '[/".esc_attr( $this->options['base_id'] )."]'});";
3063
+									if (!empty($this->options['nested-block']) || !empty($this->arguments['html'])) {
3064
+										echo "props.setAttributes({sd_shortcode_close: '[/" . esc_attr($this->options['base_id']) . "]'});";
3065 3065
 									}
3066 3066
 									?>
3067 3067
 								}
@@ -3076,7 +3076,7 @@  discard block
 block discarded – undo
3076 3076
 
3077 3077
 								el(wp.blockEditor.BlockControls, {key: 'controls'},
3078 3078
 
3079
-									<?php if($show_alignment){?>
3079
+									<?php if ($show_alignment) {?>
3080 3080
 									el(
3081 3081
 										wp.blockEditor.AlignmentToolbar,
3082 3082
 										{
@@ -3094,9 +3094,9 @@  discard block
 block discarded – undo
3094 3094
 
3095 3095
 									<?php
3096 3096
 
3097
-									if(! empty( $this->arguments )){
3097
+									if (!empty($this->arguments)) {
3098 3098
 
3099
-									if ( $show_advanced ) {
3099
+									if ($show_advanced) {
3100 3100
 									?>
3101 3101
 									el('div', {
3102 3102
 											style: {'padding-left': '16px','padding-right': '16px'}
@@ -3116,42 +3116,42 @@  discard block
 block discarded – undo
3116 3116
 									<?php
3117 3117
 									}
3118 3118
 
3119
-									$arguments = $this->group_arguments( $this->arguments );
3120
-									$block_group_tabs = ! empty( $this->options['block_group_tabs'] ) ? $this->group_block_tabs( $this->options['block_group_tabs'], $arguments ) : array();
3119
+									$arguments = $this->group_arguments($this->arguments);
3120
+									$block_group_tabs = !empty($this->options['block_group_tabs']) ? $this->group_block_tabs($this->options['block_group_tabs'], $arguments) : array();
3121 3121
 
3122 3122
 									// Do we have sections?
3123 3123
 									$has_sections = $arguments == $this->arguments ? false : true;
3124 3124
 
3125
-									if($has_sections){
3125
+									if ($has_sections) {
3126 3126
 									$panel_count = 0;
3127 3127
 									$open_tab = '';
3128 3128
 
3129 3129
 									$open_tab_groups = array();
3130 3130
 									$used_tabs = array();
3131 3131
 
3132
-									foreach ( $arguments as $key => $args ) {
3132
+									foreach ($arguments as $key => $args) {
3133 3133
 										$close_tab = false;
3134 3134
 										$close_tabs = false;
3135 3135
 
3136
-										 if ( ! empty( $block_group_tabs ) ) {
3137
-											foreach ( $block_group_tabs as $tab_name => $tab_args ) {
3138
-												if ( in_array( $key, $tab_args['groups'] ) ) {
3136
+										 if (!empty($block_group_tabs)) {
3137
+											foreach ($block_group_tabs as $tab_name => $tab_args) {
3138
+												if (in_array($key, $tab_args['groups'])) {
3139 3139
 													$open_tab_groups[] = $key;
3140 3140
 
3141
-													if ( $open_tab != $tab_name ) {
3141
+													if ($open_tab != $tab_name) {
3142 3142
 														$tab_args['tab']['tabs_open'] = $open_tab == '' ? true : false;
3143 3143
 														$tab_args['tab']['open'] = true;
3144 3144
 
3145
-														$this->block_tab_start( '', $tab_args );
3145
+														$this->block_tab_start('', $tab_args);
3146 3146
 														$open_tab = $tab_name;
3147 3147
 														$used_tabs[] = $tab_name;
3148 3148
 													}
3149 3149
 
3150
-													if ( $open_tab_groups == $tab_args['groups'] ) {
3150
+													if ($open_tab_groups == $tab_args['groups']) {
3151 3151
 														$close_tab = true;
3152 3152
 														$open_tab_groups = array();
3153 3153
 
3154
-														if ( $used_tabs == array_keys( $block_group_tabs ) ) {
3154
+														if ($used_tabs == array_keys($block_group_tabs)) {
3155 3155
 															$close_tabs = true;
3156 3156
 														}
3157 3157
 													}
@@ -3160,27 +3160,27 @@  discard block
 block discarded – undo
3160 3160
 										}
3161 3161
 										?>
3162 3162
 										el(wp.components.PanelBody, {
3163
-												title: '<?php esc_attr_e( $key ); ?>',
3164
-												initialOpen: <?php if ( $panel_count ) {
3163
+												title: '<?php esc_attr_e($key); ?>',
3164
+												initialOpen: <?php if ($panel_count) {
3165 3165
 												echo "false";
3166 3166
 											} else {
3167 3167
 												echo "true";
3168 3168
 											}?>
3169 3169
 											},
3170 3170
 											<?php
3171
-											foreach ( $args as $k => $a ) {
3172
-												$this->block_tab_start( $k, $a );
3173
-												$this->block_row_start( $k, $a );
3174
-												$this->build_block_arguments( $k, $a );
3175
-												$this->block_row_end( $k, $a );
3176
-												$this->block_tab_end( $k, $a );
3171
+											foreach ($args as $k => $a) {
3172
+												$this->block_tab_start($k, $a);
3173
+												$this->block_row_start($k, $a);
3174
+												$this->build_block_arguments($k, $a);
3175
+												$this->block_row_end($k, $a);
3176
+												$this->block_tab_end($k, $a);
3177 3177
 											}
3178 3178
 											?>
3179 3179
 										),
3180 3180
 										<?php
3181
-										$panel_count ++;
3181
+										$panel_count++;
3182 3182
 
3183
-										if($close_tab || $close_tabs){
3183
+										if ($close_tab || $close_tabs) {
3184 3184
 											$tab_args = array(
3185 3185
 												'tab'	=> array(
3186 3186
 													'tabs_close' => $close_tabs,
@@ -3188,24 +3188,24 @@  discard block
 block discarded – undo
3188 3188
 												)
3189 3189
 
3190 3190
 											);
3191
-											$this->block_tab_end( '', $tab_args );
3191
+											$this->block_tab_end('', $tab_args);
3192 3192
 //											echo '###close'; print_r($tab_args);
3193 3193
 											$panel_count = 0;
3194 3194
 										}
3195 3195
 //
3196 3196
 
3197 3197
 									}
3198
-									}else {
3198
+									} else {
3199 3199
 									?>
3200 3200
 									el(wp.components.PanelBody, {
3201
-											title: '<?php esc_attr_e( "Settings", 'ayecode-connect' ); ?>',
3201
+											title: '<?php esc_attr_e("Settings", 'ayecode-connect'); ?>',
3202 3202
 											initialOpen: true
3203 3203
 										},
3204 3204
 										<?php
3205
-										foreach ( $this->arguments as $key => $args ) {
3206
-											$this->block_row_start( $key, $args );
3207
-											$this->build_block_arguments( $key, $args );
3208
-											$this->block_row_end( $key, $args );
3205
+										foreach ($this->arguments as $key => $args) {
3206
+											$this->block_row_start($key, $args);
3207
+											$this->build_block_arguments($key, $args);
3208
+											$this->block_row_end($key, $args);
3209 3209
 										}
3210 3210
 										?>
3211 3211
 									),
@@ -3219,11 +3219,11 @@  discard block
 block discarded – undo
3219 3219
 
3220 3220
 								<?php
3221 3221
 								// If the user sets block-output array then build it
3222
-								if ( ! empty( $this->options['block-output'] ) ) {
3223
-								$this->block_element( $this->options['block-output'] );
3224
-							}elseif(!empty($this->options['block-edit-return'])){
3222
+								if (!empty($this->options['block-output'])) {
3223
+								$this->block_element($this->options['block-output']);
3224
+							}elseif (!empty($this->options['block-edit-return'])) {
3225 3225
 								   echo $this->options['block-edit-return'];
3226
-							}else{
3226
+							} else {
3227 3227
 								// if no block-output is set then we try and get the shortcode html output via ajax.
3228 3228
 								$block_edit_wrap_tag = !empty($this->options['block_edit_wrap_tag']) ? esc_attr($this->options['block_edit_wrap_tag']) : 'div';
3229 3229
 								?>
@@ -3250,27 +3250,27 @@  discard block
 block discarded – undo
3250 3250
 							var align = '';
3251 3251
 
3252 3252
 							// build the shortcode.
3253
-							var content = "[<?php echo $this->options['base_id'];?>";
3253
+							var content = "[<?php echo $this->options['base_id']; ?>";
3254 3254
 							$html = '';
3255 3255
 							<?php
3256 3256
 
3257
-							if(! empty( $this->arguments )){
3257
+							if (!empty($this->arguments)) {
3258 3258
 
3259
-							foreach($this->arguments as $key => $args){
3259
+							foreach ($this->arguments as $key => $args) {
3260 3260
 							   // if($args['type']=='tabs'){continue;}
3261 3261
 
3262 3262
 							   // don't add metadata arguments
3263
-							   if (substr($key, 0, 9 ) === 'metadata_') {
3263
+							   if (substr($key, 0, 9) === 'metadata_') {
3264 3264
 								   continue;
3265 3265
 							   }
3266 3266
 							?>
3267
-							if (attr.hasOwnProperty("<?php echo esc_attr( $key );?>")) {
3268
-								if ('<?php echo esc_attr( $key );?>' == 'html') {
3269
-									$html = attr.<?php echo esc_attr( $key );?>;
3270
-								} else if ('<?php echo esc_attr( $args['type'] );?>' == 'image_xy') {
3271
-									content += " <?php echo esc_attr( $key );?>='{x:" + attr.<?php echo esc_attr( $key );?>.x + ",y:"+attr.<?php echo esc_attr( $key );?>.y +"}' ";
3267
+							if (attr.hasOwnProperty("<?php echo esc_attr($key); ?>")) {
3268
+								if ('<?php echo esc_attr($key); ?>' == 'html') {
3269
+									$html = attr.<?php echo esc_attr($key); ?>;
3270
+								} else if ('<?php echo esc_attr($args['type']); ?>' == 'image_xy') {
3271
+									content += " <?php echo esc_attr($key); ?>='{x:" + attr.<?php echo esc_attr($key); ?>.x + ",y:"+attr.<?php echo esc_attr($key); ?>.y +"}' ";
3272 3272
 								} else {
3273
-									content += " <?php echo esc_attr( $key );?>='" + attr.<?php echo esc_attr( $key );?>.toString().replace('\'','&#39;') + "' ";
3273
+									content += " <?php echo esc_attr($key); ?>='" + attr.<?php echo esc_attr($key); ?>.toString().replace('\'','&#39;') + "' ";
3274 3274
 								}
3275 3275
 							}
3276 3276
 							<?php
@@ -3290,7 +3290,7 @@  discard block
 block discarded – undo
3290 3290
 							?>
3291 3291
 							// if has html element
3292 3292
 							if ($html) {
3293
-								//content += $html + "[/<?php echo $this->options['base_id'];?>]";
3293
+								//content += $html + "[/<?php echo $this->options['base_id']; ?>]";
3294 3294
 							}
3295 3295
 
3296 3296
 							// @todo should we add inline style here or just css classes?
@@ -3320,7 +3320,7 @@  discard block
 block discarded – undo
3320 3320
 //                                <x?php
3321 3321
 //							}else
3322 3322
 
3323
-							if(!empty($this->options['block-output'])){
3323
+							if (!empty($this->options['block-output'])) {
3324 3324
 //                               echo "return";
3325 3325
 //                               $this->block_element( $this->options['block-output'], true );
3326 3326
 //                               echo ";";
@@ -3330,30 +3330,30 @@  discard block
 block discarded – undo
3330 3330
 								   '',
3331 3331
 								   {},
3332 3332
 								  // el('', {dangerouslySetInnerHTML: {__html: content}}),
3333
-								   <?php $this->block_element( $this->options['block-output'], true ); ?>
3334
-								  // el('', {dangerouslySetInnerHTML: {__html: "[/<?php echo $this->options['base_id'];?>]"}})
3333
+								   <?php $this->block_element($this->options['block-output'], true); ?>
3334
+								  // el('', {dangerouslySetInnerHTML: {__html: "[/<?php echo $this->options['base_id']; ?>]"}})
3335 3335
 							   );
3336 3336
 								<?php
3337 3337
 
3338
-							}elseif(!empty($this->options['block-save-return'])){
3338
+							}elseif (!empty($this->options['block-save-return'])) {
3339 3339
 								   echo 'return ' . $this->options['block-save-return'];
3340
-							}elseif(!empty($this->options['nested-block'])){
3340
+							}elseif (!empty($this->options['nested-block'])) {
3341 3341
 								?>
3342 3342
 							  return el(
3343 3343
 								   '',
3344 3344
 								   {},
3345 3345
 								   el('', {dangerouslySetInnerHTML: {__html: content+"\n"}}),
3346 3346
 								   InnerBlocks.Content ? el( InnerBlocks.Content ) : '', // @todo i think we need a comma here
3347
-								 //  el('', {dangerouslySetInnerHTML: {__html: "[/<?php echo $this->options['base_id'];?>]"}})
3347
+								 //  el('', {dangerouslySetInnerHTML: {__html: "[/<?php echo $this->options['base_id']; ?>]"}})
3348 3348
 							   );
3349 3349
 								<?php
3350
-							}elseif(!empty( $this->options['block-save-return'] ) ){
3351
-								echo "return ". $this->options['block-edit-return'].";";
3352
-							}elseif(isset( $this->options['block-wrap'] ) && $this->options['block-wrap'] == ''){
3350
+							}elseif (!empty($this->options['block-save-return'])) {
3351
+								echo "return " . $this->options['block-edit-return'] . ";";
3352
+							}elseif (isset($this->options['block-wrap']) && $this->options['block-wrap'] == '') {
3353 3353
 							?>
3354 3354
 							return content;
3355 3355
 							<?php
3356
-							}else{
3356
+							} else {
3357 3357
 							?>
3358 3358
 							var block_wrap = 'div';
3359 3359
 							if (attr.hasOwnProperty("block_wrap")) {
@@ -3382,48 +3382,48 @@  discard block
 block discarded – undo
3382 3382
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
3383 3383
 			 */
3384 3384
 
3385
-			return str_replace( array(
3385
+			return str_replace(array(
3386 3386
 				'<script>',
3387 3387
 				'</script>'
3388
-			), '', $output );
3388
+			), '', $output);
3389 3389
 		}
3390 3390
 
3391 3391
 
3392 3392
 
3393
-		public function block_row_start($key, $args){
3393
+		public function block_row_start($key, $args) {
3394 3394
 
3395 3395
 			// check for row
3396
-			if(!empty($args['row'])){
3396
+			if (!empty($args['row'])) {
3397 3397
 
3398
-				if(!empty($args['row']['open'])){
3398
+				if (!empty($args['row']['open'])) {
3399 3399
 
3400 3400
 				// element require
3401
-				$element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3402
-				$device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3403
-				$device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3401
+				$element_require = !empty($args['element_require']) ? $this->block_props_replace($args['element_require'], true) . " && " : "";
3402
+				$device_type = !empty($args['device_type']) ? esc_attr($args['device_type']) : '';
3403
+				$device_type_require = !empty($args['device_type']) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3404 3404
 				$device_type_icon = '';
3405
-				if($device_type=='Desktop'){
3405
+				if ($device_type == 'Desktop') {
3406 3406
 					$device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3407
-				}elseif($device_type=='Tablet'){
3407
+				}elseif ($device_type == 'Tablet') {
3408 3408
 					$device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3409
-				}elseif($device_type=='Mobile'){
3409
+				}elseif ($device_type == 'Mobile') {
3410 3410
 					$device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3411 3411
 				}
3412 3412
 				echo $element_require;
3413 3413
 				echo $device_type_require;
3414 3414
 
3415
-					if(false){?><script><?php }?>
3415
+					if (false) {?><script><?php }?>
3416 3416
 						el('div', {
3417 3417
 								className: 'bsui components-base-control',
3418 3418
 							},
3419
-							<?php if(!empty($args['row']['title'])){ ?>
3419
+							<?php if (!empty($args['row']['title'])) { ?>
3420 3420
 							el('label', {
3421 3421
 									className: 'components-base-control__label position-relative',
3422 3422
 									style: {width:"100%"}
3423 3423
 								},
3424
-								el('span',{dangerouslySetInnerHTML: {__html: '<?php echo addslashes( $args['row']['title'] ) ?>'}}),
3425
-								<?php if($device_type_icon){ ?>
3426
-									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)"}})
3424
+								el('span',{dangerouslySetInnerHTML: {__html: '<?php echo addslashes($args['row']['title']) ?>'}}),
3425
+								<?php if ($device_type_icon) { ?>
3426
+									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)"}})
3427 3427
 								<?php
3428 3428
 								}
3429 3429
 								?>
@@ -3431,17 +3431,17 @@  discard block
 block discarded – undo
3431 3431
 
3432 3432
 							),
3433 3433
 							<?php }?>
3434
-							<?php if(!empty($args['row']['desc'])){ ?>
3434
+							<?php if (!empty($args['row']['desc'])) { ?>
3435 3435
 							el('p', {
3436 3436
 									className: 'components-base-control__help mb-0',
3437 3437
 								},
3438
-								'<?php echo addslashes( $args['row']['desc'] ); ?>'
3438
+								'<?php echo addslashes($args['row']['desc']); ?>'
3439 3439
 							),
3440 3440
 							<?php }?>
3441 3441
 							el(
3442 3442
 								'div',
3443 3443
 								{
3444
-									className: 'row mb-n2 <?php if(!empty($args['row']['class'])){ echo esc_attr($args['row']['class']);} ?>',
3444
+									className: 'row mb-n2 <?php if (!empty($args['row']['class'])) { echo esc_attr($args['row']['class']); } ?>',
3445 3445
 								},
3446 3446
 								el(
3447 3447
 									'div',
@@ -3450,36 +3450,36 @@  discard block
 block discarded – undo
3450 3450
 									},
3451 3451
 
3452 3452
 					<?php
3453
-					if(false){?></script><?php }
3454
-				}elseif(!empty($args['row']['close'])){
3455
-					if(false){?><script><?php }?>
3453
+					if (false) {?></script><?php }
3454
+				}elseif (!empty($args['row']['close'])) {
3455
+					if (false) {?><script><?php }?>
3456 3456
 						el(
3457 3457
 							'div',
3458 3458
 							{
3459 3459
 								className: 'col pl-0 ps-0',
3460 3460
 							},
3461 3461
 					<?php
3462
-					if(false){?></script><?php }
3463
-				}else{
3464
-					if(false){?><script><?php }?>
3462
+					if (false) {?></script><?php }
3463
+				} else {
3464
+					if (false) {?><script><?php }?>
3465 3465
 						el(
3466 3466
 							'div',
3467 3467
 							{
3468 3468
 								className: 'col pl-0 ps-0 pr-2 pe-2',
3469 3469
 							},
3470 3470
 					<?php
3471
-					if(false){?></script><?php }
3471
+					if (false) {?></script><?php }
3472 3472
 				}
3473 3473
 
3474 3474
 			}
3475 3475
 
3476 3476
 		}
3477 3477
 
3478
-		public function block_row_end($key, $args){
3478
+		public function block_row_end($key, $args) {
3479 3479
 
3480
-			if(!empty($args['row'])){
3480
+			if (!empty($args['row'])) {
3481 3481
 				// maybe close
3482
-				if(!empty($args['row']['close'])){
3482
+				if (!empty($args['row']['close'])) {
3483 3483
 					echo "))";
3484 3484
 				}
3485 3485
 
@@ -3487,14 +3487,14 @@  discard block
 block discarded – undo
3487 3487
 			}
3488 3488
 		}
3489 3489
 
3490
-		public function block_tab_start($key, $args){
3490
+		public function block_tab_start($key, $args) {
3491 3491
 
3492 3492
 			// check for row
3493
-			if(!empty($args['tab'])){
3493
+			if (!empty($args['tab'])) {
3494 3494
 
3495
-				if(!empty($args['tab']['tabs_open'])){
3495
+				if (!empty($args['tab']['tabs_open'])) {
3496 3496
 
3497
-					if(false){?><script><?php }?>
3497
+					if (false) {?><script><?php }?>
3498 3498
 
3499 3499
 el('div',{className: 'bsui'},
3500 3500
 
@@ -3503,52 +3503,52 @@  discard block
 block discarded – undo
3503 3503
 									{
3504 3504
 										activeClass: 'is-active',
3505 3505
 										className: 'btn-groupx',
3506
-										initialTabName: '<?php echo addslashes( esc_attr( $args['tab']['key']) ); ?>',
3506
+										initialTabName: '<?php echo addslashes(esc_attr($args['tab']['key'])); ?>',
3507 3507
 										tabs: [
3508 3508
 
3509 3509
 					<?php
3510
-					if(false){?></script><?php }
3510
+					if (false) {?></script><?php }
3511 3511
 				}
3512 3512
 
3513
-				if(!empty($args['tab']['open'])){
3513
+				if (!empty($args['tab']['open'])) {
3514 3514
 
3515
-					if(false){?><script><?php }?>
3515
+					if (false) {?><script><?php }?>
3516 3516
 							{
3517
-												name: '<?php echo addslashes( esc_attr( $args['tab']['key']) ); ?>',
3518
-												title: el('div', {dangerouslySetInnerHTML: {__html: '<?php echo addslashes( esc_attr( $args['tab']['title']) ); ?>'}}),
3519
-												className: '<?php echo addslashes( esc_attr( $args['tab']['class']) ); ?>',
3520
-												content: el('div',{}, <?php if(!empty($args['tab']['desc'])){ ?>el('p', {
3517
+												name: '<?php echo addslashes(esc_attr($args['tab']['key'])); ?>',
3518
+												title: el('div', {dangerouslySetInnerHTML: {__html: '<?php echo addslashes(esc_attr($args['tab']['title'])); ?>'}}),
3519
+												className: '<?php echo addslashes(esc_attr($args['tab']['class'])); ?>',
3520
+												content: el('div',{}, <?php if (!empty($args['tab']['desc'])) { ?>el('p', {
3521 3521
 									className: 'components-base-control__help mb-0',
3522
-									dangerouslySetInnerHTML: {__html:'<?php echo addslashes( $args['tab']['desc'] ); ?>'}
3522
+									dangerouslySetInnerHTML: {__html:'<?php echo addslashes($args['tab']['desc']); ?>'}
3523 3523
 								}),<?php }
3524
-					if(false){?></script><?php }
3524
+					if (false) {?></script><?php }
3525 3525
 				}
3526 3526
 
3527 3527
 			}
3528 3528
 
3529 3529
 		}
3530 3530
 
3531
-		public function block_tab_end($key, $args){
3531
+		public function block_tab_end($key, $args) {
3532 3532
 
3533
-			if(!empty($args['tab'])){
3533
+			if (!empty($args['tab'])) {
3534 3534
 				// maybe close
3535
-				if(!empty($args['tab']['close'])){
3535
+				if (!empty($args['tab']['close'])) {
3536 3536
 					echo ")}, /* tab close */";
3537 3537
 				}
3538 3538
 
3539
-				if(!empty($args['tab']['tabs_close'])){
3540
-					if(false){?><script><?php }?>
3539
+				if (!empty($args['tab']['tabs_close'])) {
3540
+					if (false) {?><script><?php }?>
3541 3541
 						]}, ( tab ) => {
3542 3542
 								return tab.content;
3543 3543
 							}
3544 3544
 						)), /* tabs close */
3545
-					<?php if(false){ ?></script><?php }
3545
+					<?php if (false) { ?></script><?php }
3546 3546
 				}
3547 3547
 			}
3548 3548
 		}
3549 3549
 
3550
-		public function build_block_arguments( $key, $args ) {
3551
-			$custom_attributes = ! empty( $args['custom_attributes'] ) ? $this->array_to_attributes( $args['custom_attributes'] ) : '';
3550
+		public function build_block_arguments($key, $args) {
3551
+			$custom_attributes = !empty($args['custom_attributes']) ? $this->array_to_attributes($args['custom_attributes']) : '';
3552 3552
 			$options           = '';
3553 3553
 			$extra             = '';
3554 3554
 			$require           = '';
@@ -3556,28 +3556,28 @@  discard block
 block discarded – undo
3556 3556
 			$after_elements	   = '';
3557 3557
 
3558 3558
 			// `content` is a protected and special argument
3559
-			if ( $key == 'content' ) {
3559
+			if ($key == 'content') {
3560 3560
 				return;
3561 3561
 			}
3562 3562
 
3563
-			$device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3564
-			$device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3563
+			$device_type = !empty($args['device_type']) ? esc_attr($args['device_type']) : '';
3564
+			$device_type_require = !empty($args['device_type']) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3565 3565
 			$device_type_icon = '';
3566
-			if($device_type=='Desktop'){
3566
+			if ($device_type == 'Desktop') {
3567 3567
 				$device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3568
-			}elseif($device_type=='Tablet'){
3568
+			}elseif ($device_type == 'Tablet') {
3569 3569
 				$device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3570
-			}elseif($device_type=='Mobile'){
3570
+			}elseif ($device_type == 'Mobile') {
3571 3571
 				$device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3572 3572
 			}
3573 3573
 
3574 3574
 			// icon
3575 3575
 			$icon = '';
3576
-			if( !empty( $args['icon'] ) ){
3576
+			if (!empty($args['icon'])) {
3577 3577
 				$icon .= "el('div', {";
3578
-									$icon .= "dangerouslySetInnerHTML: {__html: '".self::get_widget_icon( esc_attr($args['icon']))."'},";
3578
+									$icon .= "dangerouslySetInnerHTML: {__html: '" . self::get_widget_icon(esc_attr($args['icon'])) . "'},";
3579 3579
 									$icon .= "className: 'text-center',";
3580
-									$icon .= "title: '".addslashes( $args['title'] )."',";
3580
+									$icon .= "title: '" . addslashes($args['title']) . "',";
3581 3581
 								$icon .= "}),";
3582 3582
 
3583 3583
 				// blank title as its added to the icon.
@@ -3585,27 +3585,27 @@  discard block
 block discarded – undo
3585 3585
 			}
3586 3586
 
3587 3587
 			// require advanced
3588
-			$require_advanced = ! empty( $args['advanced'] ) ? "props.attributes.show_advanced && " : "";
3588
+			$require_advanced = !empty($args['advanced']) ? "props.attributes.show_advanced && " : "";
3589 3589
 
3590 3590
 			// element require
3591
-			$element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3591
+			$element_require = !empty($args['element_require']) ? $this->block_props_replace($args['element_require'], true) . " && " : "";
3592 3592
 
3593 3593
 
3594 3594
 			$onchange  = "props.setAttributes({ $key: $key } )";
3595
-			$onchangecomplete  = "";
3595
+			$onchangecomplete = "";
3596 3596
 			$value     = "props.attributes.$key";
3597
-			$text_type = array( 'text', 'password', 'number', 'email', 'tel', 'url', 'colorx','range' );
3598
-			if ( in_array( $args['type'], $text_type ) ) {
3597
+			$text_type = array('text', 'password', 'number', 'email', 'tel', 'url', 'colorx', 'range');
3598
+			if (in_array($args['type'], $text_type)) {
3599 3599
 				$type = 'TextControl';
3600 3600
 				// Save numbers as numbers and not strings
3601
-				if ( $args['type'] == 'number' ) {
3601
+				if ($args['type'] == 'number') {
3602 3602
 					$onchange = "props.setAttributes({ $key: $key ? Number($key) : '' } )";
3603 3603
 				}
3604 3604
 
3605
-				if (substr($key, 0, 9 ) === 'metadata_') {
3606
-					$real_key = str_replace('metadata_','', $key );
3605
+				if (substr($key, 0, 9) === 'metadata_') {
3606
+					$real_key = str_replace('metadata_', '', $key);
3607 3607
 					$onchange = "props.setAttributes({ metadata: { $real_key: $key } } )";
3608
-					$value     = "props.attributes.metadata && props.attributes.metadata.$real_key ? props.attributes.metadata.$real_key : ''";
3608
+					$value = "props.attributes.metadata && props.attributes.metadata.$real_key ? props.attributes.metadata.$real_key : ''";
3609 3609
 				}
3610 3610
 			}
3611 3611
 //			else if ( $args['type'] == 'popup' ) {
@@ -3625,12 +3625,12 @@  discard block
 block discarded – undo
3625 3625
 //
3626 3626
 //				$value     = "props.attributes.$key ? props.attributes.$key : ''";
3627 3627
 //			}
3628
-			else if ( $args['type'] == 'styleid' ) {
3628
+			else if ($args['type'] == 'styleid') {
3629 3629
 				$type = 'TextControl';
3630 3630
 				$args['type'] == 'text';
3631 3631
 				// Save numbers as numbers and not strings
3632
-				$value     = "props.attributes.$key ? props.attributes.$key : ''";
3633
-			}else if ( $args['type'] == 'notice' ) {
3632
+				$value = "props.attributes.$key ? props.attributes.$key : ''";
3633
+			} else if ($args['type'] == 'notice') {
3634 3634
 
3635 3635
 				$notice_message = !empty($args['desc']) ? addslashes($args['desc']) : '';
3636 3636
 				$notice_status = !empty($args['status']) ? esc_attr($args['status']) : 'info';
@@ -3692,11 +3692,11 @@  discard block
 block discarded – undo
3692 3692
 							return;
3693 3693
 						}
3694 3694
 */
3695
-			elseif ( $args['type'] == 'color' ) {
3695
+			elseif ($args['type'] == 'color') {
3696 3696
 				$type = 'ColorPicker';
3697 3697
 				$onchange = "";
3698 3698
 				$extra = "color: $value,";
3699
-				if(!empty($args['disable_alpha'])){
3699
+				if (!empty($args['disable_alpha'])) {
3700 3700
 					$extra .= "disableAlpha: true,";
3701 3701
 				}
3702 3702
 				$onchangecomplete = "onChangeComplete: function($key) {
@@ -3705,7 +3705,7 @@  discard block
 block discarded – undo
3705 3705
 							$key: value
3706 3706
 						});
3707 3707
 					},";
3708
-			}elseif ( $args['type'] == 'gradient' ) {
3708
+			}elseif ($args['type'] == 'gradient') {
3709 3709
 				$type = 'GradientPicker';
3710 3710
 				$extra .= "gradients: [{
3711 3711
 			name: 'Vivid cyan blue to vivid purple',
@@ -3744,7 +3744,7 @@  discard block
 block discarded – undo
3744 3744
 			slug: 'cool-to-warm-spectrum',
3745 3745
 		}],";
3746 3746
 
3747
-			}elseif ( $args['type'] == 'image' ) {
3747
+			}elseif ($args['type'] == 'image') {
3748 3748
 //                print_r($args);
3749 3749
 
3750 3750
 				$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,{
@@ -3806,7 +3806,7 @@  discard block
 block discarded – undo
3806 3806
 				$onchange = "";
3807 3807
 
3808 3808
 				//$inside_elements = ",el('div',{},'file upload')";
3809
-			} else if ( $args['type'] == 'images' ) {
3809
+			} else if ($args['type'] == 'images') {
3810 3810
 				$img_preview = "props.attributes.$key && (function() {
3811 3811
 	let uploads = JSON.parse('['+props.attributes.$key+']');
3812 3812
 	let images = [];
@@ -3819,7 +3819,7 @@  discard block
 block discarded – undo
3819 3819
 			el('i',{
3820 3820
 				className: 'fas fa-times-circle text-danger position-absolute  ml-n2 mt-n1 bg-white rounded-circle c-pointer',
3821 3821
 				onClick: function() {
3822
-					aui_confirm('".esc_attr__('Are you sure?')."', '".esc_attr__('Delete')."', '".esc_attr__('Cancel')."', true).then(function(confirmed) {
3822
+					aui_confirm('" . esc_attr__('Are you sure?') . "', '" . esc_attr__('Delete') . "', '" . esc_attr__('Cancel') . "', true).then(function(confirmed) {
3823 3823
 						if (confirmed) {
3824 3824
 							let new_uploads = JSON.parse('['+props.attributes.$key+']');
3825 3825
 							new_uploads.splice(index, 1);
@@ -3882,36 +3882,36 @@  discard block
 block discarded – undo
3882 3882
 
3883 3883
 				//$inside_elements = ",el('div',{},'file upload')";
3884 3884
 			}
3885
-			elseif ( $args['type'] == 'checkbox' ) {
3885
+			elseif ($args['type'] == 'checkbox') {
3886 3886
 				$type = 'CheckboxControl';
3887 3887
 				$extra .= "checked: props.attributes.$key,";
3888 3888
 				$onchange = "props.setAttributes({ $key: ! props.attributes.$key } )";
3889
-			} elseif ( $args['type'] == 'textarea' ) {
3889
+			} elseif ($args['type'] == 'textarea') {
3890 3890
 				$type = 'TextareaControl';
3891 3891
 
3892
-			} elseif ( $args['type'] == 'select' || $args['type'] == 'multiselect' ) {
3892
+			} elseif ($args['type'] == 'select' || $args['type'] == 'multiselect') {
3893 3893
 				$type = 'SelectControl';
3894 3894
 
3895
-				if($args['name'] == 'category' && !empty($args['post_type_linked'])){
3896
-					$options .= "options: taxonomies_".str_replace("-","_", $this->id).",";
3897
-				}elseif($args['name'] == 'sort_by' && !empty($args['post_type_linked'])){
3898
-					$options .= "options: sort_by_".str_replace("-","_", $this->id).",";
3899
-				}else {
3895
+				if ($args['name'] == 'category' && !empty($args['post_type_linked'])) {
3896
+					$options .= "options: taxonomies_" . str_replace("-", "_", $this->id) . ",";
3897
+				}elseif ($args['name'] == 'sort_by' && !empty($args['post_type_linked'])) {
3898
+					$options .= "options: sort_by_" . str_replace("-", "_", $this->id) . ",";
3899
+				} else {
3900 3900
 
3901
-					if ( ! empty( $args['options'] ) ) {
3901
+					if (!empty($args['options'])) {
3902 3902
 						$options .= "options: [";
3903
-						foreach ( $args['options'] as $option_val => $option_label ) {
3904
-							$options .= "{ value: '" . esc_attr( $option_val ) . "', label: '" . esc_js( addslashes( $option_label ) ) . "' },";
3903
+						foreach ($args['options'] as $option_val => $option_label) {
3904
+							$options .= "{ value: '" . esc_attr($option_val) . "', label: '" . esc_js(addslashes($option_label)) . "' },";
3905 3905
 						}
3906 3906
 						$options .= "],";
3907 3907
 					}
3908 3908
 				}
3909
-				if ( isset( $args['multiple'] ) && $args['multiple'] ) { //@todo multiselect does not work at the moment: https://github.com/WordPress/gutenberg/issues/5550
3909
+				if (isset($args['multiple']) && $args['multiple']) { //@todo multiselect does not work at the moment: https://github.com/WordPress/gutenberg/issues/5550
3910 3910
 					$extra .= ' multiple:true,style:{height:"auto",paddingRight:"8px","overflow-y":"auto"}, ';
3911 3911
 				}
3912 3912
 
3913
-				if($args['type'] == 'multiselect' ||  ( isset( $args['multiple'] ) && $args['multiple'] ) ){
3914
-					$after_elements	 .= "props.attributes.$key && el( wp.components.Button, {
3913
+				if ($args['type'] == 'multiselect' || (isset($args['multiple']) && $args['multiple'])) {
3914
+					$after_elements .= "props.attributes.$key && el( wp.components.Button, {
3915 3915
 									  className: 'components-button components-circular-option-picker__clear is-secondary is-small',
3916 3916
 									  style: {margin:'-8px 0 8px 0',display: 'block'},
3917 3917
 									  onClick: function(){
@@ -3923,7 +3923,7 @@  discard block
 block discarded – undo
3923 3923
 									'Clear'
3924 3924
 							),";
3925 3925
 				}
3926
-			} elseif ( $args['type'] == 'tagselect' ) {
3926
+			} elseif ($args['type'] == 'tagselect') {
3927 3927
 //				$type = 'FormTokenField';
3928 3928
 //
3929 3929
 //				if ( ! empty( $args['options'] ) ) {
@@ -3958,19 +3958,19 @@  discard block
 block discarded – undo
3958 3958
 //				$value     = "[]";
3959 3959
 //				$extra .= ' __experimentalExpandOnFocus: true,';
3960 3960
 
3961
-			} else if ( $args['type'] == 'alignment' ) {
3961
+			} else if ($args['type'] == 'alignment') {
3962 3962
 				$type = 'AlignmentToolbar'; // @todo this does not seem to work but cant find a example
3963
-			} else if ( $args['type'] == 'margins' ) {
3963
+			} else if ($args['type'] == 'margins') {
3964 3964
 
3965
-			} else if ( $args['type'] == 'visibility_conditions' && ( function_exists( 'wp_is_block_theme' ) && wp_is_block_theme() ) ) {
3965
+			} else if ($args['type'] == 'visibility_conditions' && (function_exists('wp_is_block_theme') && wp_is_block_theme())) {
3966 3966
 				$type = 'TextControl';
3967 3967
 				$value = "(props.attributes.$key ? props.attributes.$key : '')";
3968 3968
 				$args['type'] = 'text';
3969 3969
 				$options .= 'disabled:true,';
3970
-				$bsvc_title = esc_attr( addslashes( $args['title'] ) );
3971
-				$bsvc_body = $this->block_visibility_fields( $args );
3970
+				$bsvc_title = esc_attr(addslashes($args['title']));
3971
+				$bsvc_body = $this->block_visibility_fields($args);
3972 3972
 				// @TODO reset button
3973
-				$bsvc_footer = '<button type="button" class="btn btn-danger d-none">' . __( 'Reset', 'ayecode-connect' ) . '</button><button type="button" class="btn btn-secondary bs-vc-close text-white" data-bs-dismiss="modal">' . __( 'Close', 'ayecode-connect' ) . '</button><button type="button" class="btn btn-primary bs-vc-save">' . __( 'Save Rules', 'ayecode-connect' ) . '</button>';
3973
+				$bsvc_footer = '<button type="button" class="btn btn-danger d-none">' . __('Reset', 'ayecode-connect') . '</button><button type="button" class="btn btn-secondary bs-vc-close text-white" data-bs-dismiss="modal">' . __('Close', 'ayecode-connect') . '</button><button type="button" class="btn btn-primary bs-vc-save">' . __('Save Rules', 'ayecode-connect') . '</button>';
3974 3974
 				$after_elements .= "el('div', {className: 'components-base-control bs-vc-button-wrap'}, el(wp.components.Button, {
3975 3975
 						className: 'components-button components-circular-option-picker__clear is-primary is-smallx',
3976 3976
 						onClick: function() {
@@ -3989,25 +3989,25 @@  discard block
 block discarded – undo
3989 3989
 									jQuery('.bs-vc-modal-form').trigger('change');
3990 3990
 								}
3991 3991
 							});
3992
-							aui_modal('" . $bsvc_title . "', '" . addslashes( $bsvc_body ) . "', '" . $bsvc_footer . "', true, 'bs-vc-modal', 'modal-lg', '');
3992
+							aui_modal('" . $bsvc_title . "', '" . addslashes($bsvc_body) . "', '" . $bsvc_footer . "', true, 'bs-vc-modal', 'modal-lg', '');
3993 3993
 							jQuery(document).off('change', '#bsvc_raw_value').on('change', '#bsvc_raw_value', function(e) {
3994 3994
 								props.setAttributes({" . $key . ": e.target.value});
3995 3995
 							});
3996 3996
 						}
3997 3997
 					},
3998
-					'" . addslashes( ! empty( $args['button_title'] ) ? $args['button_title'] : $args['title'] ) . "'
3998
+					'" . addslashes(!empty($args['button_title']) ? $args['button_title'] : $args['title']) . "'
3999 3999
 				) ),";
4000 4000
 			} else {
4001
-				return;// if we have not implemented the control then don't break the JS.
4001
+				return; // if we have not implemented the control then don't break the JS.
4002 4002
 			}
4003 4003
 
4004 4004
 			// color input does not show the labels so we add them
4005
-			if($args['type']=='color'){
4005
+			if ($args['type'] == 'color') {
4006 4006
 				// add show only if advanced
4007 4007
 				echo $require_advanced;
4008 4008
 				// add setting require if defined
4009 4009
 				echo $element_require;
4010
-				echo "el('div', {style: {'marginBottom': '8px'}}, '".addslashes( $args['title'] )."'),";
4010
+				echo "el('div', {style: {'marginBottom': '8px'}}, '" . addslashes($args['title']) . "'),";
4011 4011
 			}
4012 4012
 
4013 4013
 			// add show only if advanced
@@ -4019,22 +4019,22 @@  discard block
 block discarded – undo
4019 4019
 			// icon
4020 4020
 			echo $icon;
4021 4021
 			?>
4022
-			el( <?php echo $args['type'] == 'image' || $args['type'] == 'images' ? $type  : "wp.components.".$type; ?>, {
4023
-			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
4024
-			} else { ?>'<?php echo addslashes( trim( esc_html( $args['title'] ) ) ); ?>'<?php } ?>,
4025
-			help: <?php echo ( isset( $args['desc'] ) ? "el('span', {dangerouslySetInnerHTML: {__html: '" . trim( wp_kses_post( addslashes( $args['desc'] ) ) ) . "'}})" : "''" ); ?>,
4022
+			el( <?php echo $args['type'] == 'image' || $args['type'] == 'images' ? $type : "wp.components." . $type; ?>, {
4023
+			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
4024
+			} else { ?>'<?php echo addslashes(trim(esc_html($args['title']))); ?>'<?php } ?>,
4025
+			help: <?php echo (isset($args['desc']) ? "el('span', {dangerouslySetInnerHTML: {__html: '" . trim(wp_kses_post(addslashes($args['desc']))) . "'}})" : "''"); ?>,
4026 4026
 			value: <?php echo $value; ?>,
4027
-			<?php if ( $type == 'TextControl' && $args['type'] != 'text' ) {
4028
-				echo "type: '" . addslashes( $args['type'] ) . "',";
4027
+			<?php if ($type == 'TextControl' && $args['type'] != 'text') {
4028
+				echo "type: '" . addslashes($args['type']) . "',";
4029 4029
 			} ?>
4030
-			<?php if ( ! empty( $args['placeholder'] ) ) {
4031
-				echo "placeholder: '" . esc_js( addslashes( trim( esc_html( $args['placeholder'] ) ) ) ) . "',";
4030
+			<?php if (!empty($args['placeholder'])) {
4031
+				echo "placeholder: '" . esc_js(addslashes(trim(esc_html($args['placeholder'])))) . "',";
4032 4032
 			} ?>
4033 4033
 			<?php echo $options; ?>
4034 4034
 			<?php echo $extra; ?>
4035 4035
 			<?php echo $custom_attributes; ?>
4036 4036
 			<?php echo $onchangecomplete; ?>
4037
-			<?php if ( $onchange ) { ?>
4037
+			<?php if ($onchange) { ?>
4038 4038
 			onChange: function ( <?php echo $key; ?> ) {
4039 4039
 				<?php echo $onchange; ?>
4040 4040
 			}
@@ -4053,15 +4053,15 @@  discard block
 block discarded – undo
4053 4053
 		 *@todo there is prob a faster way to do this, also we could add some validation here.
4054 4054
 		 *
4055 4055
 		 */
4056
-		public function array_to_attributes( $custom_attributes, $html = false ) {
4056
+		public function array_to_attributes($custom_attributes, $html = false) {
4057 4057
 			$attributes = '';
4058
-			if ( ! empty( $custom_attributes ) ) {
4058
+			if (!empty($custom_attributes)) {
4059 4059
 
4060
-				foreach ( $custom_attributes as $key => $val ) {
4061
-					if(is_array($val)){
4062
-						$attributes .= $key.': {'.$this->array_to_attributes( $val, $html ).'},';
4063
-					}else{
4064
-						$attributes .= $html ?  " $key='$val' " : "'$key': '$val',";
4060
+				foreach ($custom_attributes as $key => $val) {
4061
+					if (is_array($val)) {
4062
+						$attributes .= $key . ': {' . $this->array_to_attributes($val, $html) . '},';
4063
+					} else {
4064
+						$attributes .= $html ? " $key='$val' " : "'$key': '$val',";
4065 4065
 					}
4066 4066
 				}
4067 4067
 
@@ -4079,113 +4079,113 @@  discard block
 block discarded – undo
4079 4079
 		 *
4080 4080
 		 * @param $args
4081 4081
 		 */
4082
-		public function block_element( $args, $save = false ) {
4082
+		public function block_element($args, $save = false) {
4083 4083
 
4084 4084
 //            print_r($args);echo '###';exit;
4085 4085
 
4086
-			if ( ! empty( $args ) ) {
4087
-				foreach ( $args as $element => $new_args ) {
4086
+			if (!empty($args)) {
4087
+				foreach ($args as $element => $new_args) {
4088 4088
 
4089
-					if ( is_array( $new_args ) ) { // its an element
4089
+					if (is_array($new_args)) { // its an element
4090 4090
 
4091 4091
 
4092
-						if ( isset( $new_args['element'] ) ) {
4092
+						if (isset($new_args['element'])) {
4093 4093
 
4094
-							if ( isset( $new_args['element_require'] ) ) {
4095
-								echo str_replace( array(
4094
+							if (isset($new_args['element_require'])) {
4095
+								echo str_replace(array(
4096 4096
 										"'+",
4097 4097
 										"+'"
4098
-									), '', $this->block_props_replace( $new_args['element_require'] ) ) . " &&  ";
4099
-								unset( $new_args['element_require'] );
4098
+									), '', $this->block_props_replace($new_args['element_require'])) . " &&  ";
4099
+								unset($new_args['element_require']);
4100 4100
 							}
4101 4101
 
4102
-							if($new_args['element']=='InnerBlocks'){
4102
+							if ($new_args['element'] == 'InnerBlocks') {
4103 4103
 								echo "\n el( InnerBlocks, {";
4104
-							}elseif($new_args['element']=='innerBlocksProps'){
4104
+							}elseif ($new_args['element'] == 'innerBlocksProps') {
4105 4105
 								$element = isset($new_args['inner_element']) ? esc_attr($new_args['inner_element']) : 'div';
4106 4106
 							  //  echo "\n el( 'section', wp.blockEditor.useInnerBlocksProps( blockProps, {";
4107 4107
 //                                echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( ";
4108 4108
 								echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( ";
4109 4109
 								echo $save ? "wp.blockEditor.useBlockProps.save( {" : "wp.blockEditor.useBlockProps( {";
4110
-								echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : '';
4110
+								echo !empty($new_args['blockProps']) ? $this->block_element($new_args['blockProps'], $save) : '';
4111 4111
 
4112 4112
 								echo "} ), {";
4113
-								echo !empty($new_args['innerBlocksProps']) && !$save ? $this->block_element( $new_args['innerBlocksProps'],$save ) : '';
4113
+								echo !empty($new_args['innerBlocksProps']) && !$save ? $this->block_element($new_args['innerBlocksProps'], $save) : '';
4114 4114
 							//    echo '###';
4115 4115
 
4116 4116
 							  //  echo '###';
4117
-							}elseif($new_args['element']=='BlocksProps'){
4117
+							}elseif ($new_args['element'] == 'BlocksProps') {
4118 4118
 
4119
-								if ( isset($new_args['if_inner_element']) ) {
4119
+								if (isset($new_args['if_inner_element'])) {
4120 4120
 									$element = $new_args['if_inner_element'];
4121
-								}else {
4122
-									$element = isset($new_args['inner_element']) ? "'".esc_attr($new_args['inner_element'])."'" : "'div'";
4121
+								} else {
4122
+									$element = isset($new_args['inner_element']) ? "'" . esc_attr($new_args['inner_element']) . "'" : "'div'";
4123 4123
 								}
4124 4124
 
4125 4125
 								unset($new_args['inner_element']);
4126 4126
 								echo $save ? "\n el( $element, wp.blockEditor.useBlockProps.save( {" : "\n el( $element, wp.blockEditor.useBlockProps( {";
4127
-								echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : '';
4127
+								echo !empty($new_args['blockProps']) ? $this->block_element($new_args['blockProps'], $save) : '';
4128 4128
 
4129 4129
 
4130 4130
 							   // echo "} ),";
4131 4131
 
4132
-							}else{
4132
+							} else {
4133 4133
 								echo "\n el( '" . $new_args['element'] . "', {";
4134 4134
 							}
4135 4135
 
4136 4136
 
4137 4137
 							// get the attributes
4138
-							foreach ( $new_args as $new_key => $new_value ) {
4138
+							foreach ($new_args as $new_key => $new_value) {
4139 4139
 
4140 4140
 
4141
-								if ( $new_key == 'element' || $new_key == 'content'|| $new_key == 'if_content' || $new_key == 'element_require' || $new_key == 'element_repeat' || is_array( $new_value ) ) {
4141
+								if ($new_key == 'element' || $new_key == 'content' || $new_key == 'if_content' || $new_key == 'element_require' || $new_key == 'element_repeat' || is_array($new_value)) {
4142 4142
 									// do nothing
4143 4143
 								} else {
4144
-									echo $this->block_element( array( $new_key => $new_value ),$save );
4144
+									echo $this->block_element(array($new_key => $new_value), $save);
4145 4145
 								}
4146 4146
 							}
4147 4147
 
4148
-							echo $new_args['element']=='BlocksProps' ? '} ),' : "},";// end attributes
4148
+							echo $new_args['element'] == 'BlocksProps' ? '} ),' : "},"; // end attributes
4149 4149
 
4150 4150
 							// get the content
4151 4151
 							$first_item = 0;
4152
-							foreach ( $new_args as $new_key => $new_value ) {
4153
-								if ( $new_key === 'content' || $new_key === 'if_content' || is_array( $new_value ) ) {
4152
+							foreach ($new_args as $new_key => $new_value) {
4153
+								if ($new_key === 'content' || $new_key === 'if_content' || is_array($new_value)) {
4154 4154
 
4155
-									if ( $new_key === 'content' ) {
4156
-										echo "'" . $this->block_props_replace( wp_slash( $new_value ) ) . "'";
4157
-									}else if ( $new_key === 'if_content' ) {
4158
-										echo  $this->block_props_replace(  $new_value  );
4155
+									if ($new_key === 'content') {
4156
+										echo "'" . $this->block_props_replace(wp_slash($new_value)) . "'";
4157
+									} else if ($new_key === 'if_content') {
4158
+										echo  $this->block_props_replace($new_value);
4159 4159
 									}
4160 4160
 
4161
-									if ( is_array( $new_value ) ) {
4161
+									if (is_array($new_value)) {
4162 4162
 
4163
-										if ( isset( $new_value['element_require'] ) ) {
4164
-											echo str_replace( array(
4163
+										if (isset($new_value['element_require'])) {
4164
+											echo str_replace(array(
4165 4165
 													"'+",
4166 4166
 													"+'"
4167
-												), '', $this->block_props_replace( $new_value['element_require'] ) ) . " &&  ";
4168
-											unset( $new_value['element_require'] );
4167
+												), '', $this->block_props_replace($new_value['element_require'])) . " &&  ";
4168
+											unset($new_value['element_require']);
4169 4169
 										}
4170 4170
 
4171
-										if ( isset( $new_value['element_repeat'] ) ) {
4171
+										if (isset($new_value['element_repeat'])) {
4172 4172
 											$x = 1;
4173
-											while ( $x <= absint( $new_value['element_repeat'] ) ) {
4174
-												$this->block_element( array( '' => $new_value ),$save );
4175
-												$x ++;
4173
+											while ($x <= absint($new_value['element_repeat'])) {
4174
+												$this->block_element(array('' => $new_value), $save);
4175
+												$x++;
4176 4176
 											}
4177 4177
 										} else {
4178
-											$this->block_element( array( '' => $new_value ),$save );
4178
+											$this->block_element(array('' => $new_value), $save);
4179 4179
 										}
4180 4180
 									}
4181
-									$first_item ++;
4181
+									$first_item++;
4182 4182
 								}
4183 4183
 							}
4184 4184
 
4185
-							if($new_args['element']=='innerBlocksProps' || $new_args['element']=='xBlocksProps'){
4186
-								echo "))";// end content
4187
-							}else{
4188
-								echo ")";// end content
4185
+							if ($new_args['element'] == 'innerBlocksProps' || $new_args['element'] == 'xBlocksProps') {
4186
+								echo "))"; // end content
4187
+							} else {
4188
+								echo ")"; // end content
4189 4189
 							}
4190 4190
 
4191 4191
 
@@ -4194,26 +4194,26 @@  discard block
 block discarded – undo
4194 4194
 						}
4195 4195
 					} else {
4196 4196
 
4197
-						if ( substr( $element, 0, 3 ) === "if_" ) {
4197
+						if (substr($element, 0, 3) === "if_") {
4198 4198
 							$extra = '';
4199
-							if( strpos($new_args, '[%WrapClass%]') !== false ){
4200
-								$new_args = str_replace('[%WrapClass%]"','" + sd_build_aui_class(props.attributes)',$new_args);
4201
-								$new_args = str_replace('[%WrapClass%]','+ sd_build_aui_class(props.attributes)',$new_args);
4199
+							if (strpos($new_args, '[%WrapClass%]') !== false) {
4200
+								$new_args = str_replace('[%WrapClass%]"', '" + sd_build_aui_class(props.attributes)', $new_args);
4201
+								$new_args = str_replace('[%WrapClass%]', '+ sd_build_aui_class(props.attributes)', $new_args);
4202 4202
 							}
4203
-							echo str_replace( "if_", "", $element ) . ": " . $this->block_props_replace( $new_args, true ) . ",";
4204
-						} elseif ( $element == 'style' &&  strpos($new_args, '[%WrapStyle%]') !== false ) {
4205
-							$new_args = str_replace('[%WrapStyle%]','',$new_args);
4206
-							echo $element . ": {..." . $this->block_props_replace( $new_args ) . " , ...sd_build_aui_styles(props.attributes) },";
4203
+							echo str_replace("if_", "", $element) . ": " . $this->block_props_replace($new_args, true) . ",";
4204
+						} elseif ($element == 'style' && strpos($new_args, '[%WrapStyle%]') !== false) {
4205
+							$new_args = str_replace('[%WrapStyle%]', '', $new_args);
4206
+							echo $element . ": {..." . $this->block_props_replace($new_args) . " , ...sd_build_aui_styles(props.attributes) },";
4207 4207
 //                            echo $element . ": " . $this->block_props_replace( $new_args ) . ",";
4208
-						} elseif ( $element == 'style' ) {
4209
-							echo $element . ": " . $this->block_props_replace( $new_args ) . ",";
4210
-						} elseif ( ( $element == 'class' || $element == 'className'  ) &&  strpos($new_args, '[%WrapClass%]') !== false ) {
4211
-							$new_args = str_replace('[%WrapClass%]','',$new_args);
4212
-							echo $element . ": '" . $this->block_props_replace( $new_args ) . "' + sd_build_aui_class(props.attributes),";
4213
-						} elseif ( $element == 'template' && $new_args ) {
4208
+						} elseif ($element == 'style') {
4209
+							echo $element . ": " . $this->block_props_replace($new_args) . ",";
4210
+						} elseif (($element == 'class' || $element == 'className') && strpos($new_args, '[%WrapClass%]') !== false) {
4211
+							$new_args = str_replace('[%WrapClass%]', '', $new_args);
4212
+							echo $element . ": '" . $this->block_props_replace($new_args) . "' + sd_build_aui_class(props.attributes),";
4213
+						} elseif ($element == 'template' && $new_args) {
4214 4214
 							echo $element . ": $new_args,";
4215 4215
 						} else {
4216
-							echo $element . ": '" . $this->block_props_replace( $new_args ) . "',";
4216
+							echo $element . ": '" . $this->block_props_replace($new_args) . "',";
4217 4217
 						}
4218 4218
 
4219 4219
 					}
@@ -4228,11 +4228,11 @@  discard block
 block discarded – undo
4228 4228
 		 *
4229 4229
 		 * @return mixed
4230 4230
 		 */
4231
-		public function block_props_replace( $string, $no_wrap = false ) {
4232
-			if ( $no_wrap ) {
4233
-				$string = str_replace( array( "[%", "%]", "%:checked]" ), array( "props.attributes.", "", "" ), $string );
4231
+		public function block_props_replace($string, $no_wrap = false) {
4232
+			if ($no_wrap) {
4233
+				$string = str_replace(array("[%", "%]", "%:checked]"), array("props.attributes.", "", ""), $string);
4234 4234
 			} else {
4235
-				$string = str_replace( array( "![%", "[%", "%]", "%:checked]" ), array( "'+!props.attributes.", "'+props.attributes.", "+'", "+'" ), $string );
4235
+				$string = str_replace(array("![%", "[%", "%]", "%:checked]"), array("'+!props.attributes.", "'+props.attributes.", "+'", "+'"), $string);
4236 4236
 			}
4237 4237
 
4238 4238
 			return $string;
@@ -4244,65 +4244,65 @@  discard block
 block discarded – undo
4244 4244
 		 * @param array $args
4245 4245
 		 * @param array $instance
4246 4246
 		 */
4247
-		public function widget( $args, $instance ) {
4248
-			if ( ! is_array( $args ) ) {
4247
+		public function widget($args, $instance) {
4248
+			if (!is_array($args)) {
4249 4249
 				$args = array();
4250 4250
 			}
4251 4251
 
4252 4252
 			// Get the filtered values
4253
-			$argument_values = $this->argument_values( $instance );
4254
-			$argument_values = $this->string_to_bool( $argument_values );
4255
-			$output          = $this->output( $argument_values, $args );
4253
+			$argument_values = $this->argument_values($instance);
4254
+			$argument_values = $this->string_to_bool($argument_values);
4255
+			$output          = $this->output($argument_values, $args);
4256 4256
 
4257 4257
 			$no_wrap = false;
4258
-			if ( isset( $argument_values['no_wrap'] ) && $argument_values['no_wrap'] ) {
4258
+			if (isset($argument_values['no_wrap']) && $argument_values['no_wrap']) {
4259 4259
 				$no_wrap = true;
4260 4260
 			}
4261 4261
 
4262 4262
 			ob_start();
4263
-			if ( $output && ! $no_wrap ) {
4263
+			if ($output && !$no_wrap) {
4264 4264
 
4265 4265
 				$class_original = $this->options['widget_ops']['classname'];
4266
-				$class = $this->options['widget_ops']['classname']." sdel-".$this->get_instance_hash();
4266
+				$class = $this->options['widget_ops']['classname'] . " sdel-" . $this->get_instance_hash();
4267 4267
 
4268 4268
 				// Before widget
4269
-				$before_widget = ! empty( $args['before_widget'] ) ? $args['before_widget'] : '';
4270
-				$before_widget = $before_widget ? str_replace( $class_original, $class, $before_widget ) : $before_widget;
4271
-				$before_widget = apply_filters( 'wp_super_duper_before_widget', $before_widget, $args, $instance, $this );
4272
-				$before_widget = apply_filters( 'wp_super_duper_before_widget_' . $this->base_id, $before_widget, $args, $instance, $this );
4269
+				$before_widget = !empty($args['before_widget']) ? $args['before_widget'] : '';
4270
+				$before_widget = $before_widget ? str_replace($class_original, $class, $before_widget) : $before_widget;
4271
+				$before_widget = apply_filters('wp_super_duper_before_widget', $before_widget, $args, $instance, $this);
4272
+				$before_widget = apply_filters('wp_super_duper_before_widget_' . $this->base_id, $before_widget, $args, $instance, $this);
4273 4273
 
4274 4274
 				// After widget
4275
-				$after_widget = ! empty( $args['after_widget'] ) ? $args['after_widget'] : '';
4276
-				$after_widget = apply_filters( 'wp_super_duper_after_widget', $after_widget, $args, $instance, $this );
4277
-				$after_widget = apply_filters( 'wp_super_duper_after_widget_' . $this->base_id, $after_widget, $args, $instance, $this );
4275
+				$after_widget = !empty($args['after_widget']) ? $args['after_widget'] : '';
4276
+				$after_widget = apply_filters('wp_super_duper_after_widget', $after_widget, $args, $instance, $this);
4277
+				$after_widget = apply_filters('wp_super_duper_after_widget_' . $this->base_id, $after_widget, $args, $instance, $this);
4278 4278
 
4279 4279
 				echo $before_widget;
4280 4280
 				// elementor strips the widget wrapping div so we check for and add it back if needed
4281
-				if ( $this->is_elementor_widget_output() ) {
4281
+				if ($this->is_elementor_widget_output()) {
4282 4282
 					// Filter class & attrs for elementor widget output.
4283
-					$class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
4284
-					$class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
4283
+					$class = apply_filters('wp_super_duper_div_classname', $class, $args, $this);
4284
+					$class = apply_filters('wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this);
4285 4285
 
4286
-					$attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
4287
-					$attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
4286
+					$attrs = apply_filters('wp_super_duper_div_attrs', '', $args, $this);
4287
+					$attrs = apply_filters('wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this);
4288 4288
 
4289
-					echo "<span class='" . esc_attr( $class  ) . "' " . $attrs . ">";
4289
+					echo "<span class='" . esc_attr($class) . "' " . $attrs . ">";
4290 4290
 				}
4291
-				echo $this->output_title( $args, $instance );
4291
+				echo $this->output_title($args, $instance);
4292 4292
 				echo $output;
4293
-				if ( $this->is_elementor_widget_output() ) {
4293
+				if ($this->is_elementor_widget_output()) {
4294 4294
 					echo "</span>";
4295 4295
 				}
4296 4296
 				echo $after_widget;
4297
-			} elseif ( $this->is_preview() && $output == '' ) {// if preview show a placeholder if empty
4298
-				$output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
4297
+			} elseif ($this->is_preview() && $output == '') {// if preview show a placeholder if empty
4298
+				$output = $this->preview_placeholder_text("{{" . $this->base_id . "}}");
4299 4299
 				echo $output;
4300
-			} elseif ( $output && $no_wrap ) {
4300
+			} elseif ($output && $no_wrap) {
4301 4301
 				echo $output;
4302 4302
 			}
4303 4303
 			$output = ob_get_clean();
4304 4304
 
4305
-			$output = apply_filters( 'wp_super_duper_widget_output', $output, $instance, $args, $this );
4305
+			$output = apply_filters('wp_super_duper_widget_output', $output, $instance, $args, $this);
4306 4306
 
4307 4307
 			echo $output;
4308 4308
 		}
@@ -4315,7 +4315,7 @@  discard block
 block discarded – undo
4315 4315
 		 */
4316 4316
 		public function is_elementor_widget_output() {
4317 4317
 			$result = false;
4318
-			if ( defined( 'ELEMENTOR_VERSION' ) && isset( $this->number ) && $this->number == 'REPLACE_TO_ID' ) {
4318
+			if (defined('ELEMENTOR_VERSION') && isset($this->number) && $this->number == 'REPLACE_TO_ID') {
4319 4319
 				$result = true;
4320 4320
 			}
4321 4321
 
@@ -4330,7 +4330,7 @@  discard block
 block discarded – undo
4330 4330
 		 */
4331 4331
 		public function is_elementor_preview() {
4332 4332
 			$result = false;
4333
-			if ( isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' ) ) {
4333
+			if (isset($_REQUEST['elementor-preview']) || (is_admin() && isset($_REQUEST['action']) && $_REQUEST['action'] == 'elementor') || (isset($_REQUEST['action']) && $_REQUEST['action'] == 'elementor_ajax')) {
4334 4334
 				$result = true;
4335 4335
 			}
4336 4336
 
@@ -4345,7 +4345,7 @@  discard block
 block discarded – undo
4345 4345
 		 */
4346 4346
 		public function is_divi_preview() {
4347 4347
 			$result = false;
4348
-			if ( isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) ) {
4348
+			if (isset($_REQUEST['et_fb']) || isset($_REQUEST['et_pb_preview']) || (is_admin() && isset($_REQUEST['action']) && $_REQUEST['action'] == 'elementor')) {
4349 4349
 				$result = true;
4350 4350
 			}
4351 4351
 
@@ -4360,7 +4360,7 @@  discard block
 block discarded – undo
4360 4360
 		 */
4361 4361
 		public function is_beaver_preview() {
4362 4362
 			$result = false;
4363
-			if ( isset( $_REQUEST['fl_builder'] ) ) {
4363
+			if (isset($_REQUEST['fl_builder'])) {
4364 4364
 				$result = true;
4365 4365
 			}
4366 4366
 
@@ -4375,7 +4375,7 @@  discard block
 block discarded – undo
4375 4375
 		 */
4376 4376
 		public function is_siteorigin_preview() {
4377 4377
 			$result = false;
4378
-			if ( ! empty( $_REQUEST['siteorigin_panels_live_editor'] ) ) {
4378
+			if (!empty($_REQUEST['siteorigin_panels_live_editor'])) {
4379 4379
 				$result = true;
4380 4380
 			}
4381 4381
 
@@ -4390,7 +4390,7 @@  discard block
 block discarded – undo
4390 4390
 		 */
4391 4391
 		public function is_cornerstone_preview() {
4392 4392
 			$result = false;
4393
-			if ( ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint' ) {
4393
+			if (!empty($_REQUEST['cornerstone_preview']) || basename($_SERVER['REQUEST_URI']) == 'cornerstone-endpoint') {
4394 4394
 				$result = true;
4395 4395
 			}
4396 4396
 
@@ -4405,7 +4405,7 @@  discard block
 block discarded – undo
4405 4405
 		 */
4406 4406
 		public function is_fusion_preview() {
4407 4407
 			$result = false;
4408
-			if ( ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] ) ) {
4408
+			if (!empty($_REQUEST['fb-edit']) || !empty($_REQUEST['fusion_load_nonce'])) {
4409 4409
 				$result = true;
4410 4410
 			}
4411 4411
 
@@ -4420,7 +4420,7 @@  discard block
 block discarded – undo
4420 4420
 		 */
4421 4421
 		public function is_oxygen_preview() {
4422 4422
 			$result = false;
4423
-			if ( ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === "oxy_render_" || substr( $_REQUEST['action'], 0, 10 ) === "ct_render_" ) ) ) {
4423
+			if (!empty($_REQUEST['ct_builder']) || (!empty($_REQUEST['action']) && (substr($_REQUEST['action'], 0, 11) === "oxy_render_" || substr($_REQUEST['action'], 0, 10) === "ct_render_"))) {
4424 4424
 				$result = true;
4425 4425
 			}
4426 4426
 
@@ -4437,7 +4437,7 @@  discard block
 block discarded – undo
4437 4437
 		public function is_kallyas_zion_preview() {
4438 4438
 			$result = false;
4439 4439
 
4440
-			if ( function_exists( 'znhg_kallyas_theme_config' ) && ! empty( $_REQUEST['zn_pb_edit'] ) ) {
4440
+			if (function_exists('znhg_kallyas_theme_config') && !empty($_REQUEST['zn_pb_edit'])) {
4441 4441
 				$result = true;
4442 4442
 			}
4443 4443
 
@@ -4454,7 +4454,7 @@  discard block
 block discarded – undo
4454 4454
 		public function is_bricks_preview() {
4455 4455
 			$result = false;
4456 4456
 
4457
-			if ( function_exists( 'bricks_is_builder' ) && ( bricks_is_builder() || bricks_is_builder_call() ) ) {
4457
+			if (function_exists('bricks_is_builder') && (bricks_is_builder() || bricks_is_builder_call())) {
4458 4458
 				$result = true;
4459 4459
 			}
4460 4460
 
@@ -4469,25 +4469,25 @@  discard block
 block discarded – undo
4469 4469
 		 */
4470 4470
 		public function is_preview() {
4471 4471
 			$preview = false;
4472
-			if ( $this->is_divi_preview() ) {
4472
+			if ($this->is_divi_preview()) {
4473 4473
 				$preview = true;
4474
-			} elseif ( $this->is_elementor_preview() ) {
4474
+			} elseif ($this->is_elementor_preview()) {
4475 4475
 				$preview = true;
4476
-			} elseif ( $this->is_beaver_preview() ) {
4476
+			} elseif ($this->is_beaver_preview()) {
4477 4477
 				$preview = true;
4478
-			} elseif ( $this->is_siteorigin_preview() ) {
4478
+			} elseif ($this->is_siteorigin_preview()) {
4479 4479
 				$preview = true;
4480
-			} elseif ( $this->is_cornerstone_preview() ) {
4480
+			} elseif ($this->is_cornerstone_preview()) {
4481 4481
 				$preview = true;
4482
-			} elseif ( $this->is_fusion_preview() ) {
4482
+			} elseif ($this->is_fusion_preview()) {
4483 4483
 				$preview = true;
4484
-			} elseif ( $this->is_oxygen_preview() ) {
4484
+			} elseif ($this->is_oxygen_preview()) {
4485 4485
 				$preview = true;
4486
-			} elseif( $this->is_kallyas_zion_preview() ) {
4486
+			} elseif ($this->is_kallyas_zion_preview()) {
4487 4487
 				$preview = true;
4488
-			} elseif( $this->is_block_content_call() ) {
4488
+			} elseif ($this->is_block_content_call()) {
4489 4489
 				$preview = true;
4490
-			} elseif( $this->is_bricks_preview() ) {
4490
+			} elseif ($this->is_bricks_preview()) {
4491 4491
 				$preview = true;
4492 4492
 			}
4493 4493
 
@@ -4502,44 +4502,44 @@  discard block
 block discarded – undo
4502 4502
 		 *
4503 4503
 		 * @return string
4504 4504
 		 */
4505
-		public function output_title( $args, $instance = array() ) {
4505
+		public function output_title($args, $instance = array()) {
4506 4506
 			$output = '';
4507
-			if ( ! empty( $instance['title'] ) ) {
4507
+			if (!empty($instance['title'])) {
4508 4508
 				/** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
4509
-				$title  = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );
4509
+				$title = apply_filters('widget_title', $instance['title'], $instance, $this->id_base);
4510 4510
 
4511
-				if ( empty( $instance['widget_title_tag'] ) ) {
4512
-					if ( ! isset( $args['before_title'] ) ) {
4511
+				if (empty($instance['widget_title_tag'])) {
4512
+					if (!isset($args['before_title'])) {
4513 4513
 						$args['before_title'] = '';
4514 4514
 					}
4515 4515
 
4516
-					if ( ! isset( $args['after_title'] ) ) {
4516
+					if (!isset($args['after_title'])) {
4517 4517
 						$args['after_title'] = '';
4518 4518
 					}
4519 4519
 
4520 4520
 					$output = $args['before_title'] . $title . $args['after_title'];
4521 4521
 				} else {
4522
-					$tag 			= esc_attr( $instance['widget_title_tag'] );
4523
-					$allowed_tags 	= array( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span', 'div', 'p' );
4524
-					$title_tag      = in_array( $tag, $allowed_tags, true ) ? esc_attr( $tag ) : 'h2';
4522
+					$tag 			= esc_attr($instance['widget_title_tag']);
4523
+					$allowed_tags = array('h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span', 'div', 'p');
4524
+					$title_tag = in_array($tag, $allowed_tags, true) ? esc_attr($tag) : 'h2';
4525 4525
 
4526 4526
 					// classes
4527 4527
 					$title_classes = array();
4528
-					$title_classes[] = !empty( $instance['widget_title_size_class'] ) ? sanitize_html_class( $instance['widget_title_size_class'] ) : '';
4529
-					$title_classes[] = !empty( $instance['widget_title_align_class'] ) ? sanitize_html_class( $instance['widget_title_align_class'] ) : '';
4530
-					$title_classes[] = !empty( $instance['widget_title_color_class'] ) ? "text-".sanitize_html_class( $instance['widget_title_color_class'] ) : '';
4531
-					$title_classes[] = !empty( $instance['widget_title_border_class'] ) ? sanitize_html_class( $instance['widget_title_border_class'] ) : '';
4532
-					$title_classes[] = !empty( $instance['widget_title_border_color_class'] ) ? "border-".sanitize_html_class( $instance['widget_title_border_color_class'] ) : '';
4533
-					$title_classes[] = !empty( $instance['widget_title_mt_class'] ) ? "mt-".absint( $instance['widget_title_mt_class'] ) : '';
4534
-					$title_classes[] = !empty( $instance['widget_title_mr_class'] ) ? "mr-".absint( $instance['widget_title_mr_class'] ) : '';
4535
-					$title_classes[] = !empty( $instance['widget_title_mb_class'] ) ? "mb-".absint( $instance['widget_title_mb_class'] ) : '';
4536
-					$title_classes[] = !empty( $instance['widget_title_ml_class'] ) ? "ml-".absint( $instance['widget_title_ml_class'] ) : '';
4537
-					$title_classes[] = !empty( $instance['widget_title_pt_class'] ) ? "pt-".absint( $instance['widget_title_pt_class'] ) : '';
4538
-					$title_classes[] = !empty( $instance['widget_title_pr_class'] ) ? "pr-".absint( $instance['widget_title_pr_class'] ) : '';
4539
-					$title_classes[] = !empty( $instance['widget_title_pb_class'] ) ? "pb-".absint( $instance['widget_title_pb_class'] ) : '';
4540
-					$title_classes[] = !empty( $instance['widget_title_pl_class'] ) ? "pl-".absint( $instance['widget_title_pl_class'] ) : '';
4541
-
4542
-					$class = !empty( $title_classes ) ? implode(" ",$title_classes) : '';
4528
+					$title_classes[] = !empty($instance['widget_title_size_class']) ? sanitize_html_class($instance['widget_title_size_class']) : '';
4529
+					$title_classes[] = !empty($instance['widget_title_align_class']) ? sanitize_html_class($instance['widget_title_align_class']) : '';
4530
+					$title_classes[] = !empty($instance['widget_title_color_class']) ? "text-" . sanitize_html_class($instance['widget_title_color_class']) : '';
4531
+					$title_classes[] = !empty($instance['widget_title_border_class']) ? sanitize_html_class($instance['widget_title_border_class']) : '';
4532
+					$title_classes[] = !empty($instance['widget_title_border_color_class']) ? "border-" . sanitize_html_class($instance['widget_title_border_color_class']) : '';
4533
+					$title_classes[] = !empty($instance['widget_title_mt_class']) ? "mt-" . absint($instance['widget_title_mt_class']) : '';
4534
+					$title_classes[] = !empty($instance['widget_title_mr_class']) ? "mr-" . absint($instance['widget_title_mr_class']) : '';
4535
+					$title_classes[] = !empty($instance['widget_title_mb_class']) ? "mb-" . absint($instance['widget_title_mb_class']) : '';
4536
+					$title_classes[] = !empty($instance['widget_title_ml_class']) ? "ml-" . absint($instance['widget_title_ml_class']) : '';
4537
+					$title_classes[] = !empty($instance['widget_title_pt_class']) ? "pt-" . absint($instance['widget_title_pt_class']) : '';
4538
+					$title_classes[] = !empty($instance['widget_title_pr_class']) ? "pr-" . absint($instance['widget_title_pr_class']) : '';
4539
+					$title_classes[] = !empty($instance['widget_title_pb_class']) ? "pb-" . absint($instance['widget_title_pb_class']) : '';
4540
+					$title_classes[] = !empty($instance['widget_title_pl_class']) ? "pl-" . absint($instance['widget_title_pl_class']) : '';
4541
+
4542
+					$class = !empty($title_classes) ? implode(" ", $title_classes) : '';
4543 4543
 					$output = "<$title_tag class='$class' >$title</$title_tag>";
4544 4544
 				}
4545 4545
 
@@ -4553,7 +4553,7 @@  discard block
 block discarded – undo
4553 4553
 		 *
4554 4554
 		 * @param array $instance The widget options.
4555 4555
 		 */
4556
-		public function form( $instance ) {
4556
+		public function form($instance) {
4557 4557
 
4558 4558
 			// set widget instance
4559 4559
 			$this->instance = $instance;
@@ -4561,20 +4561,20 @@  discard block
 block discarded – undo
4561 4561
 			// set it as a SD widget
4562 4562
 			echo $this->widget_advanced_toggle();
4563 4563
 
4564
-			echo "<p>" . esc_attr( $this->options['widget_ops']['description'] ) . "</p>";
4564
+			echo "<p>" . esc_attr($this->options['widget_ops']['description']) . "</p>";
4565 4565
 			$arguments_raw = $this->get_arguments();
4566 4566
 
4567
-			if ( is_array( $arguments_raw ) ) {
4567
+			if (is_array($arguments_raw)) {
4568 4568
 
4569
-				$arguments = $this->group_arguments( $arguments_raw );
4569
+				$arguments = $this->group_arguments($arguments_raw);
4570 4570
 
4571 4571
 				// Do we have sections?
4572 4572
 				$has_sections = $arguments == $arguments_raw ? false : true;
4573 4573
 
4574 4574
 
4575
-				if ( $has_sections ) {
4575
+				if ($has_sections) {
4576 4576
 					$panel_count = 0;
4577
-					foreach ( $arguments as $key => $args ) {
4577
+					foreach ($arguments as $key => $args) {
4578 4578
 
4579 4579
 						?>
4580 4580
 						<script>
@@ -4584,26 +4584,26 @@  discard block
 block discarded – undo
4584 4584
 
4585 4585
 						$hide       = $panel_count ? ' style="display:none;" ' : '';
4586 4586
 						$icon_class = $panel_count ? 'fas fa-chevron-up' : 'fas fa-chevron-down';
4587
-						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>";
4588
-						echo "<div class='sd-toggle-group sd-input-group-" . sanitize_title_with_dashes( $key ) . "' $hide>";
4587
+						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>";
4588
+						echo "<div class='sd-toggle-group sd-input-group-" . sanitize_title_with_dashes($key) . "' $hide>";
4589 4589
 
4590
-						foreach ( $args as $k => $a ) {
4590
+						foreach ($args as $k => $a) {
4591 4591
 
4592 4592
 							$this->widget_inputs_row_start($k, $a);
4593
-							$this->widget_inputs( $a, $instance );
4593
+							$this->widget_inputs($a, $instance);
4594 4594
 							$this->widget_inputs_row_end($k, $a);
4595 4595
 
4596 4596
 						}
4597 4597
 
4598 4598
 						echo "</div>";
4599 4599
 
4600
-						$panel_count ++;
4600
+						$panel_count++;
4601 4601
 
4602 4602
 					}
4603 4603
 				} else {
4604
-					foreach ( $arguments as $key => $args ) {
4604
+					foreach ($arguments as $key => $args) {
4605 4605
 						$this->widget_inputs_row_start($key, $args);
4606
-						$this->widget_inputs( $args, $instance );
4606
+						$this->widget_inputs($args, $instance);
4607 4607
 						$this->widget_inputs_row_end($key, $args);
4608 4608
 					}
4609 4609
 				}
@@ -4611,28 +4611,28 @@  discard block
 block discarded – undo
4611 4611
 			}
4612 4612
 		}
4613 4613
 
4614
-		public function widget_inputs_row_start( $key, $args ) {
4615
-			if ( ! empty( $args['row'] ) ) {
4614
+		public function widget_inputs_row_start($key, $args) {
4615
+			if (!empty($args['row'])) {
4616 4616
 				// Maybe open
4617
-				if ( ! empty( $args['row']['open'] ) ) {
4617
+				if (!empty($args['row']['open'])) {
4618 4618
 					?>
4619
-					<div class='bsui sd-argument' data-argument='<?php echo esc_attr( $args['row']['key'] ); ?>' data-element_require='<?php echo ( ! empty( $args['row']['element_require'] ) ? $this->convert_element_require( $args['row']['element_require'] ) : '' ); ?>'>
4620
-					<?php if ( ! empty( $args['row']['title'] ) ) { ?>
4619
+					<div class='bsui sd-argument' data-argument='<?php echo esc_attr($args['row']['key']); ?>' data-element_require='<?php echo (!empty($args['row']['element_require']) ? $this->convert_element_require($args['row']['element_require']) : ''); ?>'>
4620
+					<?php if (!empty($args['row']['title'])) { ?>
4621 4621
 					<?php
4622
-						if ( isset( $args['row']['icon'] ) ) {
4622
+						if (isset($args['row']['icon'])) {
4623 4623
 							$args['row']['icon'] = '';
4624 4624
 						}
4625 4625
 
4626
-						if ( ! isset( $args['row']['device_type'] ) && isset( $args['device_type'] ) ) {
4626
+						if (!isset($args['row']['device_type']) && isset($args['device_type'])) {
4627 4627
 							$args['row']['device_type'] = $args['device_type'];
4628 4628
 						}
4629 4629
 					?>
4630
-					<label class="mb-0"><?php echo $this->widget_field_title( $args['row'] ); ?><?php echo $this->widget_field_desc( $args['row'] ); ?></label>
4630
+					<label class="mb-0"><?php echo $this->widget_field_title($args['row']); ?><?php echo $this->widget_field_desc($args['row']); ?></label>
4631 4631
 					<?php } ?>
4632
-					<div class='row<?php echo ( ! empty( $args['row']['class'] ) ? ' ' . esc_attr( $args['row']['class'] ) : '' ); ?>'>
4632
+					<div class='row<?php echo (!empty($args['row']['class']) ? ' ' . esc_attr($args['row']['class']) : ''); ?>'>
4633 4633
 					<div class='col pr-2'>
4634 4634
 					<?php
4635
-				} else if ( ! empty( $args['row']['close'] ) ) {
4635
+				} else if (!empty($args['row']['close'])) {
4636 4636
 					echo "<div class='col pl-0 ps-0'>";
4637 4637
 				} else {
4638 4638
 					echo "<div class='col pl-0 ps-0 pr-2 pe-2'>";
@@ -4640,10 +4640,10 @@  discard block
 block discarded – undo
4640 4640
 			}
4641 4641
 		}
4642 4642
 
4643
-		public function widget_inputs_row_end( $key, $args ) {
4644
-			if ( ! empty( $args['row'] ) ) {
4643
+		public function widget_inputs_row_end($key, $args) {
4644
+			if (!empty($args['row'])) {
4645 4645
 				// Maybe close
4646
-				if ( ! empty( $args['row']['close'] ) ) {
4646
+				if (!empty($args['row']['close'])) {
4647 4647
 					echo "</div></div>";
4648 4648
 				}
4649 4649
 				echo "</div>";
@@ -4658,7 +4658,7 @@  discard block
 block discarded – undo
4658 4658
 		public function widget_advanced_toggle() {
4659 4659
 
4660 4660
 			$output = '';
4661
-			if ( $this->block_show_advanced() ) {
4661
+			if ($this->block_show_advanced()) {
4662 4662
 				$val = 1;
4663 4663
 			} else {
4664 4664
 				$val = 0;
@@ -4678,14 +4678,14 @@  discard block
 block discarded – undo
4678 4678
 		 *@since 1.0.0
4679 4679
 		 *
4680 4680
 		 */
4681
-		public function convert_element_require( $input ) {
4682
-			$input = str_replace( "'", '"', $input );// we only want double quotes
4681
+		public function convert_element_require($input) {
4682
+			$input = str_replace("'", '"', $input); // we only want double quotes
4683 4683
 
4684
-			$output = esc_attr( str_replace( array( "[%", "%]", "%:checked]" ), array(
4684
+			$output = esc_attr(str_replace(array("[%", "%]", "%:checked]"), array(
4685 4685
 				"jQuery(form).find('[data-argument=\"",
4686 4686
 				"\"]').find('input,select,textarea').val()",
4687 4687
 				"\"]').find('input:checked').val()"
4688
-			), $input ) );
4688
+			), $input));
4689 4689
 
4690 4690
 			return $output;
4691 4691
 		}
@@ -4696,48 +4696,48 @@  discard block
 block discarded – undo
4696 4696
 		 * @param $args
4697 4697
 		 * @param $instance
4698 4698
 		 */
4699
-		public function widget_inputs( $args, $instance ) {
4699
+		public function widget_inputs($args, $instance) {
4700 4700
 
4701 4701
 			$class             = "";
4702 4702
 			$element_require   = "";
4703 4703
 			$custom_attributes = "";
4704 4704
 
4705 4705
 			// get value
4706
-			if ( isset( $instance[ $args['name'] ] ) ) {
4707
-				$value = $instance[ $args['name'] ];
4708
-			} elseif ( ! isset( $instance[ $args['name'] ] ) && ! empty( $args['default'] ) ) {
4709
-				$value = is_array( $args['default'] ) ? array_map( "esc_html", $args['default'] ) : esc_html( $args['default'] );
4706
+			if (isset($instance[$args['name']])) {
4707
+				$value = $instance[$args['name']];
4708
+			} elseif (!isset($instance[$args['name']]) && !empty($args['default'])) {
4709
+				$value = is_array($args['default']) ? array_map("esc_html", $args['default']) : esc_html($args['default']);
4710 4710
 			} else {
4711 4711
 				$value = '';
4712 4712
 			}
4713 4713
 
4714 4714
 			// get placeholder
4715
-			if ( ! empty( $args['placeholder'] ) ) {
4716
-				$placeholder = "placeholder='" . esc_html( $args['placeholder'] ) . "'";
4715
+			if (!empty($args['placeholder'])) {
4716
+				$placeholder = "placeholder='" . esc_html($args['placeholder']) . "'";
4717 4717
 			} else {
4718 4718
 				$placeholder = '';
4719 4719
 			}
4720 4720
 
4721 4721
 			// get if advanced
4722
-			if ( isset( $args['advanced'] ) && $args['advanced'] ) {
4722
+			if (isset($args['advanced']) && $args['advanced']) {
4723 4723
 				$class .= " sd-advanced-setting ";
4724 4724
 			}
4725 4725
 
4726 4726
 			// element_require
4727
-			if ( isset( $args['element_require'] ) && $args['element_require'] ) {
4727
+			if (isset($args['element_require']) && $args['element_require']) {
4728 4728
 				$element_require = $args['element_require'];
4729 4729
 			}
4730 4730
 
4731 4731
 			// custom_attributes
4732
-			if ( isset( $args['custom_attributes'] ) && $args['custom_attributes'] ) {
4733
-				$custom_attributes = $this->array_to_attributes( $args['custom_attributes'], true );
4732
+			if (isset($args['custom_attributes']) && $args['custom_attributes']) {
4733
+				$custom_attributes = $this->array_to_attributes($args['custom_attributes'], true);
4734 4734
 			}
4735 4735
 
4736 4736
 			// before wrapper
4737 4737
 			?>
4738
-			<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 );} ?>'>
4738
+			<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); } ?>'>
4739 4739
 			<?php
4740
-			switch ( $args['type'] ) {
4740
+			switch ($args['type']) {
4741 4741
 				//array('text','password','number','email','tel','url','color')
4742 4742
 				case "text":
4743 4743
 				case "password":
@@ -4747,33 +4747,33 @@  discard block
 block discarded – undo
4747 4747
 				case "url":
4748 4748
 				case "color":
4749 4749
 					?>
4750
-					<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>
4751
-					<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 ); ?>">
4750
+					<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>
4751
+					<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); ?>">
4752 4752
 					<?php
4753 4753
 
4754 4754
 					break;
4755 4755
 				case "select":
4756
-					$multiple = isset( $args['multiple'] ) && $args['multiple'] ? true : false;
4757
-					if ( $multiple ) {
4758
-						if ( empty( $value ) ) {
4756
+					$multiple = isset($args['multiple']) && $args['multiple'] ? true : false;
4757
+					if ($multiple) {
4758
+						if (empty($value)) {
4759 4759
 							$value = array();
4760 4760
 						}
4761 4761
 					}
4762 4762
 					?>
4763
-					<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>
4764
-					<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 "[]"; } ?>"
4765
-						<?php if ( $multiple ) {
4763
+					<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>
4764
+					<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 "[]"; } ?>"
4765
+						<?php if ($multiple) {
4766 4766
 							echo "multiple";
4767 4767
 						} //@todo not implemented yet due to gutenberg not supporting it
4768 4768
 						?>>
4769 4769
 						<?php
4770 4770
 
4771
-						if ( ! empty( $args['options'] ) ) {
4772
-							foreach ( $args['options'] as $val => $label ) {
4773
-								if ( $multiple ) {
4774
-									$selected = in_array( $val, $value ) ? 'selected="selected"' : '';
4771
+						if (!empty($args['options'])) {
4772
+							foreach ($args['options'] as $val => $label) {
4773
+								if ($multiple) {
4774
+									$selected = in_array($val, $value) ? 'selected="selected"' : '';
4775 4775
 								} else {
4776
-									$selected = selected( $value, $val, false );
4776
+									$selected = selected($value, $val, false);
4777 4777
 								}
4778 4778
 								echo "<option value='$val' " . $selected . ">$label</option>";
4779 4779
 							}
@@ -4784,20 +4784,20 @@  discard block
 block discarded – undo
4784 4784
 					break;
4785 4785
 				case "checkbox":
4786 4786
 					?>
4787
-					<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">
4788
-					<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>
4787
+					<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">
4788
+					<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>
4789 4789
 					<?php
4790 4790
 					break;
4791 4791
 				case "textarea":
4792 4792
 					?>
4793
-					<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>
4794
-					<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>
4793
+					<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>
4794
+					<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>
4795 4795
 					<?php
4796 4796
 
4797 4797
 					break;
4798 4798
 				case "hidden":
4799 4799
 					?>
4800
-					<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 ); ?>">
4800
+					<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); ?>">
4801 4801
 					<?php
4802 4802
 					break;
4803 4803
 				default:
@@ -4807,15 +4807,15 @@  discard block
 block discarded – undo
4807 4807
 			?></p><?php
4808 4808
 		}
4809 4809
 
4810
-		public function get_widget_icon($icon = 'box-top', $title = ''){
4811
-			if($icon=='box-top'){
4812
-				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>';
4813
-			}elseif($icon=='box-right'){
4814
-				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>';
4815
-			}elseif($icon=='box-bottom'){
4816
-				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>';
4817
-			}elseif($icon=='box-left'){
4818
-				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>';
4810
+		public function get_widget_icon($icon = 'box-top', $title = '') {
4811
+			if ($icon == 'box-top') {
4812
+				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>';
4813
+			}elseif ($icon == 'box-right') {
4814
+				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>';
4815
+			}elseif ($icon == 'box-bottom') {
4816
+				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>';
4817
+			}elseif ($icon == 'box-left') {
4818
+				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>';
4819 4819
 			}
4820 4820
 		}
4821 4821
 
@@ -4827,14 +4827,14 @@  discard block
 block discarded – undo
4827 4827
 		 * @return string
4828 4828
 		 * @todo, need to make its own tooltip script
4829 4829
 		 */
4830
-		public function widget_field_desc( $args ) {
4830
+		public function widget_field_desc($args) {
4831 4831
 
4832 4832
 			$description = '';
4833
-			if ( isset( $args['desc'] ) && $args['desc'] ) {
4834
-				if ( isset( $args['desc_tip'] ) && $args['desc_tip'] ) {
4835
-					$description = $this->desc_tip( $args['desc'] );
4833
+			if (isset($args['desc']) && $args['desc']) {
4834
+				if (isset($args['desc_tip']) && $args['desc_tip']) {
4835
+					$description = $this->desc_tip($args['desc']);
4836 4836
 				} else {
4837
-					$description = '<span class="description">' . wp_kses_post( $args['desc'] ) . '</span>';
4837
+					$description = '<span class="description">' . wp_kses_post($args['desc']) . '</span>';
4838 4838
 				}
4839 4839
 			}
4840 4840
 
@@ -4848,18 +4848,18 @@  discard block
 block discarded – undo
4848 4848
 		 *
4849 4849
 		 * @return string
4850 4850
 		 */
4851
-		public function widget_field_title( $args ) {
4851
+		public function widget_field_title($args) {
4852 4852
 			$title = '';
4853 4853
 
4854
-			if ( isset( $args['title'] ) && $args['title'] ) {
4855
-				if ( ! empty( $args['device_type'] ) ) {
4854
+			if (isset($args['title']) && $args['title']) {
4855
+				if (!empty($args['device_type'])) {
4856 4856
 					$args['title'] .= ' (' . $args['device_type'] . ')'; // Append device type to title.
4857 4857
 				}
4858 4858
 
4859
-				if ( isset( $args['icon'] ) && $args['icon'] ) {
4860
-					$title = self::get_widget_icon( $args['icon'], $args['title']  );
4859
+				if (isset($args['icon']) && $args['icon']) {
4860
+					$title = self::get_widget_icon($args['icon'], $args['title']);
4861 4861
 				} else {
4862
-					$title = esc_attr( $args['title'] );
4862
+					$title = esc_attr($args['title']);
4863 4863
 				}
4864 4864
 			}
4865 4865
 
@@ -4874,11 +4874,11 @@  discard block
 block discarded – undo
4874 4874
 		 *
4875 4875
 		 * @return string
4876 4876
 		 */
4877
-		function desc_tip( $tip, $allow_html = false ) {
4878
-			if ( $allow_html ) {
4879
-				$tip = $this->sanitize_tooltip( $tip );
4877
+		function desc_tip($tip, $allow_html = false) {
4878
+			if ($allow_html) {
4879
+				$tip = $this->sanitize_tooltip($tip);
4880 4880
 			} else {
4881
-				$tip = esc_attr( $tip );
4881
+				$tip = esc_attr($tip);
4882 4882
 			}
4883 4883
 
4884 4884
 			return '<span class="gd-help-tip dashicons dashicons-editor-help" title="' . $tip . '"></span>';
@@ -4891,8 +4891,8 @@  discard block
 block discarded – undo
4891 4891
 		 *
4892 4892
 		 * @return string
4893 4893
 		 */
4894
-		public function sanitize_tooltip( $var ) {
4895
-			return htmlspecialchars( wp_kses( html_entity_decode( $var ), array(
4894
+		public function sanitize_tooltip($var) {
4895
+			return htmlspecialchars(wp_kses(html_entity_decode($var), array(
4896 4896
 				'br'     => array(),
4897 4897
 				'em'     => array(),
4898 4898
 				'strong' => array(),
@@ -4902,7 +4902,7 @@  discard block
 block discarded – undo
4902 4902
 				'li'     => array(),
4903 4903
 				'ol'     => array(),
4904 4904
 				'p'      => array(),
4905
-			) ) );
4905
+			)));
4906 4906
 		}
4907 4907
 
4908 4908
 		/**
@@ -4914,23 +4914,23 @@  discard block
 block discarded – undo
4914 4914
 		 * @return array
4915 4915
 		 * @todo we should add some sanitation here.
4916 4916
 		 */
4917
-		public function update( $new_instance, $old_instance ) {
4917
+		public function update($new_instance, $old_instance) {
4918 4918
 
4919 4919
 			//save the widget
4920
-			$instance = array_merge( (array) $old_instance, (array) $new_instance );
4920
+			$instance = array_merge((array) $old_instance, (array) $new_instance);
4921 4921
 
4922 4922
 			// set widget instance
4923 4923
 			$this->instance = $instance;
4924 4924
 
4925
-			if ( empty( $this->arguments ) ) {
4925
+			if (empty($this->arguments)) {
4926 4926
 				$this->get_arguments();
4927 4927
 			}
4928 4928
 
4929 4929
 			// check for checkboxes
4930
-			if ( ! empty( $this->arguments ) ) {
4931
-				foreach ( $this->arguments as $argument ) {
4932
-					if ( isset( $argument['type'] ) && $argument['type'] == 'checkbox' && ! isset( $new_instance[ $argument['name'] ] ) ) {
4933
-						$instance[ $argument['name'] ] = '0';
4930
+			if (!empty($this->arguments)) {
4931
+				foreach ($this->arguments as $argument) {
4932
+					if (isset($argument['type']) && $argument['type'] == 'checkbox' && !isset($new_instance[$argument['name']])) {
4933
+						$instance[$argument['name']] = '0';
4934 4934
 					}
4935 4935
 				}
4936 4936
 			}
@@ -4948,7 +4948,7 @@  discard block
 block discarded – undo
4948 4948
 		 */
4949 4949
 		public function is_block_content_call() {
4950 4950
 			$result = false;
4951
-			if ( wp_doing_ajax() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'super_duper_output_shortcode' ) {
4951
+			if (wp_doing_ajax() && isset($_REQUEST['action']) && $_REQUEST['action'] == 'super_duper_output_shortcode') {
4952 4952
 				$result = true;
4953 4953
 			}
4954 4954
 
@@ -4961,9 +4961,9 @@  discard block
 block discarded – undo
4961 4961
 		 * @return string
4962 4962
 		 *@since 1.0.20
4963 4963
 		 */
4964
-		public function get_instance_hash(){
4965
-			$instance_string = $this->base_id.serialize($this->instance);
4966
-			return hash('crc32b',$instance_string);
4964
+		public function get_instance_hash() {
4965
+			$instance_string = $this->base_id . serialize($this->instance);
4966
+			return hash('crc32b', $instance_string);
4967 4967
 		}
4968 4968
 
4969 4969
 		/**
@@ -4974,14 +4974,14 @@  discard block
 block discarded – undo
4974 4974
 		 * @return string
4975 4975
 		 *@since 1.0.20
4976 4976
 		 */
4977
-		public function get_instance_style($rules = array()){
4977
+		public function get_instance_style($rules = array()) {
4978 4978
 			$css = '';
4979 4979
 
4980
-			if(!empty($rules)){
4980
+			if (!empty($rules)) {
4981 4981
 				$rules = array_unique($rules);
4982 4982
 				$instance_hash = $this->get_instance_hash();
4983 4983
 				$css .= "<style>";
4984
-				foreach($rules as $rule){
4984
+				foreach ($rules as $rule) {
4985 4985
 					$css .= ".sdel-$instance_hash $rule";
4986 4986
 				}
4987 4987
 				$css .= "</style>";
@@ -4999,9 +4999,9 @@  discard block
 block discarded – undo
4999 4999
 		 *@since 1.0.28
5000 5000
 		 *
5001 5001
 		 */
5002
-		public function encode_shortcodes( $content ) {
5002
+		public function encode_shortcodes($content) {
5003 5003
 			// Avoids existing encoded tags.
5004
-			$trans   = array(
5004
+			$trans = array(
5005 5005
 				'&#91;' => '&#091;',
5006 5006
 				'&#93;' => '&#093;',
5007 5007
 				'&amp;#91;' => '&#091;',
@@ -5012,7 +5012,7 @@  discard block
 block discarded – undo
5012 5012
 				'&amp;gt;' => '&0gt;',
5013 5013
 			);
5014 5014
 
5015
-			$content = strtr( $content, $trans );
5015
+			$content = strtr($content, $trans);
5016 5016
 
5017 5017
 			$trans   = array(
5018 5018
 				'[' => '&#91;',
@@ -5023,7 +5023,7 @@  discard block
 block discarded – undo
5023 5023
 				"'" => '&#39;',
5024 5024
 			);
5025 5025
 
5026
-			$content = strtr( $content, $trans );
5026
+			$content = strtr($content, $trans);
5027 5027
 
5028 5028
 			return $content;
5029 5029
 		}
@@ -5037,8 +5037,8 @@  discard block
 block discarded – undo
5037 5037
 		 *@since 1.0.28
5038 5038
 		 *
5039 5039
 		 */
5040
-		public function decode_shortcodes( $content ) {
5041
-			$trans   = array(
5040
+		public function decode_shortcodes($content) {
5041
+			$trans = array(
5042 5042
 				'&#91;' => '[',
5043 5043
 				'&#93;' => ']',
5044 5044
 				'&amp;#91;' => '[',
@@ -5051,7 +5051,7 @@  discard block
 block discarded – undo
5051 5051
 				'&apos;' => "'",
5052 5052
 			);
5053 5053
 
5054
-			$content = strtr( $content, $trans );
5054
+			$content = strtr($content, $trans);
5055 5055
 
5056 5056
 			$trans   = array(
5057 5057
 				'&#091;' => '&#91;',
@@ -5064,31 +5064,31 @@  discard block
 block discarded – undo
5064 5064
 				'&amp;0gt;' => '&gt;',
5065 5065
 			);
5066 5066
 
5067
-			$content = strtr( $content, $trans );
5067
+			$content = strtr($content, $trans);
5068 5068
 
5069 5069
 			return $content;
5070 5070
 		}
5071 5071
 
5072
-		public function block_visibility_fields( $args ) {
5073
-			$value = ! empty( $args['value'] ) ? esc_attr( $args['value'] ) : '';
5072
+		public function block_visibility_fields($args) {
5073
+			$value = !empty($args['value']) ? esc_attr($args['value']) : '';
5074 5074
 			$content = '<div class="bs-vc-rule-template d-none">';
5075 5075
 				$content .= '<div class="p-3 pb-0 mb-3 border border-1 rounded-1 position-relative bs-vc-rule" data-bs-index="BSVCINDEX" >';
5076 5076
 					$content .= '<div class="row">';
5077 5077
 						$content .= '<div class="col-sm-12">';
5078
-							$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', 'ayecode-connect' ) . '"><i class="fas fa-circle-minus fs-6"></i></span></div>';
5078
+							$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', 'ayecode-connect') . '"><i class="fas fa-circle-minus fs-6"></i></span></div>';
5079 5079
 							$content .= aui()->select(
5080 5080
 								array(
5081 5081
 									'id'          => 'bsvc_rule_BSVCINDEX',
5082 5082
 									'name'        => 'bsvc_rule_BSVCINDEX',
5083
-									'label'       => __( 'Rule', 'ayecode-connect' ),
5084
-									'placeholder' => __( 'Select Rule...', 'ayecode-connect' ),
5083
+									'label'       => __('Rule', 'ayecode-connect'),
5084
+									'placeholder' => __('Select Rule...', 'ayecode-connect'),
5085 5085
 									'class'       => 'bsvc_rule form-select-sm no-select2 mw-100',
5086 5086
 									'options'     => sd_visibility_rules_options(),
5087 5087
 									'default'     => '',
5088 5088
 									'value'       => '',
5089 5089
 									'label_type'  => '',
5090 5090
 									'select2'     => false,
5091
-									'input_group_left' => __( 'Rule:', 'ayecode-connect' ),
5091
+									'input_group_left' => __('Rule:', 'ayecode-connect'),
5092 5092
 									'extra_attributes' => array(
5093 5093
 										'data-minimum-results-for-search' => '-1'
5094 5094
 									)
@@ -5097,15 +5097,15 @@  discard block
 block discarded – undo
5097 5097
 
5098 5098
 						$content .= '</div>';
5099 5099
 
5100
-						if ( class_exists( 'GeoDirectory' ) ) {
5100
+						if (class_exists('GeoDirectory')) {
5101 5101
 							$content .= '<div class="col-md-7 col-sm-12">';
5102 5102
 
5103 5103
 								$content .= aui()->select(
5104 5104
 									array(
5105 5105
 										'id'          => 'bsvc_gd_field_BSVCINDEX',
5106 5106
 										'name'        => 'bsvc_gd_field_BSVCINDEX',
5107
-										'label'       => __( 'FIELD', 'ayecode-connect' ),
5108
-										'placeholder' => __( 'FIELD', 'ayecode-connect' ),
5107
+										'label'       => __('FIELD', 'ayecode-connect'),
5108
+										'placeholder' => __('FIELD', 'ayecode-connect'),
5109 5109
 										'class'       => 'bsvc_gd_field form-select-sm no-select2 mw-100',
5110 5110
 										'options'     => sd_visibility_gd_field_options(),
5111 5111
 										'default'     => '',
@@ -5126,8 +5126,8 @@  discard block
 block discarded – undo
5126 5126
 									array(
5127 5127
 										'id'          => 'bsvc_gd_field_condition_BSVCINDEX',
5128 5128
 										'name'        => 'bsvc_gd_field_condition_BSVCINDEX',
5129
-										'label'       => __( 'CONDITION', 'ayecode-connect' ),
5130
-										'placeholder' => __( 'CONDITION', 'ayecode-connect' ),
5129
+										'label'       => __('CONDITION', 'ayecode-connect'),
5130
+										'placeholder' => __('CONDITION', 'ayecode-connect'),
5131 5131
 										'class'       => 'bsvc_gd_field_condition form-select-sm no-select2 mw-100',
5132 5132
 										'options'     => sd_visibility_field_condition_options(),
5133 5133
 										'default'     => '',
@@ -5149,9 +5149,9 @@  discard block
 block discarded – undo
5149 5149
 										'type'            => 'text',
5150 5150
 										'id'              => 'bsvc_gd_field_search_BSVCINDEX',
5151 5151
 										'name'            => 'bsvc_gd_field_search_BSVCINDEX',
5152
-										'label'           => __( 'VALUE TO MATCH', 'ayecode-connect' ),
5152
+										'label'           => __('VALUE TO MATCH', 'ayecode-connect'),
5153 5153
 										'class'           => 'bsvc_gd_field_search form-control-sm',
5154
-										'placeholder'     => __( 'VALUE TO MATCH', 'ayecode-connect' ),
5154
+										'placeholder'     => __('VALUE TO MATCH', 'ayecode-connect'),
5155 5155
 										'label_type'      => '',
5156 5156
 										'value'           => '',
5157 5157
 										'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")'
@@ -5163,11 +5163,11 @@  discard block
 block discarded – undo
5163 5163
 
5164 5164
 					$content .= '</div>';
5165 5165
 
5166
-					$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:', 'ayecode-connect' ) . '</label>';
5166
+					$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:', 'ayecode-connect') . '</label>';
5167 5167
 						$role_options = sd_user_roles_options();
5168 5168
 
5169 5169
 						$role_option_i = 0;
5170
-						foreach ( $role_options as $role_option_key => $role_option_name ) {
5170
+						foreach ($role_options as $role_option_key => $role_option_name) {
5171 5171
 							$role_option_i++;
5172 5172
 
5173 5173
 							$content .= '<div class="col-sm-6">';
@@ -5191,14 +5191,14 @@  discard block
 block discarded – undo
5191 5191
 			$content .= '</div>';
5192 5192
 			$content .= '<form id="bs-vc-modal-form" class="bs-vc-modal-form">';
5193 5193
 			$content .= '<div class="bs-vc-rule-sets"></div>';
5194
-			$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', 'ayecode-connect' ) . '</button></div></div>';
5194
+			$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', 'ayecode-connect') . '</button></div></div>';
5195 5195
 			$content .= '<div class="row"><div class="col-md-6 col-sm-12">';
5196 5196
 			$content .= aui()->select(
5197 5197
 				array(
5198 5198
 					'id'          => 'bsvc_output',
5199 5199
 					'name'        => 'bsvc_output',
5200
-					'label'       => __( 'What should happen if rules met.', 'ayecode-connect' ),
5201
-					'placeholder' => __( 'Default Output', 'ayecode-connect' ),
5200
+					'label'       => __('What should happen if rules met.', 'ayecode-connect'),
5201
+					'placeholder' => __('Default Output', 'ayecode-connect'),
5202 5202
 					'class'       => 'bsvc_output form-select-sm no-select2 mw-100',
5203 5203
 					'options'     => sd_visibility_output_options(),
5204 5204
 					'default'     => '',
@@ -5217,8 +5217,8 @@  discard block
 block discarded – undo
5217 5217
 				array(
5218 5218
 					'id'              => 'bsvc_page',
5219 5219
 					'name'            => 'bsvc_page',
5220
-					'label'           => __( 'Page Content', 'ayecode-connect' ),
5221
-					'placeholder'     => __( 'Select Page ID...', 'ayecode-connect' ),
5220
+					'label'           => __('Page Content', 'ayecode-connect'),
5221
+					'placeholder'     => __('Select Page ID...', 'ayecode-connect'),
5222 5222
 					'class'           => 'bsvc_page form-select-sm no-select2 mw-100',
5223 5223
 					'options'         => sd_template_page_options(),
5224 5224
 					'default'         => '',
@@ -5233,8 +5233,8 @@  discard block
 block discarded – undo
5233 5233
 				array(
5234 5234
 					'id'          => 'bsvc_tmpl_part',
5235 5235
 					'name'        => 'bsvc_tmpl_part',
5236
-					'label'       => __( 'Template Part', 'ayecode-connect' ),
5237
-					'placeholder' => __( 'Select Template Part...', 'ayecode-connect' ),
5236
+					'label'       => __('Template Part', 'ayecode-connect'),
5237
+					'placeholder' => __('Select Template Part...', 'ayecode-connect'),
5238 5238
 					'class'       => 'bsvc_tmpl_part form-select-sm no-select2 mw-100',
5239 5239
 					'options'     => sd_template_part_options(),
5240 5240
 					'default'     => '',
@@ -5252,8 +5252,8 @@  discard block
 block discarded – undo
5252 5252
 				array(
5253 5253
 					'id'               => 'bsvc_message_type',
5254 5254
 					'name'             => 'bsvc_message_type',
5255
-					'label'            => __( 'Custom Message Type', 'ayecode-connect' ),
5256
-					'placeholder'      => __( 'Default (none)', 'ayecode-connect' ),
5255
+					'label'            => __('Custom Message Type', 'ayecode-connect'),
5256
+					'placeholder'      => __('Default (none)', 'ayecode-connect'),
5257 5257
 					'class'            => 'bsvc_message_type form-select-sm no-select2 mw-100',
5258 5258
 					'options'          => sd_aui_colors(),
5259 5259
 					'default'          => '',
@@ -5276,7 +5276,7 @@  discard block
 block discarded – undo
5276 5276
 					'name'            => 'bsvc_message',
5277 5277
 					'label'           => '',
5278 5278
 					'class'           => 'bsvc_message form-control-sm',
5279
-					'placeholder'     => __( 'CUSTOM MESSAGE TO SHOW', 'ayecode-connect' ),
5279
+					'placeholder'     => __('CUSTOM MESSAGE TO SHOW', 'ayecode-connect'),
5280 5280
 					'label_type'      => '',
5281 5281
 					'value'           => '',
5282 5282
 					'form_group_class' => ' ',
@@ -5298,7 +5298,7 @@  discard block
 block discarded – undo
5298 5298
 			global $shortcode_insert_button_once;
5299 5299
 
5300 5300
 			// Fix conflicts with UpSolution Core in header template edit element.
5301
-			if ( defined( 'US_CORE_DIR' ) && ! empty( $_REQUEST['action'] ) && $_REQUEST['action'] == 'us_ajax_hb_get_ebuilder_html' ) {
5301
+			if (defined('US_CORE_DIR') && !empty($_REQUEST['action']) && $_REQUEST['action'] == 'us_ajax_hb_get_ebuilder_html') {
5302 5302
 				$shortcode_insert_button_once = true;
5303 5303
 			}
5304 5304
 		}
Please login to merge, or discard this patch.
invoicing.php 2 patches
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -19,16 +19,16 @@  discard block
 block discarded – undo
19 19
 
20 20
 // Define constants.
21 21
 if ( ! defined( 'WPINV_PLUGIN_FILE' ) ) {
22
-	define( 'WPINV_PLUGIN_FILE', __FILE__ );
22
+    define( 'WPINV_PLUGIN_FILE', __FILE__ );
23 23
 }
24 24
 
25 25
 if ( ! defined( 'WPINV_VERSION' ) ) {
26
-	define( 'WPINV_VERSION', '2.8.19' );
26
+    define( 'WPINV_VERSION', '2.8.19' );
27 27
 }
28 28
 
29 29
 // Include the main Invoicing class.
30 30
 if ( ! class_exists( 'WPInv_Plugin', false ) ) {
31
-	require_once plugin_dir_path( WPINV_PLUGIN_FILE ) . 'includes/class-wpinv.php';
31
+    require_once plugin_dir_path( WPINV_PLUGIN_FILE ) . 'includes/class-wpinv.php';
32 32
 }
33 33
 
34 34
 /**
@@ -43,7 +43,7 @@  discard block
 block discarded – undo
43 43
         $GLOBALS['invoicing'] = new WPInv_Plugin();
44 44
     }
45 45
 
46
-	return $GLOBALS['invoicing'];
46
+    return $GLOBALS['invoicing'];
47 47
 }
48 48
 
49 49
 /**
Please login to merge, or discard this patch.
Spacing   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -15,20 +15,20 @@  discard block
 block discarded – undo
15 15
  * @package GetPaid
16 16
  */
17 17
 
18
-defined( 'ABSPATH' ) || exit;
18
+defined('ABSPATH') || exit;
19 19
 
20 20
 // Define constants.
21
-if ( ! defined( 'WPINV_PLUGIN_FILE' ) ) {
22
-	define( 'WPINV_PLUGIN_FILE', __FILE__ );
21
+if (!defined('WPINV_PLUGIN_FILE')) {
22
+	define('WPINV_PLUGIN_FILE', __FILE__);
23 23
 }
24 24
 
25
-if ( ! defined( 'WPINV_VERSION' ) ) {
26
-	define( 'WPINV_VERSION', '2.8.19' );
25
+if (!defined('WPINV_VERSION')) {
26
+	define('WPINV_VERSION', '2.8.19');
27 27
 }
28 28
 
29 29
 // Include the main Invoicing class.
30
-if ( ! class_exists( 'WPInv_Plugin', false ) ) {
31
-	require_once plugin_dir_path( WPINV_PLUGIN_FILE ) . 'includes/class-wpinv.php';
30
+if (!class_exists('WPInv_Plugin', false)) {
31
+	require_once plugin_dir_path(WPINV_PLUGIN_FILE) . 'includes/class-wpinv.php';
32 32
 }
33 33
 
34 34
 /**
@@ -39,7 +39,7 @@  discard block
 block discarded – undo
39 39
  */
40 40
 function getpaid() {
41 41
 
42
-    if ( empty( $GLOBALS['invoicing'] ) ) {
42
+    if (empty($GLOBALS['invoicing'])) {
43 43
         $GLOBALS['invoicing'] = new WPInv_Plugin();
44 44
     }
45 45
 
@@ -52,9 +52,9 @@  discard block
 block discarded – undo
52 52
  * @since  2.0.8
53 53
  */
54 54
 function getpaid_deactivation_hook() {
55
-    update_option( 'wpinv_flush_permalinks', 1 );
55
+    update_option('wpinv_flush_permalinks', 1);
56 56
 }
57
-register_deactivation_hook( __FILE__, 'getpaid_deactivation_hook' );
57
+register_deactivation_hook(__FILE__, 'getpaid_deactivation_hook');
58 58
 
59 59
 /**
60 60
  * @deprecated
@@ -64,4 +64,4 @@  discard block
 block discarded – undo
64 64
 }
65 65
 
66 66
 // Kickstart the plugin.
67
-add_action( 'plugins_loaded', 'getpaid', 0 );
67
+add_action('plugins_loaded', 'getpaid', 0);
Please login to merge, or discard this patch.