Passed
Pull Request — master (#790)
by Kiran
05:35
created
includes/api/class-getpaid-rest-settings-controller.php 2 patches
Indentation   +743 added lines, -743 removed lines patch added patch discarded remove patch
@@ -18,756 +18,756 @@
 block discarded – undo
18 18
  */
19 19
 class GetPaid_REST_Settings_Controller extends GetPaid_REST_Controller {
20 20
 
21
-	/**
22
-	 * An array of available settings.
23
-	 *
24
-	 * @var string
25
-	 */
26
-	protected $settings;
27
-
28
-	/**
29
-	 * Route base.
30
-	 *
31
-	 * @var string
32
-	 */
33
-	protected $rest_base = 'settings';
34
-
35
-	/**
36
-	 * Registers the routes for the objects of the controller.
37
-	 *
38
-	 * @since 2.0.0
39
-	 *
40
-	 * @see register_rest_route()
41
-	 */
42
-	public function register_namespace_routes( $namespace ) {
43
-
44
-		// List all registered tabs.
45
-		register_rest_route(
46
-			$namespace,
47
-			$this->rest_base,
48
-			array(
49
-				array(
50
-					'methods'             => WP_REST_Server::READABLE,
51
-					'callback'            => array( $this, 'get_tabs' ),
52
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
53
-				),
54
-				'schema' => '__return_empty_array',
55
-			)
56
-		);
57
-
58
-		// View/Update a single setting.
59
-		register_rest_route(
60
-			$namespace,
61
-			$this->rest_base . '/setting/(?P<id>[\w-]+)',
62
-			array(
63
-				'args'   => array(
64
-					'id' => array(
65
-						'description' => __( 'Unique identifier for the setting.', 'invoicing' ),
66
-						'type'        => 'string',
67
-						'required'    => true,
68
-					),
69
-				),
70
-				array(
71
-					'methods'             => WP_REST_Server::READABLE,
72
-					'callback'            => array( $this, 'get_item' ),
73
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
74
-				),
75
-				array(
76
-					'methods'             => WP_REST_Server::EDITABLE,
77
-					'callback'            => array( $this, 'update_item' ),
78
-					'permission_callback' => array( $this, 'update_items_permissions_check' ),
79
-					'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
80
-				),
81
-				'schema' => array( $this, 'get_public_item_schema' ),
82
-			)
83
-		);
84
-
85
-		// List registered sections for a given tab.
86
-		register_rest_route(
87
-			$namespace,
88
-			$this->rest_base . '/(?P<tab>[\w-]+)',
89
-			array(
90
-				'args'   => array(
91
-					'tab' => array(
92
-						'description' => __( 'Unique identifier for the tab whose sections should be retrieved.', 'invoicing' ),
93
-						'type'        => 'string',
94
-						'required'    => true,
95
-						'enum'        => array_keys( wpinv_get_settings_tabs() ),
96
-					),
97
-				),
98
-				array(
99
-					'methods'             => WP_REST_Server::READABLE,
100
-					'callback'            => array( $this, 'get_sections' ),
101
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
102
-				),
103
-				'schema' => '__return_empty_array',
104
-			)
105
-		);
106
-
107
-		// List all registered settings for a given tab.
108
-		register_rest_route(
109
-			$namespace,
110
-			$this->rest_base . '/(?P<tab>[\w-]+)/(?P<section>[\w-]+)',
111
-			array(
112
-				'args'   => array(
113
-					'tab'     => array(
114
-						'description' => __( 'Unique identifier for the tab whose settings should be retrieved.', 'invoicing' ),
115
-						'type'        => 'string',
116
-						'required'    => true,
117
-						'enum'        => array_keys( wpinv_get_settings_tabs() ),
118
-					),
119
-					'section' => array(
120
-						'description' => __( 'The section in the tab whose settings should be retrieved.', 'invoicing' ),
121
-						'type'        => 'string',
122
-						'required'    => true,
123
-					),
124
-				),
125
-				array(
126
-					'methods'             => WP_REST_Server::READABLE,
127
-					'callback'            => array( $this, 'get_items' ),
128
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
129
-				),
130
-				'schema' => array( $this, 'get_public_item_schema' ),
131
-			)
132
-		); 
133
-
134
-		register_rest_route(
135
-			$namespace,
136
-			'/' . $this->rest_base . '/batch',
137
-			array(
138
-				'args'   => array(
139
-					'id' => array(
140
-						'description' => __( 'Setting ID.', 'invoicing' ),
141
-						'type'        => 'string',
142
-					),
143
-				),
144
-				array(
145
-					'methods'             => WP_REST_Server::EDITABLE,
146
-					'callback'            => array( $this, 'batch_items' ),
147
-					'permission_callback' => array( $this, 'batch_items_permissions_check' ),
148
-					'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
149
-				),
150
-				'schema' => array( $this, 'get_public_batch_schema' ),
151
-			)
152
-		);
153
-
154
-	}
155
-
156
-	/**
157
-	 * Return all settings.
158
-	 *
159
-	 * @since  2.0.0
160
-	 * @param  WP_REST_Request $request Request data.
161
-	 * @return WP_Error|WP_REST_Response
162
-	 */
163
-	public function get_items( $request ) {
164
-
165
-		$settings = $this->get_settings();
166
-
167
-		if ( ! isset( $settings[ $request['tab'] ] ) ) {
168
-			return new WP_Error( 'rest_invalid_tab', __( 'Invalid tab.', 'invoicing' ), array( 'status' => 400 ) );
169
-		}
170
-
171
-		if ( ! isset( $settings[ $request['tab'] ][ $request['section'] ] ) ) {
172
-			return new WP_Error( 'rest_invalid_section', __( 'Invalid section.', 'invoicing' ), array( 'status' => 400 ) );
173
-		}
174
-
175
-		$settings = $settings[ $request['tab'] ][ $request['section'] ];
176
-		$prepared = array();
177
-
178
-		foreach ( $settings as $setting ) {
179
-
180
-			$setting      = $this->sanitize_setting( $setting );
181
-			$setting_data = $this->prepare_item_for_response( $setting, $request );
182
-			$setting_data = $this->prepare_response_for_collection( $setting_data );
183
-
184
-			if ( $this->is_setting_type_valid( $setting['type'] ) ) {
185
-				$prepared[]   = $setting_data;
186
-			}
21
+    /**
22
+     * An array of available settings.
23
+     *
24
+     * @var string
25
+     */
26
+    protected $settings;
27
+
28
+    /**
29
+     * Route base.
30
+     *
31
+     * @var string
32
+     */
33
+    protected $rest_base = 'settings';
34
+
35
+    /**
36
+     * Registers the routes for the objects of the controller.
37
+     *
38
+     * @since 2.0.0
39
+     *
40
+     * @see register_rest_route()
41
+     */
42
+    public function register_namespace_routes( $namespace ) {
43
+
44
+        // List all registered tabs.
45
+        register_rest_route(
46
+            $namespace,
47
+            $this->rest_base,
48
+            array(
49
+                array(
50
+                    'methods'             => WP_REST_Server::READABLE,
51
+                    'callback'            => array( $this, 'get_tabs' ),
52
+                    'permission_callback' => array( $this, 'get_items_permissions_check' ),
53
+                ),
54
+                'schema' => '__return_empty_array',
55
+            )
56
+        );
57
+
58
+        // View/Update a single setting.
59
+        register_rest_route(
60
+            $namespace,
61
+            $this->rest_base . '/setting/(?P<id>[\w-]+)',
62
+            array(
63
+                'args'   => array(
64
+                    'id' => array(
65
+                        'description' => __( 'Unique identifier for the setting.', 'invoicing' ),
66
+                        'type'        => 'string',
67
+                        'required'    => true,
68
+                    ),
69
+                ),
70
+                array(
71
+                    'methods'             => WP_REST_Server::READABLE,
72
+                    'callback'            => array( $this, 'get_item' ),
73
+                    'permission_callback' => array( $this, 'get_items_permissions_check' ),
74
+                ),
75
+                array(
76
+                    'methods'             => WP_REST_Server::EDITABLE,
77
+                    'callback'            => array( $this, 'update_item' ),
78
+                    'permission_callback' => array( $this, 'update_items_permissions_check' ),
79
+                    'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
80
+                ),
81
+                'schema' => array( $this, 'get_public_item_schema' ),
82
+            )
83
+        );
84
+
85
+        // List registered sections for a given tab.
86
+        register_rest_route(
87
+            $namespace,
88
+            $this->rest_base . '/(?P<tab>[\w-]+)',
89
+            array(
90
+                'args'   => array(
91
+                    'tab' => array(
92
+                        'description' => __( 'Unique identifier for the tab whose sections should be retrieved.', 'invoicing' ),
93
+                        'type'        => 'string',
94
+                        'required'    => true,
95
+                        'enum'        => array_keys( wpinv_get_settings_tabs() ),
96
+                    ),
97
+                ),
98
+                array(
99
+                    'methods'             => WP_REST_Server::READABLE,
100
+                    'callback'            => array( $this, 'get_sections' ),
101
+                    'permission_callback' => array( $this, 'get_items_permissions_check' ),
102
+                ),
103
+                'schema' => '__return_empty_array',
104
+            )
105
+        );
106
+
107
+        // List all registered settings for a given tab.
108
+        register_rest_route(
109
+            $namespace,
110
+            $this->rest_base . '/(?P<tab>[\w-]+)/(?P<section>[\w-]+)',
111
+            array(
112
+                'args'   => array(
113
+                    'tab'     => array(
114
+                        'description' => __( 'Unique identifier for the tab whose settings should be retrieved.', 'invoicing' ),
115
+                        'type'        => 'string',
116
+                        'required'    => true,
117
+                        'enum'        => array_keys( wpinv_get_settings_tabs() ),
118
+                    ),
119
+                    'section' => array(
120
+                        'description' => __( 'The section in the tab whose settings should be retrieved.', 'invoicing' ),
121
+                        'type'        => 'string',
122
+                        'required'    => true,
123
+                    ),
124
+                ),
125
+                array(
126
+                    'methods'             => WP_REST_Server::READABLE,
127
+                    'callback'            => array( $this, 'get_items' ),
128
+                    'permission_callback' => array( $this, 'get_items_permissions_check' ),
129
+                ),
130
+                'schema' => array( $this, 'get_public_item_schema' ),
131
+            )
132
+        ); 
133
+
134
+        register_rest_route(
135
+            $namespace,
136
+            '/' . $this->rest_base . '/batch',
137
+            array(
138
+                'args'   => array(
139
+                    'id' => array(
140
+                        'description' => __( 'Setting ID.', 'invoicing' ),
141
+                        'type'        => 'string',
142
+                    ),
143
+                ),
144
+                array(
145
+                    'methods'             => WP_REST_Server::EDITABLE,
146
+                    'callback'            => array( $this, 'batch_items' ),
147
+                    'permission_callback' => array( $this, 'batch_items_permissions_check' ),
148
+                    'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
149
+                ),
150
+                'schema' => array( $this, 'get_public_batch_schema' ),
151
+            )
152
+        );
153
+
154
+    }
155
+
156
+    /**
157
+     * Return all settings.
158
+     *
159
+     * @since  2.0.0
160
+     * @param  WP_REST_Request $request Request data.
161
+     * @return WP_Error|WP_REST_Response
162
+     */
163
+    public function get_items( $request ) {
164
+
165
+        $settings = $this->get_settings();
166
+
167
+        if ( ! isset( $settings[ $request['tab'] ] ) ) {
168
+            return new WP_Error( 'rest_invalid_tab', __( 'Invalid tab.', 'invoicing' ), array( 'status' => 400 ) );
169
+        }
170
+
171
+        if ( ! isset( $settings[ $request['tab'] ][ $request['section'] ] ) ) {
172
+            return new WP_Error( 'rest_invalid_section', __( 'Invalid section.', 'invoicing' ), array( 'status' => 400 ) );
173
+        }
174
+
175
+        $settings = $settings[ $request['tab'] ][ $request['section'] ];
176
+        $prepared = array();
177
+
178
+        foreach ( $settings as $setting ) {
179
+
180
+            $setting      = $this->sanitize_setting( $setting );
181
+            $setting_data = $this->prepare_item_for_response( $setting, $request );
182
+            $setting_data = $this->prepare_response_for_collection( $setting_data );
183
+
184
+            if ( $this->is_setting_type_valid( $setting['type'] ) ) {
185
+                $prepared[]   = $setting_data;
186
+            }
187 187
 }
188 188
 
189
-		return rest_ensure_response( $prepared );
190
-	}
191
-
192
-	/**
193
-	 * Return a single setting.
194
-	 *
195
-	 * @since  2.0.0
196
-	 * @param  WP_REST_Request $request Request data.
197
-	 * @return WP_Error|WP_REST_Response
198
-	 */
199
-	public function get_item( $request ) {
200
-		$setting  = $this->get_setting( $request['id'] );
201
-
202
-		if ( is_wp_error( $setting ) ) {
203
-			return $setting;
204
-		}
205
-
206
-		$setting  = $this->sanitize_setting( $setting );
207
-		$response = $this->prepare_item_for_response( $setting, $request );
208
-		return rest_ensure_response( $response );
209
-	}
210
-
211
-	/**
212
-	 * Update a single setting.
213
-	 *
214
-	 * @since  2.0.0
215
-	 * @param  WP_REST_Request $request Request data.
216
-	 * @return WP_Error|WP_REST_Response
217
-	 */
218
-	public function update_item( $request ) {
219
-		$setting = $this->get_setting( $request['id'] );
220
-
221
-		if ( is_wp_error( $setting ) ) {
222
-			return $setting;
223
-		}
224
-
225
-		if ( is_callable( array( $this, 'validate_setting_' . $setting['type'] . '_field' ) ) ) {
226
-			$value = $this->{'validate_setting_' . $setting['type'] . '_field'}( $request['value'], $setting );
227
-		} else {
228
-			$value = $this->validate_setting_text_field( $request['value'], $setting );
229
-		}
230
-
231
-		if ( is_wp_error( $value ) ) {
232
-			return $value;
233
-		}
234
-
235
-		wpinv_update_option( $request['id'], $value );
236
-		$setting['value'] = $value;
237
-		$setting          = $this->sanitize_setting( $setting );
238
-		$response         = $this->prepare_item_for_response( $setting, $request );
239
-
240
-		return rest_ensure_response( $response );
241
-	}
242
-
243
-	/**
244
-	 * Makes sure the current user has access to READ the settings APIs.
245
-	 *
246
-	 * @since  2.0.0
247
-	 * @param WP_REST_Request $request Full data about the request.
248
-	 * @return WP_Error|boolean
249
-	 */
250
-	public function get_items_permissions_check( $request ) {
251
-		if ( ! wpinv_current_user_can_manage_invoicing() ) {
252
-			return new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot list resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
253
-		}
254
-
255
-		return true;
256
-	}
257
-
258
-	/**
259
-	 * Makes sure the current user has access to WRITE the settings APIs.
260
-	 *
261
-	 * @since  2.0.0
262
-	 * @param WP_REST_Request $request Full data about the request.
263
-	 * @return WP_Error|boolean
264
-	 */
265
-	public function update_items_permissions_check( $request ) {
266
-		if ( ! wpinv_current_user_can_manage_invoicing() ) {
267
-			return new WP_Error( 'rest_cannot_edit', __( 'Sorry, you cannot edit this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
268
-		}
269
-
270
-		return true;
271
-	}
272
-
273
-	/**
274
-	 * Check if a given request has access batch create, update and delete items.
275
-	 *
276
-	 * @param  WP_REST_Request $request Full details about the request.
277
-	 *
278
-	 * @return boolean|WP_Error
279
-	 */
280
-	public function batch_items_permissions_check( $request ) {
281
-		return wpinv_current_user_can_manage_invoicing() ? true : new WP_Error( 'rest_cannot_batch', __( 'Sorry, you are not allowed to batch manipulate this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
282
-	}
283
-
284
-	/**
285
-	 * Prepare links for the request.
286
-	 *
287
-	 * @param string $setting_id Setting ID.
288
-	 * @return array Links for the given setting.
289
-	 */
290
-	protected function prepare_links( $setting_id ) {
291
-
292
-		$links = array(
293
-			'self'       => array(
294
-				'href' => rest_url( sprintf( '/%s/%s/setting/%s', $this->namespace, $this->rest_base, $setting_id ) ),
295
-			),
296
-			'collection' => array(
297
-				'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
298
-			),
299
-		);
300
-
301
-		return $links;
302
-	}
303
-
304
-	/**
305
-	 * Prepare a settings object for serialization.
306
-	 *
307
-	 * @since  2.0.0
308
-	 * @param array           $item Setting object.
309
-	 * @param WP_REST_Request $request Request object.
310
-	 * @return WP_REST_Response $response Response data.
311
-	 */
312
-	public function prepare_item_for_response( $item, $request ) {
313
-		$context = empty( $request['context'] ) ? 'view' : $request['context'];
314
-		$data    = $this->add_additional_fields_to_object( $item, $request );
315
-		$data    = $this->filter_response_by_context( $data, $context );
316
-
317
-		$response = rest_ensure_response( $data );
318
-
319
-		$response->add_links( $this->prepare_links( $item['id'] ) );
320
-
321
-		return $response;
322
-	}
323
-
324
-	/**
325
-	 * Filters out bad values from the settings array/filter so we
326
-	 * only return known values via the API.
327
-	 *
328
-	 * @since 2.0.0
329
-	 * @param  array $setting Setting.
330
-	 * @return array
331
-	 */
332
-	public function filter_setting( $setting ) {
333
-		return array_intersect_key(
334
-			$setting,
335
-			array_flip( array_filter( array_keys( $setting ), array( $this, 'allowed_setting_keys' ) ) )
336
-		);
337
-	}
338
-
339
-	/**
340
-	 * Callback for allowed keys for each setting response.
341
-	 *
342
-	 * @param  string $key Key to check.
343
-	 * @return boolean
344
-	 */
345
-	public function allowed_setting_keys( $key ) {
346
-		return in_array( $key, array_keys( $this->setting_defaults() ), true );
347
-	}
348
-
349
-	/**
350
-	 * Returns default options for a setting. null means the field is required.
351
-	 *
352
-	 * @since  2.0.0
353
-	 * @return array
354
-	 */
355
-	protected function setting_defaults() {
356
-		return array(
357
-			'id'          => null,
358
-			'name'        => null,
359
-			'desc'        => '',
360
-			'options'     => array(),
361
-			'std'         => false,
362
-			'value'       => false,
363
-			'placeholder' => '',
364
-			'readonly'    => false,
365
-			'faux'        => false,
366
-			'section'     => 'main',
367
-			'tab'         => 'general',
368
-			'type'        => 'text',
369
-		);
370
-	}
371
-
372
-	/**
373
-	 * Sanitizes a setting's field.
374
-	 *
375
-	 * @param  array $setting The setting to sanitize.
376
-	 * @return array
377
-	 */
378
-	public function sanitize_setting( $setting ) {
379
-
380
-		$setting          = wp_parse_args( $setting, $this->setting_defaults() );
381
-		$setting['value'] = wpinv_get_option( $setting['id'], $setting['std'] );
382
-		return $this->filter_setting( $setting );
383
-
384
-	}
385
-
386
-	/**
387
-	 * Get setting data.
388
-	 *
389
-	 * @since  2.0.0
390
-	 * @param string $setting_id Setting ID.
391
-	 * @return array|WP_Error
392
-	 */
393
-	public function get_setting( $setting_id ) {
394
-
395
-		if ( empty( $setting_id ) ) {
396
-			return new WP_Error( 'rest_setting_setting_invalid', __( 'Invalid setting.', 'invoicing' ), array( 'status' => 404 ) );
397
-		}
398
-
399
-		$settings  = $this->get_settings();
400
-
401
-		foreach ( $settings as $tabs ) {
402
-
403
-			foreach ( $tabs as $sections ) {
404
-
405
-				if ( isset( $sections[ $setting_id ] ) ) {
406
-					if ( ! $this->is_setting_type_valid( $sections[ $setting_id ]['type'] ) ) {
407
-						return new WP_Error( 'rest_setting_setting_type_invalid', __( 'Invalid setting type.', 'invoicing' ), array( 'status' => 404 ) );
408
-					}
409
-
410
-					return $sections[ $setting_id ];
411
-				}
189
+        return rest_ensure_response( $prepared );
190
+    }
191
+
192
+    /**
193
+     * Return a single setting.
194
+     *
195
+     * @since  2.0.0
196
+     * @param  WP_REST_Request $request Request data.
197
+     * @return WP_Error|WP_REST_Response
198
+     */
199
+    public function get_item( $request ) {
200
+        $setting  = $this->get_setting( $request['id'] );
201
+
202
+        if ( is_wp_error( $setting ) ) {
203
+            return $setting;
204
+        }
205
+
206
+        $setting  = $this->sanitize_setting( $setting );
207
+        $response = $this->prepare_item_for_response( $setting, $request );
208
+        return rest_ensure_response( $response );
209
+    }
210
+
211
+    /**
212
+     * Update a single setting.
213
+     *
214
+     * @since  2.0.0
215
+     * @param  WP_REST_Request $request Request data.
216
+     * @return WP_Error|WP_REST_Response
217
+     */
218
+    public function update_item( $request ) {
219
+        $setting = $this->get_setting( $request['id'] );
220
+
221
+        if ( is_wp_error( $setting ) ) {
222
+            return $setting;
223
+        }
224
+
225
+        if ( is_callable( array( $this, 'validate_setting_' . $setting['type'] . '_field' ) ) ) {
226
+            $value = $this->{'validate_setting_' . $setting['type'] . '_field'}( $request['value'], $setting );
227
+        } else {
228
+            $value = $this->validate_setting_text_field( $request['value'], $setting );
229
+        }
230
+
231
+        if ( is_wp_error( $value ) ) {
232
+            return $value;
233
+        }
234
+
235
+        wpinv_update_option( $request['id'], $value );
236
+        $setting['value'] = $value;
237
+        $setting          = $this->sanitize_setting( $setting );
238
+        $response         = $this->prepare_item_for_response( $setting, $request );
239
+
240
+        return rest_ensure_response( $response );
241
+    }
242
+
243
+    /**
244
+     * Makes sure the current user has access to READ the settings APIs.
245
+     *
246
+     * @since  2.0.0
247
+     * @param WP_REST_Request $request Full data about the request.
248
+     * @return WP_Error|boolean
249
+     */
250
+    public function get_items_permissions_check( $request ) {
251
+        if ( ! wpinv_current_user_can_manage_invoicing() ) {
252
+            return new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot list resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
253
+        }
254
+
255
+        return true;
256
+    }
257
+
258
+    /**
259
+     * Makes sure the current user has access to WRITE the settings APIs.
260
+     *
261
+     * @since  2.0.0
262
+     * @param WP_REST_Request $request Full data about the request.
263
+     * @return WP_Error|boolean
264
+     */
265
+    public function update_items_permissions_check( $request ) {
266
+        if ( ! wpinv_current_user_can_manage_invoicing() ) {
267
+            return new WP_Error( 'rest_cannot_edit', __( 'Sorry, you cannot edit this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
268
+        }
269
+
270
+        return true;
271
+    }
272
+
273
+    /**
274
+     * Check if a given request has access batch create, update and delete items.
275
+     *
276
+     * @param  WP_REST_Request $request Full details about the request.
277
+     *
278
+     * @return boolean|WP_Error
279
+     */
280
+    public function batch_items_permissions_check( $request ) {
281
+        return wpinv_current_user_can_manage_invoicing() ? true : new WP_Error( 'rest_cannot_batch', __( 'Sorry, you are not allowed to batch manipulate this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
282
+    }
283
+
284
+    /**
285
+     * Prepare links for the request.
286
+     *
287
+     * @param string $setting_id Setting ID.
288
+     * @return array Links for the given setting.
289
+     */
290
+    protected function prepare_links( $setting_id ) {
291
+
292
+        $links = array(
293
+            'self'       => array(
294
+                'href' => rest_url( sprintf( '/%s/%s/setting/%s', $this->namespace, $this->rest_base, $setting_id ) ),
295
+            ),
296
+            'collection' => array(
297
+                'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
298
+            ),
299
+        );
300
+
301
+        return $links;
302
+    }
303
+
304
+    /**
305
+     * Prepare a settings object for serialization.
306
+     *
307
+     * @since  2.0.0
308
+     * @param array           $item Setting object.
309
+     * @param WP_REST_Request $request Request object.
310
+     * @return WP_REST_Response $response Response data.
311
+     */
312
+    public function prepare_item_for_response( $item, $request ) {
313
+        $context = empty( $request['context'] ) ? 'view' : $request['context'];
314
+        $data    = $this->add_additional_fields_to_object( $item, $request );
315
+        $data    = $this->filter_response_by_context( $data, $context );
316
+
317
+        $response = rest_ensure_response( $data );
318
+
319
+        $response->add_links( $this->prepare_links( $item['id'] ) );
320
+
321
+        return $response;
322
+    }
323
+
324
+    /**
325
+     * Filters out bad values from the settings array/filter so we
326
+     * only return known values via the API.
327
+     *
328
+     * @since 2.0.0
329
+     * @param  array $setting Setting.
330
+     * @return array
331
+     */
332
+    public function filter_setting( $setting ) {
333
+        return array_intersect_key(
334
+            $setting,
335
+            array_flip( array_filter( array_keys( $setting ), array( $this, 'allowed_setting_keys' ) ) )
336
+        );
337
+    }
338
+
339
+    /**
340
+     * Callback for allowed keys for each setting response.
341
+     *
342
+     * @param  string $key Key to check.
343
+     * @return boolean
344
+     */
345
+    public function allowed_setting_keys( $key ) {
346
+        return in_array( $key, array_keys( $this->setting_defaults() ), true );
347
+    }
348
+
349
+    /**
350
+     * Returns default options for a setting. null means the field is required.
351
+     *
352
+     * @since  2.0.0
353
+     * @return array
354
+     */
355
+    protected function setting_defaults() {
356
+        return array(
357
+            'id'          => null,
358
+            'name'        => null,
359
+            'desc'        => '',
360
+            'options'     => array(),
361
+            'std'         => false,
362
+            'value'       => false,
363
+            'placeholder' => '',
364
+            'readonly'    => false,
365
+            'faux'        => false,
366
+            'section'     => 'main',
367
+            'tab'         => 'general',
368
+            'type'        => 'text',
369
+        );
370
+    }
371
+
372
+    /**
373
+     * Sanitizes a setting's field.
374
+     *
375
+     * @param  array $setting The setting to sanitize.
376
+     * @return array
377
+     */
378
+    public function sanitize_setting( $setting ) {
379
+
380
+        $setting          = wp_parse_args( $setting, $this->setting_defaults() );
381
+        $setting['value'] = wpinv_get_option( $setting['id'], $setting['std'] );
382
+        return $this->filter_setting( $setting );
383
+
384
+    }
385
+
386
+    /**
387
+     * Get setting data.
388
+     *
389
+     * @since  2.0.0
390
+     * @param string $setting_id Setting ID.
391
+     * @return array|WP_Error
392
+     */
393
+    public function get_setting( $setting_id ) {
394
+
395
+        if ( empty( $setting_id ) ) {
396
+            return new WP_Error( 'rest_setting_setting_invalid', __( 'Invalid setting.', 'invoicing' ), array( 'status' => 404 ) );
397
+        }
398
+
399
+        $settings  = $this->get_settings();
400
+
401
+        foreach ( $settings as $tabs ) {
402
+
403
+            foreach ( $tabs as $sections ) {
404
+
405
+                if ( isset( $sections[ $setting_id ] ) ) {
406
+                    if ( ! $this->is_setting_type_valid( $sections[ $setting_id ]['type'] ) ) {
407
+                        return new WP_Error( 'rest_setting_setting_type_invalid', __( 'Invalid setting type.', 'invoicing' ), array( 'status' => 404 ) );
408
+                    }
409
+
410
+                    return $sections[ $setting_id ];
411
+                }
412 412
 }
413 413
 }
414 414
 
415
-		return new WP_Error( 'rest_setting_setting_invalid', __( 'Invalid setting.', 'invoicing' ), array( 'status' => 404 ) );
416
-	}
417
-
418
-	/**
419
-	 * Get all tabs.
420
-	 *
421
-	 * @param  WP_REST_Request $request Request data.
422
-	 * @return array
423
-	 */
424
-	public function get_tabs( $request ) {
425
-		$tabs     = wpinv_get_settings_tabs();
426
-		$prepared = array();
427
-
428
-		foreach ( $tabs as $id => $tab ) {
429
-
430
-			$_request        = $request;
431
-			$_request['tab'] = sanitize_title( $id );
432
-			$data            = array(
433
-				'id'       => sanitize_title( $id ),
434
-				'label'    => sanitize_text_field( $tab ),
435
-				'sections' => $this->get_sections( $_request ),
436
-			);
437
-
438
-			$data     = $this->add_additional_fields_to_object( $data, $request );
439
-			$response = rest_ensure_response( $data );
440
-
441
-			if ( ! is_wp_error( $response ) ) {
442
-				$links = array(
443
-					'sections'   => array(
444
-						'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $id ) ),
445
-					),
446
-					'collection' => array(
447
-						'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
448
-					),
449
-				);
450
-				$response->add_links( $links );
451
-				$response = $this->prepare_response_for_collection( $response );
452
-			}
453
-
454
-			$prepared[] = $response;
455
-
456
-		}
457
-
458
-		return rest_ensure_response( $prepared );
459
-	}
460
-
461
-	/**
462
-	 * Get all sections.
463
-	 *
464
-	 * @param  WP_REST_Request $request Request data.
465
-	 * @return array
466
-	 */
467
-	public function get_sections( $request ) {
468
-
469
-		$tab      = sanitize_title( $request['tab'] );
470
-		$sections = wpinv_get_settings_tab_sections( $tab );
471
-		$prepared = array();
472
-
473
-		foreach ( $sections as $id => $section ) {
474
-
475
-			$data            = array(
476
-				'id'    => sanitize_title( $id ),
477
-				'label' => sanitize_text_field( $section ),
478
-			);
479
-
480
-			$data     = $this->add_additional_fields_to_object( $data, $request );
481
-			$response = rest_ensure_response( $data );
482
-
483
-			if ( ! is_wp_error( $response ) ) {
484
-				$links = array(
485
-					'settings'   => array(
486
-						'href' => rest_url( sprintf( '/%s/%s/%s/%s', $this->namespace, $this->rest_base, $tab, $id ) ),
487
-					),
488
-					'collection' => array(
489
-						'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $tab ) ),
490
-					),
491
-					'tabs'       => array(
492
-						'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
493
-					),
494
-				);
495
-				$response->add_links( $links );
496
-				$response = $this->prepare_response_for_collection( $response );
497
-			}
498
-
499
-			$prepared[] = $response;
500
-
501
-		}
502
-
503
-		return rest_ensure_response( $prepared );
504
-	}
505
-
506
-	/**
507
-	 * Get all settings.
508
-	 *
509
-	 * @return array
510
-	 */
511
-	public function get_settings() {
512
-
513
-		if ( empty( $this->settings ) ) {
514
-			$this->settings = wpinv_get_registered_settings();
515
-		}
516
-
517
-		return $this->settings;
518
-
519
-	}
520
-
521
-	/**
522
-	 * Boolean for if a setting type is a valid supported setting type.
523
-	 *
524
-	 * @since  2.0.0
525
-	 * @param  string $type Type.
526
-	 * @return bool
527
-	 */
528
-	public function is_setting_type_valid( $type ) {
529
-
530
-		return in_array(
531
-			$type,
415
+        return new WP_Error( 'rest_setting_setting_invalid', __( 'Invalid setting.', 'invoicing' ), array( 'status' => 404 ) );
416
+    }
417
+
418
+    /**
419
+     * Get all tabs.
420
+     *
421
+     * @param  WP_REST_Request $request Request data.
422
+     * @return array
423
+     */
424
+    public function get_tabs( $request ) {
425
+        $tabs     = wpinv_get_settings_tabs();
426
+        $prepared = array();
427
+
428
+        foreach ( $tabs as $id => $tab ) {
429
+
430
+            $_request        = $request;
431
+            $_request['tab'] = sanitize_title( $id );
432
+            $data            = array(
433
+                'id'       => sanitize_title( $id ),
434
+                'label'    => sanitize_text_field( $tab ),
435
+                'sections' => $this->get_sections( $_request ),
436
+            );
437
+
438
+            $data     = $this->add_additional_fields_to_object( $data, $request );
439
+            $response = rest_ensure_response( $data );
440
+
441
+            if ( ! is_wp_error( $response ) ) {
442
+                $links = array(
443
+                    'sections'   => array(
444
+                        'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $id ) ),
445
+                    ),
446
+                    'collection' => array(
447
+                        'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
448
+                    ),
449
+                );
450
+                $response->add_links( $links );
451
+                $response = $this->prepare_response_for_collection( $response );
452
+            }
453
+
454
+            $prepared[] = $response;
455
+
456
+        }
457
+
458
+        return rest_ensure_response( $prepared );
459
+    }
460
+
461
+    /**
462
+     * Get all sections.
463
+     *
464
+     * @param  WP_REST_Request $request Request data.
465
+     * @return array
466
+     */
467
+    public function get_sections( $request ) {
468
+
469
+        $tab      = sanitize_title( $request['tab'] );
470
+        $sections = wpinv_get_settings_tab_sections( $tab );
471
+        $prepared = array();
472
+
473
+        foreach ( $sections as $id => $section ) {
474
+
475
+            $data            = array(
476
+                'id'    => sanitize_title( $id ),
477
+                'label' => sanitize_text_field( $section ),
478
+            );
479
+
480
+            $data     = $this->add_additional_fields_to_object( $data, $request );
481
+            $response = rest_ensure_response( $data );
482
+
483
+            if ( ! is_wp_error( $response ) ) {
484
+                $links = array(
485
+                    'settings'   => array(
486
+                        'href' => rest_url( sprintf( '/%s/%s/%s/%s', $this->namespace, $this->rest_base, $tab, $id ) ),
487
+                    ),
488
+                    'collection' => array(
489
+                        'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $tab ) ),
490
+                    ),
491
+                    'tabs'       => array(
492
+                        'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
493
+                    ),
494
+                );
495
+                $response->add_links( $links );
496
+                $response = $this->prepare_response_for_collection( $response );
497
+            }
498
+
499
+            $prepared[] = $response;
500
+
501
+        }
502
+
503
+        return rest_ensure_response( $prepared );
504
+    }
505
+
506
+    /**
507
+     * Get all settings.
508
+     *
509
+     * @return array
510
+     */
511
+    public function get_settings() {
512
+
513
+        if ( empty( $this->settings ) ) {
514
+            $this->settings = wpinv_get_registered_settings();
515
+        }
516
+
517
+        return $this->settings;
518
+
519
+    }
520
+
521
+    /**
522
+     * Boolean for if a setting type is a valid supported setting type.
523
+     *
524
+     * @since  2.0.0
525
+     * @param  string $type Type.
526
+     * @return bool
527
+     */
528
+    public function is_setting_type_valid( $type ) {
529
+
530
+        return in_array(
531
+            $type,
532 532
             array(
533
-				'text',         // Validates with validate_setting_text_field.
534
-				'email',        // Validates with validate_setting_text_field.
535
-				'number',       // Validates with validate_setting_text_field.
536
-				'color',        // Validates with validate_setting_text_field.
537
-				'password',     // Validates with validate_setting_text_field.
538
-				'textarea',     // Validates with validate_setting_textarea_field.
539
-				'select',       // Validates with validate_setting_select_field.
540
-				'multiselect',  // Validates with validate_setting_multiselect_field.
541
-				'radio',        // Validates with validate_setting_radio_field (-> validate_setting_select_field).
542
-				'checkbox',     // Validates with validate_setting_checkbox_field.
543
-				'header',       // Validates with validate_setting_text_field.
544
-			)
545
-		);
546
-
547
-	}
548
-
549
-	/**
550
-	 * Get the settings schema, conforming to JSON Schema.
551
-	 *
552
-	 * @return array
553
-	 */
554
-	public function get_item_schema() {
555
-
556
-		// Maybe retrieve the schema from cache.
557
-		if ( ! empty( $this->schema ) ) {
558
-			return $this->add_additional_fields_schema( $this->schema );
559
-		}
560
-
561
-		$schema = array(
562
-			'$schema'    => 'http://json-schema.org/draft-04/schema#',
563
-			'title'      => 'setting',
564
-			'type'       => 'object',
565
-			'properties' => array(
566
-				'id'          => array(
567
-					'description' => __( 'A unique identifier for the setting.', 'invoicing' ),
568
-					'type'        => 'string',
569
-					'arg_options' => array(
570
-						'sanitize_callback' => 'sanitize_title',
571
-					),
572
-					'context'     => array( 'view', 'edit' ),
573
-					'readonly'    => true,
574
-				),
575
-				'tab'         => array(
576
-					'description' => __( 'An identifier for the tab this setting belongs to.', 'invoicing' ),
577
-					'type'        => 'string',
578
-					'arg_options' => array(
579
-						'sanitize_callback' => 'sanitize_title',
580
-					),
581
-					'context'     => array( 'view', 'edit' ),
582
-					'readonly'    => true,
583
-				),
584
-				'section'     => array(
585
-					'description' => __( 'An identifier for the section this setting belongs to.', 'invoicing' ),
586
-					'type'        => 'string',
587
-					'arg_options' => array(
588
-						'sanitize_callback' => 'sanitize_title',
589
-					),
590
-					'context'     => array( 'view', 'edit' ),
591
-					'readonly'    => true,
592
-				),
593
-				'name'        => array(
594
-					'description' => __( 'A human readable label for the setting used in interfaces.', 'invoicing' ),
595
-					'type'        => 'string',
596
-					'arg_options' => array(
597
-						'sanitize_callback' => 'sanitize_text_field',
598
-					),
599
-					'context'     => array( 'view', 'edit' ),
600
-					'readonly'    => true,
601
-				),
602
-				'desc'        => array(
603
-					'description' => __( 'A human readable description for the setting used in interfaces.', 'invoicing' ),
604
-					'type'        => 'string',
605
-					'context'     => array( 'view', 'edit' ),
606
-					'readonly'    => true,
607
-				),
608
-				'value'       => array(
609
-					'description' => __( 'The current value of this setting.', 'invoicing' ),
610
-					'type'        => 'mixed',
611
-					'context'     => array( 'view', 'edit' ),
612
-				),
613
-				'default'     => array(
614
-					'description' => __( 'Default value for the setting.', 'invoicing' ),
615
-					'type'        => 'mixed',
616
-					'context'     => array( 'view', 'edit' ),
617
-					'readonly'    => true,
618
-				),
619
-				'placeholder' => array(
620
-					'description' => __( 'Placeholder text to be displayed in text inputs.', 'invoicing' ),
621
-					'type'        => 'string',
622
-					'arg_options' => array(
623
-						'sanitize_callback' => 'sanitize_text_field',
624
-					),
625
-					'context'     => array( 'view', 'edit' ),
626
-					'readonly'    => true,
627
-				),
628
-				'type'        => array(
629
-					'description' => __( 'Type of setting.', 'invoicing' ),
630
-					'type'        => 'string',
631
-					'arg_options' => array(
632
-						'sanitize_callback' => 'sanitize_text_field',
633
-					),
634
-					'context'     => array( 'view', 'edit' ),
635
-					'enum'        => array( 'text', 'email', 'number', 'color', 'password', 'textarea', 'select', 'multiselect', 'radio', 'image_width', 'checkbox', 'raw_html' ),
636
-					'readonly'    => true,
637
-				),
638
-				'options'     => array(
639
-					'description' => __( 'Array of options (key value pairs) for inputs such as select, multiselect, and radio buttons.', 'invoicing' ),
640
-					'type'        => 'object',
641
-					'context'     => array( 'view', 'edit' ),
642
-					'readonly'    => true,
643
-				),
644
-				'readonly'    => array(
645
-					'description' => __( 'Whether or not this setting is readonly', 'invoicing' ),
646
-					'type'        => 'string',
647
-					'context'     => array( 'view' ),
648
-					'readonly'    => true,
649
-				),
650
-				'faux'        => array(
651
-					'description' => __( 'Whether or not this setting is readonly/faux', 'invoicing' ),
652
-					'type'        => 'string',
653
-					'context'     => array( 'view' ),
654
-					'readonly'    => true,
655
-				),
656
-			),
657
-		);
658
-
659
-		// Filters the settings schema for the REST API.
533
+                'text',         // Validates with validate_setting_text_field.
534
+                'email',        // Validates with validate_setting_text_field.
535
+                'number',       // Validates with validate_setting_text_field.
536
+                'color',        // Validates with validate_setting_text_field.
537
+                'password',     // Validates with validate_setting_text_field.
538
+                'textarea',     // Validates with validate_setting_textarea_field.
539
+                'select',       // Validates with validate_setting_select_field.
540
+                'multiselect',  // Validates with validate_setting_multiselect_field.
541
+                'radio',        // Validates with validate_setting_radio_field (-> validate_setting_select_field).
542
+                'checkbox',     // Validates with validate_setting_checkbox_field.
543
+                'header',       // Validates with validate_setting_text_field.
544
+            )
545
+        );
546
+
547
+    }
548
+
549
+    /**
550
+     * Get the settings schema, conforming to JSON Schema.
551
+     *
552
+     * @return array
553
+     */
554
+    public function get_item_schema() {
555
+
556
+        // Maybe retrieve the schema from cache.
557
+        if ( ! empty( $this->schema ) ) {
558
+            return $this->add_additional_fields_schema( $this->schema );
559
+        }
560
+
561
+        $schema = array(
562
+            '$schema'    => 'http://json-schema.org/draft-04/schema#',
563
+            'title'      => 'setting',
564
+            'type'       => 'object',
565
+            'properties' => array(
566
+                'id'          => array(
567
+                    'description' => __( 'A unique identifier for the setting.', 'invoicing' ),
568
+                    'type'        => 'string',
569
+                    'arg_options' => array(
570
+                        'sanitize_callback' => 'sanitize_title',
571
+                    ),
572
+                    'context'     => array( 'view', 'edit' ),
573
+                    'readonly'    => true,
574
+                ),
575
+                'tab'         => array(
576
+                    'description' => __( 'An identifier for the tab this setting belongs to.', 'invoicing' ),
577
+                    'type'        => 'string',
578
+                    'arg_options' => array(
579
+                        'sanitize_callback' => 'sanitize_title',
580
+                    ),
581
+                    'context'     => array( 'view', 'edit' ),
582
+                    'readonly'    => true,
583
+                ),
584
+                'section'     => array(
585
+                    'description' => __( 'An identifier for the section this setting belongs to.', 'invoicing' ),
586
+                    'type'        => 'string',
587
+                    'arg_options' => array(
588
+                        'sanitize_callback' => 'sanitize_title',
589
+                    ),
590
+                    'context'     => array( 'view', 'edit' ),
591
+                    'readonly'    => true,
592
+                ),
593
+                'name'        => array(
594
+                    'description' => __( 'A human readable label for the setting used in interfaces.', 'invoicing' ),
595
+                    'type'        => 'string',
596
+                    'arg_options' => array(
597
+                        'sanitize_callback' => 'sanitize_text_field',
598
+                    ),
599
+                    'context'     => array( 'view', 'edit' ),
600
+                    'readonly'    => true,
601
+                ),
602
+                'desc'        => array(
603
+                    'description' => __( 'A human readable description for the setting used in interfaces.', 'invoicing' ),
604
+                    'type'        => 'string',
605
+                    'context'     => array( 'view', 'edit' ),
606
+                    'readonly'    => true,
607
+                ),
608
+                'value'       => array(
609
+                    'description' => __( 'The current value of this setting.', 'invoicing' ),
610
+                    'type'        => 'mixed',
611
+                    'context'     => array( 'view', 'edit' ),
612
+                ),
613
+                'default'     => array(
614
+                    'description' => __( 'Default value for the setting.', 'invoicing' ),
615
+                    'type'        => 'mixed',
616
+                    'context'     => array( 'view', 'edit' ),
617
+                    'readonly'    => true,
618
+                ),
619
+                'placeholder' => array(
620
+                    'description' => __( 'Placeholder text to be displayed in text inputs.', 'invoicing' ),
621
+                    'type'        => 'string',
622
+                    'arg_options' => array(
623
+                        'sanitize_callback' => 'sanitize_text_field',
624
+                    ),
625
+                    'context'     => array( 'view', 'edit' ),
626
+                    'readonly'    => true,
627
+                ),
628
+                'type'        => array(
629
+                    'description' => __( 'Type of setting.', 'invoicing' ),
630
+                    'type'        => 'string',
631
+                    'arg_options' => array(
632
+                        'sanitize_callback' => 'sanitize_text_field',
633
+                    ),
634
+                    'context'     => array( 'view', 'edit' ),
635
+                    'enum'        => array( 'text', 'email', 'number', 'color', 'password', 'textarea', 'select', 'multiselect', 'radio', 'image_width', 'checkbox', 'raw_html' ),
636
+                    'readonly'    => true,
637
+                ),
638
+                'options'     => array(
639
+                    'description' => __( 'Array of options (key value pairs) for inputs such as select, multiselect, and radio buttons.', 'invoicing' ),
640
+                    'type'        => 'object',
641
+                    'context'     => array( 'view', 'edit' ),
642
+                    'readonly'    => true,
643
+                ),
644
+                'readonly'    => array(
645
+                    'description' => __( 'Whether or not this setting is readonly', 'invoicing' ),
646
+                    'type'        => 'string',
647
+                    'context'     => array( 'view' ),
648
+                    'readonly'    => true,
649
+                ),
650
+                'faux'        => array(
651
+                    'description' => __( 'Whether or not this setting is readonly/faux', 'invoicing' ),
652
+                    'type'        => 'string',
653
+                    'context'     => array( 'view' ),
654
+                    'readonly'    => true,
655
+                ),
656
+            ),
657
+        );
658
+
659
+        // Filters the settings schema for the REST API.
660 660
         $schema = apply_filters( 'getpaid_rest_settings_schema', $schema );
661 661
 
662
-		// Cache the settings schema.
663
-		$this->schema = $schema;
664
-
665
-		return $this->add_additional_fields_schema( $this->schema );
666
-
667
-	}
668
-
669
-	/**
670
-	 * Validate a text value for a text based setting.
671
-	 *
672
-	 * @since 2.0.0
673
-	 * @param string $value Value.
674
-	 * @param array  $setting Setting.
675
-	 * @return string
676
-	 */
677
-	public function validate_setting_text_field( $value ) {
678
-		$value = is_null( $value ) ? '' : $value;
679
-		return wp_kses_post( trim( stripslashes( $value ) ) );
680
-	}
681
-
682
-	/**
683
-	 * Validate select based settings.
684
-	 *
685
-	 * @since 2.0.0
686
-	 * @param string $value Value.
687
-	 * @param array  $setting Setting.
688
-	 * @return string|WP_Error
689
-	 */
690
-	public function validate_setting_select_field( $value, $setting ) {
691
-		if ( array_key_exists( $value, $setting['options'] ) ) {
692
-			return $value;
693
-		} else {
694
-			return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'invoicing' ), array( 'status' => 400 ) );
695
-		}
696
-	}
697
-
698
-	/**
699
-	 * Validate multiselect based settings.
700
-	 *
701
-	 * @since 2.0.0
702
-	 * @param array $values Values.
703
-	 * @param array $setting Setting.
704
-	 * @return array|WP_Error
705
-	 */
706
-	public function validate_setting_multiselect_field( $values, $setting ) {
707
-		if ( empty( $values ) ) {
708
-			return array();
709
-		}
710
-
711
-		if ( ! is_array( $values ) ) {
712
-			return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'invoicing' ), array( 'status' => 400 ) );
713
-		}
714
-
715
-		$final_values = array();
716
-		foreach ( $values as $value ) {
717
-			if ( array_key_exists( $value, $setting['options'] ) ) {
718
-				$final_values[] = $value;
719
-			}
720
-		}
721
-
722
-		return $final_values;
723
-	}
724
-
725
-	/**
726
-	 * Validate radio based settings.
727
-	 *
728
-	 * @since 2.0.0
729
-	 * @param string $value Value.
730
-	 * @param array  $setting Setting.
731
-	 * @return string|WP_Error
732
-	 */
733
-	public function validate_setting_radio_field( $value, $setting ) {
734
-		return $this->validate_setting_select_field( $value, $setting );
735
-	}
736
-
737
-	/**
738
-	 * Validate checkbox based settings.
739
-	 *
740
-	 * @since 2.0.0
741
-	 * @param string $value Value.
742
-	 * @return int
743
-	 */
744
-	public function validate_setting_checkbox_field( $value ) {
745
-		return (int) ! empty( $value );
746
-	}
747
-
748
-	/**
749
-	 * Validate textarea based settings.
750
-	 *
751
-	 * @since 2.0.0
752
-	 * @param string $value Value.
753
-	 * @return string
754
-	 */
755
-	public function validate_setting_textarea_field( $value ) {
756
-		$value = is_null( $value ) ? '' : $value;
757
-		return wp_kses(
758
-			trim( stripslashes( $value ) ),
759
-			array_merge(
760
-				array(
761
-					'iframe' => array(
762
-						'src'   => true,
763
-						'style' => true,
764
-						'id'    => true,
765
-						'class' => true,
766
-					),
767
-				),
768
-				wp_kses_allowed_html( 'post' )
769
-			)
770
-		);
771
-	}
662
+        // Cache the settings schema.
663
+        $this->schema = $schema;
664
+
665
+        return $this->add_additional_fields_schema( $this->schema );
666
+
667
+    }
668
+
669
+    /**
670
+     * Validate a text value for a text based setting.
671
+     *
672
+     * @since 2.0.0
673
+     * @param string $value Value.
674
+     * @param array  $setting Setting.
675
+     * @return string
676
+     */
677
+    public function validate_setting_text_field( $value ) {
678
+        $value = is_null( $value ) ? '' : $value;
679
+        return wp_kses_post( trim( stripslashes( $value ) ) );
680
+    }
681
+
682
+    /**
683
+     * Validate select based settings.
684
+     *
685
+     * @since 2.0.0
686
+     * @param string $value Value.
687
+     * @param array  $setting Setting.
688
+     * @return string|WP_Error
689
+     */
690
+    public function validate_setting_select_field( $value, $setting ) {
691
+        if ( array_key_exists( $value, $setting['options'] ) ) {
692
+            return $value;
693
+        } else {
694
+            return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'invoicing' ), array( 'status' => 400 ) );
695
+        }
696
+    }
697
+
698
+    /**
699
+     * Validate multiselect based settings.
700
+     *
701
+     * @since 2.0.0
702
+     * @param array $values Values.
703
+     * @param array $setting Setting.
704
+     * @return array|WP_Error
705
+     */
706
+    public function validate_setting_multiselect_field( $values, $setting ) {
707
+        if ( empty( $values ) ) {
708
+            return array();
709
+        }
710
+
711
+        if ( ! is_array( $values ) ) {
712
+            return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'invoicing' ), array( 'status' => 400 ) );
713
+        }
714
+
715
+        $final_values = array();
716
+        foreach ( $values as $value ) {
717
+            if ( array_key_exists( $value, $setting['options'] ) ) {
718
+                $final_values[] = $value;
719
+            }
720
+        }
721
+
722
+        return $final_values;
723
+    }
724
+
725
+    /**
726
+     * Validate radio based settings.
727
+     *
728
+     * @since 2.0.0
729
+     * @param string $value Value.
730
+     * @param array  $setting Setting.
731
+     * @return string|WP_Error
732
+     */
733
+    public function validate_setting_radio_field( $value, $setting ) {
734
+        return $this->validate_setting_select_field( $value, $setting );
735
+    }
736
+
737
+    /**
738
+     * Validate checkbox based settings.
739
+     *
740
+     * @since 2.0.0
741
+     * @param string $value Value.
742
+     * @return int
743
+     */
744
+    public function validate_setting_checkbox_field( $value ) {
745
+        return (int) ! empty( $value );
746
+    }
747
+
748
+    /**
749
+     * Validate textarea based settings.
750
+     *
751
+     * @since 2.0.0
752
+     * @param string $value Value.
753
+     * @return string
754
+     */
755
+    public function validate_setting_textarea_field( $value ) {
756
+        $value = is_null( $value ) ? '' : $value;
757
+        return wp_kses(
758
+            trim( stripslashes( $value ) ),
759
+            array_merge(
760
+                array(
761
+                    'iframe' => array(
762
+                        'src'   => true,
763
+                        'style' => true,
764
+                        'id'    => true,
765
+                        'class' => true,
766
+                    ),
767
+                ),
768
+                wp_kses_allowed_html( 'post' )
769
+            )
770
+        );
771
+    }
772 772
 
773 773
 }
Please login to merge, or discard this patch.
Spacing   +184 added lines, -184 removed lines patch added patch discarded remove patch
@@ -9,7 +9,7 @@  discard block
 block discarded – undo
9 9
  * @since   2.0.0
10 10
  */
11 11
 
12
-defined( 'ABSPATH' ) || exit;
12
+defined('ABSPATH') || exit;
13 13
 
14 14
 /**
15 15
  * GetPaid REST Setting controller class.
@@ -39,7 +39,7 @@  discard block
 block discarded – undo
39 39
 	 *
40 40
 	 * @see register_rest_route()
41 41
 	 */
42
-	public function register_namespace_routes( $namespace ) {
42
+	public function register_namespace_routes($namespace) {
43 43
 
44 44
 		// List all registered tabs.
45 45
 		register_rest_route(
@@ -48,8 +48,8 @@  discard block
 block discarded – undo
48 48
 			array(
49 49
 				array(
50 50
 					'methods'             => WP_REST_Server::READABLE,
51
-					'callback'            => array( $this, 'get_tabs' ),
52
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
51
+					'callback'            => array($this, 'get_tabs'),
52
+					'permission_callback' => array($this, 'get_items_permissions_check'),
53 53
 				),
54 54
 				'schema' => '__return_empty_array',
55 55
 			)
@@ -62,23 +62,23 @@  discard block
 block discarded – undo
62 62
 			array(
63 63
 				'args'   => array(
64 64
 					'id' => array(
65
-						'description' => __( 'Unique identifier for the setting.', 'invoicing' ),
65
+						'description' => __('Unique identifier for the setting.', 'invoicing'),
66 66
 						'type'        => 'string',
67 67
 						'required'    => true,
68 68
 					),
69 69
 				),
70 70
 				array(
71 71
 					'methods'             => WP_REST_Server::READABLE,
72
-					'callback'            => array( $this, 'get_item' ),
73
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
72
+					'callback'            => array($this, 'get_item'),
73
+					'permission_callback' => array($this, 'get_items_permissions_check'),
74 74
 				),
75 75
 				array(
76 76
 					'methods'             => WP_REST_Server::EDITABLE,
77
-					'callback'            => array( $this, 'update_item' ),
78
-					'permission_callback' => array( $this, 'update_items_permissions_check' ),
79
-					'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
77
+					'callback'            => array($this, 'update_item'),
78
+					'permission_callback' => array($this, 'update_items_permissions_check'),
79
+					'args'                => $this->get_endpoint_args_for_item_schema(WP_REST_Server::EDITABLE),
80 80
 				),
81
-				'schema' => array( $this, 'get_public_item_schema' ),
81
+				'schema' => array($this, 'get_public_item_schema'),
82 82
 			)
83 83
 		);
84 84
 
@@ -89,16 +89,16 @@  discard block
 block discarded – undo
89 89
 			array(
90 90
 				'args'   => array(
91 91
 					'tab' => array(
92
-						'description' => __( 'Unique identifier for the tab whose sections should be retrieved.', 'invoicing' ),
92
+						'description' => __('Unique identifier for the tab whose sections should be retrieved.', 'invoicing'),
93 93
 						'type'        => 'string',
94 94
 						'required'    => true,
95
-						'enum'        => array_keys( wpinv_get_settings_tabs() ),
95
+						'enum'        => array_keys(wpinv_get_settings_tabs()),
96 96
 					),
97 97
 				),
98 98
 				array(
99 99
 					'methods'             => WP_REST_Server::READABLE,
100
-					'callback'            => array( $this, 'get_sections' ),
101
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
100
+					'callback'            => array($this, 'get_sections'),
101
+					'permission_callback' => array($this, 'get_items_permissions_check'),
102 102
 				),
103 103
 				'schema' => '__return_empty_array',
104 104
 			)
@@ -111,23 +111,23 @@  discard block
 block discarded – undo
111 111
 			array(
112 112
 				'args'   => array(
113 113
 					'tab'     => array(
114
-						'description' => __( 'Unique identifier for the tab whose settings should be retrieved.', 'invoicing' ),
114
+						'description' => __('Unique identifier for the tab whose settings should be retrieved.', 'invoicing'),
115 115
 						'type'        => 'string',
116 116
 						'required'    => true,
117
-						'enum'        => array_keys( wpinv_get_settings_tabs() ),
117
+						'enum'        => array_keys(wpinv_get_settings_tabs()),
118 118
 					),
119 119
 					'section' => array(
120
-						'description' => __( 'The section in the tab whose settings should be retrieved.', 'invoicing' ),
120
+						'description' => __('The section in the tab whose settings should be retrieved.', 'invoicing'),
121 121
 						'type'        => 'string',
122 122
 						'required'    => true,
123 123
 					),
124 124
 				),
125 125
 				array(
126 126
 					'methods'             => WP_REST_Server::READABLE,
127
-					'callback'            => array( $this, 'get_items' ),
128
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
127
+					'callback'            => array($this, 'get_items'),
128
+					'permission_callback' => array($this, 'get_items_permissions_check'),
129 129
 				),
130
-				'schema' => array( $this, 'get_public_item_schema' ),
130
+				'schema' => array($this, 'get_public_item_schema'),
131 131
 			)
132 132
 		); 
133 133
 
@@ -137,17 +137,17 @@  discard block
 block discarded – undo
137 137
 			array(
138 138
 				'args'   => array(
139 139
 					'id' => array(
140
-						'description' => __( 'Setting ID.', 'invoicing' ),
140
+						'description' => __('Setting ID.', 'invoicing'),
141 141
 						'type'        => 'string',
142 142
 					),
143 143
 				),
144 144
 				array(
145 145
 					'methods'             => WP_REST_Server::EDITABLE,
146
-					'callback'            => array( $this, 'batch_items' ),
147
-					'permission_callback' => array( $this, 'batch_items_permissions_check' ),
148
-					'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
146
+					'callback'            => array($this, 'batch_items'),
147
+					'permission_callback' => array($this, 'batch_items_permissions_check'),
148
+					'args'                => $this->get_endpoint_args_for_item_schema(WP_REST_Server::EDITABLE),
149 149
 				),
150
-				'schema' => array( $this, 'get_public_batch_schema' ),
150
+				'schema' => array($this, 'get_public_batch_schema'),
151 151
 			)
152 152
 		);
153 153
 
@@ -160,33 +160,33 @@  discard block
 block discarded – undo
160 160
 	 * @param  WP_REST_Request $request Request data.
161 161
 	 * @return WP_Error|WP_REST_Response
162 162
 	 */
163
-	public function get_items( $request ) {
163
+	public function get_items($request) {
164 164
 
165 165
 		$settings = $this->get_settings();
166 166
 
167
-		if ( ! isset( $settings[ $request['tab'] ] ) ) {
168
-			return new WP_Error( 'rest_invalid_tab', __( 'Invalid tab.', 'invoicing' ), array( 'status' => 400 ) );
167
+		if (!isset($settings[$request['tab']])) {
168
+			return new WP_Error('rest_invalid_tab', __('Invalid tab.', 'invoicing'), array('status' => 400));
169 169
 		}
170 170
 
171
-		if ( ! isset( $settings[ $request['tab'] ][ $request['section'] ] ) ) {
172
-			return new WP_Error( 'rest_invalid_section', __( 'Invalid section.', 'invoicing' ), array( 'status' => 400 ) );
171
+		if (!isset($settings[$request['tab']][$request['section']])) {
172
+			return new WP_Error('rest_invalid_section', __('Invalid section.', 'invoicing'), array('status' => 400));
173 173
 		}
174 174
 
175
-		$settings = $settings[ $request['tab'] ][ $request['section'] ];
175
+		$settings = $settings[$request['tab']][$request['section']];
176 176
 		$prepared = array();
177 177
 
178
-		foreach ( $settings as $setting ) {
178
+		foreach ($settings as $setting) {
179 179
 
180
-			$setting      = $this->sanitize_setting( $setting );
181
-			$setting_data = $this->prepare_item_for_response( $setting, $request );
182
-			$setting_data = $this->prepare_response_for_collection( $setting_data );
180
+			$setting      = $this->sanitize_setting($setting);
181
+			$setting_data = $this->prepare_item_for_response($setting, $request);
182
+			$setting_data = $this->prepare_response_for_collection($setting_data);
183 183
 
184
-			if ( $this->is_setting_type_valid( $setting['type'] ) ) {
185
-				$prepared[]   = $setting_data;
184
+			if ($this->is_setting_type_valid($setting['type'])) {
185
+				$prepared[] = $setting_data;
186 186
 			}
187 187
 }
188 188
 
189
-		return rest_ensure_response( $prepared );
189
+		return rest_ensure_response($prepared);
190 190
 	}
191 191
 
192 192
 	/**
@@ -196,16 +196,16 @@  discard block
 block discarded – undo
196 196
 	 * @param  WP_REST_Request $request Request data.
197 197
 	 * @return WP_Error|WP_REST_Response
198 198
 	 */
199
-	public function get_item( $request ) {
200
-		$setting  = $this->get_setting( $request['id'] );
199
+	public function get_item($request) {
200
+		$setting = $this->get_setting($request['id']);
201 201
 
202
-		if ( is_wp_error( $setting ) ) {
202
+		if (is_wp_error($setting)) {
203 203
 			return $setting;
204 204
 		}
205 205
 
206
-		$setting  = $this->sanitize_setting( $setting );
207
-		$response = $this->prepare_item_for_response( $setting, $request );
208
-		return rest_ensure_response( $response );
206
+		$setting  = $this->sanitize_setting($setting);
207
+		$response = $this->prepare_item_for_response($setting, $request);
208
+		return rest_ensure_response($response);
209 209
 	}
210 210
 
211 211
 	/**
@@ -215,29 +215,29 @@  discard block
 block discarded – undo
215 215
 	 * @param  WP_REST_Request $request Request data.
216 216
 	 * @return WP_Error|WP_REST_Response
217 217
 	 */
218
-	public function update_item( $request ) {
219
-		$setting = $this->get_setting( $request['id'] );
218
+	public function update_item($request) {
219
+		$setting = $this->get_setting($request['id']);
220 220
 
221
-		if ( is_wp_error( $setting ) ) {
221
+		if (is_wp_error($setting)) {
222 222
 			return $setting;
223 223
 		}
224 224
 
225
-		if ( is_callable( array( $this, 'validate_setting_' . $setting['type'] . '_field' ) ) ) {
226
-			$value = $this->{'validate_setting_' . $setting['type'] . '_field'}( $request['value'], $setting );
225
+		if (is_callable(array($this, 'validate_setting_' . $setting['type'] . '_field'))) {
226
+			$value = $this->{'validate_setting_' . $setting['type'] . '_field'}($request['value'], $setting);
227 227
 		} else {
228
-			$value = $this->validate_setting_text_field( $request['value'], $setting );
228
+			$value = $this->validate_setting_text_field($request['value'], $setting);
229 229
 		}
230 230
 
231
-		if ( is_wp_error( $value ) ) {
231
+		if (is_wp_error($value)) {
232 232
 			return $value;
233 233
 		}
234 234
 
235
-		wpinv_update_option( $request['id'], $value );
235
+		wpinv_update_option($request['id'], $value);
236 236
 		$setting['value'] = $value;
237
-		$setting          = $this->sanitize_setting( $setting );
238
-		$response         = $this->prepare_item_for_response( $setting, $request );
237
+		$setting          = $this->sanitize_setting($setting);
238
+		$response         = $this->prepare_item_for_response($setting, $request);
239 239
 
240
-		return rest_ensure_response( $response );
240
+		return rest_ensure_response($response);
241 241
 	}
242 242
 
243 243
 	/**
@@ -247,9 +247,9 @@  discard block
 block discarded – undo
247 247
 	 * @param WP_REST_Request $request Full data about the request.
248 248
 	 * @return WP_Error|boolean
249 249
 	 */
250
-	public function get_items_permissions_check( $request ) {
251
-		if ( ! wpinv_current_user_can_manage_invoicing() ) {
252
-			return new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot list resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
250
+	public function get_items_permissions_check($request) {
251
+		if (!wpinv_current_user_can_manage_invoicing()) {
252
+			return new WP_Error('rest_cannot_view', __('Sorry, you cannot list resources.', 'invoicing'), array('status' => rest_authorization_required_code()));
253 253
 		}
254 254
 
255 255
 		return true;
@@ -262,9 +262,9 @@  discard block
 block discarded – undo
262 262
 	 * @param WP_REST_Request $request Full data about the request.
263 263
 	 * @return WP_Error|boolean
264 264
 	 */
265
-	public function update_items_permissions_check( $request ) {
266
-		if ( ! wpinv_current_user_can_manage_invoicing() ) {
267
-			return new WP_Error( 'rest_cannot_edit', __( 'Sorry, you cannot edit this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
265
+	public function update_items_permissions_check($request) {
266
+		if (!wpinv_current_user_can_manage_invoicing()) {
267
+			return new WP_Error('rest_cannot_edit', __('Sorry, you cannot edit this resource.', 'invoicing'), array('status' => rest_authorization_required_code()));
268 268
 		}
269 269
 
270 270
 		return true;
@@ -277,8 +277,8 @@  discard block
 block discarded – undo
277 277
 	 *
278 278
 	 * @return boolean|WP_Error
279 279
 	 */
280
-	public function batch_items_permissions_check( $request ) {
281
-		return wpinv_current_user_can_manage_invoicing() ? true : new WP_Error( 'rest_cannot_batch', __( 'Sorry, you are not allowed to batch manipulate this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
280
+	public function batch_items_permissions_check($request) {
281
+		return wpinv_current_user_can_manage_invoicing() ? true : new WP_Error('rest_cannot_batch', __('Sorry, you are not allowed to batch manipulate this resource.', 'invoicing'), array('status' => rest_authorization_required_code()));
282 282
 	}
283 283
 
284 284
 	/**
@@ -287,14 +287,14 @@  discard block
 block discarded – undo
287 287
 	 * @param string $setting_id Setting ID.
288 288
 	 * @return array Links for the given setting.
289 289
 	 */
290
-	protected function prepare_links( $setting_id ) {
290
+	protected function prepare_links($setting_id) {
291 291
 
292 292
 		$links = array(
293 293
 			'self'       => array(
294
-				'href' => rest_url( sprintf( '/%s/%s/setting/%s', $this->namespace, $this->rest_base, $setting_id ) ),
294
+				'href' => rest_url(sprintf('/%s/%s/setting/%s', $this->namespace, $this->rest_base, $setting_id)),
295 295
 			),
296 296
 			'collection' => array(
297
-				'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
297
+				'href' => rest_url(sprintf('/%s/%s', $this->namespace, $this->rest_base)),
298 298
 			),
299 299
 		);
300 300
 
@@ -309,14 +309,14 @@  discard block
 block discarded – undo
309 309
 	 * @param WP_REST_Request $request Request object.
310 310
 	 * @return WP_REST_Response $response Response data.
311 311
 	 */
312
-	public function prepare_item_for_response( $item, $request ) {
313
-		$context = empty( $request['context'] ) ? 'view' : $request['context'];
314
-		$data    = $this->add_additional_fields_to_object( $item, $request );
315
-		$data    = $this->filter_response_by_context( $data, $context );
312
+	public function prepare_item_for_response($item, $request) {
313
+		$context = empty($request['context']) ? 'view' : $request['context'];
314
+		$data    = $this->add_additional_fields_to_object($item, $request);
315
+		$data    = $this->filter_response_by_context($data, $context);
316 316
 
317
-		$response = rest_ensure_response( $data );
317
+		$response = rest_ensure_response($data);
318 318
 
319
-		$response->add_links( $this->prepare_links( $item['id'] ) );
319
+		$response->add_links($this->prepare_links($item['id']));
320 320
 
321 321
 		return $response;
322 322
 	}
@@ -329,10 +329,10 @@  discard block
 block discarded – undo
329 329
 	 * @param  array $setting Setting.
330 330
 	 * @return array
331 331
 	 */
332
-	public function filter_setting( $setting ) {
332
+	public function filter_setting($setting) {
333 333
 		return array_intersect_key(
334 334
 			$setting,
335
-			array_flip( array_filter( array_keys( $setting ), array( $this, 'allowed_setting_keys' ) ) )
335
+			array_flip(array_filter(array_keys($setting), array($this, 'allowed_setting_keys')))
336 336
 		);
337 337
 	}
338 338
 
@@ -342,8 +342,8 @@  discard block
 block discarded – undo
342 342
 	 * @param  string $key Key to check.
343 343
 	 * @return boolean
344 344
 	 */
345
-	public function allowed_setting_keys( $key ) {
346
-		return in_array( $key, array_keys( $this->setting_defaults() ), true );
345
+	public function allowed_setting_keys($key) {
346
+		return in_array($key, array_keys($this->setting_defaults()), true);
347 347
 	}
348 348
 
349 349
 	/**
@@ -375,11 +375,11 @@  discard block
 block discarded – undo
375 375
 	 * @param  array $setting The setting to sanitize.
376 376
 	 * @return array
377 377
 	 */
378
-	public function sanitize_setting( $setting ) {
378
+	public function sanitize_setting($setting) {
379 379
 
380
-		$setting          = wp_parse_args( $setting, $this->setting_defaults() );
381
-		$setting['value'] = wpinv_get_option( $setting['id'], $setting['std'] );
382
-		return $this->filter_setting( $setting );
380
+		$setting          = wp_parse_args($setting, $this->setting_defaults());
381
+		$setting['value'] = wpinv_get_option($setting['id'], $setting['std']);
382
+		return $this->filter_setting($setting);
383 383
 
384 384
 	}
385 385
 
@@ -390,29 +390,29 @@  discard block
 block discarded – undo
390 390
 	 * @param string $setting_id Setting ID.
391 391
 	 * @return array|WP_Error
392 392
 	 */
393
-	public function get_setting( $setting_id ) {
393
+	public function get_setting($setting_id) {
394 394
 
395
-		if ( empty( $setting_id ) ) {
396
-			return new WP_Error( 'rest_setting_setting_invalid', __( 'Invalid setting.', 'invoicing' ), array( 'status' => 404 ) );
395
+		if (empty($setting_id)) {
396
+			return new WP_Error('rest_setting_setting_invalid', __('Invalid setting.', 'invoicing'), array('status' => 404));
397 397
 		}
398 398
 
399
-		$settings  = $this->get_settings();
399
+		$settings = $this->get_settings();
400 400
 
401
-		foreach ( $settings as $tabs ) {
401
+		foreach ($settings as $tabs) {
402 402
 
403
-			foreach ( $tabs as $sections ) {
403
+			foreach ($tabs as $sections) {
404 404
 
405
-				if ( isset( $sections[ $setting_id ] ) ) {
406
-					if ( ! $this->is_setting_type_valid( $sections[ $setting_id ]['type'] ) ) {
407
-						return new WP_Error( 'rest_setting_setting_type_invalid', __( 'Invalid setting type.', 'invoicing' ), array( 'status' => 404 ) );
405
+				if (isset($sections[$setting_id])) {
406
+					if (!$this->is_setting_type_valid($sections[$setting_id]['type'])) {
407
+						return new WP_Error('rest_setting_setting_type_invalid', __('Invalid setting type.', 'invoicing'), array('status' => 404));
408 408
 					}
409 409
 
410
-					return $sections[ $setting_id ];
410
+					return $sections[$setting_id];
411 411
 				}
412 412
 }
413 413
 }
414 414
 
415
-		return new WP_Error( 'rest_setting_setting_invalid', __( 'Invalid setting.', 'invoicing' ), array( 'status' => 404 ) );
415
+		return new WP_Error('rest_setting_setting_invalid', __('Invalid setting.', 'invoicing'), array('status' => 404));
416 416
 	}
417 417
 
418 418
 	/**
@@ -421,41 +421,41 @@  discard block
 block discarded – undo
421 421
 	 * @param  WP_REST_Request $request Request data.
422 422
 	 * @return array
423 423
 	 */
424
-	public function get_tabs( $request ) {
424
+	public function get_tabs($request) {
425 425
 		$tabs     = wpinv_get_settings_tabs();
426 426
 		$prepared = array();
427 427
 
428
-		foreach ( $tabs as $id => $tab ) {
428
+		foreach ($tabs as $id => $tab) {
429 429
 
430 430
 			$_request        = $request;
431
-			$_request['tab'] = sanitize_title( $id );
431
+			$_request['tab'] = sanitize_title($id);
432 432
 			$data            = array(
433
-				'id'       => sanitize_title( $id ),
434
-				'label'    => sanitize_text_field( $tab ),
435
-				'sections' => $this->get_sections( $_request ),
433
+				'id'       => sanitize_title($id),
434
+				'label'    => sanitize_text_field($tab),
435
+				'sections' => $this->get_sections($_request),
436 436
 			);
437 437
 
438
-			$data     = $this->add_additional_fields_to_object( $data, $request );
439
-			$response = rest_ensure_response( $data );
438
+			$data     = $this->add_additional_fields_to_object($data, $request);
439
+			$response = rest_ensure_response($data);
440 440
 
441
-			if ( ! is_wp_error( $response ) ) {
441
+			if (!is_wp_error($response)) {
442 442
 				$links = array(
443 443
 					'sections'   => array(
444
-						'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $id ) ),
444
+						'href' => rest_url(sprintf('/%s/%s/%s', $this->namespace, $this->rest_base, $id)),
445 445
 					),
446 446
 					'collection' => array(
447
-						'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
447
+						'href' => rest_url(sprintf('/%s/%s', $this->namespace, $this->rest_base)),
448 448
 					),
449 449
 				);
450
-				$response->add_links( $links );
451
-				$response = $this->prepare_response_for_collection( $response );
450
+				$response->add_links($links);
451
+				$response = $this->prepare_response_for_collection($response);
452 452
 			}
453 453
 
454 454
 			$prepared[] = $response;
455 455
 
456 456
 		}
457 457
 
458
-		return rest_ensure_response( $prepared );
458
+		return rest_ensure_response($prepared);
459 459
 	}
460 460
 
461 461
 	/**
@@ -464,43 +464,43 @@  discard block
 block discarded – undo
464 464
 	 * @param  WP_REST_Request $request Request data.
465 465
 	 * @return array
466 466
 	 */
467
-	public function get_sections( $request ) {
467
+	public function get_sections($request) {
468 468
 
469
-		$tab      = sanitize_title( $request['tab'] );
470
-		$sections = wpinv_get_settings_tab_sections( $tab );
469
+		$tab      = sanitize_title($request['tab']);
470
+		$sections = wpinv_get_settings_tab_sections($tab);
471 471
 		$prepared = array();
472 472
 
473
-		foreach ( $sections as $id => $section ) {
473
+		foreach ($sections as $id => $section) {
474 474
 
475
-			$data            = array(
476
-				'id'    => sanitize_title( $id ),
477
-				'label' => sanitize_text_field( $section ),
475
+			$data = array(
476
+				'id'    => sanitize_title($id),
477
+				'label' => sanitize_text_field($section),
478 478
 			);
479 479
 
480
-			$data     = $this->add_additional_fields_to_object( $data, $request );
481
-			$response = rest_ensure_response( $data );
480
+			$data     = $this->add_additional_fields_to_object($data, $request);
481
+			$response = rest_ensure_response($data);
482 482
 
483
-			if ( ! is_wp_error( $response ) ) {
483
+			if (!is_wp_error($response)) {
484 484
 				$links = array(
485 485
 					'settings'   => array(
486
-						'href' => rest_url( sprintf( '/%s/%s/%s/%s', $this->namespace, $this->rest_base, $tab, $id ) ),
486
+						'href' => rest_url(sprintf('/%s/%s/%s/%s', $this->namespace, $this->rest_base, $tab, $id)),
487 487
 					),
488 488
 					'collection' => array(
489
-						'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $tab ) ),
489
+						'href' => rest_url(sprintf('/%s/%s/%s', $this->namespace, $this->rest_base, $tab)),
490 490
 					),
491 491
 					'tabs'       => array(
492
-						'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
492
+						'href' => rest_url(sprintf('/%s/%s', $this->namespace, $this->rest_base)),
493 493
 					),
494 494
 				);
495
-				$response->add_links( $links );
496
-				$response = $this->prepare_response_for_collection( $response );
495
+				$response->add_links($links);
496
+				$response = $this->prepare_response_for_collection($response);
497 497
 			}
498 498
 
499 499
 			$prepared[] = $response;
500 500
 
501 501
 		}
502 502
 
503
-		return rest_ensure_response( $prepared );
503
+		return rest_ensure_response($prepared);
504 504
 	}
505 505
 
506 506
 	/**
@@ -510,7 +510,7 @@  discard block
 block discarded – undo
510 510
 	 */
511 511
 	public function get_settings() {
512 512
 
513
-		if ( empty( $this->settings ) ) {
513
+		if (empty($this->settings)) {
514 514
 			$this->settings = wpinv_get_registered_settings();
515 515
 		}
516 516
 
@@ -525,22 +525,22 @@  discard block
 block discarded – undo
525 525
 	 * @param  string $type Type.
526 526
 	 * @return bool
527 527
 	 */
528
-	public function is_setting_type_valid( $type ) {
528
+	public function is_setting_type_valid($type) {
529 529
 
530 530
 		return in_array(
531 531
 			$type,
532 532
             array(
533
-				'text',         // Validates with validate_setting_text_field.
534
-				'email',        // Validates with validate_setting_text_field.
535
-				'number',       // Validates with validate_setting_text_field.
536
-				'color',        // Validates with validate_setting_text_field.
537
-				'password',     // Validates with validate_setting_text_field.
538
-				'textarea',     // Validates with validate_setting_textarea_field.
539
-				'select',       // Validates with validate_setting_select_field.
540
-				'multiselect',  // Validates with validate_setting_multiselect_field.
541
-				'radio',        // Validates with validate_setting_radio_field (-> validate_setting_select_field).
542
-				'checkbox',     // Validates with validate_setting_checkbox_field.
543
-				'header',       // Validates with validate_setting_text_field.
533
+				'text', // Validates with validate_setting_text_field.
534
+				'email', // Validates with validate_setting_text_field.
535
+				'number', // Validates with validate_setting_text_field.
536
+				'color', // Validates with validate_setting_text_field.
537
+				'password', // Validates with validate_setting_text_field.
538
+				'textarea', // Validates with validate_setting_textarea_field.
539
+				'select', // Validates with validate_setting_select_field.
540
+				'multiselect', // Validates with validate_setting_multiselect_field.
541
+				'radio', // Validates with validate_setting_radio_field (-> validate_setting_select_field).
542
+				'checkbox', // Validates with validate_setting_checkbox_field.
543
+				'header', // Validates with validate_setting_text_field.
544 544
 			)
545 545
 		);
546 546
 
@@ -554,8 +554,8 @@  discard block
 block discarded – undo
554 554
 	public function get_item_schema() {
555 555
 
556 556
 		// Maybe retrieve the schema from cache.
557
-		if ( ! empty( $this->schema ) ) {
558
-			return $this->add_additional_fields_schema( $this->schema );
557
+		if (!empty($this->schema)) {
558
+			return $this->add_additional_fields_schema($this->schema);
559 559
 		}
560 560
 
561 561
 		$schema = array(
@@ -564,105 +564,105 @@  discard block
 block discarded – undo
564 564
 			'type'       => 'object',
565 565
 			'properties' => array(
566 566
 				'id'          => array(
567
-					'description' => __( 'A unique identifier for the setting.', 'invoicing' ),
567
+					'description' => __('A unique identifier for the setting.', 'invoicing'),
568 568
 					'type'        => 'string',
569 569
 					'arg_options' => array(
570 570
 						'sanitize_callback' => 'sanitize_title',
571 571
 					),
572
-					'context'     => array( 'view', 'edit' ),
572
+					'context'     => array('view', 'edit'),
573 573
 					'readonly'    => true,
574 574
 				),
575 575
 				'tab'         => array(
576
-					'description' => __( 'An identifier for the tab this setting belongs to.', 'invoicing' ),
576
+					'description' => __('An identifier for the tab this setting belongs to.', 'invoicing'),
577 577
 					'type'        => 'string',
578 578
 					'arg_options' => array(
579 579
 						'sanitize_callback' => 'sanitize_title',
580 580
 					),
581
-					'context'     => array( 'view', 'edit' ),
581
+					'context'     => array('view', 'edit'),
582 582
 					'readonly'    => true,
583 583
 				),
584 584
 				'section'     => array(
585
-					'description' => __( 'An identifier for the section this setting belongs to.', 'invoicing' ),
585
+					'description' => __('An identifier for the section this setting belongs to.', 'invoicing'),
586 586
 					'type'        => 'string',
587 587
 					'arg_options' => array(
588 588
 						'sanitize_callback' => 'sanitize_title',
589 589
 					),
590
-					'context'     => array( 'view', 'edit' ),
590
+					'context'     => array('view', 'edit'),
591 591
 					'readonly'    => true,
592 592
 				),
593 593
 				'name'        => array(
594
-					'description' => __( 'A human readable label for the setting used in interfaces.', 'invoicing' ),
594
+					'description' => __('A human readable label for the setting used in interfaces.', 'invoicing'),
595 595
 					'type'        => 'string',
596 596
 					'arg_options' => array(
597 597
 						'sanitize_callback' => 'sanitize_text_field',
598 598
 					),
599
-					'context'     => array( 'view', 'edit' ),
599
+					'context'     => array('view', 'edit'),
600 600
 					'readonly'    => true,
601 601
 				),
602 602
 				'desc'        => array(
603
-					'description' => __( 'A human readable description for the setting used in interfaces.', 'invoicing' ),
603
+					'description' => __('A human readable description for the setting used in interfaces.', 'invoicing'),
604 604
 					'type'        => 'string',
605
-					'context'     => array( 'view', 'edit' ),
605
+					'context'     => array('view', 'edit'),
606 606
 					'readonly'    => true,
607 607
 				),
608 608
 				'value'       => array(
609
-					'description' => __( 'The current value of this setting.', 'invoicing' ),
609
+					'description' => __('The current value of this setting.', 'invoicing'),
610 610
 					'type'        => 'mixed',
611
-					'context'     => array( 'view', 'edit' ),
611
+					'context'     => array('view', 'edit'),
612 612
 				),
613 613
 				'default'     => array(
614
-					'description' => __( 'Default value for the setting.', 'invoicing' ),
614
+					'description' => __('Default value for the setting.', 'invoicing'),
615 615
 					'type'        => 'mixed',
616
-					'context'     => array( 'view', 'edit' ),
616
+					'context'     => array('view', 'edit'),
617 617
 					'readonly'    => true,
618 618
 				),
619 619
 				'placeholder' => array(
620
-					'description' => __( 'Placeholder text to be displayed in text inputs.', 'invoicing' ),
620
+					'description' => __('Placeholder text to be displayed in text inputs.', 'invoicing'),
621 621
 					'type'        => 'string',
622 622
 					'arg_options' => array(
623 623
 						'sanitize_callback' => 'sanitize_text_field',
624 624
 					),
625
-					'context'     => array( 'view', 'edit' ),
625
+					'context'     => array('view', 'edit'),
626 626
 					'readonly'    => true,
627 627
 				),
628 628
 				'type'        => array(
629
-					'description' => __( 'Type of setting.', 'invoicing' ),
629
+					'description' => __('Type of setting.', 'invoicing'),
630 630
 					'type'        => 'string',
631 631
 					'arg_options' => array(
632 632
 						'sanitize_callback' => 'sanitize_text_field',
633 633
 					),
634
-					'context'     => array( 'view', 'edit' ),
635
-					'enum'        => array( 'text', 'email', 'number', 'color', 'password', 'textarea', 'select', 'multiselect', 'radio', 'image_width', 'checkbox', 'raw_html' ),
634
+					'context'     => array('view', 'edit'),
635
+					'enum'        => array('text', 'email', 'number', 'color', 'password', 'textarea', 'select', 'multiselect', 'radio', 'image_width', 'checkbox', 'raw_html'),
636 636
 					'readonly'    => true,
637 637
 				),
638 638
 				'options'     => array(
639
-					'description' => __( 'Array of options (key value pairs) for inputs such as select, multiselect, and radio buttons.', 'invoicing' ),
639
+					'description' => __('Array of options (key value pairs) for inputs such as select, multiselect, and radio buttons.', 'invoicing'),
640 640
 					'type'        => 'object',
641
-					'context'     => array( 'view', 'edit' ),
641
+					'context'     => array('view', 'edit'),
642 642
 					'readonly'    => true,
643 643
 				),
644 644
 				'readonly'    => array(
645
-					'description' => __( 'Whether or not this setting is readonly', 'invoicing' ),
645
+					'description' => __('Whether or not this setting is readonly', 'invoicing'),
646 646
 					'type'        => 'string',
647
-					'context'     => array( 'view' ),
647
+					'context'     => array('view'),
648 648
 					'readonly'    => true,
649 649
 				),
650 650
 				'faux'        => array(
651
-					'description' => __( 'Whether or not this setting is readonly/faux', 'invoicing' ),
651
+					'description' => __('Whether or not this setting is readonly/faux', 'invoicing'),
652 652
 					'type'        => 'string',
653
-					'context'     => array( 'view' ),
653
+					'context'     => array('view'),
654 654
 					'readonly'    => true,
655 655
 				),
656 656
 			),
657 657
 		);
658 658
 
659 659
 		// Filters the settings schema for the REST API.
660
-        $schema = apply_filters( 'getpaid_rest_settings_schema', $schema );
660
+        $schema = apply_filters('getpaid_rest_settings_schema', $schema);
661 661
 
662 662
 		// Cache the settings schema.
663 663
 		$this->schema = $schema;
664 664
 
665
-		return $this->add_additional_fields_schema( $this->schema );
665
+		return $this->add_additional_fields_schema($this->schema);
666 666
 
667 667
 	}
668 668
 
@@ -674,9 +674,9 @@  discard block
 block discarded – undo
674 674
 	 * @param array  $setting Setting.
675 675
 	 * @return string
676 676
 	 */
677
-	public function validate_setting_text_field( $value ) {
678
-		$value = is_null( $value ) ? '' : $value;
679
-		return wp_kses_post( trim( stripslashes( $value ) ) );
677
+	public function validate_setting_text_field($value) {
678
+		$value = is_null($value) ? '' : $value;
679
+		return wp_kses_post(trim(stripslashes($value)));
680 680
 	}
681 681
 
682 682
 	/**
@@ -687,11 +687,11 @@  discard block
 block discarded – undo
687 687
 	 * @param array  $setting Setting.
688 688
 	 * @return string|WP_Error
689 689
 	 */
690
-	public function validate_setting_select_field( $value, $setting ) {
691
-		if ( array_key_exists( $value, $setting['options'] ) ) {
690
+	public function validate_setting_select_field($value, $setting) {
691
+		if (array_key_exists($value, $setting['options'])) {
692 692
 			return $value;
693 693
 		} else {
694
-			return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'invoicing' ), array( 'status' => 400 ) );
694
+			return new WP_Error('rest_setting_value_invalid', __('An invalid setting value was passed.', 'invoicing'), array('status' => 400));
695 695
 		}
696 696
 	}
697 697
 
@@ -703,18 +703,18 @@  discard block
 block discarded – undo
703 703
 	 * @param array $setting Setting.
704 704
 	 * @return array|WP_Error
705 705
 	 */
706
-	public function validate_setting_multiselect_field( $values, $setting ) {
707
-		if ( empty( $values ) ) {
706
+	public function validate_setting_multiselect_field($values, $setting) {
707
+		if (empty($values)) {
708 708
 			return array();
709 709
 		}
710 710
 
711
-		if ( ! is_array( $values ) ) {
712
-			return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'invoicing' ), array( 'status' => 400 ) );
711
+		if (!is_array($values)) {
712
+			return new WP_Error('rest_setting_value_invalid', __('An invalid setting value was passed.', 'invoicing'), array('status' => 400));
713 713
 		}
714 714
 
715 715
 		$final_values = array();
716
-		foreach ( $values as $value ) {
717
-			if ( array_key_exists( $value, $setting['options'] ) ) {
716
+		foreach ($values as $value) {
717
+			if (array_key_exists($value, $setting['options'])) {
718 718
 				$final_values[] = $value;
719 719
 			}
720 720
 		}
@@ -730,8 +730,8 @@  discard block
 block discarded – undo
730 730
 	 * @param array  $setting Setting.
731 731
 	 * @return string|WP_Error
732 732
 	 */
733
-	public function validate_setting_radio_field( $value, $setting ) {
734
-		return $this->validate_setting_select_field( $value, $setting );
733
+	public function validate_setting_radio_field($value, $setting) {
734
+		return $this->validate_setting_select_field($value, $setting);
735 735
 	}
736 736
 
737 737
 	/**
@@ -741,8 +741,8 @@  discard block
 block discarded – undo
741 741
 	 * @param string $value Value.
742 742
 	 * @return int
743 743
 	 */
744
-	public function validate_setting_checkbox_field( $value ) {
745
-		return (int) ! empty( $value );
744
+	public function validate_setting_checkbox_field($value) {
745
+		return (int) !empty($value);
746 746
 	}
747 747
 
748 748
 	/**
@@ -752,10 +752,10 @@  discard block
 block discarded – undo
752 752
 	 * @param string $value Value.
753 753
 	 * @return string
754 754
 	 */
755
-	public function validate_setting_textarea_field( $value ) {
756
-		$value = is_null( $value ) ? '' : $value;
755
+	public function validate_setting_textarea_field($value) {
756
+		$value = is_null($value) ? '' : $value;
757 757
 		return wp_kses(
758
-			trim( stripslashes( $value ) ),
758
+			trim(stripslashes($value)),
759 759
 			array_merge(
760 760
 				array(
761 761
 					'iframe' => array(
@@ -765,7 +765,7 @@  discard block
 block discarded – undo
765 765
 						'class' => true,
766 766
 					),
767 767
 				),
768
-				wp_kses_allowed_html( 'post' )
768
+				wp_kses_allowed_html('post')
769 769
 			)
770 770
 		);
771 771
 	}
Please login to merge, or discard this patch.
vendor/ayecode/wp-super-duper/sd-functions.php 2 patches
Indentation   +2530 added lines, -2530 removed lines patch added patch discarded remove patch
@@ -11,21 +11,21 @@  discard block
 block discarded – undo
11 11
  * @return mixed|void
12 12
  */
13 13
 function sd_pagenow_exclude() {
14
-	return apply_filters(
15
-		'sd_pagenow_exclude',
16
-		array(
17
-			'upload.php',
18
-			'edit-comments.php',
19
-			'edit-tags.php',
20
-			'index.php',
21
-			'media-new.php',
22
-			'options-discussion.php',
23
-			'options-writing.php',
24
-			'edit.php',
25
-			'themes.php',
26
-			'users.php',
27
-		)
28
-	);
14
+    return apply_filters(
15
+        'sd_pagenow_exclude',
16
+        array(
17
+            'upload.php',
18
+            'edit-comments.php',
19
+            'edit-tags.php',
20
+            'index.php',
21
+            'media-new.php',
22
+            'options-discussion.php',
23
+            'options-writing.php',
24
+            'edit.php',
25
+            'themes.php',
26
+            'users.php',
27
+        )
28
+    );
29 29
 }
30 30
 
31 31
 
@@ -37,7 +37,7 @@  discard block
 block discarded – undo
37 37
  * @return mixed|void
38 38
  */
39 39
 function sd_widget_exclude() {
40
-	return apply_filters( 'sd_widget_exclude', array() );
40
+    return apply_filters( 'sd_widget_exclude', array() );
41 41
 }
42 42
 
43 43
 
@@ -50,83 +50,83 @@  discard block
 block discarded – undo
50 50
  * @return array
51 51
  */
52 52
 function sd_get_margin_input( $type = 'mt', $overwrite = array(), $include_negatives = true ) {
53
-	global $aui_bs5;
54
-	$options = array(
55
-		''     => __( 'None', 'ayecode-connect' ),
56
-		'auto' => __( 'auto', 'ayecode-connect' ),
57
-		'0'    => '0',
58
-		'1'    => '1',
59
-		'2'    => '2',
60
-		'3'    => '3',
61
-		'4'    => '4',
62
-		'5'    => '5',
63
-		'6'    => '6',
64
-		'7'    => '7',
65
-		'8'    => '8',
66
-		'9'    => '9',
67
-		'10'   => '10',
68
-		'11'   => '11',
69
-		'12'   => '12',
70
-	);
71
-
72
-	if ( $include_negatives ) {
73
-		$options['n1']  = '-1';
74
-		$options['n2']  = '-2';
75
-		$options['n3']  = '-3';
76
-		$options['n4']  = '-4';
77
-		$options['n5']  = '-5';
78
-		$options['n6']  = '-6';
79
-		$options['n7']  = '-7';
80
-		$options['n8']  = '-8';
81
-		$options['n9']  = '-9';
82
-		$options['n10'] = '-10';
83
-		$options['n11'] = '-11';
84
-		$options['n12'] = '-12';
85
-	}
86
-
87
-	$defaults = array(
88
-		'type'     => 'select',
89
-		'title'    => __( 'Margin top', 'ayecode-connect' ),
90
-		'options'  => $options,
91
-		'default'  => '',
92
-		'desc_tip' => true,
93
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
94
-	);
95
-
96
-	// title
97
-	if ( $type == 'mt' ) {
98
-		$defaults['title'] = __( 'Margin top', 'ayecode-connect' );
99
-		$defaults['icon']  = 'box-top';
100
-		$defaults['row']   = array(
101
-			'title' => __( 'Margins', 'ayecode-connect' ),
102
-			'key'   => 'wrapper-margins',
103
-			'open'  => true,
104
-			'class' => 'text-center',
105
-		);
106
-	} elseif ( $type == 'mr' ) {
107
-		$defaults['title'] = __( 'Margin right', 'ayecode-connect' );
108
-		$defaults['icon']  = 'box-right';
109
-		$defaults['row']   = array(
110
-			'key' => 'wrapper-margins',
111
-		);
112
-	} elseif ( $type == 'mb' ) {
113
-		$defaults['title'] = __( 'Margin bottom', 'ayecode-connect' );
114
-		$defaults['icon']  = 'box-bottom';
115
-		$defaults['row']   = array(
116
-			'key' => 'wrapper-margins',
117
-		);
118
-	} elseif ( $type == 'ml' ) {
119
-		$defaults['title'] = __( 'Margin left', 'ayecode-connect' );
120
-		$defaults['icon']  = 'box-left';
121
-		$defaults['row']   = array(
122
-			'key'   => 'wrapper-margins',
123
-			'close' => true,
124
-		);
125
-	}
126
-
127
-	$input = wp_parse_args( $overwrite, $defaults );
128
-
129
-	return $input;
53
+    global $aui_bs5;
54
+    $options = array(
55
+        ''     => __( 'None', 'ayecode-connect' ),
56
+        'auto' => __( 'auto', 'ayecode-connect' ),
57
+        '0'    => '0',
58
+        '1'    => '1',
59
+        '2'    => '2',
60
+        '3'    => '3',
61
+        '4'    => '4',
62
+        '5'    => '5',
63
+        '6'    => '6',
64
+        '7'    => '7',
65
+        '8'    => '8',
66
+        '9'    => '9',
67
+        '10'   => '10',
68
+        '11'   => '11',
69
+        '12'   => '12',
70
+    );
71
+
72
+    if ( $include_negatives ) {
73
+        $options['n1']  = '-1';
74
+        $options['n2']  = '-2';
75
+        $options['n3']  = '-3';
76
+        $options['n4']  = '-4';
77
+        $options['n5']  = '-5';
78
+        $options['n6']  = '-6';
79
+        $options['n7']  = '-7';
80
+        $options['n8']  = '-8';
81
+        $options['n9']  = '-9';
82
+        $options['n10'] = '-10';
83
+        $options['n11'] = '-11';
84
+        $options['n12'] = '-12';
85
+    }
86
+
87
+    $defaults = array(
88
+        'type'     => 'select',
89
+        'title'    => __( 'Margin top', 'ayecode-connect' ),
90
+        'options'  => $options,
91
+        'default'  => '',
92
+        'desc_tip' => true,
93
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
94
+    );
95
+
96
+    // title
97
+    if ( $type == 'mt' ) {
98
+        $defaults['title'] = __( 'Margin top', 'ayecode-connect' );
99
+        $defaults['icon']  = 'box-top';
100
+        $defaults['row']   = array(
101
+            'title' => __( 'Margins', 'ayecode-connect' ),
102
+            'key'   => 'wrapper-margins',
103
+            'open'  => true,
104
+            'class' => 'text-center',
105
+        );
106
+    } elseif ( $type == 'mr' ) {
107
+        $defaults['title'] = __( 'Margin right', 'ayecode-connect' );
108
+        $defaults['icon']  = 'box-right';
109
+        $defaults['row']   = array(
110
+            'key' => 'wrapper-margins',
111
+        );
112
+    } elseif ( $type == 'mb' ) {
113
+        $defaults['title'] = __( 'Margin bottom', 'ayecode-connect' );
114
+        $defaults['icon']  = 'box-bottom';
115
+        $defaults['row']   = array(
116
+            'key' => 'wrapper-margins',
117
+        );
118
+    } elseif ( $type == 'ml' ) {
119
+        $defaults['title'] = __( 'Margin left', 'ayecode-connect' );
120
+        $defaults['icon']  = 'box-left';
121
+        $defaults['row']   = array(
122
+            'key'   => 'wrapper-margins',
123
+            'close' => true,
124
+        );
125
+    }
126
+
127
+    $input = wp_parse_args( $overwrite, $defaults );
128
+
129
+    return $input;
130 130
 }
131 131
 
132 132
 /**
@@ -138,67 +138,67 @@  discard block
 block discarded – undo
138 138
  * @return array
139 139
  */
140 140
 function sd_get_padding_input( $type = 'pt', $overwrite = array() ) {
141
-	$options = array(
142
-		''   => __( 'None', 'ayecode-connect' ),
143
-		'0'  => '0',
144
-		'1'  => '1',
145
-		'2'  => '2',
146
-		'3'  => '3',
147
-		'4'  => '4',
148
-		'5'  => '5',
149
-		'6'  => '6',
150
-		'7'  => '7',
151
-		'8'  => '8',
152
-		'9'  => '9',
153
-		'10' => '10',
154
-		'11' => '11',
155
-		'12' => '12',
156
-	);
157
-
158
-	$defaults = array(
159
-		'type'     => 'select',
160
-		'title'    => __( 'Padding top', 'ayecode-connect' ),
161
-		'options'  => $options,
162
-		'default'  => '',
163
-		'desc_tip' => true,
164
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
165
-	);
166
-
167
-	// title
168
-	if ( $type == 'pt' ) {
169
-		$defaults['title'] = __( 'Padding top', 'ayecode-connect' );
170
-		$defaults['icon']  = 'box-top';
171
-		$defaults['row']   = array(
172
-			'title' => __( 'Padding', 'ayecode-connect' ),
173
-			'key'   => 'wrapper-padding',
174
-			'open'  => true,
175
-			'class' => 'text-center',
176
-		);
177
-	} elseif ( $type == 'pr' ) {
178
-		$defaults['title'] = __( 'Padding right', 'ayecode-connect' );
179
-		$defaults['icon']  = 'box-right';
180
-		$defaults['row']   = array(
181
-			'key' => 'wrapper-padding',
182
-		);
183
-	} elseif ( $type == 'pb' ) {
184
-		$defaults['title'] = __( 'Padding bottom', 'ayecode-connect' );
185
-		$defaults['icon']  = 'box-bottom';
186
-		$defaults['row']   = array(
187
-			'key' => 'wrapper-padding',
188
-		);
189
-	} elseif ( $type == 'pl' ) {
190
-		$defaults['title'] = __( 'Padding left', 'ayecode-connect' );
191
-		$defaults['icon']  = 'box-left';
192
-		$defaults['row']   = array(
193
-			'key'   => 'wrapper-padding',
194
-			'close' => true,
195
-
196
-		);
197
-	}
198
-
199
-	$input = wp_parse_args( $overwrite, $defaults );
200
-
201
-	return $input;
141
+    $options = array(
142
+        ''   => __( 'None', 'ayecode-connect' ),
143
+        '0'  => '0',
144
+        '1'  => '1',
145
+        '2'  => '2',
146
+        '3'  => '3',
147
+        '4'  => '4',
148
+        '5'  => '5',
149
+        '6'  => '6',
150
+        '7'  => '7',
151
+        '8'  => '8',
152
+        '9'  => '9',
153
+        '10' => '10',
154
+        '11' => '11',
155
+        '12' => '12',
156
+    );
157
+
158
+    $defaults = array(
159
+        'type'     => 'select',
160
+        'title'    => __( 'Padding top', 'ayecode-connect' ),
161
+        'options'  => $options,
162
+        'default'  => '',
163
+        'desc_tip' => true,
164
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
165
+    );
166
+
167
+    // title
168
+    if ( $type == 'pt' ) {
169
+        $defaults['title'] = __( 'Padding top', 'ayecode-connect' );
170
+        $defaults['icon']  = 'box-top';
171
+        $defaults['row']   = array(
172
+            'title' => __( 'Padding', 'ayecode-connect' ),
173
+            'key'   => 'wrapper-padding',
174
+            'open'  => true,
175
+            'class' => 'text-center',
176
+        );
177
+    } elseif ( $type == 'pr' ) {
178
+        $defaults['title'] = __( 'Padding right', 'ayecode-connect' );
179
+        $defaults['icon']  = 'box-right';
180
+        $defaults['row']   = array(
181
+            'key' => 'wrapper-padding',
182
+        );
183
+    } elseif ( $type == 'pb' ) {
184
+        $defaults['title'] = __( 'Padding bottom', 'ayecode-connect' );
185
+        $defaults['icon']  = 'box-bottom';
186
+        $defaults['row']   = array(
187
+            'key' => 'wrapper-padding',
188
+        );
189
+    } elseif ( $type == 'pl' ) {
190
+        $defaults['title'] = __( 'Padding left', 'ayecode-connect' );
191
+        $defaults['icon']  = 'box-left';
192
+        $defaults['row']   = array(
193
+            'key'   => 'wrapper-padding',
194
+            'close' => true,
195
+
196
+        );
197
+    }
198
+
199
+    $input = wp_parse_args( $overwrite, $defaults );
200
+
201
+    return $input;
202 202
 }
203 203
 
204 204
 /**
@@ -210,97 +210,97 @@  discard block
 block discarded – undo
210 210
  * @return array
211 211
  */
212 212
 function sd_get_border_input( $type = 'border', $overwrite = array() ) {
213
-	global $aui_bs5;
214
-
215
-	$defaults = array(
216
-		'type'     => 'select',
217
-		'title'    => __( 'Border', 'ayecode-connect' ),
218
-		'options'  => array(),
219
-		'default'  => '',
220
-		'desc_tip' => true,
221
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
222
-	);
223
-
224
-	// title
225
-	if ( 'rounded' === $type ) {
226
-		$defaults['title']           = __( 'Border radius type', 'ayecode-connect' );
227
-		$defaults['options']         = array(
228
-			''               => __( 'Default', 'ayecode-connect' ),
229
-			'rounded'        => 'rounded',
230
-			'rounded-top'    => 'rounded-top',
231
-			'rounded-right'  => 'rounded-right',
232
-			'rounded-bottom' => 'rounded-bottom',
233
-			'rounded-left'   => 'rounded-left',
234
-		);
235
-		$defaults['element_require'] = '[%border%]';
236
-	} elseif ( 'rounded_size' === $type ) {
237
-		$defaults['title'] = __( 'Border radius size', 'ayecode-connect' );
238
-
239
-		if ( $aui_bs5 ) {
240
-			$defaults['options'] = array(
241
-				''       => __( 'Default', 'ayecode-connect' ),
242
-				'0'      => '0',
243
-				'1'      => '1',
244
-				'2'      => '2',
245
-				'3'      => '3',
246
-				'4'      => '4',
247
-				'circle' => 'circle',
248
-				'pill'   => 'pill',
249
-			);
250
-		} else {
251
-			$defaults['options'] = array(
252
-				''   => __( 'Default', 'ayecode-connect' ),
253
-				'sm' => __( 'Small', 'ayecode-connect' ),
254
-				'lg' => __( 'Large', 'ayecode-connect' ),
255
-			);
256
-		}
257
-		$defaults['element_require'] = '[%border%]';
258
-	} elseif ( 'width' === $type ) { // BS%
259
-		$defaults['title']           = __( 'Border width', 'ayecode-connect' );
260
-		$defaults['options']         = array(
261
-			''         => __( 'Default', 'ayecode-connect' ),
262
-			'border-2' => '2',
263
-			'border-3' => '3',
264
-			'border-4' => '4',
265
-			'border-5' => '5',
266
-		);
267
-		$defaults['element_require'] = $aui_bs5 ? '[%border%]' : '1==2';
268
-	} elseif ( 'opacity' === $type ) { // BS%
269
-		$defaults['title']           = __( 'Border opacity', 'ayecode-connect' );
270
-		$defaults['options']         = array(
271
-			''                  => __( 'Default', 'ayecode-connect' ),
272
-			'border-opacity-75' => '75%',
273
-			'border-opacity-50' => '50%',
274
-			'border-opacity-25' => '25%',
275
-			'border-opacity-10' => '10%',
276
-		);
277
-		$defaults['element_require'] = $aui_bs5 ? '[%border%]' : '1==2';
278
-	} elseif ( 'type' === $type ) {
279
-		$defaults['title']           = __( 'Border show', 'ayecode-connect' );
280
-		$defaults['options']         = array(
281
-			'border'          => __( 'Full (set color to show)', 'ayecode-connect' ),
282
-			'border-top'      => __( 'Top', 'ayecode-connect' ),
283
-			'border-bottom'   => __( 'Bottom', 'ayecode-connect' ),
284
-			'border-left'     => __( 'Left', 'ayecode-connect' ),
285
-			'border-right'    => __( 'Right', 'ayecode-connect' ),
286
-			'border-top-0'    => __( '-Top', 'ayecode-connect' ),
287
-			'border-bottom-0' => __( '-Bottom', 'ayecode-connect' ),
288
-			'border-left-0'   => __( '-Left', 'ayecode-connect' ),
289
-			'border-right-0'  => __( '-Right', 'ayecode-connect' ),
290
-		);
291
-		$defaults['element_require'] = '[%border%]';
292
-
293
-	} else {
294
-		$defaults['title']   = __( 'Border color', 'ayecode-connect' );
295
-		$defaults['options'] = array(
296
-			                       ''  => __( 'Default', 'ayecode-connect' ),
297
-			                       '0' => __( 'None', 'ayecode-connect' ),
298
-		                       ) + sd_aui_colors();
299
-	}
300
-
301
-	$input = wp_parse_args( $overwrite, $defaults );
302
-
303
-	return $input;
213
+    global $aui_bs5;
214
+
215
+    $defaults = array(
216
+        'type'     => 'select',
217
+        'title'    => __( 'Border', 'ayecode-connect' ),
218
+        'options'  => array(),
219
+        'default'  => '',
220
+        'desc_tip' => true,
221
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
222
+    );
223
+
224
+    // title
225
+    if ( 'rounded' === $type ) {
226
+        $defaults['title']           = __( 'Border radius type', 'ayecode-connect' );
227
+        $defaults['options']         = array(
228
+            ''               => __( 'Default', 'ayecode-connect' ),
229
+            'rounded'        => 'rounded',
230
+            'rounded-top'    => 'rounded-top',
231
+            'rounded-right'  => 'rounded-right',
232
+            'rounded-bottom' => 'rounded-bottom',
233
+            'rounded-left'   => 'rounded-left',
234
+        );
235
+        $defaults['element_require'] = '[%border%]';
236
+    } elseif ( 'rounded_size' === $type ) {
237
+        $defaults['title'] = __( 'Border radius size', 'ayecode-connect' );
238
+
239
+        if ( $aui_bs5 ) {
240
+            $defaults['options'] = array(
241
+                ''       => __( 'Default', 'ayecode-connect' ),
242
+                '0'      => '0',
243
+                '1'      => '1',
244
+                '2'      => '2',
245
+                '3'      => '3',
246
+                '4'      => '4',
247
+                'circle' => 'circle',
248
+                'pill'   => 'pill',
249
+            );
250
+        } else {
251
+            $defaults['options'] = array(
252
+                ''   => __( 'Default', 'ayecode-connect' ),
253
+                'sm' => __( 'Small', 'ayecode-connect' ),
254
+                'lg' => __( 'Large', 'ayecode-connect' ),
255
+            );
256
+        }
257
+        $defaults['element_require'] = '[%border%]';
258
+    } elseif ( 'width' === $type ) { // BS%
259
+        $defaults['title']           = __( 'Border width', 'ayecode-connect' );
260
+        $defaults['options']         = array(
261
+            ''         => __( 'Default', 'ayecode-connect' ),
262
+            'border-2' => '2',
263
+            'border-3' => '3',
264
+            'border-4' => '4',
265
+            'border-5' => '5',
266
+        );
267
+        $defaults['element_require'] = $aui_bs5 ? '[%border%]' : '1==2';
268
+    } elseif ( 'opacity' === $type ) { // BS%
269
+        $defaults['title']           = __( 'Border opacity', 'ayecode-connect' );
270
+        $defaults['options']         = array(
271
+            ''                  => __( 'Default', 'ayecode-connect' ),
272
+            'border-opacity-75' => '75%',
273
+            'border-opacity-50' => '50%',
274
+            'border-opacity-25' => '25%',
275
+            'border-opacity-10' => '10%',
276
+        );
277
+        $defaults['element_require'] = $aui_bs5 ? '[%border%]' : '1==2';
278
+    } elseif ( 'type' === $type ) {
279
+        $defaults['title']           = __( 'Border show', 'ayecode-connect' );
280
+        $defaults['options']         = array(
281
+            'border'          => __( 'Full (set color to show)', 'ayecode-connect' ),
282
+            'border-top'      => __( 'Top', 'ayecode-connect' ),
283
+            'border-bottom'   => __( 'Bottom', 'ayecode-connect' ),
284
+            'border-left'     => __( 'Left', 'ayecode-connect' ),
285
+            'border-right'    => __( 'Right', 'ayecode-connect' ),
286
+            'border-top-0'    => __( '-Top', 'ayecode-connect' ),
287
+            'border-bottom-0' => __( '-Bottom', 'ayecode-connect' ),
288
+            'border-left-0'   => __( '-Left', 'ayecode-connect' ),
289
+            'border-right-0'  => __( '-Right', 'ayecode-connect' ),
290
+        );
291
+        $defaults['element_require'] = '[%border%]';
292
+
293
+    } else {
294
+        $defaults['title']   = __( 'Border color', 'ayecode-connect' );
295
+        $defaults['options'] = array(
296
+                                    ''  => __( 'Default', 'ayecode-connect' ),
297
+                                    '0' => __( 'None', 'ayecode-connect' ),
298
+                                ) + sd_aui_colors();
299
+    }
300
+
301
+    $input = wp_parse_args( $overwrite, $defaults );
302
+
303
+    return $input;
304 304
 }
305 305
 
306 306
 /**
@@ -312,25 +312,25 @@  discard block
 block discarded – undo
312 312
  * @return array
313 313
  */
314 314
 function sd_get_shadow_input( $type = 'shadow', $overwrite = array() ) {
315
-	$options = array(
316
-		''          => __( 'None', 'ayecode-connect' ),
317
-		'shadow-sm' => __( 'Small', 'ayecode-connect' ),
318
-		'shadow'    => __( 'Regular', 'ayecode-connect' ),
319
-		'shadow-lg' => __( 'Large', 'ayecode-connect' ),
320
-	);
315
+    $options = array(
316
+        ''          => __( 'None', 'ayecode-connect' ),
317
+        'shadow-sm' => __( 'Small', 'ayecode-connect' ),
318
+        'shadow'    => __( 'Regular', 'ayecode-connect' ),
319
+        'shadow-lg' => __( 'Large', 'ayecode-connect' ),
320
+    );
321 321
 
322
-	$defaults = array(
323
-		'type'     => 'select',
324
-		'title'    => __( 'Shadow', 'ayecode-connect' ),
325
-		'options'  => $options,
326
-		'default'  => '',
327
-		'desc_tip' => true,
328
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
329
-	);
322
+    $defaults = array(
323
+        'type'     => 'select',
324
+        'title'    => __( 'Shadow', 'ayecode-connect' ),
325
+        'options'  => $options,
326
+        'default'  => '',
327
+        'desc_tip' => true,
328
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
329
+    );
330 330
 
331
-	$input = wp_parse_args( $overwrite, $defaults );
331
+    $input = wp_parse_args( $overwrite, $defaults );
332 332
 
333
-	return $input;
333
+    return $input;
334 334
 }
335 335
 
336 336
 /**
@@ -342,23 +342,23 @@  discard block
 block discarded – undo
342 342
  * @return array
343 343
  */
344 344
 function sd_get_background_input( $type = 'bg', $overwrite = array() ) {
345
-	$options = array(
346
-		           ''            => __( 'None', 'ayecode-connect' ),
347
-		           'transparent' => __( 'Transparent', 'ayecode-connect' ),
348
-	           ) + sd_aui_colors();
345
+    $options = array(
346
+                    ''            => __( 'None', 'ayecode-connect' ),
347
+                    'transparent' => __( 'Transparent', 'ayecode-connect' ),
348
+                ) + sd_aui_colors();
349 349
 
350
-	$defaults = array(
351
-		'type'     => 'select',
352
-		'title'    => __( 'Background color', 'ayecode-connect' ),
353
-		'options'  => $options,
354
-		'default'  => '',
355
-		'desc_tip' => true,
356
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
357
-	);
350
+    $defaults = array(
351
+        'type'     => 'select',
352
+        'title'    => __( 'Background color', 'ayecode-connect' ),
353
+        'options'  => $options,
354
+        'default'  => '',
355
+        'desc_tip' => true,
356
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
357
+    );
358 358
 
359
-	$input = wp_parse_args( $overwrite, $defaults );
359
+    $input = wp_parse_args( $overwrite, $defaults );
360 360
 
361
-	return $input;
361
+    return $input;
362 362
 }
363 363
 
364 364
 /**
@@ -370,35 +370,35 @@  discard block
 block discarded – undo
370 370
  * @return array
371 371
  */
372 372
 function sd_get_opacity_input( $type = 'opacity', $overwrite = array() ) {
373
-	$options = array(
374
-		''            => __( 'Default', 'ayecode-connect' ),
375
-		'opacity-10'  => '10%',
376
-		'opacity-15'  => '15%',
377
-		'opacity-25'  => '25%',
378
-		'opacity-35'  => '35%',
379
-		'opacity-40'  => '40%',
380
-		'opacity-50'  => '50%',
381
-		'opacity-60'  => '60%',
382
-		'opacity-65'  => '65%',
383
-		'opacity-70'  => '70%',
384
-		'opacity-75'  => '75%',
385
-		'opacity-80'  => '80%',
386
-		'opacity-90'  => '90%',
387
-		'opacity-100' => '100%',
388
-	);
389
-
390
-	$defaults = array(
391
-		'type'     => 'select',
392
-		'title'    => __( 'Opacity', 'ayecode-connect' ),
393
-		'options'  => $options,
394
-		'default'  => '',
395
-		'desc_tip' => true,
396
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
397
-	);
398
-
399
-	$input = wp_parse_args( $overwrite, $defaults );
400
-
401
-	return $input;
373
+    $options = array(
374
+        ''            => __( 'Default', 'ayecode-connect' ),
375
+        'opacity-10'  => '10%',
376
+        'opacity-15'  => '15%',
377
+        'opacity-25'  => '25%',
378
+        'opacity-35'  => '35%',
379
+        'opacity-40'  => '40%',
380
+        'opacity-50'  => '50%',
381
+        'opacity-60'  => '60%',
382
+        'opacity-65'  => '65%',
383
+        'opacity-70'  => '70%',
384
+        'opacity-75'  => '75%',
385
+        'opacity-80'  => '80%',
386
+        'opacity-90'  => '90%',
387
+        'opacity-100' => '100%',
388
+    );
389
+
390
+    $defaults = array(
391
+        'type'     => 'select',
392
+        'title'    => __( 'Opacity', 'ayecode-connect' ),
393
+        'options'  => $options,
394
+        'default'  => '',
395
+        'desc_tip' => true,
396
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
397
+    );
398
+
399
+    $input = wp_parse_args( $overwrite, $defaults );
400
+
401
+    return $input;
402 402
 }
403 403
 
404 404
 /**
@@ -411,124 +411,124 @@  discard block
 block discarded – undo
411 411
  */
412 412
 function sd_get_background_inputs( $type = 'bg', $overwrite = array(), $overwrite_color = array(), $overwrite_gradient = array(), $overwrite_image = array(), $include_button_colors = false ) {
413 413
 
414
-	$color_options = $include_button_colors ? sd_aui_colors( false, true, true, true ) : sd_aui_colors();
415
-
416
-	$options = array(
417
-		           ''            => __( 'None', 'ayecode-connect' ),
418
-		           'transparent' => __( 'Transparent', 'ayecode-connect' ),
419
-	           ) + $color_options;
420
-
421
-	if ( false !== $overwrite_color ) {
422
-		$options['custom-color'] = __( 'Custom Color', 'ayecode-connect' );
423
-	}
424
-
425
-	if ( false !== $overwrite_gradient ) {
426
-		$options['custom-gradient'] = __( 'Custom Gradient', 'ayecode-connect' );
427
-	}
428
-
429
-	$defaults = array(
430
-		'type'     => 'select',
431
-		'title'    => __( 'Background Color', 'ayecode-connect' ),
432
-		'options'  => $options,
433
-		'default'  => '',
434
-		'desc_tip' => true,
435
-		'group'    => __( 'Background', 'ayecode-connect' ),
436
-	);
437
-
438
-	if ( $overwrite !== false ) {
439
-		$input[ $type ] = wp_parse_args( $overwrite, $defaults );
440
-	}
441
-
442
-	if ( $overwrite_color !== false ) {
443
-		$input[ $type . '_color' ] = wp_parse_args(
444
-			$overwrite_color,
445
-			array(
446
-				'type'            => 'color',
447
-				'title'           => __( 'Custom color', 'ayecode-connect' ),
448
-				'placeholder'     => '',
449
-				'default'         => '#0073aa',
450
-				'desc_tip'        => true,
451
-				'group'           => __( 'Background', 'ayecode-connect' ),
452
-				'element_require' => '[%' . $type . '%]=="custom-color"',
453
-			)
454
-		);
455
-	}
456
-
457
-	if ( $overwrite_gradient !== false ) {
458
-		$input[ $type . '_gradient' ] = wp_parse_args(
459
-			$overwrite_gradient,
460
-			array(
461
-				'type'            => 'gradient',
462
-				'title'           => __( 'Custom gradient', 'ayecode-connect' ),
463
-				'placeholder'     => '',
464
-				'default'         => 'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
465
-				'desc_tip'        => true,
466
-				'group'           => __( 'Background', 'ayecode-connect' ),
467
-				'element_require' => '[%' . $type . '%]=="custom-gradient"',
468
-			)
469
-		);
470
-	}
471
-
472
-	if ( $overwrite_image !== false ) {
473
-
474
-		$input[ $type . '_image_fixed' ] = array(
475
-			'type'            => 'checkbox',
476
-			'title'           => __( 'Fixed background', 'ayecode-connect' ),
477
-			'default'         => '',
478
-			'desc_tip'        => true,
479
-			'group'           => ! empty( $overwrite_image['group'] ) ? $overwrite_image['group'] : __( 'Background', 'ayecode-connect' ),
480
-			'element_require' => '( [%' . $type . '%]=="" || [%' . $type . '%]=="custom-color" || [%' . $type . '%]=="custom-gradient" || [%' . $type . '%]=="transparent" )',
481
-
482
-		);
483
-
484
-		$input[ $type . '_image_use_featured' ] = array(
485
-			'type'            => 'checkbox',
486
-			'title'           => __( 'Use featured image', 'ayecode-connect' ),
487
-			'default'         => '',
488
-			'desc_tip'        => true,
489
-			'group'           => ! empty( $overwrite_image['group'] ) ? $overwrite_image['group'] : __( 'Background', 'ayecode-connect' ),
490
-			'element_require' => '( [%' . $type . '%]=="" || [%' . $type . '%]=="custom-color" || [%' . $type . '%]=="custom-gradient" || [%' . $type . '%]=="transparent" )',
491
-
492
-		);
493
-
494
-		$input[ $type . '_image' ] = wp_parse_args(
495
-			$overwrite_image,
496
-			array(
497
-				'type'        => 'image',
498
-				'title'       => __( 'Custom image', 'ayecode-connect' ),
499
-				'placeholder' => '',
500
-				'default'     => '',
501
-				'desc_tip'    => true,
502
-				'group'       => __( 'Background', 'ayecode-connect' ),
503
-				//          'element_require' => ' ![%' . $type . '_image_use_featured%] '
504
-			)
505
-		);
506
-
507
-		$input[ $type . '_image_id' ] = wp_parse_args(
508
-			$overwrite_image,
509
-			array(
510
-				'type'        => 'hidden',
511
-				'hidden_type' => 'number',
512
-				'title'       => '',
513
-				'placeholder' => '',
514
-				'default'     => '',
515
-				'group'       => __( 'Background', 'ayecode-connect' ),
516
-			)
517
-		);
518
-
519
-		$input[ $type . '_image_xy' ] = wp_parse_args(
520
-			$overwrite_image,
521
-			array(
522
-				'type'        => 'image_xy',
523
-				'title'       => '',
524
-				'placeholder' => '',
525
-				'default'     => '',
526
-				'group'       => __( 'Background', 'ayecode-connect' ),
527
-			)
528
-		);
529
-	}
530
-
531
-	return $input;
414
+    $color_options = $include_button_colors ? sd_aui_colors( false, true, true, true ) : sd_aui_colors();
415
+
416
+    $options = array(
417
+                    ''            => __( 'None', 'ayecode-connect' ),
418
+                    'transparent' => __( 'Transparent', 'ayecode-connect' ),
419
+                ) + $color_options;
420
+
421
+    if ( false !== $overwrite_color ) {
422
+        $options['custom-color'] = __( 'Custom Color', 'ayecode-connect' );
423
+    }
424
+
425
+    if ( false !== $overwrite_gradient ) {
426
+        $options['custom-gradient'] = __( 'Custom Gradient', 'ayecode-connect' );
427
+    }
428
+
429
+    $defaults = array(
430
+        'type'     => 'select',
431
+        'title'    => __( 'Background Color', 'ayecode-connect' ),
432
+        'options'  => $options,
433
+        'default'  => '',
434
+        'desc_tip' => true,
435
+        'group'    => __( 'Background', 'ayecode-connect' ),
436
+    );
437
+
438
+    if ( $overwrite !== false ) {
439
+        $input[ $type ] = wp_parse_args( $overwrite, $defaults );
440
+    }
441
+
442
+    if ( $overwrite_color !== false ) {
443
+        $input[ $type . '_color' ] = wp_parse_args(
444
+            $overwrite_color,
445
+            array(
446
+                'type'            => 'color',
447
+                'title'           => __( 'Custom color', 'ayecode-connect' ),
448
+                'placeholder'     => '',
449
+                'default'         => '#0073aa',
450
+                'desc_tip'        => true,
451
+                'group'           => __( 'Background', 'ayecode-connect' ),
452
+                'element_require' => '[%' . $type . '%]=="custom-color"',
453
+            )
454
+        );
455
+    }
456
+
457
+    if ( $overwrite_gradient !== false ) {
458
+        $input[ $type . '_gradient' ] = wp_parse_args(
459
+            $overwrite_gradient,
460
+            array(
461
+                'type'            => 'gradient',
462
+                'title'           => __( 'Custom gradient', 'ayecode-connect' ),
463
+                'placeholder'     => '',
464
+                'default'         => 'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
465
+                'desc_tip'        => true,
466
+                'group'           => __( 'Background', 'ayecode-connect' ),
467
+                'element_require' => '[%' . $type . '%]=="custom-gradient"',
468
+            )
469
+        );
470
+    }
471
+
472
+    if ( $overwrite_image !== false ) {
473
+
474
+        $input[ $type . '_image_fixed' ] = array(
475
+            'type'            => 'checkbox',
476
+            'title'           => __( 'Fixed background', 'ayecode-connect' ),
477
+            'default'         => '',
478
+            'desc_tip'        => true,
479
+            'group'           => ! empty( $overwrite_image['group'] ) ? $overwrite_image['group'] : __( 'Background', 'ayecode-connect' ),
480
+            'element_require' => '( [%' . $type . '%]=="" || [%' . $type . '%]=="custom-color" || [%' . $type . '%]=="custom-gradient" || [%' . $type . '%]=="transparent" )',
481
+
482
+        );
483
+
484
+        $input[ $type . '_image_use_featured' ] = array(
485
+            'type'            => 'checkbox',
486
+            'title'           => __( 'Use featured image', 'ayecode-connect' ),
487
+            'default'         => '',
488
+            'desc_tip'        => true,
489
+            'group'           => ! empty( $overwrite_image['group'] ) ? $overwrite_image['group'] : __( 'Background', 'ayecode-connect' ),
490
+            'element_require' => '( [%' . $type . '%]=="" || [%' . $type . '%]=="custom-color" || [%' . $type . '%]=="custom-gradient" || [%' . $type . '%]=="transparent" )',
491
+
492
+        );
493
+
494
+        $input[ $type . '_image' ] = wp_parse_args(
495
+            $overwrite_image,
496
+            array(
497
+                'type'        => 'image',
498
+                'title'       => __( 'Custom image', 'ayecode-connect' ),
499
+                'placeholder' => '',
500
+                'default'     => '',
501
+                'desc_tip'    => true,
502
+                'group'       => __( 'Background', 'ayecode-connect' ),
503
+                //          'element_require' => ' ![%' . $type . '_image_use_featured%] '
504
+            )
505
+        );
506
+
507
+        $input[ $type . '_image_id' ] = wp_parse_args(
508
+            $overwrite_image,
509
+            array(
510
+                'type'        => 'hidden',
511
+                'hidden_type' => 'number',
512
+                'title'       => '',
513
+                'placeholder' => '',
514
+                'default'     => '',
515
+                'group'       => __( 'Background', 'ayecode-connect' ),
516
+            )
517
+        );
518
+
519
+        $input[ $type . '_image_xy' ] = wp_parse_args(
520
+            $overwrite_image,
521
+            array(
522
+                'type'        => 'image_xy',
523
+                'title'       => '',
524
+                'placeholder' => '',
525
+                'default'     => '',
526
+                'group'       => __( 'Background', 'ayecode-connect' ),
527
+            )
528
+        );
529
+    }
530
+
531
+    return $input;
532 532
 }
533 533
 
534 534
 /**
@@ -541,175 +541,175 @@  discard block
 block discarded – undo
541 541
  */
542 542
 function sd_get_shape_divider_inputs( $type = 'sd', $overwrite = array(), $overwrite_color = array(), $overwrite_gradient = array(), $overwrite_image = array() ) {
543 543
 
544
-	$options = array(
545
-		''                      => __( 'None', 'ayecode-connect' ),
546
-		'mountains'             => __( 'Mountains', 'ayecode-connect' ),
547
-		'drops'                 => __( 'Drops', 'ayecode-connect' ),
548
-		'clouds'                => __( 'Clouds', 'ayecode-connect' ),
549
-		'zigzag'                => __( 'Zigzag', 'ayecode-connect' ),
550
-		'pyramids'              => __( 'Pyramids', 'ayecode-connect' ),
551
-		'triangle'              => __( 'Triangle', 'ayecode-connect' ),
552
-		'triangle-asymmetrical' => __( 'Triangle Asymmetrical', 'ayecode-connect' ),
553
-		'tilt'                  => __( 'Tilt', 'ayecode-connect' ),
554
-		'opacity-tilt'          => __( 'Opacity Tilt', 'ayecode-connect' ),
555
-		'opacity-fan'           => __( 'Opacity Fan', 'ayecode-connect' ),
556
-		'curve'                 => __( 'Curve', 'ayecode-connect' ),
557
-		'curve-asymmetrical'    => __( 'Curve Asymmetrical', 'ayecode-connect' ),
558
-		'waves'                 => __( 'Waves', 'ayecode-connect' ),
559
-		'wave-brush'            => __( 'Wave Brush', 'ayecode-connect' ),
560
-		'waves-pattern'         => __( 'Waves Pattern', 'ayecode-connect' ),
561
-		'arrow'                 => __( 'Arrow', 'ayecode-connect' ),
562
-		'split'                 => __( 'Split', 'ayecode-connect' ),
563
-		'book'                  => __( 'Book', 'ayecode-connect' ),
564
-	);
565
-
566
-	$defaults = array(
567
-		'type'     => 'select',
568
-		'title'    => __( 'Type', 'ayecode-connect' ),
569
-		'options'  => $options,
570
-		'default'  => '',
571
-		'desc_tip' => true,
572
-		'group'    => __( 'Shape Divider', 'ayecode-connect' ),
573
-	);
574
-
575
-	$input[ $type ] = wp_parse_args( $overwrite, $defaults );
576
-
577
-	$input[ $type . '_notice' ] = array(
578
-		'type'            => 'notice',
579
-		'desc'            => __( 'Parent element must be position `relative`', 'ayecode-connect' ),
580
-		'status'          => 'warning',
581
-		'group'           => __( 'Shape Divider', 'ayecode-connect' ),
582
-		'element_require' => '[%' . $type . '%]!=""',
583
-	);
584
-
585
-	$input[ $type . '_position' ] = wp_parse_args(
586
-		$overwrite_color,
587
-		array(
588
-			'type'            => 'select',
589
-			'title'           => __( 'Position', 'ayecode-connect' ),
590
-			'options'         => array(
591
-				'top'    => __( 'Top', 'ayecode-connect' ),
592
-				'bottom' => __( 'Bottom', 'ayecode-connect' ),
593
-			),
594
-			'desc_tip'        => true,
595
-			'group'           => __( 'Shape Divider', 'ayecode-connect' ),
596
-			'element_require' => '[%' . $type . '%]!=""',
597
-		)
598
-	);
599
-
600
-	$options = array(
601
-		           ''            => __( 'None', 'ayecode-connect' ),
602
-		           'transparent' => __( 'Transparent', 'ayecode-connect' ),
603
-	           ) + sd_aui_colors()
604
-	           + array(
605
-		           'custom-color' => __( 'Custom Color', 'ayecode-connect' ),
606
-	           );
607
-
608
-	$input[ $type . '_color' ] = wp_parse_args(
609
-		$overwrite_color,
610
-		array(
611
-			'type'            => 'select',
612
-			'title'           => __( 'Color', 'ayecode-connect' ),
613
-			'options'         => $options,
614
-			'desc_tip'        => true,
615
-			'group'           => __( 'Shape Divider', 'ayecode-connect' ),
616
-			'element_require' => '[%' . $type . '%]!=""',
617
-		)
618
-	);
619
-
620
-	$input[ $type . '_custom_color' ] = wp_parse_args(
621
-		$overwrite_color,
622
-		array(
623
-			'type'            => 'color',
624
-			'title'           => __( 'Custom color', 'ayecode-connect' ),
625
-			'placeholder'     => '',
626
-			'default'         => '#0073aa',
627
-			'desc_tip'        => true,
628
-			'group'           => __( 'Shape Divider', 'ayecode-connect' ),
629
-			'element_require' => '[%' . $type . '_color%]=="custom-color" && [%' . $type . '%]!=""',
630
-		)
631
-	);
632
-
633
-	$input[ $type . '_width' ] = wp_parse_args(
634
-		$overwrite_gradient,
635
-		array(
636
-			'type'              => 'range',
637
-			'title'             => __( 'Width', 'ayecode-connect' ),
638
-			'placeholder'       => '',
639
-			'default'           => '200',
640
-			'desc_tip'          => true,
641
-			'custom_attributes' => array(
642
-				'min' => 100,
643
-				'max' => 300,
644
-			),
645
-			'group'             => __( 'Shape Divider', 'ayecode-connect' ),
646
-			'element_require'   => '[%' . $type . '%]!=""',
647
-		)
648
-	);
649
-
650
-	$input[ $type . '_height' ] = array(
651
-		'type'              => 'range',
652
-		'title'             => __( 'Height', 'ayecode-connect' ),
653
-		'default'           => '100',
654
-		'desc_tip'          => true,
655
-		'custom_attributes' => array(
656
-			'min' => 0,
657
-			'max' => 500,
658
-		),
659
-		'group'             => __( 'Shape Divider', 'ayecode-connect' ),
660
-		'element_require'   => '[%' . $type . '%]!=""',
661
-	);
662
-
663
-	$requires = array(
664
-		'mountains'             => array( 'flip' ),
665
-		'drops'                 => array( 'flip', 'invert' ),
666
-		'clouds'                => array( 'flip', 'invert' ),
667
-		'zigzag'                => array(),
668
-		'pyramids'              => array( 'flip', 'invert' ),
669
-		'triangle'              => array( 'invert' ),
670
-		'triangle-asymmetrical' => array( 'flip', 'invert' ),
671
-		'tilt'                  => array( 'flip' ),
672
-		'opacity-tilt'          => array( 'flip' ),
673
-		'opacity-fan'           => array(),
674
-		'curve'                 => array( 'invert' ),
675
-		'curve-asymmetrical'    => array( 'flip', 'invert' ),
676
-		'waves'                 => array( 'flip', 'invert' ),
677
-		'wave-brush'            => array( 'flip' ),
678
-		'waves-pattern'         => array( 'flip' ),
679
-		'arrow'                 => array( 'invert' ),
680
-		'split'                 => array( 'invert' ),
681
-		'book'                  => array( 'invert' ),
682
-	);
683
-
684
-	$input[ $type . '_flip' ] = array(
685
-		'type'            => 'checkbox',
686
-		'title'           => __( 'Flip', 'ayecode-connect' ),
687
-		'default'         => '',
688
-		'desc_tip'        => true,
689
-		'group'           => __( 'Shape Divider', 'ayecode-connect' ),
690
-		'element_require' => sd_get_element_require_string( $requires, 'flip', 'sd' ),
691
-	);
692
-
693
-	$input[ $type . '_invert' ] = array(
694
-		'type'            => 'checkbox',
695
-		'title'           => __( 'Invert', 'ayecode-connect' ),
696
-		'default'         => '',
697
-		'desc_tip'        => true,
698
-		'group'           => __( 'Shape Divider', 'ayecode-connect' ),
699
-		'element_require' => sd_get_element_require_string( $requires, 'invert', 'sd' ),
700
-	);
701
-
702
-	$input[ $type . '_btf' ] = array(
703
-		'type'            => 'checkbox',
704
-		'title'           => __( 'Bring to front', 'ayecode-connect' ),
705
-		'default'         => '',
706
-		'desc_tip'        => true,
707
-		'group'           => __( 'Shape Divider', 'ayecode-connect' ),
708
-		'element_require' => '[%' . $type . '%]!=""',
709
-
710
-	);
711
-
712
-	return $input;
544
+    $options = array(
545
+        ''                      => __( 'None', 'ayecode-connect' ),
546
+        'mountains'             => __( 'Mountains', 'ayecode-connect' ),
547
+        'drops'                 => __( 'Drops', 'ayecode-connect' ),
548
+        'clouds'                => __( 'Clouds', 'ayecode-connect' ),
549
+        'zigzag'                => __( 'Zigzag', 'ayecode-connect' ),
550
+        'pyramids'              => __( 'Pyramids', 'ayecode-connect' ),
551
+        'triangle'              => __( 'Triangle', 'ayecode-connect' ),
552
+        'triangle-asymmetrical' => __( 'Triangle Asymmetrical', 'ayecode-connect' ),
553
+        'tilt'                  => __( 'Tilt', 'ayecode-connect' ),
554
+        'opacity-tilt'          => __( 'Opacity Tilt', 'ayecode-connect' ),
555
+        'opacity-fan'           => __( 'Opacity Fan', 'ayecode-connect' ),
556
+        'curve'                 => __( 'Curve', 'ayecode-connect' ),
557
+        'curve-asymmetrical'    => __( 'Curve Asymmetrical', 'ayecode-connect' ),
558
+        'waves'                 => __( 'Waves', 'ayecode-connect' ),
559
+        'wave-brush'            => __( 'Wave Brush', 'ayecode-connect' ),
560
+        'waves-pattern'         => __( 'Waves Pattern', 'ayecode-connect' ),
561
+        'arrow'                 => __( 'Arrow', 'ayecode-connect' ),
562
+        'split'                 => __( 'Split', 'ayecode-connect' ),
563
+        'book'                  => __( 'Book', 'ayecode-connect' ),
564
+    );
565
+
566
+    $defaults = array(
567
+        'type'     => 'select',
568
+        'title'    => __( 'Type', 'ayecode-connect' ),
569
+        'options'  => $options,
570
+        'default'  => '',
571
+        'desc_tip' => true,
572
+        'group'    => __( 'Shape Divider', 'ayecode-connect' ),
573
+    );
574
+
575
+    $input[ $type ] = wp_parse_args( $overwrite, $defaults );
576
+
577
+    $input[ $type . '_notice' ] = array(
578
+        'type'            => 'notice',
579
+        'desc'            => __( 'Parent element must be position `relative`', 'ayecode-connect' ),
580
+        'status'          => 'warning',
581
+        'group'           => __( 'Shape Divider', 'ayecode-connect' ),
582
+        'element_require' => '[%' . $type . '%]!=""',
583
+    );
584
+
585
+    $input[ $type . '_position' ] = wp_parse_args(
586
+        $overwrite_color,
587
+        array(
588
+            'type'            => 'select',
589
+            'title'           => __( 'Position', 'ayecode-connect' ),
590
+            'options'         => array(
591
+                'top'    => __( 'Top', 'ayecode-connect' ),
592
+                'bottom' => __( 'Bottom', 'ayecode-connect' ),
593
+            ),
594
+            'desc_tip'        => true,
595
+            'group'           => __( 'Shape Divider', 'ayecode-connect' ),
596
+            'element_require' => '[%' . $type . '%]!=""',
597
+        )
598
+    );
599
+
600
+    $options = array(
601
+                    ''            => __( 'None', 'ayecode-connect' ),
602
+                    'transparent' => __( 'Transparent', 'ayecode-connect' ),
603
+                ) + sd_aui_colors()
604
+               + array(
605
+                    'custom-color' => __( 'Custom Color', 'ayecode-connect' ),
606
+                );
607
+
608
+    $input[ $type . '_color' ] = wp_parse_args(
609
+        $overwrite_color,
610
+        array(
611
+            'type'            => 'select',
612
+            'title'           => __( 'Color', 'ayecode-connect' ),
613
+            'options'         => $options,
614
+            'desc_tip'        => true,
615
+            'group'           => __( 'Shape Divider', 'ayecode-connect' ),
616
+            'element_require' => '[%' . $type . '%]!=""',
617
+        )
618
+    );
619
+
620
+    $input[ $type . '_custom_color' ] = wp_parse_args(
621
+        $overwrite_color,
622
+        array(
623
+            'type'            => 'color',
624
+            'title'           => __( 'Custom color', 'ayecode-connect' ),
625
+            'placeholder'     => '',
626
+            'default'         => '#0073aa',
627
+            'desc_tip'        => true,
628
+            'group'           => __( 'Shape Divider', 'ayecode-connect' ),
629
+            'element_require' => '[%' . $type . '_color%]=="custom-color" && [%' . $type . '%]!=""',
630
+        )
631
+    );
632
+
633
+    $input[ $type . '_width' ] = wp_parse_args(
634
+        $overwrite_gradient,
635
+        array(
636
+            'type'              => 'range',
637
+            'title'             => __( 'Width', 'ayecode-connect' ),
638
+            'placeholder'       => '',
639
+            'default'           => '200',
640
+            'desc_tip'          => true,
641
+            'custom_attributes' => array(
642
+                'min' => 100,
643
+                'max' => 300,
644
+            ),
645
+            'group'             => __( 'Shape Divider', 'ayecode-connect' ),
646
+            'element_require'   => '[%' . $type . '%]!=""',
647
+        )
648
+    );
649
+
650
+    $input[ $type . '_height' ] = array(
651
+        'type'              => 'range',
652
+        'title'             => __( 'Height', 'ayecode-connect' ),
653
+        'default'           => '100',
654
+        'desc_tip'          => true,
655
+        'custom_attributes' => array(
656
+            'min' => 0,
657
+            'max' => 500,
658
+        ),
659
+        'group'             => __( 'Shape Divider', 'ayecode-connect' ),
660
+        'element_require'   => '[%' . $type . '%]!=""',
661
+    );
662
+
663
+    $requires = array(
664
+        'mountains'             => array( 'flip' ),
665
+        'drops'                 => array( 'flip', 'invert' ),
666
+        'clouds'                => array( 'flip', 'invert' ),
667
+        'zigzag'                => array(),
668
+        'pyramids'              => array( 'flip', 'invert' ),
669
+        'triangle'              => array( 'invert' ),
670
+        'triangle-asymmetrical' => array( 'flip', 'invert' ),
671
+        'tilt'                  => array( 'flip' ),
672
+        'opacity-tilt'          => array( 'flip' ),
673
+        'opacity-fan'           => array(),
674
+        'curve'                 => array( 'invert' ),
675
+        'curve-asymmetrical'    => array( 'flip', 'invert' ),
676
+        'waves'                 => array( 'flip', 'invert' ),
677
+        'wave-brush'            => array( 'flip' ),
678
+        'waves-pattern'         => array( 'flip' ),
679
+        'arrow'                 => array( 'invert' ),
680
+        'split'                 => array( 'invert' ),
681
+        'book'                  => array( 'invert' ),
682
+    );
683
+
684
+    $input[ $type . '_flip' ] = array(
685
+        'type'            => 'checkbox',
686
+        'title'           => __( 'Flip', 'ayecode-connect' ),
687
+        'default'         => '',
688
+        'desc_tip'        => true,
689
+        'group'           => __( 'Shape Divider', 'ayecode-connect' ),
690
+        'element_require' => sd_get_element_require_string( $requires, 'flip', 'sd' ),
691
+    );
692
+
693
+    $input[ $type . '_invert' ] = array(
694
+        'type'            => 'checkbox',
695
+        'title'           => __( 'Invert', 'ayecode-connect' ),
696
+        'default'         => '',
697
+        'desc_tip'        => true,
698
+        'group'           => __( 'Shape Divider', 'ayecode-connect' ),
699
+        'element_require' => sd_get_element_require_string( $requires, 'invert', 'sd' ),
700
+    );
701
+
702
+    $input[ $type . '_btf' ] = array(
703
+        'type'            => 'checkbox',
704
+        'title'           => __( 'Bring to front', 'ayecode-connect' ),
705
+        'default'         => '',
706
+        'desc_tip'        => true,
707
+        'group'           => __( 'Shape Divider', 'ayecode-connect' ),
708
+        'element_require' => '[%' . $type . '%]!=""',
709
+
710
+    );
711
+
712
+    return $input;
713 713
 }
714 714
 
715 715
 /**
@@ -722,22 +722,22 @@  discard block
 block discarded – undo
722 722
  * @return string
723 723
  */
724 724
 function sd_get_element_require_string( $args, $key, $type ) {
725
-	$output   = '';
726
-	$requires = array();
725
+    $output   = '';
726
+    $requires = array();
727 727
 
728
-	if ( ! empty( $args ) ) {
729
-		foreach ( $args as $t => $k ) {
730
-			if ( in_array( $key, $k ) ) {
731
-				$requires[] = '[%' . $type . '%]=="' . $t . '"';
732
-			}
733
-		}
728
+    if ( ! empty( $args ) ) {
729
+        foreach ( $args as $t => $k ) {
730
+            if ( in_array( $key, $k ) ) {
731
+                $requires[] = '[%' . $type . '%]=="' . $t . '"';
732
+            }
733
+        }
734 734
 
735
-		if ( ! empty( $requires ) ) {
736
-			$output = '(' . implode( ' || ', $requires ) . ')';
737
-		}
738
-	}
735
+        if ( ! empty( $requires ) ) {
736
+            $output = '(' . implode( ' || ', $requires ) . ')';
737
+        }
738
+    }
739 739
 
740
-	return $output;
740
+    return $output;
741 741
 }
742 742
 
743 743
 /**
@@ -749,41 +749,41 @@  discard block
 block discarded – undo
749 749
  * @return array
750 750
  */
751 751
 function sd_get_text_color_input( $type = 'text_color', $overwrite = array(), $has_custom = false ) {
752
-	$options = array(
753
-		           '' => __( 'None', 'ayecode-connect' ),
754
-	           ) + sd_aui_colors();
752
+    $options = array(
753
+                    '' => __( 'None', 'ayecode-connect' ),
754
+                ) + sd_aui_colors();
755 755
 
756
-	if ( $has_custom ) {
757
-		$options['custom'] = __( 'Custom color', 'ayecode-connect' );
758
-	}
756
+    if ( $has_custom ) {
757
+        $options['custom'] = __( 'Custom color', 'ayecode-connect' );
758
+    }
759 759
 
760
-	$defaults = array(
761
-		'type'     => 'select',
762
-		'title'    => __( 'Text color', 'ayecode-connect' ),
763
-		'options'  => $options,
764
-		'default'  => '',
765
-		'desc_tip' => true,
766
-		'group'    => __( 'Typography', 'ayecode-connect' ),
767
-	);
760
+    $defaults = array(
761
+        'type'     => 'select',
762
+        'title'    => __( 'Text color', 'ayecode-connect' ),
763
+        'options'  => $options,
764
+        'default'  => '',
765
+        'desc_tip' => true,
766
+        'group'    => __( 'Typography', 'ayecode-connect' ),
767
+    );
768 768
 
769
-	$input = wp_parse_args( $overwrite, $defaults );
769
+    $input = wp_parse_args( $overwrite, $defaults );
770 770
 
771
-	return $input;
771
+    return $input;
772 772
 }
773 773
 
774 774
 function sd_get_text_color_input_group( $type = 'text_color', $overwrite = array(), $overwrite_custom = array() ) {
775
-	$inputs = array();
775
+    $inputs = array();
776 776
 
777
-	if ( $overwrite !== false ) {
778
-		$inputs[ $type ] = sd_get_text_color_input( $type, $overwrite, true );
779
-	}
777
+    if ( $overwrite !== false ) {
778
+        $inputs[ $type ] = sd_get_text_color_input( $type, $overwrite, true );
779
+    }
780 780
 
781
-	if ( $overwrite_custom !== false ) {
782
-		$custom            = $type . '_custom';
783
-		$inputs[ $custom ] = sd_get_custom_color_input( $custom, $overwrite_custom, $type );
784
-	}
781
+    if ( $overwrite_custom !== false ) {
782
+        $custom            = $type . '_custom';
783
+        $inputs[ $custom ] = sd_get_custom_color_input( $custom, $overwrite_custom, $type );
784
+    }
785 785
 
786
-	return $inputs;
786
+    return $inputs;
787 787
 }
788 788
 
789 789
 /**
@@ -796,22 +796,22 @@  discard block
 block discarded – undo
796 796
  */
797 797
 function sd_get_custom_color_input( $type = 'color_custom', $overwrite = array(), $parent_type = '' ) {
798 798
 
799
-	$defaults = array(
800
-		'type'        => 'color',
801
-		'title'       => __( 'Custom color', 'ayecode-connect' ),
802
-		'default'     => '',
803
-		'placeholder' => '',
804
-		'desc_tip'    => true,
805
-		'group'       => __( 'Typography', 'ayecode-connect' ),
806
-	);
799
+    $defaults = array(
800
+        'type'        => 'color',
801
+        'title'       => __( 'Custom color', 'ayecode-connect' ),
802
+        'default'     => '',
803
+        'placeholder' => '',
804
+        'desc_tip'    => true,
805
+        'group'       => __( 'Typography', 'ayecode-connect' ),
806
+    );
807 807
 
808
-	if ( $parent_type ) {
809
-		$defaults['element_require'] = '[%' . $parent_type . '%]=="custom"';
810
-	}
808
+    if ( $parent_type ) {
809
+        $defaults['element_require'] = '[%' . $parent_type . '%]=="custom"';
810
+    }
811 811
 
812
-	$input = wp_parse_args( $overwrite, $defaults );
812
+    $input = wp_parse_args( $overwrite, $defaults );
813 813
 
814
-	return $input;
814
+    return $input;
815 815
 }
816 816
 
817 817
 /**
@@ -824,44 +824,44 @@  discard block
 block discarded – undo
824 824
  */
825 825
 function sd_get_col_input( $type = 'col', $overwrite = array() ) {
826 826
 
827
-	$device_size = '';
828
-	if ( ! empty( $overwrite['device_type'] ) ) {
829
-		if ( $overwrite['device_type'] == 'Tablet' ) {
830
-			$device_size = '-md';
831
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
832
-			$device_size = '-lg';
833
-		}
834
-	}
835
-	$options = array(
836
-		''     => __( 'Default', 'ayecode-connect' ),
837
-		'auto' => __( 'auto', 'ayecode-connect' ),
838
-		'1'    => '1/12',
839
-		'2'    => '2/12',
840
-		'3'    => '3/12',
841
-		'4'    => '4/12',
842
-		'5'    => '5/12',
843
-		'6'    => '6/12',
844
-		'7'    => '7/12',
845
-		'8'    => '8/12',
846
-		'9'    => '9/12',
847
-		'10'   => '10/12',
848
-		'11'   => '11/12',
849
-		'12'   => '12/12',
850
-	);
851
-
852
-	$defaults = array(
853
-		'type'            => 'select',
854
-		'title'           => __( 'Column width', 'ayecode-connect' ),
855
-		'options'         => $options,
856
-		'default'         => '',
857
-		'desc_tip'        => true,
858
-		'group'           => __( 'Container', 'ayecode-connect' ),
859
-		'element_require' => '[%container%]=="col"',
860
-	);
861
-
862
-	$input = wp_parse_args( $overwrite, $defaults );
863
-
864
-	return $input;
827
+    $device_size = '';
828
+    if ( ! empty( $overwrite['device_type'] ) ) {
829
+        if ( $overwrite['device_type'] == 'Tablet' ) {
830
+            $device_size = '-md';
831
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
832
+            $device_size = '-lg';
833
+        }
834
+    }
835
+    $options = array(
836
+        ''     => __( 'Default', 'ayecode-connect' ),
837
+        'auto' => __( 'auto', 'ayecode-connect' ),
838
+        '1'    => '1/12',
839
+        '2'    => '2/12',
840
+        '3'    => '3/12',
841
+        '4'    => '4/12',
842
+        '5'    => '5/12',
843
+        '6'    => '6/12',
844
+        '7'    => '7/12',
845
+        '8'    => '8/12',
846
+        '9'    => '9/12',
847
+        '10'   => '10/12',
848
+        '11'   => '11/12',
849
+        '12'   => '12/12',
850
+    );
851
+
852
+    $defaults = array(
853
+        'type'            => 'select',
854
+        'title'           => __( 'Column width', 'ayecode-connect' ),
855
+        'options'         => $options,
856
+        'default'         => '',
857
+        'desc_tip'        => true,
858
+        'group'           => __( 'Container', 'ayecode-connect' ),
859
+        'element_require' => '[%container%]=="col"',
860
+    );
861
+
862
+    $input = wp_parse_args( $overwrite, $defaults );
863
+
864
+    return $input;
865 865
 }
866 866
 
867 867
 /**
@@ -874,37 +874,37 @@  discard block
 block discarded – undo
874 874
  */
875 875
 function sd_get_row_cols_input( $type = 'row_cols', $overwrite = array() ) {
876 876
 
877
-	$device_size = '';
878
-	if ( ! empty( $overwrite['device_type'] ) ) {
879
-		if ( $overwrite['device_type'] == 'Tablet' ) {
880
-			$device_size = '-md';
881
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
882
-			$device_size = '-lg';
883
-		}
884
-	}
885
-	$options = array(
886
-		''  => __( 'auto', 'ayecode-connect' ),
887
-		'1' => '1',
888
-		'2' => '2',
889
-		'3' => '3',
890
-		'4' => '4',
891
-		'5' => '5',
892
-		'6' => '6',
893
-	);
894
-
895
-	$defaults = array(
896
-		'type'            => 'select',
897
-		'title'           => __( 'Row columns', 'ayecode-connect' ),
898
-		'options'         => $options,
899
-		'default'         => '',
900
-		'desc_tip'        => true,
901
-		'group'           => __( 'Container', 'ayecode-connect' ),
902
-		'element_require' => '[%container%]=="row"',
903
-	);
904
-
905
-	$input = wp_parse_args( $overwrite, $defaults );
906
-
907
-	return $input;
877
+    $device_size = '';
878
+    if ( ! empty( $overwrite['device_type'] ) ) {
879
+        if ( $overwrite['device_type'] == 'Tablet' ) {
880
+            $device_size = '-md';
881
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
882
+            $device_size = '-lg';
883
+        }
884
+    }
885
+    $options = array(
886
+        ''  => __( 'auto', 'ayecode-connect' ),
887
+        '1' => '1',
888
+        '2' => '2',
889
+        '3' => '3',
890
+        '4' => '4',
891
+        '5' => '5',
892
+        '6' => '6',
893
+    );
894
+
895
+    $defaults = array(
896
+        'type'            => 'select',
897
+        'title'           => __( 'Row columns', 'ayecode-connect' ),
898
+        'options'         => $options,
899
+        'default'         => '',
900
+        'desc_tip'        => true,
901
+        'group'           => __( 'Container', 'ayecode-connect' ),
902
+        'element_require' => '[%container%]=="row"',
903
+    );
904
+
905
+    $input = wp_parse_args( $overwrite, $defaults );
906
+
907
+    return $input;
908 908
 }
909 909
 
910 910
 /**
@@ -917,33 +917,33 @@  discard block
 block discarded – undo
917 917
  */
918 918
 function sd_get_text_align_input( $type = 'text_align', $overwrite = array() ) {
919 919
 
920
-	$device_size = '';
921
-	if ( ! empty( $overwrite['device_type'] ) ) {
922
-		if ( $overwrite['device_type'] == 'Tablet' ) {
923
-			$device_size = '-md';
924
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
925
-			$device_size = '-lg';
926
-		}
927
-	}
928
-	$options = array(
929
-		''                                => __( 'Default', 'ayecode-connect' ),
930
-		'text' . $device_size . '-left'   => __( 'Left', 'ayecode-connect' ),
931
-		'text' . $device_size . '-right'  => __( 'Right', 'ayecode-connect' ),
932
-		'text' . $device_size . '-center' => __( 'Center', 'ayecode-connect' ),
933
-	);
934
-
935
-	$defaults = array(
936
-		'type'     => 'select',
937
-		'title'    => __( 'Text align', 'ayecode-connect' ),
938
-		'options'  => $options,
939
-		'default'  => '',
940
-		'desc_tip' => true,
941
-		'group'    => __( 'Typography', 'ayecode-connect' ),
942
-	);
943
-
944
-	$input = wp_parse_args( $overwrite, $defaults );
945
-
946
-	return $input;
920
+    $device_size = '';
921
+    if ( ! empty( $overwrite['device_type'] ) ) {
922
+        if ( $overwrite['device_type'] == 'Tablet' ) {
923
+            $device_size = '-md';
924
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
925
+            $device_size = '-lg';
926
+        }
927
+    }
928
+    $options = array(
929
+        ''                                => __( 'Default', 'ayecode-connect' ),
930
+        'text' . $device_size . '-left'   => __( 'Left', 'ayecode-connect' ),
931
+        'text' . $device_size . '-right'  => __( 'Right', 'ayecode-connect' ),
932
+        'text' . $device_size . '-center' => __( 'Center', 'ayecode-connect' ),
933
+    );
934
+
935
+    $defaults = array(
936
+        'type'     => 'select',
937
+        'title'    => __( 'Text align', 'ayecode-connect' ),
938
+        'options'  => $options,
939
+        'default'  => '',
940
+        'desc_tip' => true,
941
+        'group'    => __( 'Typography', 'ayecode-connect' ),
942
+    );
943
+
944
+    $input = wp_parse_args( $overwrite, $defaults );
945
+
946
+    return $input;
947 947
 }
948 948
 
949 949
 /**
@@ -956,39 +956,39 @@  discard block
 block discarded – undo
956 956
  */
957 957
 function sd_get_display_input( $type = 'display', $overwrite = array() ) {
958 958
 
959
-	$device_size = '';
960
-	if ( ! empty( $overwrite['device_type'] ) ) {
961
-		if ( $overwrite['device_type'] == 'Tablet' ) {
962
-			$device_size = '-md';
963
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
964
-			$device_size = '-lg';
965
-		}
966
-	}
967
-	$options = array(
968
-		''                                   => __( 'Default', 'ayecode-connect' ),
969
-		'd' . $device_size . '-none'         => 'none',
970
-		'd' . $device_size . '-inline'       => 'inline',
971
-		'd' . $device_size . '-inline-block' => 'inline-block',
972
-		'd' . $device_size . '-block'        => 'block',
973
-		'd' . $device_size . '-table'        => 'table',
974
-		'd' . $device_size . '-table-cell'   => 'table-cell',
975
-		'd' . $device_size . '-table-row'    => 'table-row',
976
-		'd' . $device_size . '-flex'         => 'flex',
977
-		'd' . $device_size . '-inline-flex'  => 'inline-flex',
978
-	);
979
-
980
-	$defaults = array(
981
-		'type'     => 'select',
982
-		'title'    => __( 'Display', 'ayecode-connect' ),
983
-		'options'  => $options,
984
-		'default'  => '',
985
-		'desc_tip' => true,
986
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
987
-	);
988
-
989
-	$input = wp_parse_args( $overwrite, $defaults );
990
-
991
-	return $input;
959
+    $device_size = '';
960
+    if ( ! empty( $overwrite['device_type'] ) ) {
961
+        if ( $overwrite['device_type'] == 'Tablet' ) {
962
+            $device_size = '-md';
963
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
964
+            $device_size = '-lg';
965
+        }
966
+    }
967
+    $options = array(
968
+        ''                                   => __( 'Default', 'ayecode-connect' ),
969
+        'd' . $device_size . '-none'         => 'none',
970
+        'd' . $device_size . '-inline'       => 'inline',
971
+        'd' . $device_size . '-inline-block' => 'inline-block',
972
+        'd' . $device_size . '-block'        => 'block',
973
+        'd' . $device_size . '-table'        => 'table',
974
+        'd' . $device_size . '-table-cell'   => 'table-cell',
975
+        'd' . $device_size . '-table-row'    => 'table-row',
976
+        'd' . $device_size . '-flex'         => 'flex',
977
+        'd' . $device_size . '-inline-flex'  => 'inline-flex',
978
+    );
979
+
980
+    $defaults = array(
981
+        'type'     => 'select',
982
+        'title'    => __( 'Display', 'ayecode-connect' ),
983
+        'options'  => $options,
984
+        'default'  => '',
985
+        'desc_tip' => true,
986
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
987
+    );
988
+
989
+    $input = wp_parse_args( $overwrite, $defaults );
990
+
991
+    return $input;
992 992
 }
993 993
 
994 994
 /**
@@ -1001,17 +1001,17 @@  discard block
 block discarded – undo
1001 1001
  */
1002 1002
 function sd_get_text_justify_input( $type = 'text_justify', $overwrite = array() ) {
1003 1003
 
1004
-	$defaults = array(
1005
-		'type'     => 'checkbox',
1006
-		'title'    => __( 'Text justify', 'ayecode-connect' ),
1007
-		'default'  => '',
1008
-		'desc_tip' => true,
1009
-		'group'    => __( 'Typography', 'ayecode-connect' ),
1010
-	);
1004
+    $defaults = array(
1005
+        'type'     => 'checkbox',
1006
+        'title'    => __( 'Text justify', 'ayecode-connect' ),
1007
+        'default'  => '',
1008
+        'desc_tip' => true,
1009
+        'group'    => __( 'Typography', 'ayecode-connect' ),
1010
+    );
1011 1011
 
1012
-	$input = wp_parse_args( $overwrite, $defaults );
1012
+    $input = wp_parse_args( $overwrite, $defaults );
1013 1013
 
1014
-	return $input;
1014
+    return $input;
1015 1015
 }
1016 1016
 
1017 1017
 /**
@@ -1024,72 +1024,72 @@  discard block
 block discarded – undo
1024 1024
  * @return array
1025 1025
  */
1026 1026
 function sd_aui_colors( $include_branding = false, $include_outlines = false, $outline_button_only_text = false, $include_translucent = false ) {
1027
-	$theme_colors = array();
1028
-
1029
-	$theme_colors['primary']   = __( 'Primary', 'ayecode-connect' );
1030
-	$theme_colors['secondary'] = __( 'Secondary', 'ayecode-connect' );
1031
-	$theme_colors['success']   = __( 'Success', 'ayecode-connect' );
1032
-	$theme_colors['danger']    = __( 'Danger', 'ayecode-connect' );
1033
-	$theme_colors['warning']   = __( 'Warning', 'ayecode-connect' );
1034
-	$theme_colors['info']      = __( 'Info', 'ayecode-connect' );
1035
-	$theme_colors['light']     = __( 'Light', 'ayecode-connect' );
1036
-	$theme_colors['dark']      = __( 'Dark', 'ayecode-connect' );
1037
-	$theme_colors['black']     = __( 'Black', 'ayecode-connect' );
1038
-	$theme_colors['white']     = __( 'White', 'ayecode-connect' );
1039
-	$theme_colors['purple']    = __( 'Purple', 'ayecode-connect' );
1040
-	$theme_colors['salmon']    = __( 'Salmon', 'ayecode-connect' );
1041
-	$theme_colors['cyan']      = __( 'Cyan', 'ayecode-connect' );
1042
-	$theme_colors['gray']      = __( 'Gray', 'ayecode-connect' );
1043
-	$theme_colors['muted']     = __( 'Muted', 'ayecode-connect' );
1044
-	$theme_colors['gray-dark'] = __( 'Gray dark', 'ayecode-connect' );
1045
-	$theme_colors['indigo']    = __( 'Indigo', 'ayecode-connect' );
1046
-	$theme_colors['orange']    = __( 'Orange', 'ayecode-connect' );
1047
-
1048
-	if ( $include_outlines ) {
1049
-		$button_only                       = $outline_button_only_text ? ' ' . __( '(button only)', 'ayecode-connect' ) : '';
1050
-		$theme_colors['outline-primary']   = __( 'Primary outline', 'ayecode-connect' ) . $button_only;
1051
-		$theme_colors['outline-secondary'] = __( 'Secondary outline', 'ayecode-connect' ) . $button_only;
1052
-		$theme_colors['outline-success']   = __( 'Success outline', 'ayecode-connect' ) . $button_only;
1053
-		$theme_colors['outline-danger']    = __( 'Danger outline', 'ayecode-connect' ) . $button_only;
1054
-		$theme_colors['outline-warning']   = __( 'Warning outline', 'ayecode-connect' ) . $button_only;
1055
-		$theme_colors['outline-info']      = __( 'Info outline', 'ayecode-connect' ) . $button_only;
1056
-		$theme_colors['outline-light']     = __( 'Light outline', 'ayecode-connect' ) . $button_only;
1057
-		$theme_colors['outline-dark']      = __( 'Dark outline', 'ayecode-connect' ) . $button_only;
1058
-		$theme_colors['outline-white']     = __( 'White outline', 'ayecode-connect' ) . $button_only;
1059
-		$theme_colors['outline-purple']    = __( 'Purple outline', 'ayecode-connect' ) . $button_only;
1060
-		$theme_colors['outline-salmon']    = __( 'Salmon outline', 'ayecode-connect' ) . $button_only;
1061
-		$theme_colors['outline-cyan']      = __( 'Cyan outline', 'ayecode-connect' ) . $button_only;
1062
-		$theme_colors['outline-gray']      = __( 'Gray outline', 'ayecode-connect' ) . $button_only;
1063
-		$theme_colors['outline-gray-dark'] = __( 'Gray dark outline', 'ayecode-connect' ) . $button_only;
1064
-		$theme_colors['outline-indigo']    = __( 'Indigo outline', 'ayecode-connect' ) . $button_only;
1065
-		$theme_colors['outline-orange']    = __( 'Orange outline', 'ayecode-connect' ) . $button_only;
1066
-	}
1067
-
1068
-	if ( $include_branding ) {
1069
-		$theme_colors = $theme_colors + sd_aui_branding_colors();
1070
-	}
1071
-
1072
-	if ( $include_translucent ) {
1073
-		$button_only                           = $outline_button_only_text ? ' ' . __( '(button only)', 'ayecode-connect' ) : '';
1074
-		$theme_colors['translucent-primary']   = __( 'Primary translucent', 'ayecode-connect' ) . $button_only;
1075
-		$theme_colors['translucent-secondary'] = __( 'Secondary translucent', 'ayecode-connect' ) . $button_only;
1076
-		$theme_colors['translucent-success']   = __( 'Success translucent', 'ayecode-connect' ) . $button_only;
1077
-		$theme_colors['translucent-danger']    = __( 'Danger translucent', 'ayecode-connect' ) . $button_only;
1078
-		$theme_colors['translucent-warning']   = __( 'Warning translucent', 'ayecode-connect' ) . $button_only;
1079
-		$theme_colors['translucent-info']      = __( 'Info translucent', 'ayecode-connect' ) . $button_only;
1080
-		$theme_colors['translucent-light']     = __( 'Light translucent', 'ayecode-connect' ) . $button_only;
1081
-		$theme_colors['translucent-dark']      = __( 'Dark translucent', 'ayecode-connect' ) . $button_only;
1082
-		$theme_colors['translucent-white']     = __( 'White translucent', 'ayecode-connect' ) . $button_only;
1083
-		$theme_colors['translucent-purple']    = __( 'Purple translucent', 'ayecode-connect' ) . $button_only;
1084
-		$theme_colors['translucent-salmon']    = __( 'Salmon translucent', 'ayecode-connect' ) . $button_only;
1085
-		$theme_colors['translucent-cyan']      = __( 'Cyan translucent', 'ayecode-connect' ) . $button_only;
1086
-		$theme_colors['translucent-gray']      = __( 'Gray translucent', 'ayecode-connect' ) . $button_only;
1087
-		$theme_colors['translucent-gray-dark'] = __( 'Gray dark translucent', 'ayecode-connect' ) . $button_only;
1088
-		$theme_colors['translucent-indigo']    = __( 'Indigo translucent', 'ayecode-connect' ) . $button_only;
1089
-		$theme_colors['translucent-orange']    = __( 'Orange translucent', 'ayecode-connect' ) . $button_only;
1090
-	}
1091
-
1092
-	return apply_filters( 'sd_aui_colors', $theme_colors, $include_outlines, $include_branding );
1027
+    $theme_colors = array();
1028
+
1029
+    $theme_colors['primary']   = __( 'Primary', 'ayecode-connect' );
1030
+    $theme_colors['secondary'] = __( 'Secondary', 'ayecode-connect' );
1031
+    $theme_colors['success']   = __( 'Success', 'ayecode-connect' );
1032
+    $theme_colors['danger']    = __( 'Danger', 'ayecode-connect' );
1033
+    $theme_colors['warning']   = __( 'Warning', 'ayecode-connect' );
1034
+    $theme_colors['info']      = __( 'Info', 'ayecode-connect' );
1035
+    $theme_colors['light']     = __( 'Light', 'ayecode-connect' );
1036
+    $theme_colors['dark']      = __( 'Dark', 'ayecode-connect' );
1037
+    $theme_colors['black']     = __( 'Black', 'ayecode-connect' );
1038
+    $theme_colors['white']     = __( 'White', 'ayecode-connect' );
1039
+    $theme_colors['purple']    = __( 'Purple', 'ayecode-connect' );
1040
+    $theme_colors['salmon']    = __( 'Salmon', 'ayecode-connect' );
1041
+    $theme_colors['cyan']      = __( 'Cyan', 'ayecode-connect' );
1042
+    $theme_colors['gray']      = __( 'Gray', 'ayecode-connect' );
1043
+    $theme_colors['muted']     = __( 'Muted', 'ayecode-connect' );
1044
+    $theme_colors['gray-dark'] = __( 'Gray dark', 'ayecode-connect' );
1045
+    $theme_colors['indigo']    = __( 'Indigo', 'ayecode-connect' );
1046
+    $theme_colors['orange']    = __( 'Orange', 'ayecode-connect' );
1047
+
1048
+    if ( $include_outlines ) {
1049
+        $button_only                       = $outline_button_only_text ? ' ' . __( '(button only)', 'ayecode-connect' ) : '';
1050
+        $theme_colors['outline-primary']   = __( 'Primary outline', 'ayecode-connect' ) . $button_only;
1051
+        $theme_colors['outline-secondary'] = __( 'Secondary outline', 'ayecode-connect' ) . $button_only;
1052
+        $theme_colors['outline-success']   = __( 'Success outline', 'ayecode-connect' ) . $button_only;
1053
+        $theme_colors['outline-danger']    = __( 'Danger outline', 'ayecode-connect' ) . $button_only;
1054
+        $theme_colors['outline-warning']   = __( 'Warning outline', 'ayecode-connect' ) . $button_only;
1055
+        $theme_colors['outline-info']      = __( 'Info outline', 'ayecode-connect' ) . $button_only;
1056
+        $theme_colors['outline-light']     = __( 'Light outline', 'ayecode-connect' ) . $button_only;
1057
+        $theme_colors['outline-dark']      = __( 'Dark outline', 'ayecode-connect' ) . $button_only;
1058
+        $theme_colors['outline-white']     = __( 'White outline', 'ayecode-connect' ) . $button_only;
1059
+        $theme_colors['outline-purple']    = __( 'Purple outline', 'ayecode-connect' ) . $button_only;
1060
+        $theme_colors['outline-salmon']    = __( 'Salmon outline', 'ayecode-connect' ) . $button_only;
1061
+        $theme_colors['outline-cyan']      = __( 'Cyan outline', 'ayecode-connect' ) . $button_only;
1062
+        $theme_colors['outline-gray']      = __( 'Gray outline', 'ayecode-connect' ) . $button_only;
1063
+        $theme_colors['outline-gray-dark'] = __( 'Gray dark outline', 'ayecode-connect' ) . $button_only;
1064
+        $theme_colors['outline-indigo']    = __( 'Indigo outline', 'ayecode-connect' ) . $button_only;
1065
+        $theme_colors['outline-orange']    = __( 'Orange outline', 'ayecode-connect' ) . $button_only;
1066
+    }
1067
+
1068
+    if ( $include_branding ) {
1069
+        $theme_colors = $theme_colors + sd_aui_branding_colors();
1070
+    }
1071
+
1072
+    if ( $include_translucent ) {
1073
+        $button_only                           = $outline_button_only_text ? ' ' . __( '(button only)', 'ayecode-connect' ) : '';
1074
+        $theme_colors['translucent-primary']   = __( 'Primary translucent', 'ayecode-connect' ) . $button_only;
1075
+        $theme_colors['translucent-secondary'] = __( 'Secondary translucent', 'ayecode-connect' ) . $button_only;
1076
+        $theme_colors['translucent-success']   = __( 'Success translucent', 'ayecode-connect' ) . $button_only;
1077
+        $theme_colors['translucent-danger']    = __( 'Danger translucent', 'ayecode-connect' ) . $button_only;
1078
+        $theme_colors['translucent-warning']   = __( 'Warning translucent', 'ayecode-connect' ) . $button_only;
1079
+        $theme_colors['translucent-info']      = __( 'Info translucent', 'ayecode-connect' ) . $button_only;
1080
+        $theme_colors['translucent-light']     = __( 'Light translucent', 'ayecode-connect' ) . $button_only;
1081
+        $theme_colors['translucent-dark']      = __( 'Dark translucent', 'ayecode-connect' ) . $button_only;
1082
+        $theme_colors['translucent-white']     = __( 'White translucent', 'ayecode-connect' ) . $button_only;
1083
+        $theme_colors['translucent-purple']    = __( 'Purple translucent', 'ayecode-connect' ) . $button_only;
1084
+        $theme_colors['translucent-salmon']    = __( 'Salmon translucent', 'ayecode-connect' ) . $button_only;
1085
+        $theme_colors['translucent-cyan']      = __( 'Cyan translucent', 'ayecode-connect' ) . $button_only;
1086
+        $theme_colors['translucent-gray']      = __( 'Gray translucent', 'ayecode-connect' ) . $button_only;
1087
+        $theme_colors['translucent-gray-dark'] = __( 'Gray dark translucent', 'ayecode-connect' ) . $button_only;
1088
+        $theme_colors['translucent-indigo']    = __( 'Indigo translucent', 'ayecode-connect' ) . $button_only;
1089
+        $theme_colors['translucent-orange']    = __( 'Orange translucent', 'ayecode-connect' ) . $button_only;
1090
+    }
1091
+
1092
+    return apply_filters( 'sd_aui_colors', $theme_colors, $include_outlines, $include_branding );
1093 1093
 }
1094 1094
 
1095 1095
 /**
@@ -1098,19 +1098,19 @@  discard block
 block discarded – undo
1098 1098
  * @return array
1099 1099
  */
1100 1100
 function sd_aui_branding_colors() {
1101
-	return array(
1102
-		'facebook'  => __( 'Facebook', 'ayecode-connect' ),
1103
-		'twitter'   => __( 'Twitter', 'ayecode-connect' ),
1104
-		'instagram' => __( 'Instagram', 'ayecode-connect' ),
1105
-		'linkedin'  => __( 'Linkedin', 'ayecode-connect' ),
1106
-		'flickr'    => __( 'Flickr', 'ayecode-connect' ),
1107
-		'github'    => __( 'GitHub', 'ayecode-connect' ),
1108
-		'youtube'   => __( 'YouTube', 'ayecode-connect' ),
1109
-		'wordpress' => __( 'WordPress', 'ayecode-connect' ),
1110
-		'google'    => __( 'Google', 'ayecode-connect' ),
1111
-		'yahoo'     => __( 'Yahoo', 'ayecode-connect' ),
1112
-		'vkontakte' => __( 'Vkontakte', 'ayecode-connect' ),
1113
-	);
1101
+    return array(
1102
+        'facebook'  => __( 'Facebook', 'ayecode-connect' ),
1103
+        'twitter'   => __( 'Twitter', 'ayecode-connect' ),
1104
+        'instagram' => __( 'Instagram', 'ayecode-connect' ),
1105
+        'linkedin'  => __( 'Linkedin', 'ayecode-connect' ),
1106
+        'flickr'    => __( 'Flickr', 'ayecode-connect' ),
1107
+        'github'    => __( 'GitHub', 'ayecode-connect' ),
1108
+        'youtube'   => __( 'YouTube', 'ayecode-connect' ),
1109
+        'wordpress' => __( 'WordPress', 'ayecode-connect' ),
1110
+        'google'    => __( 'Google', 'ayecode-connect' ),
1111
+        'yahoo'     => __( 'Yahoo', 'ayecode-connect' ),
1112
+        'vkontakte' => __( 'Vkontakte', 'ayecode-connect' ),
1113
+    );
1114 1114
 }
1115 1115
 
1116 1116
 
@@ -1124,38 +1124,38 @@  discard block
 block discarded – undo
1124 1124
  */
1125 1125
 function sd_get_container_class_input( $type = 'container', $overwrite = array() ) {
1126 1126
 
1127
-	$options = array(
1128
-		'container'       => __( 'container (default)', 'ayecode-connect' ),
1129
-		'container-sm'    => 'container-sm',
1130
-		'container-md'    => 'container-md',
1131
-		'container-lg'    => 'container-lg',
1132
-		'container-xl'    => 'container-xl',
1133
-		'container-xxl'   => 'container-xxl',
1134
-		'container-fluid' => 'container-fluid',
1135
-		'row'             => 'row',
1136
-		'col'             => 'col',
1137
-		'card'            => 'card',
1138
-		'card-header'     => 'card-header',
1139
-		'card-img-top'    => 'card-img-top',
1140
-		'card-body'       => 'card-body',
1141
-		'card-footer'     => 'card-footer',
1142
-		'list-group'      => 'list-group',
1143
-		'list-group-item' => 'list-group-item',
1144
-		''                => __( 'no container class', 'ayecode-connect' ),
1145
-	);
1146
-
1147
-	$defaults = array(
1148
-		'type'     => 'select',
1149
-		'title'    => __( 'Type', 'ayecode-connect' ),
1150
-		'options'  => $options,
1151
-		'default'  => '',
1152
-		'desc_tip' => true,
1153
-		'group'    => __( 'Container', 'ayecode-connect' ),
1154
-	);
1155
-
1156
-	$input = wp_parse_args( $overwrite, $defaults );
1157
-
1158
-	return $input;
1127
+    $options = array(
1128
+        'container'       => __( 'container (default)', 'ayecode-connect' ),
1129
+        'container-sm'    => 'container-sm',
1130
+        'container-md'    => 'container-md',
1131
+        'container-lg'    => 'container-lg',
1132
+        'container-xl'    => 'container-xl',
1133
+        'container-xxl'   => 'container-xxl',
1134
+        'container-fluid' => 'container-fluid',
1135
+        'row'             => 'row',
1136
+        'col'             => 'col',
1137
+        'card'            => 'card',
1138
+        'card-header'     => 'card-header',
1139
+        'card-img-top'    => 'card-img-top',
1140
+        'card-body'       => 'card-body',
1141
+        'card-footer'     => 'card-footer',
1142
+        'list-group'      => 'list-group',
1143
+        'list-group-item' => 'list-group-item',
1144
+        ''                => __( 'no container class', 'ayecode-connect' ),
1145
+    );
1146
+
1147
+    $defaults = array(
1148
+        'type'     => 'select',
1149
+        'title'    => __( 'Type', 'ayecode-connect' ),
1150
+        'options'  => $options,
1151
+        'default'  => '',
1152
+        'desc_tip' => true,
1153
+        'group'    => __( 'Container', 'ayecode-connect' ),
1154
+    );
1155
+
1156
+    $input = wp_parse_args( $overwrite, $defaults );
1157
+
1158
+    return $input;
1159 1159
 }
1160 1160
 
1161 1161
 /**
@@ -1168,30 +1168,30 @@  discard block
 block discarded – undo
1168 1168
  */
1169 1169
 function sd_get_position_class_input( $type = 'position', $overwrite = array() ) {
1170 1170
 
1171
-	$options = array(
1172
-		''                  => __( 'Default', 'ayecode-connect' ),
1173
-		'position-static'   => 'static',
1174
-		'position-relative' => 'relative',
1175
-		'position-absolute' => 'absolute',
1176
-		'position-fixed'    => 'fixed',
1177
-		'position-sticky'   => 'sticky',
1178
-		'fixed-top'         => 'fixed-top',
1179
-		'fixed-bottom'      => 'fixed-bottom',
1180
-		'sticky-top'        => 'sticky-top',
1181
-	);
1171
+    $options = array(
1172
+        ''                  => __( 'Default', 'ayecode-connect' ),
1173
+        'position-static'   => 'static',
1174
+        'position-relative' => 'relative',
1175
+        'position-absolute' => 'absolute',
1176
+        'position-fixed'    => 'fixed',
1177
+        'position-sticky'   => 'sticky',
1178
+        'fixed-top'         => 'fixed-top',
1179
+        'fixed-bottom'      => 'fixed-bottom',
1180
+        'sticky-top'        => 'sticky-top',
1181
+    );
1182 1182
 
1183
-	$defaults = array(
1184
-		'type'     => 'select',
1185
-		'title'    => __( 'Position', 'ayecode-connect' ),
1186
-		'options'  => $options,
1187
-		'default'  => '',
1188
-		'desc_tip' => true,
1189
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1190
-	);
1183
+    $defaults = array(
1184
+        'type'     => 'select',
1185
+        'title'    => __( 'Position', 'ayecode-connect' ),
1186
+        'options'  => $options,
1187
+        'default'  => '',
1188
+        'desc_tip' => true,
1189
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1190
+    );
1191 1191
 
1192
-	$input = wp_parse_args( $overwrite, $defaults );
1192
+    $input = wp_parse_args( $overwrite, $defaults );
1193 1193
 
1194
-	return $input;
1194
+    return $input;
1195 1195
 }
1196 1196
 
1197 1197
 /**
@@ -1202,32 +1202,32 @@  discard block
 block discarded – undo
1202 1202
  */
1203 1203
 function sd_get_absolute_position_input( $type = 'absolute_position', $overwrite = array() ) {
1204 1204
 
1205
-	$options = array(
1206
-		''              => __( 'Default', 'ayecode-connect' ),
1207
-		'top-left'      => 'top-left',
1208
-		'top-center'    => 'top-center',
1209
-		'top-right'     => 'top-right',
1210
-		'center-left'   => 'middle-left',
1211
-		'center'        => 'center',
1212
-		'center-right'  => 'middle-right',
1213
-		'bottom-left'   => 'bottom-left',
1214
-		'bottom-center' => 'bottom-center',
1215
-		'bottom-right'  => 'bottom-right',
1216
-	);
1217
-
1218
-	$defaults = array(
1219
-		'type'            => 'select',
1220
-		'title'           => __( 'Absolute Position', 'ayecode-connect' ),
1221
-		'options'         => $options,
1222
-		'default'         => '',
1223
-		'desc_tip'        => true,
1224
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1225
-		'element_require' => '[%position%]=="position-absolute"',
1226
-	);
1227
-
1228
-	$input = wp_parse_args( $overwrite, $defaults );
1229
-
1230
-	return $input;
1205
+    $options = array(
1206
+        ''              => __( 'Default', 'ayecode-connect' ),
1207
+        'top-left'      => 'top-left',
1208
+        'top-center'    => 'top-center',
1209
+        'top-right'     => 'top-right',
1210
+        'center-left'   => 'middle-left',
1211
+        'center'        => 'center',
1212
+        'center-right'  => 'middle-right',
1213
+        'bottom-left'   => 'bottom-left',
1214
+        'bottom-center' => 'bottom-center',
1215
+        'bottom-right'  => 'bottom-right',
1216
+    );
1217
+
1218
+    $defaults = array(
1219
+        'type'            => 'select',
1220
+        'title'           => __( 'Absolute Position', 'ayecode-connect' ),
1221
+        'options'         => $options,
1222
+        'default'         => '',
1223
+        'desc_tip'        => true,
1224
+        'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1225
+        'element_require' => '[%position%]=="position-absolute"',
1226
+    );
1227
+
1228
+    $input = wp_parse_args( $overwrite, $defaults );
1229
+
1230
+    return $input;
1231 1231
 }
1232 1232
 
1233 1233
 /**
@@ -1240,38 +1240,38 @@  discard block
 block discarded – undo
1240 1240
  */
1241 1241
 function sd_get_sticky_offset_input( $type = 'top', $overwrite = array() ) {
1242 1242
 
1243
-	$defaults = array(
1244
-		'type'            => 'number',
1245
-		'title'           => __( 'Sticky offset', 'ayecode-connect' ),
1246
-		//'desc' =>  __( 'Sticky offset', 'ayecode-connect' ),
1247
-		'default'         => '',
1248
-		'desc_tip'        => true,
1249
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1250
-		'element_require' => '[%position%]=="sticky" || [%position%]=="sticky-top"',
1251
-	);
1252
-
1253
-	// title
1254
-	if ( $type == 'top' ) {
1255
-		$defaults['title'] = __( 'Top offset', 'ayecode-connect' );
1256
-		$defaults['icon']  = 'box-top';
1257
-		$defaults['row']   = array(
1258
-			'title' => __( 'Sticky offset', 'ayecode-connect' ),
1259
-			'key'   => 'sticky-offset',
1260
-			'open'  => true,
1261
-			'class' => 'text-center',
1262
-		);
1263
-	} elseif ( $type == 'bottom' ) {
1264
-		$defaults['title'] = __( 'Bottom offset', 'ayecode-connect' );
1265
-		$defaults['icon']  = 'box-bottom';
1266
-		$defaults['row']   = array(
1267
-			'key'   => 'sticky-offset',
1268
-			'close' => true,
1269
-		);
1270
-	}
1271
-
1272
-	$input = wp_parse_args( $overwrite, $defaults );
1273
-
1274
-	return $input;
1243
+    $defaults = array(
1244
+        'type'            => 'number',
1245
+        'title'           => __( 'Sticky offset', 'ayecode-connect' ),
1246
+        //'desc' =>  __( 'Sticky offset', 'ayecode-connect' ),
1247
+        'default'         => '',
1248
+        'desc_tip'        => true,
1249
+        'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1250
+        'element_require' => '[%position%]=="sticky" || [%position%]=="sticky-top"',
1251
+    );
1252
+
1253
+    // title
1254
+    if ( $type == 'top' ) {
1255
+        $defaults['title'] = __( 'Top offset', 'ayecode-connect' );
1256
+        $defaults['icon']  = 'box-top';
1257
+        $defaults['row']   = array(
1258
+            'title' => __( 'Sticky offset', 'ayecode-connect' ),
1259
+            'key'   => 'sticky-offset',
1260
+            'open'  => true,
1261
+            'class' => 'text-center',
1262
+        );
1263
+    } elseif ( $type == 'bottom' ) {
1264
+        $defaults['title'] = __( 'Bottom offset', 'ayecode-connect' );
1265
+        $defaults['icon']  = 'box-bottom';
1266
+        $defaults['row']   = array(
1267
+            'key'   => 'sticky-offset',
1268
+            'close' => true,
1269
+        );
1270
+    }
1271
+
1272
+    $input = wp_parse_args( $overwrite, $defaults );
1273
+
1274
+    return $input;
1275 1275
 }
1276 1276
 
1277 1277
 /**
@@ -1283,61 +1283,61 @@  discard block
 block discarded – undo
1283 1283
  * @return array
1284 1284
  */
1285 1285
 function sd_get_font_size_input( $type = 'font_size', $overwrite = array(), $has_custom = false ) {
1286
-	global $aui_bs5;
1287
-
1288
-	$options[] = __( 'Inherit from parent', 'ayecode-connect' );
1289
-	if ( $aui_bs5 ) {
1290
-		// responsive font sizes
1291
-		$options['fs-base'] = 'fs-base (body default)';
1292
-		$options['fs-6']    = 'fs-6';
1293
-		$options['fs-5']    = 'fs-5';
1294
-		$options['fs-4']    = 'fs-4';
1295
-		$options['fs-3']    = 'fs-3';
1296
-		$options['fs-2']    = 'fs-2';
1297
-		$options['fs-1']    = 'fs-1';
1298
-
1299
-		// custom
1300
-		$options['fs-lg']  = 'fs-lg';
1301
-		$options['fs-sm']  = 'fs-sm';
1302
-		$options['fs-xs']  = 'fs-xs';
1303
-		$options['fs-xxs'] = 'fs-xxs';
1304
-
1305
-	}
1306
-
1307
-	$options = $options + array(
1308
-			'h6'        => 'h6',
1309
-			'h5'        => 'h5',
1310
-			'h4'        => 'h4',
1311
-			'h3'        => 'h3',
1312
-			'h2'        => 'h2',
1313
-			'h1'        => 'h1',
1314
-			'display-1' => 'display-1',
1315
-			'display-2' => 'display-2',
1316
-			'display-3' => 'display-3',
1317
-			'display-4' => 'display-4',
1318
-		);
1319
-
1320
-	if ( $aui_bs5 ) {
1321
-		$options['display-5'] = 'display-5';
1322
-		$options['display-6'] = 'display-6';
1323
-	}
1324
-
1325
-	if ( $has_custom ) {
1326
-		$options['custom'] = __( 'Custom size', 'ayecode-connect' );
1327
-	}
1328
-
1329
-	$defaults = array(
1330
-		'type'     => 'select',
1331
-		'title'    => __( 'Font size', 'ayecode-connect' ),
1332
-		'options'  => $options,
1333
-		'default'  => '',
1334
-		'desc_tip' => true,
1335
-		'group'    => __( 'Typography', 'ayecode-connect' ),
1336
-	);
1337
-
1338
-	$input = wp_parse_args( $overwrite, $defaults );
1339
-
1340
-	return $input;
1286
+    global $aui_bs5;
1287
+
1288
+    $options[] = __( 'Inherit from parent', 'ayecode-connect' );
1289
+    if ( $aui_bs5 ) {
1290
+        // responsive font sizes
1291
+        $options['fs-base'] = 'fs-base (body default)';
1292
+        $options['fs-6']    = 'fs-6';
1293
+        $options['fs-5']    = 'fs-5';
1294
+        $options['fs-4']    = 'fs-4';
1295
+        $options['fs-3']    = 'fs-3';
1296
+        $options['fs-2']    = 'fs-2';
1297
+        $options['fs-1']    = 'fs-1';
1298
+
1299
+        // custom
1300
+        $options['fs-lg']  = 'fs-lg';
1301
+        $options['fs-sm']  = 'fs-sm';
1302
+        $options['fs-xs']  = 'fs-xs';
1303
+        $options['fs-xxs'] = 'fs-xxs';
1304
+
1305
+    }
1306
+
1307
+    $options = $options + array(
1308
+            'h6'        => 'h6',
1309
+            'h5'        => 'h5',
1310
+            'h4'        => 'h4',
1311
+            'h3'        => 'h3',
1312
+            'h2'        => 'h2',
1313
+            'h1'        => 'h1',
1314
+            'display-1' => 'display-1',
1315
+            'display-2' => 'display-2',
1316
+            'display-3' => 'display-3',
1317
+            'display-4' => 'display-4',
1318
+        );
1319
+
1320
+    if ( $aui_bs5 ) {
1321
+        $options['display-5'] = 'display-5';
1322
+        $options['display-6'] = 'display-6';
1323
+    }
1324
+
1325
+    if ( $has_custom ) {
1326
+        $options['custom'] = __( 'Custom size', 'ayecode-connect' );
1327
+    }
1328
+
1329
+    $defaults = array(
1330
+        'type'     => 'select',
1331
+        'title'    => __( 'Font size', 'ayecode-connect' ),
1332
+        'options'  => $options,
1333
+        'default'  => '',
1334
+        'desc_tip' => true,
1335
+        'group'    => __( 'Typography', 'ayecode-connect' ),
1336
+    );
1337
+
1338
+    $input = wp_parse_args( $overwrite, $defaults );
1339
+
1340
+    return $input;
1341 1341
 }
1342 1342
 
1343 1343
 /**
@@ -1350,27 +1350,27 @@  discard block
 block discarded – undo
1350 1350
  */
1351 1351
 function sd_get_font_custom_size_input( $type = 'font_size_custom', $overwrite = array(), $parent_type = '' ) {
1352 1352
 
1353
-	$defaults = array(
1354
-		'type'              => 'number',
1355
-		'title'             => __( 'Font size (rem)', 'ayecode-connect' ),
1356
-		'default'           => '',
1357
-		'placeholder'       => '1.25',
1358
-		'custom_attributes' => array(
1359
-			'step' => '0.1',
1360
-			'min'  => '0',
1361
-			'max'  => '100',
1362
-		),
1363
-		'desc_tip'          => true,
1364
-		'group'             => __( 'Typography', 'ayecode-connect' ),
1365
-	);
1353
+    $defaults = array(
1354
+        'type'              => 'number',
1355
+        'title'             => __( 'Font size (rem)', 'ayecode-connect' ),
1356
+        'default'           => '',
1357
+        'placeholder'       => '1.25',
1358
+        'custom_attributes' => array(
1359
+            'step' => '0.1',
1360
+            'min'  => '0',
1361
+            'max'  => '100',
1362
+        ),
1363
+        'desc_tip'          => true,
1364
+        'group'             => __( 'Typography', 'ayecode-connect' ),
1365
+    );
1366 1366
 
1367
-	if ( $parent_type ) {
1368
-		$defaults['element_require'] = '[%' . $parent_type . '%]=="custom"';
1369
-	}
1367
+    if ( $parent_type ) {
1368
+        $defaults['element_require'] = '[%' . $parent_type . '%]=="custom"';
1369
+    }
1370 1370
 
1371
-	$input = wp_parse_args( $overwrite, $defaults );
1371
+    $input = wp_parse_args( $overwrite, $defaults );
1372 1372
 
1373
-	return $input;
1373
+    return $input;
1374 1374
 }
1375 1375
 
1376 1376
 /**
@@ -1383,23 +1383,23 @@  discard block
 block discarded – undo
1383 1383
  */
1384 1384
 function sd_get_font_line_height_input( $type = 'font_line_height', $overwrite = array() ) {
1385 1385
 
1386
-	$defaults = array(
1387
-		'type'              => 'number',
1388
-		'title'             => __( 'Font Line Height', 'ayecode-connect' ),
1389
-		'default'           => '',
1390
-		'placeholder'       => '1.75',
1391
-		'custom_attributes' => array(
1392
-			'step' => '0.1',
1393
-			'min'  => '0',
1394
-			'max'  => '100',
1395
-		),
1396
-		'desc_tip'          => true,
1397
-		'group'             => __( 'Typography', 'ayecode-connect' ),
1398
-	);
1386
+    $defaults = array(
1387
+        'type'              => 'number',
1388
+        'title'             => __( 'Font Line Height', 'ayecode-connect' ),
1389
+        'default'           => '',
1390
+        'placeholder'       => '1.75',
1391
+        'custom_attributes' => array(
1392
+            'step' => '0.1',
1393
+            'min'  => '0',
1394
+            'max'  => '100',
1395
+        ),
1396
+        'desc_tip'          => true,
1397
+        'group'             => __( 'Typography', 'ayecode-connect' ),
1398
+    );
1399 1399
 
1400
-	$input = wp_parse_args( $overwrite, $defaults );
1400
+    $input = wp_parse_args( $overwrite, $defaults );
1401 1401
 
1402
-	return $input;
1402
+    return $input;
1403 1403
 }
1404 1404
 
1405 1405
 /**
@@ -1412,18 +1412,18 @@  discard block
 block discarded – undo
1412 1412
  */
1413 1413
 function sd_get_font_size_input_group( $type = 'font_size', $overwrite = array(), $overwrite_custom = array() ) {
1414 1414
 
1415
-	$inputs = array();
1415
+    $inputs = array();
1416 1416
 
1417
-	if ( $overwrite !== false ) {
1418
-		$inputs[ $type ] = sd_get_font_size_input( $type, $overwrite, true );
1419
-	}
1417
+    if ( $overwrite !== false ) {
1418
+        $inputs[ $type ] = sd_get_font_size_input( $type, $overwrite, true );
1419
+    }
1420 1420
 
1421
-	if ( $overwrite_custom !== false ) {
1422
-		$custom            = $type . '_custom';
1423
-		$inputs[ $custom ] = sd_get_font_custom_size_input( $custom, $overwrite_custom, $type );
1424
-	}
1421
+    if ( $overwrite_custom !== false ) {
1422
+        $custom            = $type . '_custom';
1423
+        $inputs[ $custom ] = sd_get_font_custom_size_input( $custom, $overwrite_custom, $type );
1424
+    }
1425 1425
 
1426
-	return $inputs;
1426
+    return $inputs;
1427 1427
 }
1428 1428
 
1429 1429
 /**
@@ -1436,33 +1436,33 @@  discard block
 block discarded – undo
1436 1436
  */
1437 1437
 function sd_get_font_weight_input( $type = 'font_weight', $overwrite = array() ) {
1438 1438
 
1439
-	$options = array(
1440
-		''                                => __( 'Inherit', 'ayecode-connect' ),
1441
-		'font-weight-bold'                => 'bold',
1442
-		'font-weight-bolder'              => 'bolder',
1443
-		'font-weight-normal'              => 'normal',
1444
-		'font-weight-light'               => 'light',
1445
-		'font-weight-lighter'             => 'lighter',
1446
-		'font-italic'                     => 'italic',
1447
-		'font-weight-bold font-italic'    => 'bold italic',
1448
-		'font-weight-bolder font-italic'  => 'bolder italic',
1449
-		'font-weight-normal font-italic'  => 'normal italic',
1450
-		'font-weight-light font-italic'   => 'light italic',
1451
-		'font-weight-lighter font-italic' => 'lighter italic',
1452
-	);
1453
-
1454
-	$defaults = array(
1455
-		'type'     => 'select',
1456
-		'title'    => __( 'Appearance', 'ayecode-connect' ),
1457
-		'options'  => $options,
1458
-		'default'  => '',
1459
-		'desc_tip' => true,
1460
-		'group'    => __( 'Typography', 'ayecode-connect' ),
1461
-	);
1462
-
1463
-	$input = wp_parse_args( $overwrite, $defaults );
1464
-
1465
-	return $input;
1439
+    $options = array(
1440
+        ''                                => __( 'Inherit', 'ayecode-connect' ),
1441
+        'font-weight-bold'                => 'bold',
1442
+        'font-weight-bolder'              => 'bolder',
1443
+        'font-weight-normal'              => 'normal',
1444
+        'font-weight-light'               => 'light',
1445
+        'font-weight-lighter'             => 'lighter',
1446
+        'font-italic'                     => 'italic',
1447
+        'font-weight-bold font-italic'    => 'bold italic',
1448
+        'font-weight-bolder font-italic'  => 'bolder italic',
1449
+        'font-weight-normal font-italic'  => 'normal italic',
1450
+        'font-weight-light font-italic'   => 'light italic',
1451
+        'font-weight-lighter font-italic' => 'lighter italic',
1452
+    );
1453
+
1454
+    $defaults = array(
1455
+        'type'     => 'select',
1456
+        'title'    => __( 'Appearance', 'ayecode-connect' ),
1457
+        'options'  => $options,
1458
+        'default'  => '',
1459
+        'desc_tip' => true,
1460
+        'group'    => __( 'Typography', 'ayecode-connect' ),
1461
+    );
1462
+
1463
+    $input = wp_parse_args( $overwrite, $defaults );
1464
+
1465
+    return $input;
1466 1466
 }
1467 1467
 
1468 1468
 /**
@@ -1475,25 +1475,25 @@  discard block
 block discarded – undo
1475 1475
  */
1476 1476
 function sd_get_font_case_input( $type = 'font_weight', $overwrite = array() ) {
1477 1477
 
1478
-	$options = array(
1479
-		''                => __( 'Default', 'ayecode-connect' ),
1480
-		'text-lowercase'  => __( 'lowercase', 'ayecode-connect' ),
1481
-		'text-uppercase'  => __( 'UPPERCASE', 'ayecode-connect' ),
1482
-		'text-capitalize' => __( 'Capitalize', 'ayecode-connect' ),
1483
-	);
1478
+    $options = array(
1479
+        ''                => __( 'Default', 'ayecode-connect' ),
1480
+        'text-lowercase'  => __( 'lowercase', 'ayecode-connect' ),
1481
+        'text-uppercase'  => __( 'UPPERCASE', 'ayecode-connect' ),
1482
+        'text-capitalize' => __( 'Capitalize', 'ayecode-connect' ),
1483
+    );
1484 1484
 
1485
-	$defaults = array(
1486
-		'type'     => 'select',
1487
-		'title'    => __( 'Letter case', 'ayecode-connect' ),
1488
-		'options'  => $options,
1489
-		'default'  => '',
1490
-		'desc_tip' => true,
1491
-		'group'    => __( 'Typography', 'ayecode-connect' ),
1492
-	);
1485
+    $defaults = array(
1486
+        'type'     => 'select',
1487
+        'title'    => __( 'Letter case', 'ayecode-connect' ),
1488
+        'options'  => $options,
1489
+        'default'  => '',
1490
+        'desc_tip' => true,
1491
+        'group'    => __( 'Typography', 'ayecode-connect' ),
1492
+    );
1493 1493
 
1494
-	$input = wp_parse_args( $overwrite, $defaults );
1494
+    $input = wp_parse_args( $overwrite, $defaults );
1495 1495
 
1496
-	return $input;
1496
+    return $input;
1497 1497
 }
1498 1498
 
1499 1499
 /**
@@ -1507,23 +1507,23 @@  discard block
 block discarded – undo
1507 1507
  */
1508 1508
 function sd_get_font_italic_input( $type = 'font_italic', $overwrite = array() ) {
1509 1509
 
1510
-	$options = array(
1511
-		''            => __( 'No', 'ayecode-connect' ),
1512
-		'font-italic' => __( 'Yes', 'ayecode-connect' ),
1513
-	);
1510
+    $options = array(
1511
+        ''            => __( 'No', 'ayecode-connect' ),
1512
+        'font-italic' => __( 'Yes', 'ayecode-connect' ),
1513
+    );
1514 1514
 
1515
-	$defaults = array(
1516
-		'type'     => 'select',
1517
-		'title'    => __( 'Font italic', 'ayecode-connect' ),
1518
-		'options'  => $options,
1519
-		'default'  => '',
1520
-		'desc_tip' => true,
1521
-		'group'    => __( 'Typography', 'ayecode-connect' ),
1522
-	);
1515
+    $defaults = array(
1516
+        'type'     => 'select',
1517
+        'title'    => __( 'Font italic', 'ayecode-connect' ),
1518
+        'options'  => $options,
1519
+        'default'  => '',
1520
+        'desc_tip' => true,
1521
+        'group'    => __( 'Typography', 'ayecode-connect' ),
1522
+    );
1523 1523
 
1524
-	$input = wp_parse_args( $overwrite, $defaults );
1524
+    $input = wp_parse_args( $overwrite, $defaults );
1525 1525
 
1526
-	return $input;
1526
+    return $input;
1527 1527
 }
1528 1528
 
1529 1529
 /**
@@ -1536,18 +1536,18 @@  discard block
 block discarded – undo
1536 1536
  */
1537 1537
 function sd_get_anchor_input( $type = 'anchor', $overwrite = array() ) {
1538 1538
 
1539
-	$defaults = array(
1540
-		'type'     => 'text',
1541
-		'title'    => __( 'HTML anchor', 'ayecode-connect' ),
1542
-		'desc'     => __( 'Enter a word or two — without spaces — to make a unique web address just for this block, called an “anchor.” Then, you’ll be able to link directly to this section of your page.', 'ayecode-connect' ),
1543
-		'default'  => '',
1544
-		'desc_tip' => true,
1545
-		'group'    => __( 'Advanced', 'ayecode-connect' ),
1546
-	);
1539
+    $defaults = array(
1540
+        'type'     => 'text',
1541
+        'title'    => __( 'HTML anchor', 'ayecode-connect' ),
1542
+        'desc'     => __( 'Enter a word or two — without spaces — to make a unique web address just for this block, called an “anchor.” Then, you’ll be able to link directly to this section of your page.', 'ayecode-connect' ),
1543
+        'default'  => '',
1544
+        'desc_tip' => true,
1545
+        'group'    => __( 'Advanced', 'ayecode-connect' ),
1546
+    );
1547 1547
 
1548
-	$input = wp_parse_args( $overwrite, $defaults );
1548
+    $input = wp_parse_args( $overwrite, $defaults );
1549 1549
 
1550
-	return $input;
1550
+    return $input;
1551 1551
 }
1552 1552
 
1553 1553
 /**
@@ -1560,18 +1560,18 @@  discard block
 block discarded – undo
1560 1560
  */
1561 1561
 function sd_get_class_input( $type = 'css_class', $overwrite = array() ) {
1562 1562
 
1563
-	$defaults = array(
1564
-		'type'     => 'text',
1565
-		'title'    => __( 'Additional CSS class(es)', 'ayecode-connect' ),
1566
-		'desc'     => __( 'Separate multiple classes with spaces.', 'ayecode-connect' ),
1567
-		'default'  => '',
1568
-		'desc_tip' => true,
1569
-		'group'    => __( 'Advanced', 'ayecode-connect' ),
1570
-	);
1563
+    $defaults = array(
1564
+        'type'     => 'text',
1565
+        'title'    => __( 'Additional CSS class(es)', 'ayecode-connect' ),
1566
+        'desc'     => __( 'Separate multiple classes with spaces.', 'ayecode-connect' ),
1567
+        'default'  => '',
1568
+        'desc_tip' => true,
1569
+        'group'    => __( 'Advanced', 'ayecode-connect' ),
1570
+    );
1571 1571
 
1572
-	$input = wp_parse_args( $overwrite, $defaults );
1572
+    $input = wp_parse_args( $overwrite, $defaults );
1573 1573
 
1574
-	return $input;
1574
+    return $input;
1575 1575
 }
1576 1576
 
1577 1577
 /**
@@ -1584,341 +1584,341 @@  discard block
 block discarded – undo
1584 1584
  */
1585 1585
 function sd_get_hover_animations_input( $type = 'hover_animations', $overwrite = array() ) {
1586 1586
 
1587
-	$options = array(
1588
-		''                 => __( 'none', 'ayecode-connect' ),
1589
-		'hover-zoom'       => __( 'Zoom', 'ayecode-connect' ),
1590
-		'hover-shadow'     => __( 'Shadow', 'ayecode-connect' ),
1591
-		'hover-move-up'    => __( 'Move up', 'ayecode-connect' ),
1592
-		'hover-move-down'  => __( 'Move down', 'ayecode-connect' ),
1593
-		'hover-move-left'  => __( 'Move left', 'ayecode-connect' ),
1594
-		'hover-move-right' => __( 'Move right', 'ayecode-connect' ),
1595
-	);
1587
+    $options = array(
1588
+        ''                 => __( 'none', 'ayecode-connect' ),
1589
+        'hover-zoom'       => __( 'Zoom', 'ayecode-connect' ),
1590
+        'hover-shadow'     => __( 'Shadow', 'ayecode-connect' ),
1591
+        'hover-move-up'    => __( 'Move up', 'ayecode-connect' ),
1592
+        'hover-move-down'  => __( 'Move down', 'ayecode-connect' ),
1593
+        'hover-move-left'  => __( 'Move left', 'ayecode-connect' ),
1594
+        'hover-move-right' => __( 'Move right', 'ayecode-connect' ),
1595
+    );
1596 1596
 
1597
-	$defaults = array(
1598
-		'type'     => 'select',
1599
-		'multiple' => true,
1600
-		'title'    => __( 'Hover Animations', 'ayecode-connect' ),
1601
-		'options'  => $options,
1602
-		'default'  => '',
1603
-		'desc_tip' => true,
1604
-		'group'    => __( 'Hover Animations', 'ayecode-connect' ),
1605
-	);
1597
+    $defaults = array(
1598
+        'type'     => 'select',
1599
+        'multiple' => true,
1600
+        'title'    => __( 'Hover Animations', 'ayecode-connect' ),
1601
+        'options'  => $options,
1602
+        'default'  => '',
1603
+        'desc_tip' => true,
1604
+        'group'    => __( 'Hover Animations', 'ayecode-connect' ),
1605
+    );
1606 1606
 
1607
-	$input = wp_parse_args( $overwrite, $defaults );
1607
+    $input = wp_parse_args( $overwrite, $defaults );
1608 1608
 
1609
-	return $input;
1609
+    return $input;
1610 1610
 }
1611 1611
 
1612 1612
 
1613 1613
 function sd_get_flex_align_items_input( $type = 'align-items', $overwrite = array() ) {
1614
-	$device_size = '';
1615
-	if ( ! empty( $overwrite['device_type'] ) ) {
1616
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1617
-			$device_size = '-md';
1618
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1619
-			$device_size = '-lg';
1620
-		}
1621
-	}
1622
-	$options = array(
1623
-		''                                         => __( 'Default', 'ayecode-connect' ),
1624
-		'align-items' . $device_size . '-start'    => 'align-items-start',
1625
-		'align-items' . $device_size . '-end'      => 'align-items-end',
1626
-		'align-items' . $device_size . '-center'   => 'align-items-center',
1627
-		'align-items' . $device_size . '-baseline' => 'align-items-baseline',
1628
-		'align-items' . $device_size . '-stretch'  => 'align-items-stretch',
1629
-	);
1630
-
1631
-	$defaults = array(
1632
-		'type'            => 'select',
1633
-		'title'           => __( 'Vertical Align Items', 'ayecode-connect' ),
1634
-		'options'         => $options,
1635
-		'default'         => '',
1636
-		'desc_tip'        => true,
1637
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1638
-		'element_require' => ' ( ( [%container%]=="row" ) || ( [%display%]=="d-flex" || [%display_md%]=="d-md-flex" || [%display_lg%]=="d-lg-flex" ) ) ',
1639
-
1640
-	);
1641
-
1642
-	$input = wp_parse_args( $overwrite, $defaults );
1643
-
1644
-	return $input;
1614
+    $device_size = '';
1615
+    if ( ! empty( $overwrite['device_type'] ) ) {
1616
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1617
+            $device_size = '-md';
1618
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1619
+            $device_size = '-lg';
1620
+        }
1621
+    }
1622
+    $options = array(
1623
+        ''                                         => __( 'Default', 'ayecode-connect' ),
1624
+        'align-items' . $device_size . '-start'    => 'align-items-start',
1625
+        'align-items' . $device_size . '-end'      => 'align-items-end',
1626
+        'align-items' . $device_size . '-center'   => 'align-items-center',
1627
+        'align-items' . $device_size . '-baseline' => 'align-items-baseline',
1628
+        'align-items' . $device_size . '-stretch'  => 'align-items-stretch',
1629
+    );
1630
+
1631
+    $defaults = array(
1632
+        'type'            => 'select',
1633
+        'title'           => __( 'Vertical Align Items', 'ayecode-connect' ),
1634
+        'options'         => $options,
1635
+        'default'         => '',
1636
+        'desc_tip'        => true,
1637
+        'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1638
+        'element_require' => ' ( ( [%container%]=="row" ) || ( [%display%]=="d-flex" || [%display_md%]=="d-md-flex" || [%display_lg%]=="d-lg-flex" ) ) ',
1639
+
1640
+    );
1641
+
1642
+    $input = wp_parse_args( $overwrite, $defaults );
1643
+
1644
+    return $input;
1645 1645
 }
1646 1646
 
1647 1647
 function sd_get_flex_align_items_input_group( $type = 'flex_align_items', $overwrite = array() ) {
1648
-	$inputs = array();
1649
-	$sizes  = array(
1650
-		''    => 'Mobile',
1651
-		'_md' => 'Tablet',
1652
-		'_lg' => 'Desktop',
1653
-	);
1648
+    $inputs = array();
1649
+    $sizes  = array(
1650
+        ''    => 'Mobile',
1651
+        '_md' => 'Tablet',
1652
+        '_lg' => 'Desktop',
1653
+    );
1654 1654
 
1655
-	if ( $overwrite !== false ) {
1655
+    if ( $overwrite !== false ) {
1656 1656
 
1657
-		foreach ( $sizes as $ds => $dt ) {
1658
-			$overwrite['device_type'] = $dt;
1659
-			$inputs[ $type . $ds ]    = sd_get_flex_align_items_input( $type, $overwrite );
1660
-		}
1661
-	}
1657
+        foreach ( $sizes as $ds => $dt ) {
1658
+            $overwrite['device_type'] = $dt;
1659
+            $inputs[ $type . $ds ]    = sd_get_flex_align_items_input( $type, $overwrite );
1660
+        }
1661
+    }
1662 1662
 
1663
-	return $inputs;
1663
+    return $inputs;
1664 1664
 }
1665 1665
 
1666 1666
 function sd_get_flex_justify_content_input( $type = 'flex_justify_content', $overwrite = array() ) {
1667
-	$device_size = '';
1668
-	if ( ! empty( $overwrite['device_type'] ) ) {
1669
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1670
-			$device_size = '-md';
1671
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1672
-			$device_size = '-lg';
1673
-		}
1674
-	}
1675
-	$options = array(
1676
-		''                                            => __( 'Default', 'ayecode-connect' ),
1677
-		'justify-content' . $device_size . '-start'   => 'justify-content-start',
1678
-		'justify-content' . $device_size . '-end'     => 'justify-content-end',
1679
-		'justify-content' . $device_size . '-center'  => 'justify-content-center',
1680
-		'justify-content' . $device_size . '-between' => 'justify-content-between',
1681
-		'justify-content' . $device_size . '-stretch' => 'justify-content-around',
1682
-	);
1683
-
1684
-	$defaults = array(
1685
-		'type'            => 'select',
1686
-		'title'           => __( 'Justify content', 'ayecode-connect' ),
1687
-		'options'         => $options,
1688
-		'default'         => '',
1689
-		'desc_tip'        => true,
1690
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1691
-		'element_require' => '( ( [%container%]=="row" ) || ( [%display%]=="d-flex" || [%display_md%]=="d-md-flex" || [%display_lg%]=="d-lg-flex" ) ) ',
1692
-
1693
-	);
1694
-
1695
-	$input = wp_parse_args( $overwrite, $defaults );
1696
-
1697
-	return $input;
1667
+    $device_size = '';
1668
+    if ( ! empty( $overwrite['device_type'] ) ) {
1669
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1670
+            $device_size = '-md';
1671
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1672
+            $device_size = '-lg';
1673
+        }
1674
+    }
1675
+    $options = array(
1676
+        ''                                            => __( 'Default', 'ayecode-connect' ),
1677
+        'justify-content' . $device_size . '-start'   => 'justify-content-start',
1678
+        'justify-content' . $device_size . '-end'     => 'justify-content-end',
1679
+        'justify-content' . $device_size . '-center'  => 'justify-content-center',
1680
+        'justify-content' . $device_size . '-between' => 'justify-content-between',
1681
+        'justify-content' . $device_size . '-stretch' => 'justify-content-around',
1682
+    );
1683
+
1684
+    $defaults = array(
1685
+        'type'            => 'select',
1686
+        'title'           => __( 'Justify content', 'ayecode-connect' ),
1687
+        'options'         => $options,
1688
+        'default'         => '',
1689
+        'desc_tip'        => true,
1690
+        'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1691
+        'element_require' => '( ( [%container%]=="row" ) || ( [%display%]=="d-flex" || [%display_md%]=="d-md-flex" || [%display_lg%]=="d-lg-flex" ) ) ',
1692
+
1693
+    );
1694
+
1695
+    $input = wp_parse_args( $overwrite, $defaults );
1696
+
1697
+    return $input;
1698 1698
 }
1699 1699
 
1700 1700
 function sd_get_flex_justify_content_input_group( $type = 'flex_justify_content', $overwrite = array() ) {
1701
-	$inputs = array();
1702
-	$sizes  = array(
1703
-		''    => 'Mobile',
1704
-		'_md' => 'Tablet',
1705
-		'_lg' => 'Desktop',
1706
-	);
1701
+    $inputs = array();
1702
+    $sizes  = array(
1703
+        ''    => 'Mobile',
1704
+        '_md' => 'Tablet',
1705
+        '_lg' => 'Desktop',
1706
+    );
1707 1707
 
1708
-	if ( $overwrite !== false ) {
1708
+    if ( $overwrite !== false ) {
1709 1709
 
1710
-		foreach ( $sizes as $ds => $dt ) {
1711
-			$overwrite['device_type'] = $dt;
1712
-			$inputs[ $type . $ds ]    = sd_get_flex_justify_content_input( $type, $overwrite );
1713
-		}
1714
-	}
1710
+        foreach ( $sizes as $ds => $dt ) {
1711
+            $overwrite['device_type'] = $dt;
1712
+            $inputs[ $type . $ds ]    = sd_get_flex_justify_content_input( $type, $overwrite );
1713
+        }
1714
+    }
1715 1715
 
1716
-	return $inputs;
1716
+    return $inputs;
1717 1717
 }
1718 1718
 
1719 1719
 
1720 1720
 function sd_get_flex_align_self_input( $type = 'flex_align_self', $overwrite = array() ) {
1721
-	$device_size = '';
1722
-	if ( ! empty( $overwrite['device_type'] ) ) {
1723
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1724
-			$device_size = '-md';
1725
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1726
-			$device_size = '-lg';
1727
-		}
1728
-	}
1729
-	$options = array(
1730
-		''                                         => __( 'Default', 'ayecode-connect' ),
1731
-		'align-items' . $device_size . '-start'    => 'align-items-start',
1732
-		'align-items' . $device_size . '-end'      => 'align-items-end',
1733
-		'align-items' . $device_size . '-center'   => 'align-items-center',
1734
-		'align-items' . $device_size . '-baseline' => 'align-items-baseline',
1735
-		'align-items' . $device_size . '-stretch'  => 'align-items-stretch',
1736
-	);
1737
-
1738
-	$defaults = array(
1739
-		'type'            => 'select',
1740
-		'title'           => __( 'Align Self', 'ayecode-connect' ),
1741
-		'options'         => $options,
1742
-		'default'         => '',
1743
-		'desc_tip'        => true,
1744
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1745
-		'element_require' => ' [%container%]=="col" ',
1746
-
1747
-	);
1748
-
1749
-	$input = wp_parse_args( $overwrite, $defaults );
1750
-
1751
-	return $input;
1721
+    $device_size = '';
1722
+    if ( ! empty( $overwrite['device_type'] ) ) {
1723
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1724
+            $device_size = '-md';
1725
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1726
+            $device_size = '-lg';
1727
+        }
1728
+    }
1729
+    $options = array(
1730
+        ''                                         => __( 'Default', 'ayecode-connect' ),
1731
+        'align-items' . $device_size . '-start'    => 'align-items-start',
1732
+        'align-items' . $device_size . '-end'      => 'align-items-end',
1733
+        'align-items' . $device_size . '-center'   => 'align-items-center',
1734
+        'align-items' . $device_size . '-baseline' => 'align-items-baseline',
1735
+        'align-items' . $device_size . '-stretch'  => 'align-items-stretch',
1736
+    );
1737
+
1738
+    $defaults = array(
1739
+        'type'            => 'select',
1740
+        'title'           => __( 'Align Self', 'ayecode-connect' ),
1741
+        'options'         => $options,
1742
+        'default'         => '',
1743
+        'desc_tip'        => true,
1744
+        'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1745
+        'element_require' => ' [%container%]=="col" ',
1746
+
1747
+    );
1748
+
1749
+    $input = wp_parse_args( $overwrite, $defaults );
1750
+
1751
+    return $input;
1752 1752
 }
1753 1753
 
1754 1754
 function sd_get_flex_align_self_input_group( $type = 'flex_align_self', $overwrite = array() ) {
1755
-	$inputs = array();
1756
-	$sizes  = array(
1757
-		''    => 'Mobile',
1758
-		'_md' => 'Tablet',
1759
-		'_lg' => 'Desktop',
1760
-	);
1755
+    $inputs = array();
1756
+    $sizes  = array(
1757
+        ''    => 'Mobile',
1758
+        '_md' => 'Tablet',
1759
+        '_lg' => 'Desktop',
1760
+    );
1761 1761
 
1762
-	if ( $overwrite !== false ) {
1762
+    if ( $overwrite !== false ) {
1763 1763
 
1764
-		foreach ( $sizes as $ds => $dt ) {
1765
-			$overwrite['device_type'] = $dt;
1766
-			$inputs[ $type . $ds ]    = sd_get_flex_align_self_input( $type, $overwrite );
1767
-		}
1768
-	}
1764
+        foreach ( $sizes as $ds => $dt ) {
1765
+            $overwrite['device_type'] = $dt;
1766
+            $inputs[ $type . $ds ]    = sd_get_flex_align_self_input( $type, $overwrite );
1767
+        }
1768
+    }
1769 1769
 
1770
-	return $inputs;
1770
+    return $inputs;
1771 1771
 }
1772 1772
 
1773 1773
 function sd_get_flex_order_input( $type = 'flex_order', $overwrite = array() ) {
1774
-	$device_size = '';
1775
-	if ( ! empty( $overwrite['device_type'] ) ) {
1776
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1777
-			$device_size = '-md';
1778
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1779
-			$device_size = '-lg';
1780
-		}
1781
-	}
1782
-	$options = array(
1783
-		'' => __( 'Default', 'ayecode-connect' ),
1784
-	);
1785
-
1786
-	$i = 0;
1787
-	while ( $i <= 5 ) {
1788
-		$options[ 'order' . $device_size . '-' . $i ] = $i;
1789
-		$i++;
1790
-	}
1791
-
1792
-	$defaults = array(
1793
-		'type'            => 'select',
1794
-		'title'           => __( 'Flex Order', 'ayecode-connect' ),
1795
-		'options'         => $options,
1796
-		'default'         => '',
1797
-		'desc_tip'        => true,
1798
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1799
-		'element_require' => ' [%container%]=="col" ',
1800
-
1801
-	);
1802
-
1803
-	$input = wp_parse_args( $overwrite, $defaults );
1804
-
1805
-	return $input;
1774
+    $device_size = '';
1775
+    if ( ! empty( $overwrite['device_type'] ) ) {
1776
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1777
+            $device_size = '-md';
1778
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1779
+            $device_size = '-lg';
1780
+        }
1781
+    }
1782
+    $options = array(
1783
+        '' => __( 'Default', 'ayecode-connect' ),
1784
+    );
1785
+
1786
+    $i = 0;
1787
+    while ( $i <= 5 ) {
1788
+        $options[ 'order' . $device_size . '-' . $i ] = $i;
1789
+        $i++;
1790
+    }
1791
+
1792
+    $defaults = array(
1793
+        'type'            => 'select',
1794
+        'title'           => __( 'Flex Order', 'ayecode-connect' ),
1795
+        'options'         => $options,
1796
+        'default'         => '',
1797
+        'desc_tip'        => true,
1798
+        'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1799
+        'element_require' => ' [%container%]=="col" ',
1800
+
1801
+    );
1802
+
1803
+    $input = wp_parse_args( $overwrite, $defaults );
1804
+
1805
+    return $input;
1806 1806
 }
1807 1807
 
1808 1808
 function sd_get_flex_order_input_group( $type = 'flex_order', $overwrite = array() ) {
1809
-	$inputs = array();
1810
-	$sizes  = array(
1811
-		''    => 'Mobile',
1812
-		'_md' => 'Tablet',
1813
-		'_lg' => 'Desktop',
1814
-	);
1809
+    $inputs = array();
1810
+    $sizes  = array(
1811
+        ''    => 'Mobile',
1812
+        '_md' => 'Tablet',
1813
+        '_lg' => 'Desktop',
1814
+    );
1815 1815
 
1816
-	if ( $overwrite !== false ) {
1816
+    if ( $overwrite !== false ) {
1817 1817
 
1818
-		foreach ( $sizes as $ds => $dt ) {
1819
-			$overwrite['device_type'] = $dt;
1820
-			$inputs[ $type . $ds ]    = sd_get_flex_order_input( $type, $overwrite );
1821
-		}
1822
-	}
1818
+        foreach ( $sizes as $ds => $dt ) {
1819
+            $overwrite['device_type'] = $dt;
1820
+            $inputs[ $type . $ds ]    = sd_get_flex_order_input( $type, $overwrite );
1821
+        }
1822
+    }
1823 1823
 
1824
-	return $inputs;
1824
+    return $inputs;
1825 1825
 }
1826 1826
 
1827 1827
 function sd_get_flex_wrap_group( $type = 'flex_wrap', $overwrite = array() ) {
1828
-	$inputs = array();
1829
-	$sizes  = array(
1830
-		''    => 'Mobile',
1831
-		'_md' => 'Tablet',
1832
-		'_lg' => 'Desktop',
1833
-	);
1828
+    $inputs = array();
1829
+    $sizes  = array(
1830
+        ''    => 'Mobile',
1831
+        '_md' => 'Tablet',
1832
+        '_lg' => 'Desktop',
1833
+    );
1834 1834
 
1835
-	if ( $overwrite !== false ) {
1835
+    if ( $overwrite !== false ) {
1836 1836
 
1837
-		foreach ( $sizes as $ds => $dt ) {
1838
-			$overwrite['device_type'] = $dt;
1839
-			$inputs[ $type . $ds ]    = sd_get_flex_wrap_input( $type, $overwrite );
1840
-		}
1841
-	}
1837
+        foreach ( $sizes as $ds => $dt ) {
1838
+            $overwrite['device_type'] = $dt;
1839
+            $inputs[ $type . $ds ]    = sd_get_flex_wrap_input( $type, $overwrite );
1840
+        }
1841
+    }
1842 1842
 
1843
-	return $inputs;
1843
+    return $inputs;
1844 1844
 }
1845 1845
 
1846 1846
 function sd_get_flex_wrap_input( $type = 'flex_wrap', $overwrite = array() ) {
1847
-	$device_size = '';
1848
-	if ( ! empty( $overwrite['device_type'] ) ) {
1849
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1850
-			$device_size = '-md';
1851
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1852
-			$device_size = '-lg';
1853
-		}
1854
-	}
1855
-	$options = array(
1856
-		''                                      => __( 'Default', 'ayecode-connect' ),
1857
-		'flex' . $device_size . '-nowrap'       => 'nowrap',
1858
-		'flex' . $device_size . '-wrap'         => 'wrap',
1859
-		'flex' . $device_size . '-wrap-reverse' => 'wrap-reverse',
1860
-	);
1861
-
1862
-	$defaults = array(
1863
-		'type'     => 'select',
1864
-		'title'    => __( 'Flex wrap', 'ayecode-connect' ),
1865
-		'options'  => $options,
1866
-		'default'  => '',
1867
-		'desc_tip' => true,
1868
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1869
-	);
1870
-
1871
-	$input = wp_parse_args( $overwrite, $defaults );
1872
-
1873
-	return $input;
1847
+    $device_size = '';
1848
+    if ( ! empty( $overwrite['device_type'] ) ) {
1849
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1850
+            $device_size = '-md';
1851
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1852
+            $device_size = '-lg';
1853
+        }
1854
+    }
1855
+    $options = array(
1856
+        ''                                      => __( 'Default', 'ayecode-connect' ),
1857
+        'flex' . $device_size . '-nowrap'       => 'nowrap',
1858
+        'flex' . $device_size . '-wrap'         => 'wrap',
1859
+        'flex' . $device_size . '-wrap-reverse' => 'wrap-reverse',
1860
+    );
1861
+
1862
+    $defaults = array(
1863
+        'type'     => 'select',
1864
+        'title'    => __( 'Flex wrap', 'ayecode-connect' ),
1865
+        'options'  => $options,
1866
+        'default'  => '',
1867
+        'desc_tip' => true,
1868
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1869
+    );
1870
+
1871
+    $input = wp_parse_args( $overwrite, $defaults );
1872
+
1873
+    return $input;
1874 1874
 }
1875 1875
 
1876 1876
 function sd_get_float_group( $type = 'float', $overwrite = array() ) {
1877
-	$inputs = array();
1878
-	$sizes  = array(
1879
-		''    => 'Mobile',
1880
-		'_md' => 'Tablet',
1881
-		'_lg' => 'Desktop',
1882
-	);
1877
+    $inputs = array();
1878
+    $sizes  = array(
1879
+        ''    => 'Mobile',
1880
+        '_md' => 'Tablet',
1881
+        '_lg' => 'Desktop',
1882
+    );
1883 1883
 
1884
-	if ( $overwrite !== false ) {
1884
+    if ( $overwrite !== false ) {
1885 1885
 
1886
-		foreach ( $sizes as $ds => $dt ) {
1887
-			$overwrite['device_type'] = $dt;
1888
-			$inputs[ $type . $ds ]    = sd_get_float_input( $type, $overwrite );
1889
-		}
1890
-	}
1886
+        foreach ( $sizes as $ds => $dt ) {
1887
+            $overwrite['device_type'] = $dt;
1888
+            $inputs[ $type . $ds ]    = sd_get_float_input( $type, $overwrite );
1889
+        }
1890
+    }
1891 1891
 
1892
-	return $inputs;
1892
+    return $inputs;
1893 1893
 }
1894 1894
 function sd_get_float_input( $type = 'float', $overwrite = array() ) {
1895
-	$device_size = '';
1896
-	if ( ! empty( $overwrite['device_type'] ) ) {
1897
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1898
-			$device_size = '-md';
1899
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1900
-			$device_size = '-lg';
1901
-		}
1902
-	}
1903
-	$options = array(
1904
-		''                                      => __( 'Default', 'ayecode-connect' ),
1905
-		'float' . $device_size . '-start'       => 'left',
1906
-		'float' . $device_size . '-end'         => 'right',
1907
-		'float' . $device_size . '-none' => 'none',
1908
-	);
1909
-
1910
-	$defaults = array(
1911
-		'type'     => 'select',
1912
-		'title'    => __( 'Float', 'ayecode-connect' ),
1913
-		'options'  => $options,
1914
-		'default'  => '',
1915
-		'desc_tip' => true,
1916
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1917
-	);
1918
-
1919
-	$input = wp_parse_args( $overwrite, $defaults );
1920
-
1921
-	return $input;
1895
+    $device_size = '';
1896
+    if ( ! empty( $overwrite['device_type'] ) ) {
1897
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1898
+            $device_size = '-md';
1899
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1900
+            $device_size = '-lg';
1901
+        }
1902
+    }
1903
+    $options = array(
1904
+        ''                                      => __( 'Default', 'ayecode-connect' ),
1905
+        'float' . $device_size . '-start'       => 'left',
1906
+        'float' . $device_size . '-end'         => 'right',
1907
+        'float' . $device_size . '-none' => 'none',
1908
+    );
1909
+
1910
+    $defaults = array(
1911
+        'type'     => 'select',
1912
+        'title'    => __( 'Float', 'ayecode-connect' ),
1913
+        'options'  => $options,
1914
+        'default'  => '',
1915
+        'desc_tip' => true,
1916
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1917
+    );
1918
+
1919
+    $input = wp_parse_args( $overwrite, $defaults );
1920
+
1921
+    return $input;
1922 1922
 }
1923 1923
 
1924 1924
 /**
@@ -1929,26 +1929,26 @@  discard block
 block discarded – undo
1929 1929
  */
1930 1930
 function sd_get_zindex_input( $type = 'zindex', $overwrite = array() ) {
1931 1931
 
1932
-	$options = array(
1933
-		''          => __( 'Default', 'ayecode-connect' ),
1934
-		'zindex-0'  => '0',
1935
-		'zindex-1'  => '1',
1936
-		'zindex-5'  => '5',
1937
-		'zindex-10' => '10',
1938
-	);
1932
+    $options = array(
1933
+        ''          => __( 'Default', 'ayecode-connect' ),
1934
+        'zindex-0'  => '0',
1935
+        'zindex-1'  => '1',
1936
+        'zindex-5'  => '5',
1937
+        'zindex-10' => '10',
1938
+    );
1939 1939
 
1940
-	$defaults = array(
1941
-		'type'     => 'select',
1942
-		'title'    => __( 'Z-index', 'ayecode-connect' ),
1943
-		'options'  => $options,
1944
-		'default'  => '',
1945
-		'desc_tip' => true,
1946
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1947
-	);
1940
+    $defaults = array(
1941
+        'type'     => 'select',
1942
+        'title'    => __( 'Z-index', 'ayecode-connect' ),
1943
+        'options'  => $options,
1944
+        'default'  => '',
1945
+        'desc_tip' => true,
1946
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1947
+    );
1948 1948
 
1949
-	$input = wp_parse_args( $overwrite, $defaults );
1949
+    $input = wp_parse_args( $overwrite, $defaults );
1950 1950
 
1951
-	return $input;
1951
+    return $input;
1952 1952
 }
1953 1953
 
1954 1954
 /**
@@ -1959,26 +1959,26 @@  discard block
 block discarded – undo
1959 1959
  */
1960 1960
 function sd_get_overflow_input( $type = 'overflow', $overwrite = array() ) {
1961 1961
 
1962
-	$options = array(
1963
-		''                 => __( 'Default', 'ayecode-connect' ),
1964
-		'overflow-auto'    => __( 'Auto', 'ayecode-connect' ),
1965
-		'overflow-hidden'  => __( 'Hidden', 'ayecode-connect' ),
1966
-		'overflow-visible' => __( 'Visible', 'ayecode-connect' ),
1967
-		'overflow-scroll'  => __( 'Scroll', 'ayecode-connect' ),
1968
-	);
1962
+    $options = array(
1963
+        ''                 => __( 'Default', 'ayecode-connect' ),
1964
+        'overflow-auto'    => __( 'Auto', 'ayecode-connect' ),
1965
+        'overflow-hidden'  => __( 'Hidden', 'ayecode-connect' ),
1966
+        'overflow-visible' => __( 'Visible', 'ayecode-connect' ),
1967
+        'overflow-scroll'  => __( 'Scroll', 'ayecode-connect' ),
1968
+    );
1969 1969
 
1970
-	$defaults = array(
1971
-		'type'     => 'select',
1972
-		'title'    => __( 'Overflow', 'ayecode-connect' ),
1973
-		'options'  => $options,
1974
-		'default'  => '',
1975
-		'desc_tip' => true,
1976
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1977
-	);
1970
+    $defaults = array(
1971
+        'type'     => 'select',
1972
+        'title'    => __( 'Overflow', 'ayecode-connect' ),
1973
+        'options'  => $options,
1974
+        'default'  => '',
1975
+        'desc_tip' => true,
1976
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1977
+    );
1978 1978
 
1979
-	$input = wp_parse_args( $overwrite, $defaults );
1979
+    $input = wp_parse_args( $overwrite, $defaults );
1980 1980
 
1981
-	return $input;
1981
+    return $input;
1982 1982
 }
1983 1983
 
1984 1984
 /**
@@ -1989,19 +1989,19 @@  discard block
 block discarded – undo
1989 1989
  */
1990 1990
 function sd_get_max_height_input( $type = 'max_height', $overwrite = array() ) {
1991 1991
 
1992
-	$defaults = array(
1993
-		'type'        => 'text',
1994
-		'title'       => __( 'Max height', 'ayecode-connect' ),
1995
-		'value'       => '',
1996
-		'default'     => '',
1997
-		'placeholder' => '',
1998
-		'desc_tip'    => true,
1999
-		'group'       => __( 'Wrapper Styles', 'ayecode-connect' ),
2000
-	);
1992
+    $defaults = array(
1993
+        'type'        => 'text',
1994
+        'title'       => __( 'Max height', 'ayecode-connect' ),
1995
+        'value'       => '',
1996
+        'default'     => '',
1997
+        'placeholder' => '',
1998
+        'desc_tip'    => true,
1999
+        'group'       => __( 'Wrapper Styles', 'ayecode-connect' ),
2000
+    );
2001 2001
 
2002
-	$input = wp_parse_args( $overwrite, $defaults );
2002
+    $input = wp_parse_args( $overwrite, $defaults );
2003 2003
 
2004
-	return $input;
2004
+    return $input;
2005 2005
 }
2006 2006
 
2007 2007
 /**
@@ -2012,23 +2012,23 @@  discard block
 block discarded – undo
2012 2012
  */
2013 2013
 function sd_get_scrollbars_input( $type = 'scrollbars', $overwrite = array() ) {
2014 2014
 
2015
-	$options = array(
2016
-		''               => __( 'Default', 'ayecode-connect' ),
2017
-		'scrollbars-ios' => __( 'IOS Style', 'ayecode-connect' ),
2018
-	);
2015
+    $options = array(
2016
+        ''               => __( 'Default', 'ayecode-connect' ),
2017
+        'scrollbars-ios' => __( 'IOS Style', 'ayecode-connect' ),
2018
+    );
2019 2019
 
2020
-	$defaults = array(
2021
-		'type'     => 'select',
2022
-		'title'    => __( 'Scrollbars', 'ayecode-connect' ),
2023
-		'options'  => $options,
2024
-		'default'  => '',
2025
-		'desc_tip' => true,
2026
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2027
-	);
2020
+    $defaults = array(
2021
+        'type'     => 'select',
2022
+        'title'    => __( 'Scrollbars', 'ayecode-connect' ),
2023
+        'options'  => $options,
2024
+        'default'  => '',
2025
+        'desc_tip' => true,
2026
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2027
+    );
2028 2028
 
2029
-	$input = wp_parse_args( $overwrite, $defaults );
2029
+    $input = wp_parse_args( $overwrite, $defaults );
2030 2030
 
2031
-	return $input;
2031
+    return $input;
2032 2032
 }
2033 2033
 
2034 2034
 /**
@@ -2040,415 +2040,415 @@  discard block
 block discarded – undo
2040 2040
  * @todo find best way to use px- py- or general p-
2041 2041
  */
2042 2042
 function sd_build_aui_class( $args ) {
2043
-	global $aui_bs5;
2044
-
2045
-	$classes = array();
2046
-
2047
-	if ( $aui_bs5 ) {
2048
-		$p_ml = 'ms-';
2049
-		$p_mr = 'me-';
2050
-
2051
-		$p_pl = 'ps-';
2052
-		$p_pr = 'pe-';
2053
-	} else {
2054
-		$p_ml = 'ml-';
2055
-		$p_mr = 'mr-';
2056
-
2057
-		$p_pl = 'pl-';
2058
-		$p_pr = 'pr-';
2059
-	}
2060
-
2061
-	// margins.
2062
-	if ( isset( $args['mt'] ) && $args['mt'] !== '' ) {
2063
-		$classes[] = 'mt-' . sanitize_html_class( $args['mt'] );
2064
-		$mt        = $args['mt'];
2065
-	} else {
2066
-		$mt = null;
2067
-	}
2068
-	if ( isset( $args['mr'] ) && $args['mr'] !== '' ) {
2069
-		$classes[] = $p_mr . sanitize_html_class( $args['mr'] );
2070
-		$mr        = $args['mr'];
2071
-	} else {
2072
-		$mr = null;
2073
-	}
2074
-	if ( isset( $args['mb'] ) && $args['mb'] !== '' ) {
2075
-		$classes[] = 'mb-' . sanitize_html_class( $args['mb'] );
2076
-		$mb        = $args['mb'];
2077
-	} else {
2078
-		$mb = null;
2079
-	}
2080
-	if ( isset( $args['ml'] ) && $args['ml'] !== '' ) {
2081
-		$classes[] = $p_ml . sanitize_html_class( $args['ml'] );
2082
-		$ml        = $args['ml'];
2083
-	} else {
2084
-		$ml = null;
2085
-	}
2086
-
2087
-	// margins tablet.
2088
-	if ( isset( $args['mt_md'] ) && $args['mt_md'] !== '' ) {
2089
-		$classes[] = 'mt-md-' . sanitize_html_class( $args['mt_md'] );
2090
-		$mt_md     = $args['mt_md'];
2091
-	} else {
2092
-		$mt_md = null;
2093
-	}
2094
-	if ( isset( $args['mr_md'] ) && $args['mr_md'] !== '' ) {
2095
-		$classes[] = $p_mr . 'md-' . sanitize_html_class( $args['mr_md'] );
2096
-		$mt_md     = $args['mr_md'];
2097
-	} else {
2098
-		$mr_md = null;
2099
-	}
2100
-	if ( isset( $args['mb_md'] ) && $args['mb_md'] !== '' ) {
2101
-		$classes[] = 'mb-md-' . sanitize_html_class( $args['mb_md'] );
2102
-		$mt_md     = $args['mb_md'];
2103
-	} else {
2104
-		$mb_md = null;
2105
-	}
2106
-	if ( isset( $args['ml_md'] ) && $args['ml_md'] !== '' ) {
2107
-		$classes[] = $p_ml . 'md-' . sanitize_html_class( $args['ml_md'] );
2108
-		$mt_md     = $args['ml_md'];
2109
-	} else {
2110
-		$ml_md = null;
2111
-	}
2112
-
2113
-	// margins desktop.
2114
-	if ( isset( $args['mt_lg'] ) && $args['mt_lg'] !== '' ) {
2115
-		if ( $mt == null && $mt_md == null ) {
2116
-			$classes[] = 'mt-' . sanitize_html_class( $args['mt_lg'] );
2117
-		} else {
2118
-			$classes[] = 'mt-lg-' . sanitize_html_class( $args['mt_lg'] );
2119
-		}
2120
-	}
2121
-	if ( isset( $args['mr_lg'] ) && $args['mr_lg'] !== '' ) {
2122
-		if ( $mr == null && $mr_md == null ) {
2123
-			$classes[] = $p_mr . sanitize_html_class( $args['mr_lg'] );
2124
-		} else {
2125
-			$classes[] = $p_mr . 'lg-' . sanitize_html_class( $args['mr_lg'] );
2126
-		}
2127
-	}
2128
-	if ( isset( $args['mb_lg'] ) && $args['mb_lg'] !== '' ) {
2129
-		if ( $mb == null && $mb_md == null ) {
2130
-			$classes[] = 'mb-' . sanitize_html_class( $args['mb_lg'] );
2131
-		} else {
2132
-			$classes[] = 'mb-lg-' . sanitize_html_class( $args['mb_lg'] );
2133
-		}
2134
-	}
2135
-	if ( isset( $args['ml_lg'] ) && $args['ml_lg'] !== '' ) {
2136
-		if ( $ml == null && $ml_md == null ) {
2137
-			$classes[] = $p_ml . sanitize_html_class( $args['ml_lg'] );
2138
-		} else {
2139
-			$classes[] = $p_ml . 'lg-' . sanitize_html_class( $args['ml_lg'] );
2140
-		}
2141
-	}
2142
-
2143
-	// padding.
2144
-	if ( isset( $args['pt'] ) && $args['pt'] !== '' ) {
2145
-		$classes[] = 'pt-' . sanitize_html_class( $args['pt'] );
2146
-		$pt        = $args['pt'];
2147
-	} else {
2148
-		$pt = null;
2149
-	}
2150
-	if ( isset( $args['pr'] ) && $args['pr'] !== '' ) {
2151
-		$classes[] = $p_pr . sanitize_html_class( $args['pr'] );
2152
-		$pr        = $args['pr'];
2153
-	} else {
2154
-		$pr = null;
2155
-	}
2156
-	if ( isset( $args['pb'] ) && $args['pb'] !== '' ) {
2157
-		$classes[] = 'pb-' . sanitize_html_class( $args['pb'] );
2158
-		$pb        = $args['pb'];
2159
-	} else {
2160
-		$pb = null;
2161
-	}
2162
-	if ( isset( $args['pl'] ) && $args['pl'] !== '' ) {
2163
-		$classes[] = $p_pl . sanitize_html_class( $args['pl'] );
2164
-		$pl        = $args['pl'];
2165
-	} else {
2166
-		$pl = null;
2167
-	}
2168
-
2169
-	// padding tablet.
2170
-	if ( isset( $args['pt_md'] ) && $args['pt_md'] !== '' ) {
2171
-		$classes[] = 'pt-md-' . sanitize_html_class( $args['pt_md'] );
2172
-		$pt_md     = $args['pt_md'];
2173
-	} else {
2174
-		$pt_md = null;
2175
-	}
2176
-	if ( isset( $args['pr_md'] ) && $args['pr_md'] !== '' ) {
2177
-		$classes[] = $p_pr . 'md-' . sanitize_html_class( $args['pr_md'] );
2178
-		$pr_md     = $args['pr_md'];
2179
-	} else {
2180
-		$pr_md = null;
2181
-	}
2182
-	if ( isset( $args['pb_md'] ) && $args['pb_md'] !== '' ) {
2183
-		$classes[] = 'pb-md-' . sanitize_html_class( $args['pb_md'] );
2184
-		$pb_md     = $args['pb_md'];
2185
-	} else {
2186
-		$pb_md = null;
2187
-	}
2188
-	if ( isset( $args['pl_md'] ) && $args['pl_md'] !== '' ) {
2189
-		$classes[] = $p_pl . 'md-' . sanitize_html_class( $args['pl_md'] );
2190
-		$pl_md     = $args['pl_md'];
2191
-	} else {
2192
-		$pl_md = null;
2193
-	}
2194
-
2195
-	// padding desktop.
2196
-	if ( isset( $args['pt_lg'] ) && $args['pt_lg'] !== '' ) {
2197
-		if ( $pt == null && $pt_md == null ) {
2198
-			$classes[] = 'pt-' . sanitize_html_class( $args['pt_lg'] );
2199
-		} else {
2200
-			$classes[] = 'pt-lg-' . sanitize_html_class( $args['pt_lg'] );
2201
-		}
2202
-	}
2203
-	if ( isset( $args['pr_lg'] ) && $args['pr_lg'] !== '' ) {
2204
-		if ( $pr == null && $pr_md == null ) {
2205
-			$classes[] = $p_pr . sanitize_html_class( $args['pr_lg'] );
2206
-		} else {
2207
-			$classes[] = $p_pr . 'lg-' . sanitize_html_class( $args['pr_lg'] );
2208
-		}
2209
-	}
2210
-	if ( isset( $args['pb_lg'] ) && $args['pb_lg'] !== '' ) {
2211
-		if ( $pb == null && $pb_md == null ) {
2212
-			$classes[] = 'pb-' . sanitize_html_class( $args['pb_lg'] );
2213
-		} else {
2214
-			$classes[] = 'pb-lg-' . sanitize_html_class( $args['pb_lg'] );
2215
-		}
2216
-	}
2217
-	if ( isset( $args['pl_lg'] ) && $args['pl_lg'] !== '' ) {
2218
-		if ( $pl == null && $pl_md == null ) {
2219
-			$classes[] = $p_pl . sanitize_html_class( $args['pl_lg'] );
2220
-		} else {
2221
-			$classes[] = $p_pl . 'lg-' . sanitize_html_class( $args['pl_lg'] );
2222
-		}
2223
-	}
2224
-
2225
-	// row cols, mobile, tablet, desktop
2226
-	if ( ! empty( $args['row_cols'] ) && $args['row_cols'] !== '' ) {
2227
-		$classes[] = sanitize_html_class( 'row-cols-' . $args['row_cols'] );
2228
-		$row_cols  = $args['row_cols'];
2229
-	} else {
2230
-		$row_cols = null;
2231
-	}
2232
-	if ( ! empty( $args['row_cols_md'] ) && $args['row_cols_md'] !== '' ) {
2233
-		$classes[]   = sanitize_html_class( 'row-cols-md-' . $args['row_cols_md'] );
2234
-		$row_cols_md = $args['row_cols_md'];
2235
-	} else {
2236
-		$row_cols_md = null;
2237
-	}
2238
-	if ( ! empty( $args['row_cols_lg'] ) && $args['row_cols_lg'] !== '' ) {
2239
-		if ( $row_cols == null && $row_cols_md == null ) {
2240
-			$classes[] = sanitize_html_class( 'row-cols-' . $args['row_cols_lg'] );
2241
-		} else {
2242
-			$classes[] = sanitize_html_class( 'row-cols-lg-' . $args['row_cols_lg'] );
2243
-		}
2244
-	}
2245
-
2246
-	// columns , mobile, tablet, desktop
2247
-	if ( ! empty( $args['col'] ) && $args['col'] !== '' ) {
2248
-		$classes[] = sanitize_html_class( 'col-' . $args['col'] );
2249
-		$col       = $args['col'];
2250
-	} else {
2251
-		$col = null;
2252
-	}
2253
-	if ( ! empty( $args['col_md'] ) && $args['col_md'] !== '' ) {
2254
-		$classes[] = sanitize_html_class( 'col-md-' . $args['col_md'] );
2255
-		$col_md    = $args['col_md'];
2256
-	} else {
2257
-		$col_md = null;
2258
-	}
2259
-	if ( ! empty( $args['col_lg'] ) && $args['col_lg'] !== '' ) {
2260
-		if ( $col == null && $col_md == null ) {
2261
-			$classes[] = sanitize_html_class( 'col-' . $args['col_lg'] );
2262
-		} else {
2263
-			$classes[] = sanitize_html_class( 'col-lg-' . $args['col_lg'] );
2264
-		}
2265
-	}
2266
-
2267
-	// border
2268
-	if ( isset( $args['border'] ) && ( $args['border'] == 'none' || $args['border'] === '0' || $args['border'] === 0 ) ) {
2269
-		$classes[] = 'border-0';
2270
-	} elseif ( ! empty( $args['border'] ) ) {
2271
-		$border_class = 'border';
2272
-		if ( ! empty( $args['border_type'] ) && strpos( $args['border_type'], '-0' ) === false ) {
2273
-			$border_class = '';
2274
-		}
2275
-		$classes[] = $border_class . ' border-' . sanitize_html_class( $args['border'] );
2276
-	}
2277
-
2278
-	// border radius type
2279
-	if ( ! empty( $args['rounded'] ) ) {
2280
-		$classes[] = sanitize_html_class( $args['rounded'] );
2281
-	}
2282
-
2283
-	// border radius size BS4
2284
-	if ( isset( $args['rounded_size'] ) && in_array( $args['rounded_size'], array( 'sm', 'lg' ) ) ) {
2285
-		$classes[] = 'rounded-' . sanitize_html_class( $args['rounded_size'] );
2286
-		// if we set a size then we need to remove "rounded" if set
2287
-		if ( ( $key = array_search( 'rounded', $classes ) ) !== false ) {
2288
-			unset( $classes[ $key ] );
2289
-		}
2290
-	} else {
2291
-
2292
-		// border radius size , mobile, tablet, desktop
2293
-		if ( isset( $args['rounded_size'] ) && $args['rounded_size'] !== '' ) {
2294
-			$classes[]    = sanitize_html_class( 'rounded-' . $args['rounded_size'] );
2295
-			$rounded_size = $args['rounded_size'];
2296
-		} else {
2297
-			$rounded_size = null;
2298
-		}
2299
-		if ( isset( $args['rounded_size_md'] ) && $args['rounded_size_md'] !== '' ) {
2300
-			$classes[]       = sanitize_html_class( 'rounded-md-' . $args['rounded_size_md'] );
2301
-			$rounded_size_md = $args['rounded_size_md'];
2302
-		} else {
2303
-			$rounded_size_md = null;
2304
-		}
2305
-		if ( isset( $args['rounded_size_lg'] ) && $args['rounded_size_lg'] !== '' ) {
2306
-			if ( $rounded_size == null && $rounded_size_md == null ) {
2307
-				$classes[] = sanitize_html_class( 'rounded-' . $args['rounded_size_lg'] );
2308
-			} else {
2309
-				$classes[] = sanitize_html_class( 'rounded-lg-' . $args['rounded_size_lg'] );
2310
-			}
2311
-		}
2312
-	}
2313
-
2314
-	// shadow
2315
-	//if ( !empty( $args['shadow'] ) ) { $classes[] = sanitize_html_class($args['shadow']); }
2316
-
2317
-	// background
2318
-	if ( ! empty( $args['bg'] ) ) {
2319
-		$classes[] = 'bg-' . sanitize_html_class( $args['bg'] );
2320
-	}
2321
-
2322
-	// text_color
2323
-	if ( ! empty( $args['text_color'] ) ) {
2324
-		$classes[] = 'text-' . sanitize_html_class( $args['text_color'] );
2325
-	}
2326
-
2327
-	// text_align
2328
-	if ( ! empty( $args['text_justify'] ) ) {
2329
-		$classes[] = 'text-justify';
2330
-	} else {
2331
-		if ( ! empty( $args['text_align'] ) ) {
2332
-			$classes[]  = sanitize_html_class( $args['text_align'] );
2333
-			$text_align = $args['text_align'];
2334
-		} else {
2335
-			$text_align = null;
2336
-		}
2337
-		if ( ! empty( $args['text_align_md'] ) && $args['text_align_md'] !== '' ) {
2338
-			$classes[]     = sanitize_html_class( $args['text_align_md'] );
2339
-			$text_align_md = $args['text_align_md'];
2340
-		} else {
2341
-			$text_align_md = null;
2342
-		}
2343
-		if ( ! empty( $args['text_align_lg'] ) && $args['text_align_lg'] !== '' ) {
2344
-			if ( $text_align == null && $text_align_md == null ) {
2345
-				$classes[] = sanitize_html_class( str_replace( '-lg', '', $args['text_align_lg'] ) );
2346
-			} else {
2347
-				$classes[] = sanitize_html_class( $args['text_align_lg'] );
2348
-			}
2349
-		}
2350
-	}
2351
-
2352
-	// display
2353
-	if ( ! empty( $args['display'] ) ) {
2354
-		$classes[] = sanitize_html_class( $args['display'] );
2355
-		$display   = $args['display'];
2356
-	} else {
2357
-		$display = null;
2358
-	}
2359
-	if ( ! empty( $args['display_md'] ) && $args['display_md'] !== '' ) {
2360
-		$classes[]  = sanitize_html_class( $args['display_md'] );
2361
-		$display_md = $args['display_md'];
2362
-	} else {
2363
-		$display_md = null;
2364
-	}
2365
-	if ( ! empty( $args['display_lg'] ) && $args['display_lg'] !== '' ) {
2366
-		if ( $display == null && $display_md == null ) {
2367
-			$classes[] = sanitize_html_class( str_replace( '-lg', '', $args['display_lg'] ) );
2368
-		} else {
2369
-			$classes[] = sanitize_html_class( $args['display_lg'] );
2370
-		}
2371
-	}
2372
-
2373
-	// bgtus - background transparent until scroll
2374
-	if ( ! empty( $args['bgtus'] ) ) {
2375
-		$classes[] = sanitize_html_class( 'bg-transparent-until-scroll' );
2376
-	}
2377
-
2378
-	// cscos - change color scheme on scroll
2379
-	if ( ! empty( $args['bgtus'] ) && ! empty( $args['cscos'] ) ) {
2380
-		$classes[] = sanitize_html_class( 'color-scheme-flip-on-scroll' );
2381
-	}
2382
-
2383
-	// hover animations
2384
-	if ( ! empty( $args['hover_animations'] ) ) {
2385
-		$classes[] = sd_sanitize_html_classes( str_replace( ',', ' ', $args['hover_animations'] ) );
2386
-	}
2387
-
2388
-	// absolute_position
2389
-	if ( ! empty( $args['absolute_position'] ) ) {
2390
-		if ( 'top-left' === $args['absolute_position'] ) {
2391
-			$classes[] = 'start-0 top-0';
2392
-		} elseif ( 'top-center' === $args['absolute_position'] ) {
2393
-			$classes[] = 'start-50 top-0 translate-middle';
2394
-		} elseif ( 'top-right' === $args['absolute_position'] ) {
2395
-			$classes[] = 'end-0 top-0';
2396
-		} elseif ( 'center-left' === $args['absolute_position'] ) {
2397
-			$classes[] = 'start-0 top-50';
2398
-		} elseif ( 'center' === $args['absolute_position'] ) {
2399
-			$classes[] = 'start-50 top-50 translate-middle';
2400
-		} elseif ( 'center-right' === $args['absolute_position'] ) {
2401
-			$classes[] = 'end-0 top-50';
2402
-		} elseif ( 'bottom-left' === $args['absolute_position'] ) {
2403
-			$classes[] = 'start-0 bottom-0';
2404
-		} elseif ( 'bottom-center' === $args['absolute_position'] ) {
2405
-			$classes[] = 'start-50 bottom-0 translate-middle';
2406
-		} elseif ( 'bottom-right' === $args['absolute_position'] ) {
2407
-			$classes[] = 'end-0 bottom-0';
2408
-		}
2409
-	}
2410
-
2411
-	// build classes from build keys
2412
-	$build_keys = sd_get_class_build_keys();
2413
-	if ( ! empty( $build_keys ) ) {
2414
-		foreach ( $build_keys as $key ) {
2415
-
2416
-			if ( substr( $key, -4 ) == '-MTD' ) {
2417
-
2418
-				$k = str_replace( '-MTD', '', $key );
2419
-
2420
-				// Mobile, Tablet, Desktop
2421
-				if ( ! empty( $args[ $k ] ) && $args[ $k ] !== '' ) {
2422
-					$classes[] = sanitize_html_class( $args[ $k ] );
2423
-					$v         = $args[ $k ];
2424
-				} else {
2425
-					$v = null;
2426
-				}
2427
-				if ( ! empty( $args[ $k . '_md' ] ) && $args[ $k . '_md' ] !== '' ) {
2428
-					$classes[] = sanitize_html_class( $args[ $k . '_md' ] );
2429
-					$v_md      = $args[ $k . '_md' ];
2430
-				} else {
2431
-					$v_md = null;
2432
-				}
2433
-				if ( ! empty( $args[ $k . '_lg' ] ) && $args[ $k . '_lg' ] !== '' ) {
2434
-					if ( $v == null && $v_md == null ) {
2435
-						$classes[] = sanitize_html_class( str_replace( '-lg', '', $args[ $k . '_lg' ] ) );
2436
-					} else {
2437
-						$classes[] = sanitize_html_class( $args[ $k . '_lg' ] );
2438
-					}
2439
-				}
2440
-			} else {
2441
-				if ( $key == 'font_size' && ! empty( $args[ $key ] ) && $args[ $key ] == 'custom' ) {
2442
-					continue;
2443
-				}
2444
-				if ( ! empty( $args[ $key ] ) ) {
2445
-					$classes[] = sd_sanitize_html_classes( $args[ $key ] );
2446
-				}
2447
-			}
2448
-		}
2449
-	}
2450
-
2451
-	return implode( ' ', $classes );
2043
+    global $aui_bs5;
2044
+
2045
+    $classes = array();
2046
+
2047
+    if ( $aui_bs5 ) {
2048
+        $p_ml = 'ms-';
2049
+        $p_mr = 'me-';
2050
+
2051
+        $p_pl = 'ps-';
2052
+        $p_pr = 'pe-';
2053
+    } else {
2054
+        $p_ml = 'ml-';
2055
+        $p_mr = 'mr-';
2056
+
2057
+        $p_pl = 'pl-';
2058
+        $p_pr = 'pr-';
2059
+    }
2060
+
2061
+    // margins.
2062
+    if ( isset( $args['mt'] ) && $args['mt'] !== '' ) {
2063
+        $classes[] = 'mt-' . sanitize_html_class( $args['mt'] );
2064
+        $mt        = $args['mt'];
2065
+    } else {
2066
+        $mt = null;
2067
+    }
2068
+    if ( isset( $args['mr'] ) && $args['mr'] !== '' ) {
2069
+        $classes[] = $p_mr . sanitize_html_class( $args['mr'] );
2070
+        $mr        = $args['mr'];
2071
+    } else {
2072
+        $mr = null;
2073
+    }
2074
+    if ( isset( $args['mb'] ) && $args['mb'] !== '' ) {
2075
+        $classes[] = 'mb-' . sanitize_html_class( $args['mb'] );
2076
+        $mb        = $args['mb'];
2077
+    } else {
2078
+        $mb = null;
2079
+    }
2080
+    if ( isset( $args['ml'] ) && $args['ml'] !== '' ) {
2081
+        $classes[] = $p_ml . sanitize_html_class( $args['ml'] );
2082
+        $ml        = $args['ml'];
2083
+    } else {
2084
+        $ml = null;
2085
+    }
2086
+
2087
+    // margins tablet.
2088
+    if ( isset( $args['mt_md'] ) && $args['mt_md'] !== '' ) {
2089
+        $classes[] = 'mt-md-' . sanitize_html_class( $args['mt_md'] );
2090
+        $mt_md     = $args['mt_md'];
2091
+    } else {
2092
+        $mt_md = null;
2093
+    }
2094
+    if ( isset( $args['mr_md'] ) && $args['mr_md'] !== '' ) {
2095
+        $classes[] = $p_mr . 'md-' . sanitize_html_class( $args['mr_md'] );
2096
+        $mt_md     = $args['mr_md'];
2097
+    } else {
2098
+        $mr_md = null;
2099
+    }
2100
+    if ( isset( $args['mb_md'] ) && $args['mb_md'] !== '' ) {
2101
+        $classes[] = 'mb-md-' . sanitize_html_class( $args['mb_md'] );
2102
+        $mt_md     = $args['mb_md'];
2103
+    } else {
2104
+        $mb_md = null;
2105
+    }
2106
+    if ( isset( $args['ml_md'] ) && $args['ml_md'] !== '' ) {
2107
+        $classes[] = $p_ml . 'md-' . sanitize_html_class( $args['ml_md'] );
2108
+        $mt_md     = $args['ml_md'];
2109
+    } else {
2110
+        $ml_md = null;
2111
+    }
2112
+
2113
+    // margins desktop.
2114
+    if ( isset( $args['mt_lg'] ) && $args['mt_lg'] !== '' ) {
2115
+        if ( $mt == null && $mt_md == null ) {
2116
+            $classes[] = 'mt-' . sanitize_html_class( $args['mt_lg'] );
2117
+        } else {
2118
+            $classes[] = 'mt-lg-' . sanitize_html_class( $args['mt_lg'] );
2119
+        }
2120
+    }
2121
+    if ( isset( $args['mr_lg'] ) && $args['mr_lg'] !== '' ) {
2122
+        if ( $mr == null && $mr_md == null ) {
2123
+            $classes[] = $p_mr . sanitize_html_class( $args['mr_lg'] );
2124
+        } else {
2125
+            $classes[] = $p_mr . 'lg-' . sanitize_html_class( $args['mr_lg'] );
2126
+        }
2127
+    }
2128
+    if ( isset( $args['mb_lg'] ) && $args['mb_lg'] !== '' ) {
2129
+        if ( $mb == null && $mb_md == null ) {
2130
+            $classes[] = 'mb-' . sanitize_html_class( $args['mb_lg'] );
2131
+        } else {
2132
+            $classes[] = 'mb-lg-' . sanitize_html_class( $args['mb_lg'] );
2133
+        }
2134
+    }
2135
+    if ( isset( $args['ml_lg'] ) && $args['ml_lg'] !== '' ) {
2136
+        if ( $ml == null && $ml_md == null ) {
2137
+            $classes[] = $p_ml . sanitize_html_class( $args['ml_lg'] );
2138
+        } else {
2139
+            $classes[] = $p_ml . 'lg-' . sanitize_html_class( $args['ml_lg'] );
2140
+        }
2141
+    }
2142
+
2143
+    // padding.
2144
+    if ( isset( $args['pt'] ) && $args['pt'] !== '' ) {
2145
+        $classes[] = 'pt-' . sanitize_html_class( $args['pt'] );
2146
+        $pt        = $args['pt'];
2147
+    } else {
2148
+        $pt = null;
2149
+    }
2150
+    if ( isset( $args['pr'] ) && $args['pr'] !== '' ) {
2151
+        $classes[] = $p_pr . sanitize_html_class( $args['pr'] );
2152
+        $pr        = $args['pr'];
2153
+    } else {
2154
+        $pr = null;
2155
+    }
2156
+    if ( isset( $args['pb'] ) && $args['pb'] !== '' ) {
2157
+        $classes[] = 'pb-' . sanitize_html_class( $args['pb'] );
2158
+        $pb        = $args['pb'];
2159
+    } else {
2160
+        $pb = null;
2161
+    }
2162
+    if ( isset( $args['pl'] ) && $args['pl'] !== '' ) {
2163
+        $classes[] = $p_pl . sanitize_html_class( $args['pl'] );
2164
+        $pl        = $args['pl'];
2165
+    } else {
2166
+        $pl = null;
2167
+    }
2168
+
2169
+    // padding tablet.
2170
+    if ( isset( $args['pt_md'] ) && $args['pt_md'] !== '' ) {
2171
+        $classes[] = 'pt-md-' . sanitize_html_class( $args['pt_md'] );
2172
+        $pt_md     = $args['pt_md'];
2173
+    } else {
2174
+        $pt_md = null;
2175
+    }
2176
+    if ( isset( $args['pr_md'] ) && $args['pr_md'] !== '' ) {
2177
+        $classes[] = $p_pr . 'md-' . sanitize_html_class( $args['pr_md'] );
2178
+        $pr_md     = $args['pr_md'];
2179
+    } else {
2180
+        $pr_md = null;
2181
+    }
2182
+    if ( isset( $args['pb_md'] ) && $args['pb_md'] !== '' ) {
2183
+        $classes[] = 'pb-md-' . sanitize_html_class( $args['pb_md'] );
2184
+        $pb_md     = $args['pb_md'];
2185
+    } else {
2186
+        $pb_md = null;
2187
+    }
2188
+    if ( isset( $args['pl_md'] ) && $args['pl_md'] !== '' ) {
2189
+        $classes[] = $p_pl . 'md-' . sanitize_html_class( $args['pl_md'] );
2190
+        $pl_md     = $args['pl_md'];
2191
+    } else {
2192
+        $pl_md = null;
2193
+    }
2194
+
2195
+    // padding desktop.
2196
+    if ( isset( $args['pt_lg'] ) && $args['pt_lg'] !== '' ) {
2197
+        if ( $pt == null && $pt_md == null ) {
2198
+            $classes[] = 'pt-' . sanitize_html_class( $args['pt_lg'] );
2199
+        } else {
2200
+            $classes[] = 'pt-lg-' . sanitize_html_class( $args['pt_lg'] );
2201
+        }
2202
+    }
2203
+    if ( isset( $args['pr_lg'] ) && $args['pr_lg'] !== '' ) {
2204
+        if ( $pr == null && $pr_md == null ) {
2205
+            $classes[] = $p_pr . sanitize_html_class( $args['pr_lg'] );
2206
+        } else {
2207
+            $classes[] = $p_pr . 'lg-' . sanitize_html_class( $args['pr_lg'] );
2208
+        }
2209
+    }
2210
+    if ( isset( $args['pb_lg'] ) && $args['pb_lg'] !== '' ) {
2211
+        if ( $pb == null && $pb_md == null ) {
2212
+            $classes[] = 'pb-' . sanitize_html_class( $args['pb_lg'] );
2213
+        } else {
2214
+            $classes[] = 'pb-lg-' . sanitize_html_class( $args['pb_lg'] );
2215
+        }
2216
+    }
2217
+    if ( isset( $args['pl_lg'] ) && $args['pl_lg'] !== '' ) {
2218
+        if ( $pl == null && $pl_md == null ) {
2219
+            $classes[] = $p_pl . sanitize_html_class( $args['pl_lg'] );
2220
+        } else {
2221
+            $classes[] = $p_pl . 'lg-' . sanitize_html_class( $args['pl_lg'] );
2222
+        }
2223
+    }
2224
+
2225
+    // row cols, mobile, tablet, desktop
2226
+    if ( ! empty( $args['row_cols'] ) && $args['row_cols'] !== '' ) {
2227
+        $classes[] = sanitize_html_class( 'row-cols-' . $args['row_cols'] );
2228
+        $row_cols  = $args['row_cols'];
2229
+    } else {
2230
+        $row_cols = null;
2231
+    }
2232
+    if ( ! empty( $args['row_cols_md'] ) && $args['row_cols_md'] !== '' ) {
2233
+        $classes[]   = sanitize_html_class( 'row-cols-md-' . $args['row_cols_md'] );
2234
+        $row_cols_md = $args['row_cols_md'];
2235
+    } else {
2236
+        $row_cols_md = null;
2237
+    }
2238
+    if ( ! empty( $args['row_cols_lg'] ) && $args['row_cols_lg'] !== '' ) {
2239
+        if ( $row_cols == null && $row_cols_md == null ) {
2240
+            $classes[] = sanitize_html_class( 'row-cols-' . $args['row_cols_lg'] );
2241
+        } else {
2242
+            $classes[] = sanitize_html_class( 'row-cols-lg-' . $args['row_cols_lg'] );
2243
+        }
2244
+    }
2245
+
2246
+    // columns , mobile, tablet, desktop
2247
+    if ( ! empty( $args['col'] ) && $args['col'] !== '' ) {
2248
+        $classes[] = sanitize_html_class( 'col-' . $args['col'] );
2249
+        $col       = $args['col'];
2250
+    } else {
2251
+        $col = null;
2252
+    }
2253
+    if ( ! empty( $args['col_md'] ) && $args['col_md'] !== '' ) {
2254
+        $classes[] = sanitize_html_class( 'col-md-' . $args['col_md'] );
2255
+        $col_md    = $args['col_md'];
2256
+    } else {
2257
+        $col_md = null;
2258
+    }
2259
+    if ( ! empty( $args['col_lg'] ) && $args['col_lg'] !== '' ) {
2260
+        if ( $col == null && $col_md == null ) {
2261
+            $classes[] = sanitize_html_class( 'col-' . $args['col_lg'] );
2262
+        } else {
2263
+            $classes[] = sanitize_html_class( 'col-lg-' . $args['col_lg'] );
2264
+        }
2265
+    }
2266
+
2267
+    // border
2268
+    if ( isset( $args['border'] ) && ( $args['border'] == 'none' || $args['border'] === '0' || $args['border'] === 0 ) ) {
2269
+        $classes[] = 'border-0';
2270
+    } elseif ( ! empty( $args['border'] ) ) {
2271
+        $border_class = 'border';
2272
+        if ( ! empty( $args['border_type'] ) && strpos( $args['border_type'], '-0' ) === false ) {
2273
+            $border_class = '';
2274
+        }
2275
+        $classes[] = $border_class . ' border-' . sanitize_html_class( $args['border'] );
2276
+    }
2277
+
2278
+    // border radius type
2279
+    if ( ! empty( $args['rounded'] ) ) {
2280
+        $classes[] = sanitize_html_class( $args['rounded'] );
2281
+    }
2282
+
2283
+    // border radius size BS4
2284
+    if ( isset( $args['rounded_size'] ) && in_array( $args['rounded_size'], array( 'sm', 'lg' ) ) ) {
2285
+        $classes[] = 'rounded-' . sanitize_html_class( $args['rounded_size'] );
2286
+        // if we set a size then we need to remove "rounded" if set
2287
+        if ( ( $key = array_search( 'rounded', $classes ) ) !== false ) {
2288
+            unset( $classes[ $key ] );
2289
+        }
2290
+    } else {
2291
+
2292
+        // border radius size , mobile, tablet, desktop
2293
+        if ( isset( $args['rounded_size'] ) && $args['rounded_size'] !== '' ) {
2294
+            $classes[]    = sanitize_html_class( 'rounded-' . $args['rounded_size'] );
2295
+            $rounded_size = $args['rounded_size'];
2296
+        } else {
2297
+            $rounded_size = null;
2298
+        }
2299
+        if ( isset( $args['rounded_size_md'] ) && $args['rounded_size_md'] !== '' ) {
2300
+            $classes[]       = sanitize_html_class( 'rounded-md-' . $args['rounded_size_md'] );
2301
+            $rounded_size_md = $args['rounded_size_md'];
2302
+        } else {
2303
+            $rounded_size_md = null;
2304
+        }
2305
+        if ( isset( $args['rounded_size_lg'] ) && $args['rounded_size_lg'] !== '' ) {
2306
+            if ( $rounded_size == null && $rounded_size_md == null ) {
2307
+                $classes[] = sanitize_html_class( 'rounded-' . $args['rounded_size_lg'] );
2308
+            } else {
2309
+                $classes[] = sanitize_html_class( 'rounded-lg-' . $args['rounded_size_lg'] );
2310
+            }
2311
+        }
2312
+    }
2313
+
2314
+    // shadow
2315
+    //if ( !empty( $args['shadow'] ) ) { $classes[] = sanitize_html_class($args['shadow']); }
2316
+
2317
+    // background
2318
+    if ( ! empty( $args['bg'] ) ) {
2319
+        $classes[] = 'bg-' . sanitize_html_class( $args['bg'] );
2320
+    }
2321
+
2322
+    // text_color
2323
+    if ( ! empty( $args['text_color'] ) ) {
2324
+        $classes[] = 'text-' . sanitize_html_class( $args['text_color'] );
2325
+    }
2326
+
2327
+    // text_align
2328
+    if ( ! empty( $args['text_justify'] ) ) {
2329
+        $classes[] = 'text-justify';
2330
+    } else {
2331
+        if ( ! empty( $args['text_align'] ) ) {
2332
+            $classes[]  = sanitize_html_class( $args['text_align'] );
2333
+            $text_align = $args['text_align'];
2334
+        } else {
2335
+            $text_align = null;
2336
+        }
2337
+        if ( ! empty( $args['text_align_md'] ) && $args['text_align_md'] !== '' ) {
2338
+            $classes[]     = sanitize_html_class( $args['text_align_md'] );
2339
+            $text_align_md = $args['text_align_md'];
2340
+        } else {
2341
+            $text_align_md = null;
2342
+        }
2343
+        if ( ! empty( $args['text_align_lg'] ) && $args['text_align_lg'] !== '' ) {
2344
+            if ( $text_align == null && $text_align_md == null ) {
2345
+                $classes[] = sanitize_html_class( str_replace( '-lg', '', $args['text_align_lg'] ) );
2346
+            } else {
2347
+                $classes[] = sanitize_html_class( $args['text_align_lg'] );
2348
+            }
2349
+        }
2350
+    }
2351
+
2352
+    // display
2353
+    if ( ! empty( $args['display'] ) ) {
2354
+        $classes[] = sanitize_html_class( $args['display'] );
2355
+        $display   = $args['display'];
2356
+    } else {
2357
+        $display = null;
2358
+    }
2359
+    if ( ! empty( $args['display_md'] ) && $args['display_md'] !== '' ) {
2360
+        $classes[]  = sanitize_html_class( $args['display_md'] );
2361
+        $display_md = $args['display_md'];
2362
+    } else {
2363
+        $display_md = null;
2364
+    }
2365
+    if ( ! empty( $args['display_lg'] ) && $args['display_lg'] !== '' ) {
2366
+        if ( $display == null && $display_md == null ) {
2367
+            $classes[] = sanitize_html_class( str_replace( '-lg', '', $args['display_lg'] ) );
2368
+        } else {
2369
+            $classes[] = sanitize_html_class( $args['display_lg'] );
2370
+        }
2371
+    }
2372
+
2373
+    // bgtus - background transparent until scroll
2374
+    if ( ! empty( $args['bgtus'] ) ) {
2375
+        $classes[] = sanitize_html_class( 'bg-transparent-until-scroll' );
2376
+    }
2377
+
2378
+    // cscos - change color scheme on scroll
2379
+    if ( ! empty( $args['bgtus'] ) && ! empty( $args['cscos'] ) ) {
2380
+        $classes[] = sanitize_html_class( 'color-scheme-flip-on-scroll' );
2381
+    }
2382
+
2383
+    // hover animations
2384
+    if ( ! empty( $args['hover_animations'] ) ) {
2385
+        $classes[] = sd_sanitize_html_classes( str_replace( ',', ' ', $args['hover_animations'] ) );
2386
+    }
2387
+
2388
+    // absolute_position
2389
+    if ( ! empty( $args['absolute_position'] ) ) {
2390
+        if ( 'top-left' === $args['absolute_position'] ) {
2391
+            $classes[] = 'start-0 top-0';
2392
+        } elseif ( 'top-center' === $args['absolute_position'] ) {
2393
+            $classes[] = 'start-50 top-0 translate-middle';
2394
+        } elseif ( 'top-right' === $args['absolute_position'] ) {
2395
+            $classes[] = 'end-0 top-0';
2396
+        } elseif ( 'center-left' === $args['absolute_position'] ) {
2397
+            $classes[] = 'start-0 top-50';
2398
+        } elseif ( 'center' === $args['absolute_position'] ) {
2399
+            $classes[] = 'start-50 top-50 translate-middle';
2400
+        } elseif ( 'center-right' === $args['absolute_position'] ) {
2401
+            $classes[] = 'end-0 top-50';
2402
+        } elseif ( 'bottom-left' === $args['absolute_position'] ) {
2403
+            $classes[] = 'start-0 bottom-0';
2404
+        } elseif ( 'bottom-center' === $args['absolute_position'] ) {
2405
+            $classes[] = 'start-50 bottom-0 translate-middle';
2406
+        } elseif ( 'bottom-right' === $args['absolute_position'] ) {
2407
+            $classes[] = 'end-0 bottom-0';
2408
+        }
2409
+    }
2410
+
2411
+    // build classes from build keys
2412
+    $build_keys = sd_get_class_build_keys();
2413
+    if ( ! empty( $build_keys ) ) {
2414
+        foreach ( $build_keys as $key ) {
2415
+
2416
+            if ( substr( $key, -4 ) == '-MTD' ) {
2417
+
2418
+                $k = str_replace( '-MTD', '', $key );
2419
+
2420
+                // Mobile, Tablet, Desktop
2421
+                if ( ! empty( $args[ $k ] ) && $args[ $k ] !== '' ) {
2422
+                    $classes[] = sanitize_html_class( $args[ $k ] );
2423
+                    $v         = $args[ $k ];
2424
+                } else {
2425
+                    $v = null;
2426
+                }
2427
+                if ( ! empty( $args[ $k . '_md' ] ) && $args[ $k . '_md' ] !== '' ) {
2428
+                    $classes[] = sanitize_html_class( $args[ $k . '_md' ] );
2429
+                    $v_md      = $args[ $k . '_md' ];
2430
+                } else {
2431
+                    $v_md = null;
2432
+                }
2433
+                if ( ! empty( $args[ $k . '_lg' ] ) && $args[ $k . '_lg' ] !== '' ) {
2434
+                    if ( $v == null && $v_md == null ) {
2435
+                        $classes[] = sanitize_html_class( str_replace( '-lg', '', $args[ $k . '_lg' ] ) );
2436
+                    } else {
2437
+                        $classes[] = sanitize_html_class( $args[ $k . '_lg' ] );
2438
+                    }
2439
+                }
2440
+            } else {
2441
+                if ( $key == 'font_size' && ! empty( $args[ $key ] ) && $args[ $key ] == 'custom' ) {
2442
+                    continue;
2443
+                }
2444
+                if ( ! empty( $args[ $key ] ) ) {
2445
+                    $classes[] = sd_sanitize_html_classes( $args[ $key ] );
2446
+                }
2447
+            }
2448
+        }
2449
+    }
2450
+
2451
+    return implode( ' ', $classes );
2452 2452
 }
2453 2453
 
2454 2454
 /**
@@ -2460,90 +2460,90 @@  discard block
 block discarded – undo
2460 2460
  */
2461 2461
 function sd_build_aui_styles( $args ) {
2462 2462
 
2463
-	$styles = array();
2464
-
2465
-	// background color
2466
-	if ( ! empty( $args['bg'] ) && $args['bg'] !== '' ) {
2467
-		if ( $args['bg'] == 'custom-color' ) {
2468
-			$styles['background-color'] = $args['bg_color'];
2469
-		} elseif ( $args['bg'] == 'custom-gradient' ) {
2470
-			$styles['background-image'] = $args['bg_gradient'];
2471
-
2472
-			// use background on text.
2473
-			if ( ! empty( $args['bg_on_text'] ) && $args['bg_on_text'] ) {
2474
-				$styles['background-clip']         = 'text';
2475
-				$styles['-webkit-background-clip'] = 'text';
2476
-				$styles['text-fill-color']         = 'transparent';
2477
-				$styles['-webkit-text-fill-color'] = 'transparent';
2478
-			}
2479
-		}
2480
-	}
2481
-
2482
-	if ( ! empty( $args['bg_image'] ) && $args['bg_image'] !== '' ) {
2483
-		$hasImage = true;
2484
-		if ( ! empty( $styles['background-color'] ) && $args['bg'] == 'custom-color' ) {
2485
-			$styles['background-image']      = 'url(' . $args['bg_image'] . ')';
2486
-			$styles['background-blend-mode'] = 'overlay';
2487
-		} elseif ( ! empty( $styles['background-image'] ) && $args['bg'] == 'custom-gradient' ) {
2488
-			$styles['background-image'] .= ',url(' . $args['bg_image'] . ')';
2489
-		} elseif ( ! empty( $args['bg'] ) && $args['bg'] != '' && $args['bg'] != 'transparent' ) {
2490
-			// do nothing as we alreay have a preset
2491
-			$hasImage = false;
2492
-		} else {
2493
-			$styles['background-image'] = 'url(' . $args['bg_image'] . ')';
2494
-		}
2495
-
2496
-		if ( $hasImage ) {
2497
-			$styles['background-size'] = 'cover';
2498
-
2499
-			if ( ! empty( $args['bg_image_fixed'] ) && $args['bg_image_fixed'] ) {
2500
-				$styles['background-attachment'] = 'fixed';
2501
-			}
2502
-		}
2503
-
2504
-		if ( $hasImage && ! empty( $args['bg_image_xy'] ) && ! empty( $args['bg_image_xy']['x'] ) ) {
2505
-			$styles['background-position'] = ( $args['bg_image_xy']['x'] * 100 ) . '% ' . ( $args['bg_image_xy']['y'] * 100 ) . '%';
2506
-		}
2507
-	}
2508
-
2509
-	// sticky offset top
2510
-	if ( ! empty( $args['sticky_offset_top'] ) && $args['sticky_offset_top'] !== '' ) {
2511
-		$styles['top'] = absint( $args['sticky_offset_top'] );
2512
-	}
2513
-
2514
-	// sticky offset bottom
2515
-	if ( ! empty( $args['sticky_offset_bottom'] ) && $args['sticky_offset_bottom'] !== '' ) {
2516
-		$styles['bottom'] = absint( $args['sticky_offset_bottom'] );
2517
-	}
2518
-
2519
-	// font size
2520
-	if ( ! empty( $args['font_size_custom'] ) && $args['font_size_custom'] !== '' ) {
2521
-		$styles['font-size'] = (float) $args['font_size_custom'] . 'rem';
2522
-	}
2523
-
2524
-	// font color
2525
-	if ( ! empty( $args['text_color_custom'] ) && $args['text_color_custom'] !== '' ) {
2526
-		$styles['color'] = esc_attr( $args['text_color_custom'] );
2527
-	}
2528
-
2529
-	// font line height
2530
-	if ( ! empty( $args['font_line_height'] ) && $args['font_line_height'] !== '' ) {
2531
-		$styles['line-height'] = esc_attr( $args['font_line_height'] );
2532
-	}
2533
-
2534
-	// max height
2535
-	if ( ! empty( $args['max_height'] ) && $args['max_height'] !== '' ) {
2536
-		$styles['max-height'] = esc_attr( $args['max_height'] );
2537
-	}
2538
-
2539
-	$style_string = '';
2540
-	if ( ! empty( $styles ) ) {
2541
-		foreach ( $styles as $key => $val ) {
2542
-			$style_string .= esc_attr( $key ) . ':' . esc_attr( $val ) . ';';
2543
-		}
2544
-	}
2545
-
2546
-	return $style_string;
2463
+    $styles = array();
2464
+
2465
+    // background color
2466
+    if ( ! empty( $args['bg'] ) && $args['bg'] !== '' ) {
2467
+        if ( $args['bg'] == 'custom-color' ) {
2468
+            $styles['background-color'] = $args['bg_color'];
2469
+        } elseif ( $args['bg'] == 'custom-gradient' ) {
2470
+            $styles['background-image'] = $args['bg_gradient'];
2471
+
2472
+            // use background on text.
2473
+            if ( ! empty( $args['bg_on_text'] ) && $args['bg_on_text'] ) {
2474
+                $styles['background-clip']         = 'text';
2475
+                $styles['-webkit-background-clip'] = 'text';
2476
+                $styles['text-fill-color']         = 'transparent';
2477
+                $styles['-webkit-text-fill-color'] = 'transparent';
2478
+            }
2479
+        }
2480
+    }
2481
+
2482
+    if ( ! empty( $args['bg_image'] ) && $args['bg_image'] !== '' ) {
2483
+        $hasImage = true;
2484
+        if ( ! empty( $styles['background-color'] ) && $args['bg'] == 'custom-color' ) {
2485
+            $styles['background-image']      = 'url(' . $args['bg_image'] . ')';
2486
+            $styles['background-blend-mode'] = 'overlay';
2487
+        } elseif ( ! empty( $styles['background-image'] ) && $args['bg'] == 'custom-gradient' ) {
2488
+            $styles['background-image'] .= ',url(' . $args['bg_image'] . ')';
2489
+        } elseif ( ! empty( $args['bg'] ) && $args['bg'] != '' && $args['bg'] != 'transparent' ) {
2490
+            // do nothing as we alreay have a preset
2491
+            $hasImage = false;
2492
+        } else {
2493
+            $styles['background-image'] = 'url(' . $args['bg_image'] . ')';
2494
+        }
2495
+
2496
+        if ( $hasImage ) {
2497
+            $styles['background-size'] = 'cover';
2498
+
2499
+            if ( ! empty( $args['bg_image_fixed'] ) && $args['bg_image_fixed'] ) {
2500
+                $styles['background-attachment'] = 'fixed';
2501
+            }
2502
+        }
2503
+
2504
+        if ( $hasImage && ! empty( $args['bg_image_xy'] ) && ! empty( $args['bg_image_xy']['x'] ) ) {
2505
+            $styles['background-position'] = ( $args['bg_image_xy']['x'] * 100 ) . '% ' . ( $args['bg_image_xy']['y'] * 100 ) . '%';
2506
+        }
2507
+    }
2508
+
2509
+    // sticky offset top
2510
+    if ( ! empty( $args['sticky_offset_top'] ) && $args['sticky_offset_top'] !== '' ) {
2511
+        $styles['top'] = absint( $args['sticky_offset_top'] );
2512
+    }
2513
+
2514
+    // sticky offset bottom
2515
+    if ( ! empty( $args['sticky_offset_bottom'] ) && $args['sticky_offset_bottom'] !== '' ) {
2516
+        $styles['bottom'] = absint( $args['sticky_offset_bottom'] );
2517
+    }
2518
+
2519
+    // font size
2520
+    if ( ! empty( $args['font_size_custom'] ) && $args['font_size_custom'] !== '' ) {
2521
+        $styles['font-size'] = (float) $args['font_size_custom'] . 'rem';
2522
+    }
2523
+
2524
+    // font color
2525
+    if ( ! empty( $args['text_color_custom'] ) && $args['text_color_custom'] !== '' ) {
2526
+        $styles['color'] = esc_attr( $args['text_color_custom'] );
2527
+    }
2528
+
2529
+    // font line height
2530
+    if ( ! empty( $args['font_line_height'] ) && $args['font_line_height'] !== '' ) {
2531
+        $styles['line-height'] = esc_attr( $args['font_line_height'] );
2532
+    }
2533
+
2534
+    // max height
2535
+    if ( ! empty( $args['max_height'] ) && $args['max_height'] !== '' ) {
2536
+        $styles['max-height'] = esc_attr( $args['max_height'] );
2537
+    }
2538
+
2539
+    $style_string = '';
2540
+    if ( ! empty( $styles ) ) {
2541
+        foreach ( $styles as $key => $val ) {
2542
+            $style_string .= esc_attr( $key ) . ':' . esc_attr( $val ) . ';';
2543
+        }
2544
+    }
2545
+
2546
+    return $style_string;
2547 2547
 
2548 2548
 }
2549 2549
 
@@ -2556,34 +2556,34 @@  discard block
 block discarded – undo
2556 2556
  * @return string
2557 2557
  */
2558 2558
 function sd_build_hover_styles( $args, $is_preview = false ) {
2559
-	$rules = '';
2560
-	// text color
2561
-	if ( ! empty( $args['styleid'] ) ) {
2562
-		$styleid = $is_preview ? 'html .editor-styles-wrapper .' . esc_attr( $args['styleid'] ) : 'html .' . esc_attr( $args['styleid'] );
2563
-
2564
-		// text
2565
-		if ( ! empty( $args['text_color_hover'] ) ) {
2566
-			$key    = 'custom' === $args['text_color_hover'] && ! empty( $args['text_color_hover_custom'] ) ? 'text_color_hover_custom' : 'text_color_hover';
2567
-			$color  = sd_get_color_from_var( $args[ $key ] );
2568
-			$rules .= $styleid . ':hover {color: ' . $color . ' !important;} ';
2569
-		}
2570
-
2571
-		// bg
2572
-		if ( ! empty( $args['bg_hover'] ) ) {
2573
-			if ( 'custom-gradient' === $args['bg_hover'] ) {
2574
-				$color  = $args['bg_hover_gradient'];
2575
-				$rules .= $styleid . ':hover {background-image: ' . $color . ' !important;} ';
2576
-				$rules .= $styleid . '.btn:hover {border-color: transparent !important;} ';
2577
-			} else {
2578
-				$key    = 'custom-color' === $args['bg_hover'] ? 'bg_hover_color' : 'bg_hover';
2579
-				$color  = sd_get_color_from_var( $args[ $key ] );
2580
-				$rules .= $styleid . ':hover {background: ' . $color . ' !important;} ';
2581
-				$rules .= $styleid . '.btn:hover {border-color: ' . $color . ' !important;} ';
2582
-			}
2583
-		}
2584
-	}
2585
-
2586
-	return $rules ? '<style>' . $rules . '</style>' : '';
2559
+    $rules = '';
2560
+    // text color
2561
+    if ( ! empty( $args['styleid'] ) ) {
2562
+        $styleid = $is_preview ? 'html .editor-styles-wrapper .' . esc_attr( $args['styleid'] ) : 'html .' . esc_attr( $args['styleid'] );
2563
+
2564
+        // text
2565
+        if ( ! empty( $args['text_color_hover'] ) ) {
2566
+            $key    = 'custom' === $args['text_color_hover'] && ! empty( $args['text_color_hover_custom'] ) ? 'text_color_hover_custom' : 'text_color_hover';
2567
+            $color  = sd_get_color_from_var( $args[ $key ] );
2568
+            $rules .= $styleid . ':hover {color: ' . $color . ' !important;} ';
2569
+        }
2570
+
2571
+        // bg
2572
+        if ( ! empty( $args['bg_hover'] ) ) {
2573
+            if ( 'custom-gradient' === $args['bg_hover'] ) {
2574
+                $color  = $args['bg_hover_gradient'];
2575
+                $rules .= $styleid . ':hover {background-image: ' . $color . ' !important;} ';
2576
+                $rules .= $styleid . '.btn:hover {border-color: transparent !important;} ';
2577
+            } else {
2578
+                $key    = 'custom-color' === $args['bg_hover'] ? 'bg_hover_color' : 'bg_hover';
2579
+                $color  = sd_get_color_from_var( $args[ $key ] );
2580
+                $rules .= $styleid . ':hover {background: ' . $color . ' !important;} ';
2581
+                $rules .= $styleid . '.btn:hover {border-color: ' . $color . ' !important;} ';
2582
+            }
2583
+        }
2584
+    }
2585
+
2586
+    return $rules ? '<style>' . $rules . '</style>' : '';
2587 2587
 }
2588 2588
 
2589 2589
 /**
@@ -2595,12 +2595,12 @@  discard block
 block discarded – undo
2595 2595
  */
2596 2596
 function sd_get_color_from_var( $var ) {
2597 2597
 
2598
-	//sanitize_hex_color() @todo this does not cover transparency
2599
-	if ( strpos( $var, '#' ) === false ) {
2600
-		$var = defined( 'BLOCKSTRAP_BLOCKS_VERSION' ) ? 'var(--wp--preset--color--' . esc_attr( $var ) . ')' : 'var(--' . esc_attr( $var ) . ')';
2601
-	}
2598
+    //sanitize_hex_color() @todo this does not cover transparency
2599
+    if ( strpos( $var, '#' ) === false ) {
2600
+        $var = defined( 'BLOCKSTRAP_BLOCKS_VERSION' ) ? 'var(--wp--preset--color--' . esc_attr( $var ) . ')' : 'var(--' . esc_attr( $var ) . ')';
2601
+    }
2602 2602
 
2603
-	return $var;
2603
+    return $var;
2604 2604
 }
2605 2605
 
2606 2606
 /**
@@ -2612,19 +2612,19 @@  discard block
 block discarded – undo
2612 2612
  * @return string
2613 2613
  */
2614 2614
 function sd_sanitize_html_classes( $classes, $sep = ' ' ) {
2615
-	$return = '';
2615
+    $return = '';
2616 2616
 
2617
-	if ( ! is_array( $classes ) ) {
2618
-		$classes = explode( $sep, $classes );
2619
-	}
2617
+    if ( ! is_array( $classes ) ) {
2618
+        $classes = explode( $sep, $classes );
2619
+    }
2620 2620
 
2621
-	if ( ! empty( $classes ) ) {
2622
-		foreach ( $classes as $class ) {
2623
-			$return .= sanitize_html_class( $class ) . ' ';
2624
-		}
2625
-	}
2621
+    if ( ! empty( $classes ) ) {
2622
+        foreach ( $classes as $class ) {
2623
+            $return .= sanitize_html_class( $class ) . ' ';
2624
+        }
2625
+    }
2626 2626
 
2627
-	return $return;
2627
+    return $return;
2628 2628
 }
2629 2629
 
2630 2630
 
@@ -2634,38 +2634,38 @@  discard block
 block discarded – undo
2634 2634
  * @return void
2635 2635
  */
2636 2636
 function sd_get_class_build_keys() {
2637
-	$keys = array(
2638
-		'container',
2639
-		'position',
2640
-		'flex_direction',
2641
-		'shadow',
2642
-		'rounded',
2643
-		'nav_style',
2644
-		'horizontal_alignment',
2645
-		'nav_fill',
2646
-		'width',
2647
-		'font_weight',
2648
-		'font_size',
2649
-		'font_case',
2650
-		'css_class',
2651
-		'flex_align_items-MTD',
2652
-		'flex_justify_content-MTD',
2653
-		'flex_align_self-MTD',
2654
-		'flex_order-MTD',
2655
-		'styleid',
2656
-		'border_opacity',
2657
-		'border_width',
2658
-		'border_type',
2659
-		'opacity',
2660
-		'zindex',
2661
-		'flex_wrap-MTD',
2662
-		'h100',
2663
-		'overflow',
2664
-		'scrollbars',
2665
-		'float-MTD'
2666
-	);
2667
-
2668
-	return apply_filters( 'sd_class_build_keys', $keys );
2637
+    $keys = array(
2638
+        'container',
2639
+        'position',
2640
+        'flex_direction',
2641
+        'shadow',
2642
+        'rounded',
2643
+        'nav_style',
2644
+        'horizontal_alignment',
2645
+        'nav_fill',
2646
+        'width',
2647
+        'font_weight',
2648
+        'font_size',
2649
+        'font_case',
2650
+        'css_class',
2651
+        'flex_align_items-MTD',
2652
+        'flex_justify_content-MTD',
2653
+        'flex_align_self-MTD',
2654
+        'flex_order-MTD',
2655
+        'styleid',
2656
+        'border_opacity',
2657
+        'border_width',
2658
+        'border_type',
2659
+        'opacity',
2660
+        'zindex',
2661
+        'flex_wrap-MTD',
2662
+        'h100',
2663
+        'overflow',
2664
+        'scrollbars',
2665
+        'float-MTD'
2666
+    );
2667
+
2668
+    return apply_filters( 'sd_class_build_keys', $keys );
2669 2669
 }
2670 2670
 
2671 2671
 /**
@@ -2677,18 +2677,18 @@  discard block
 block discarded – undo
2677 2677
  * @return array
2678 2678
  */
2679 2679
 function sd_get_visibility_conditions_input( $type = 'visibility_conditions', $overwrite = array() ) {
2680
-	$defaults = array(
2681
-		'type'         => 'visibility_conditions',
2682
-		'title'        => __( 'Block Visibility', 'ayecode-connect' ),
2683
-		'button_title' => __( 'Set Block Visibility', 'ayecode-connect' ),
2684
-		'default'      => '',
2685
-		'desc_tip'     => true,
2686
-		'group'        => __( 'Visibility Conditions', 'ayecode-connect' ),
2687
-	);
2680
+    $defaults = array(
2681
+        'type'         => 'visibility_conditions',
2682
+        'title'        => __( 'Block Visibility', 'ayecode-connect' ),
2683
+        'button_title' => __( 'Set Block Visibility', 'ayecode-connect' ),
2684
+        'default'      => '',
2685
+        'desc_tip'     => true,
2686
+        'group'        => __( 'Visibility Conditions', 'ayecode-connect' ),
2687
+    );
2688 2688
 
2689
-	$input = wp_parse_args( $overwrite, $defaults );
2689
+    $input = wp_parse_args( $overwrite, $defaults );
2690 2690
 
2691
-	return $input;
2691
+    return $input;
2692 2692
 }
2693 2693
 
2694 2694
 /**
@@ -2700,21 +2700,21 @@  discard block
 block discarded – undo
2700 2700
  * @return array An array of roles.
2701 2701
  */
2702 2702
 function sd_user_roles_options( $exclude = array() ) {
2703
-	$user_roles = array();
2703
+    $user_roles = array();
2704 2704
 
2705
-	if ( !function_exists('get_editable_roles') ) {
2706
-		require_once( ABSPATH . '/wp-admin/includes/user.php' );
2707
-	}
2705
+    if ( !function_exists('get_editable_roles') ) {
2706
+        require_once( ABSPATH . '/wp-admin/includes/user.php' );
2707
+    }
2708 2708
 
2709
-	$roles = get_editable_roles();
2709
+    $roles = get_editable_roles();
2710 2710
 
2711
-	foreach ( $roles as $role => $data ) {
2712
-		if ( ! ( ! empty( $exclude ) && in_array( $role, $exclude ) ) ) {
2713
-			$user_roles[ esc_attr( $role ) ] = translate_user_role( $data['name'] );
2714
-		}
2715
-	}
2711
+    foreach ( $roles as $role => $data ) {
2712
+        if ( ! ( ! empty( $exclude ) && in_array( $role, $exclude ) ) ) {
2713
+            $user_roles[ esc_attr( $role ) ] = translate_user_role( $data['name'] );
2714
+        }
2715
+    }
2716 2716
 
2717
-	return apply_filters( 'sd_user_roles_options', $user_roles );
2717
+    return apply_filters( 'sd_user_roles_options', $user_roles );
2718 2718
 }
2719 2719
 
2720 2720
 /**
@@ -2725,18 +2725,18 @@  discard block
 block discarded – undo
2725 2725
  * @return array Rule options.
2726 2726
  */
2727 2727
 function sd_visibility_rules_options() {
2728
-	$options = array(
2729
-		'logged_in'  => __( 'Logged In', 'ayecode-connect' ),
2730
-		'logged_out' => __( 'Logged Out', 'ayecode-connect' ),
2731
-		'post_author'  => __( 'Post Author', 'ayecode-connect' ),
2732
-		'user_roles' => __( 'Specific User Roles', 'ayecode-connect' )
2733
-	);
2728
+    $options = array(
2729
+        'logged_in'  => __( 'Logged In', 'ayecode-connect' ),
2730
+        'logged_out' => __( 'Logged Out', 'ayecode-connect' ),
2731
+        'post_author'  => __( 'Post Author', 'ayecode-connect' ),
2732
+        'user_roles' => __( 'Specific User Roles', 'ayecode-connect' )
2733
+    );
2734 2734
 
2735
-	if ( class_exists( 'GeoDirectory' ) ) {
2736
-		$options['gd_field'] = __( 'GD Field', 'ayecode-connect' );
2737
-	}
2735
+    if ( class_exists( 'GeoDirectory' ) ) {
2736
+        $options['gd_field'] = __( 'GD Field', 'ayecode-connect' );
2737
+    }
2738 2738
 
2739
-	return apply_filters( 'sd_visibility_rules_options', $options );
2739
+    return apply_filters( 'sd_visibility_rules_options', $options );
2740 2740
 }
2741 2741
 
2742 2742
 /**
@@ -2745,39 +2745,39 @@  discard block
 block discarded – undo
2745 2745
  * @return array
2746 2746
  */
2747 2747
 function sd_visibility_gd_field_options() {
2748
-	$fields = geodir_post_custom_fields( '', 'all', 'all', 'none' );
2748
+    $fields = geodir_post_custom_fields( '', 'all', 'all', 'none' );
2749 2749
 
2750
-	$keys = array();
2751
-	if ( ! empty( $fields ) ) {
2752
-		foreach( $fields as $field ) {
2753
-			if ( apply_filters( 'geodir_badge_field_skip_key', false, $field ) ) {
2754
-				continue;
2755
-			}
2750
+    $keys = array();
2751
+    if ( ! empty( $fields ) ) {
2752
+        foreach( $fields as $field ) {
2753
+            if ( apply_filters( 'geodir_badge_field_skip_key', false, $field ) ) {
2754
+                continue;
2755
+            }
2756 2756
 
2757
-			$keys[ $field['htmlvar_name'] ] = $field['htmlvar_name'] . ' ( ' . __( $field['admin_title'], 'geodirectory' ) . ' )';
2757
+            $keys[ $field['htmlvar_name'] ] = $field['htmlvar_name'] . ' ( ' . __( $field['admin_title'], 'geodirectory' ) . ' )';
2758 2758
 
2759
-			// Extra address fields
2760
-			if ( $field['htmlvar_name'] == 'address' && ( $address_fields = geodir_post_meta_address_fields( '' ) ) ) {
2761
-				foreach ( $address_fields as $_field => $args ) {
2762
-					if ( $_field != 'map_directions' && $_field != 'street' ) {
2763
-						$keys[ $_field ] = $_field . ' ( ' . $args['frontend_title'] . ' )';
2764
-					}
2765
-				}
2766
-			}
2767
-		}
2768
-	}
2759
+            // Extra address fields
2760
+            if ( $field['htmlvar_name'] == 'address' && ( $address_fields = geodir_post_meta_address_fields( '' ) ) ) {
2761
+                foreach ( $address_fields as $_field => $args ) {
2762
+                    if ( $_field != 'map_directions' && $_field != 'street' ) {
2763
+                        $keys[ $_field ] = $_field . ' ( ' . $args['frontend_title'] . ' )';
2764
+                    }
2765
+                }
2766
+            }
2767
+        }
2768
+    }
2769 2769
 
2770
-	$standard_fields = sd_visibility_gd_standard_field_options();
2770
+    $standard_fields = sd_visibility_gd_standard_field_options();
2771 2771
 
2772
-	if ( ! empty( $standard_fields ) ) {
2773
-		foreach ( $standard_fields as $key => $option ) {
2774
-			$keys[ $key ] = $option;
2775
-		}
2776
-	}
2772
+    if ( ! empty( $standard_fields ) ) {
2773
+        foreach ( $standard_fields as $key => $option ) {
2774
+            $keys[ $key ] = $option;
2775
+        }
2776
+    }
2777 2777
 
2778
-	$options = apply_filters( 'geodir_badge_field_keys', $keys );
2778
+    $options = apply_filters( 'geodir_badge_field_keys', $keys );
2779 2779
 
2780
-	return apply_filters( 'sd_visibility_gd_field_options', $options );
2780
+    return apply_filters( 'sd_visibility_gd_field_options', $options );
2781 2781
 }
2782 2782
 
2783 2783
 /**
@@ -2786,17 +2786,17 @@  discard block
 block discarded – undo
2786 2786
  * @return array
2787 2787
  */
2788 2788
 function sd_visibility_gd_standard_field_options( $post_type = '' ) {
2789
-	$fields = sd_visibility_gd_standard_fields( $post_type );
2789
+    $fields = sd_visibility_gd_standard_fields( $post_type );
2790 2790
 
2791
-	$options = array();
2791
+    $options = array();
2792 2792
 
2793
-	foreach ( $fields as $key => $field ) {
2794
-		if ( ! empty( $field['frontend_title'] ) ) {
2795
-			$options[ $key ] = $key . ' ( ' . $field['frontend_title'] . ' )';
2796
-		}
2797
-	}
2793
+    foreach ( $fields as $key => $field ) {
2794
+        if ( ! empty( $field['frontend_title'] ) ) {
2795
+            $options[ $key ] = $key . ' ( ' . $field['frontend_title'] . ' )';
2796
+        }
2797
+    }
2798 2798
 
2799
-	return apply_filters( 'sd_visibility_gd_standard_field_options', $options, $fields );
2799
+    return apply_filters( 'sd_visibility_gd_standard_field_options', $options, $fields );
2800 2800
 }
2801 2801
 
2802 2802
 /**
@@ -2805,17 +2805,17 @@  discard block
 block discarded – undo
2805 2805
  * @return array
2806 2806
  */
2807 2807
 function sd_visibility_gd_standard_fields( $post_type = '' ) {
2808
-	$standard_fields = geodir_post_meta_standard_fields( $post_type );
2808
+    $standard_fields = geodir_post_meta_standard_fields( $post_type );
2809 2809
 
2810
-	$fields = array();
2810
+    $fields = array();
2811 2811
 
2812
-	foreach ( $standard_fields as $key => $field ) {
2813
-		if ( $key != 'post_link' && strpos( $key, 'event' ) === false && ! empty( $field['frontend_title'] ) ) {
2814
-			$fields[ $key ] = $field;
2815
-		}
2816
-	}
2812
+    foreach ( $standard_fields as $key => $field ) {
2813
+        if ( $key != 'post_link' && strpos( $key, 'event' ) === false && ! empty( $field['frontend_title'] ) ) {
2814
+            $fields[ $key ] = $field;
2815
+        }
2816
+    }
2817 2817
 
2818
-	return apply_filters( 'sd_visibility_gd_standard_fields', $fields );
2818
+    return apply_filters( 'sd_visibility_gd_standard_fields', $fields );
2819 2819
 }
2820 2820
 
2821 2821
 /**
@@ -2824,18 +2824,18 @@  discard block
 block discarded – undo
2824 2824
  * @return array
2825 2825
  */
2826 2826
 function sd_visibility_field_condition_options(){
2827
-	$options = array(
2828
-		'is_empty' => __( 'is empty', 'ayecode-connect' ),
2829
-		'is_not_empty' => __( 'is not empty', 'ayecode-connect' ),
2830
-		'is_equal' => __( 'is equal', 'ayecode-connect' ),
2831
-		'is_not_equal' => __( 'is not equal', 'ayecode-connect' ),
2832
-		'is_greater_than' => __( 'is greater than', 'ayecode-connect' ),
2833
-		'is_less_than' => __( 'is less than', 'ayecode-connect' ),
2834
-		'is_contains' => __( 'is contains', 'ayecode-connect' ),
2835
-		'is_not_contains' => __( 'is not contains', 'ayecode-connect' ),
2836
-	);
2827
+    $options = array(
2828
+        'is_empty' => __( 'is empty', 'ayecode-connect' ),
2829
+        'is_not_empty' => __( 'is not empty', 'ayecode-connect' ),
2830
+        'is_equal' => __( 'is equal', 'ayecode-connect' ),
2831
+        'is_not_equal' => __( 'is not equal', 'ayecode-connect' ),
2832
+        'is_greater_than' => __( 'is greater than', 'ayecode-connect' ),
2833
+        'is_less_than' => __( 'is less than', 'ayecode-connect' ),
2834
+        'is_contains' => __( 'is contains', 'ayecode-connect' ),
2835
+        'is_not_contains' => __( 'is not contains', 'ayecode-connect' ),
2836
+    );
2837 2837
 
2838
-	return apply_filters( 'sd_visibility_field_condition_options', $options );
2838
+    return apply_filters( 'sd_visibility_field_condition_options', $options );
2839 2839
 }
2840 2840
 
2841 2841
 /**
@@ -2846,14 +2846,14 @@  discard block
 block discarded – undo
2846 2846
  * @return array Template type options.
2847 2847
  */
2848 2848
 function sd_visibility_output_options() {
2849
-	$options = array(
2850
-		'hide'          => __( 'Hide Block', 'ayecode-connect' ),
2851
-		'message'       => __( 'Show Custom Message', 'ayecode-connect' ),
2852
-		'page'          => __( 'Show Page Content', 'ayecode-connect' ),
2853
-		'template_part' => __( 'Show Template Part', 'ayecode-connect' ),
2854
-	);
2849
+    $options = array(
2850
+        'hide'          => __( 'Hide Block', 'ayecode-connect' ),
2851
+        'message'       => __( 'Show Custom Message', 'ayecode-connect' ),
2852
+        'page'          => __( 'Show Page Content', 'ayecode-connect' ),
2853
+        'template_part' => __( 'Show Template Part', 'ayecode-connect' ),
2854
+    );
2855 2855
 
2856
-	return apply_filters( 'sd_visibility_output_options', $options );
2856
+    return apply_filters( 'sd_visibility_output_options', $options );
2857 2857
 }
2858 2858
 
2859 2859
 /**
@@ -2865,45 +2865,45 @@  discard block
 block discarded – undo
2865 2865
  * @return array Template page options.
2866 2866
  */
2867 2867
 function sd_template_page_options( $args = array() ) {
2868
-	global $sd_tmpl_page_options;
2868
+    global $sd_tmpl_page_options;
2869 2869
 
2870
-	if ( ! empty( $sd_tmpl_page_options ) ) {
2871
-		return $sd_tmpl_page_options;
2872
-	}
2870
+    if ( ! empty( $sd_tmpl_page_options ) ) {
2871
+        return $sd_tmpl_page_options;
2872
+    }
2873 2873
 
2874
-	$args = wp_parse_args( $args, array(
2875
-		'child_of'    => 0,
2876
-		'sort_column' => 'post_title',
2877
-		'sort_order'  => 'ASC'
2878
-	) );
2874
+    $args = wp_parse_args( $args, array(
2875
+        'child_of'    => 0,
2876
+        'sort_column' => 'post_title',
2877
+        'sort_order'  => 'ASC'
2878
+    ) );
2879 2879
 
2880
-	$exclude_pages = array();
2881
-	if ( $page_on_front = get_option( 'page_on_front' ) ) {
2882
-		$exclude_pages[] = $page_on_front;
2883
-	}
2880
+    $exclude_pages = array();
2881
+    if ( $page_on_front = get_option( 'page_on_front' ) ) {
2882
+        $exclude_pages[] = $page_on_front;
2883
+    }
2884 2884
 
2885
-	if ( $page_for_posts = get_option( 'page_for_posts' ) ) {
2886
-		$exclude_pages[] = $page_for_posts;
2887
-	}
2885
+    if ( $page_for_posts = get_option( 'page_for_posts' ) ) {
2886
+        $exclude_pages[] = $page_for_posts;
2887
+    }
2888 2888
 
2889
-	if ( ! empty( $exclude_pages ) ) {
2890
-		$args['exclude'] = $exclude_pages;
2891
-	}
2889
+    if ( ! empty( $exclude_pages ) ) {
2890
+        $args['exclude'] = $exclude_pages;
2891
+    }
2892 2892
 
2893
-	$pages = get_pages( $args );
2893
+    $pages = get_pages( $args );
2894 2894
 
2895
-	$options = array( '' => __( 'Select Page...', 'ayecode-connect' ) );
2896
-	if ( ! empty( $pages ) ) {
2897
-		foreach ( $pages as $page ) {
2898
-			if ( ! empty( $page->ID ) && ! empty( $page->post_title ) ) {
2899
-				$options[ $page->ID ] = $page->post_title . ' (#' . $page->ID . ')';
2900
-			}
2901
-		}
2902
-	}
2895
+    $options = array( '' => __( 'Select Page...', 'ayecode-connect' ) );
2896
+    if ( ! empty( $pages ) ) {
2897
+        foreach ( $pages as $page ) {
2898
+            if ( ! empty( $page->ID ) && ! empty( $page->post_title ) ) {
2899
+                $options[ $page->ID ] = $page->post_title . ' (#' . $page->ID . ')';
2900
+            }
2901
+        }
2902
+    }
2903 2903
 
2904
-	$sd_tmpl_page_options = $options;
2904
+    $sd_tmpl_page_options = $options;
2905 2905
 
2906
-	return apply_filters( 'sd_template_page_options', $options );
2906
+    return apply_filters( 'sd_template_page_options', $options );
2907 2907
 }
2908 2908
 
2909 2909
 /**
@@ -2915,25 +2915,25 @@  discard block
 block discarded – undo
2915 2915
  * @return array Template part options.
2916 2916
  */
2917 2917
 function sd_template_part_options( $args = array() ) {
2918
-	global $sd_tmpl_part_options;
2918
+    global $sd_tmpl_part_options;
2919 2919
 
2920
-	if ( ! empty( $sd_tmpl_part_options ) ) {
2921
-		return $sd_tmpl_part_options;
2922
-	}
2920
+    if ( ! empty( $sd_tmpl_part_options ) ) {
2921
+        return $sd_tmpl_part_options;
2922
+    }
2923 2923
 
2924
-	$options = array( '' => __( 'Select Template Part...', 'ayecode-connect' ) );
2924
+    $options = array( '' => __( 'Select Template Part...', 'ayecode-connect' ) );
2925 2925
 
2926
-	$parts = get_block_templates( array(), 'wp_template_part' );
2926
+    $parts = get_block_templates( array(), 'wp_template_part' );
2927 2927
 
2928
-	if ( ! empty( $parts ) ) {
2929
-		foreach ( $parts as $part ) {
2930
-			$options[ $part->slug ] = $part->title . ' (#' . $part->slug . ')';
2931
-		}
2932
-	}
2928
+    if ( ! empty( $parts ) ) {
2929
+        foreach ( $parts as $part ) {
2930
+            $options[ $part->slug ] = $part->title . ' (#' . $part->slug . ')';
2931
+        }
2932
+    }
2933 2933
 
2934
-	$sd_tmpl_part_options = $options;
2934
+    $sd_tmpl_part_options = $options;
2935 2935
 
2936
-	return apply_filters( 'sd_template_part_options', $options, $args );
2936
+    return apply_filters( 'sd_template_part_options', $options, $args );
2937 2937
 }
2938 2938
 
2939 2939
 /**
@@ -2945,25 +2945,25 @@  discard block
 block discarded – undo
2945 2945
  * @return array Template part object.
2946 2946
  */
2947 2947
 function sd_get_template_part_by_slug( $slug ) {
2948
-	global $bs_tmpl_part_by_slug;
2948
+    global $bs_tmpl_part_by_slug;
2949 2949
 
2950
-	if ( empty( $bs_tmpl_part_by_slug ) ) {
2951
-		$bs_tmpl_part_by_slug = array();
2952
-	}
2950
+    if ( empty( $bs_tmpl_part_by_slug ) ) {
2951
+        $bs_tmpl_part_by_slug = array();
2952
+    }
2953 2953
 
2954
-	if ( isset( $bs_tmpl_part_by_slug[ $slug ] ) ) {
2955
-		return $bs_tmpl_part_by_slug[ $slug ];
2956
-	}
2954
+    if ( isset( $bs_tmpl_part_by_slug[ $slug ] ) ) {
2955
+        return $bs_tmpl_part_by_slug[ $slug ];
2956
+    }
2957 2957
 
2958
-	$template_query = get_block_templates( array( 'slug__in' => array( $slug ) ), 'wp_template_part' );
2958
+    $template_query = get_block_templates( array( 'slug__in' => array( $slug ) ), 'wp_template_part' );
2959 2959
 
2960
-	$query_post = ! empty( $template_query ) ? $template_query[0] : array();
2960
+    $query_post = ! empty( $template_query ) ? $template_query[0] : array();
2961 2961
 
2962
-	$template_part = ! empty( $query_post ) && $query_post->status == 'publish' ? $query_post : array();
2962
+    $template_part = ! empty( $query_post ) && $query_post->status == 'publish' ? $query_post : array();
2963 2963
 
2964
-	$bs_tmpl_part_by_slug[ $slug ] = $template_part;
2964
+    $bs_tmpl_part_by_slug[ $slug ] = $template_part;
2965 2965
 
2966
-	return apply_filters( 'sd_get_template_part_by_slug', $template_part, $slug );
2966
+    return apply_filters( 'sd_get_template_part_by_slug', $template_part, $slug );
2967 2967
 }
2968 2968
 
2969 2969
 /**
@@ -2976,388 +2976,388 @@  discard block
 block discarded – undo
2976 2976
  * @param WP_Block $instance      The block instance.
2977 2977
  */
2978 2978
 function sd_render_block( $block_content, $block, $instance = '' ) {
2979
-	// No block visibility conditions set.
2980
-	if ( empty( $block['attrs']['visibility_conditions'] ) ) {
2981
-		return $block_content;
2982
-	}
2983
-
2984
-	$attributes = json_decode( $block['attrs']['visibility_conditions'], true );
2985
-	$rules = ! empty( $attributes ) ? sd_block_parse_rules( $attributes ) : array();
2986
-
2987
-	// No rules set.
2988
-	if ( empty( $rules ) ) {
2989
-		return $block_content;
2990
-	}
2991
-
2992
-	$_block_content = $block_content;
2993
-
2994
-	if ( ! empty( $rules ) && sd_block_check_rules( $rules ) ) {
2995
-		if ( ! empty( $attributes['output']['type'] ) ) {
2996
-			switch ( $attributes['output']['type'] ) {
2997
-				case 'hide':
2998
-					$valid_type = true;
2999
-					$content = '';
3000
-
3001
-					break;
3002
-				case 'message':
3003
-					$valid_type = true;
3004
-
3005
-					if ( isset( $attributes['output']['message'] ) ) {
3006
-						$content = $attributes['output']['message'] != '' ? __( stripslashes( $attributes['output']['message'] ), 'ayecode-connect' ) : $attributes['output']['message'];
3007
-
3008
-						if ( ! empty( $attributes['output']['message_type'] ) ) {
3009
-							$content = aui()->alert( array(
3010
-									'type'=> $attributes['output']['message_type'],
3011
-									'content'=> $content
3012
-								)
3013
-							);
3014
-						}
3015
-					}
3016
-
3017
-					break;
3018
-				case 'page':
3019
-					$valid_type = true;
3020
-
3021
-					$page_id = ! empty( $attributes['output']['page'] ) ? absint( $attributes['output']['page'] ) : 0;
3022
-					$content = sd_get_page_content( $page_id );
3023
-
3024
-					break;
3025
-				case 'template_part':
3026
-					$valid_type = true;
3027
-
3028
-					$template_part = ! empty( $attributes['output']['template_part'] ) ? $attributes['output']['template_part'] : '';
3029
-					$content = sd_get_template_part_content( $template_part );
3030
-
3031
-					break;
3032
-				default:
3033
-					$valid_type = false;
3034
-					break;
3035
-			}
3036
-
3037
-			if ( $valid_type ) {
3038
-				$block_content = '<div class="' . esc_attr( wp_get_block_default_classname( $instance->name ) ) . ' sd-block-has-rule">' . $content . '</div>';
3039
-			}
3040
-		}
3041
-	}
3042
-
3043
-	return apply_filters( 'sd_render_block_visibility_content', $block_content, $_block_content, $attributes, $block, $instance );
2979
+    // No block visibility conditions set.
2980
+    if ( empty( $block['attrs']['visibility_conditions'] ) ) {
2981
+        return $block_content;
2982
+    }
2983
+
2984
+    $attributes = json_decode( $block['attrs']['visibility_conditions'], true );
2985
+    $rules = ! empty( $attributes ) ? sd_block_parse_rules( $attributes ) : array();
2986
+
2987
+    // No rules set.
2988
+    if ( empty( $rules ) ) {
2989
+        return $block_content;
2990
+    }
2991
+
2992
+    $_block_content = $block_content;
2993
+
2994
+    if ( ! empty( $rules ) && sd_block_check_rules( $rules ) ) {
2995
+        if ( ! empty( $attributes['output']['type'] ) ) {
2996
+            switch ( $attributes['output']['type'] ) {
2997
+                case 'hide':
2998
+                    $valid_type = true;
2999
+                    $content = '';
3000
+
3001
+                    break;
3002
+                case 'message':
3003
+                    $valid_type = true;
3004
+
3005
+                    if ( isset( $attributes['output']['message'] ) ) {
3006
+                        $content = $attributes['output']['message'] != '' ? __( stripslashes( $attributes['output']['message'] ), 'ayecode-connect' ) : $attributes['output']['message'];
3007
+
3008
+                        if ( ! empty( $attributes['output']['message_type'] ) ) {
3009
+                            $content = aui()->alert( array(
3010
+                                    'type'=> $attributes['output']['message_type'],
3011
+                                    'content'=> $content
3012
+                                )
3013
+                            );
3014
+                        }
3015
+                    }
3016
+
3017
+                    break;
3018
+                case 'page':
3019
+                    $valid_type = true;
3020
+
3021
+                    $page_id = ! empty( $attributes['output']['page'] ) ? absint( $attributes['output']['page'] ) : 0;
3022
+                    $content = sd_get_page_content( $page_id );
3023
+
3024
+                    break;
3025
+                case 'template_part':
3026
+                    $valid_type = true;
3027
+
3028
+                    $template_part = ! empty( $attributes['output']['template_part'] ) ? $attributes['output']['template_part'] : '';
3029
+                    $content = sd_get_template_part_content( $template_part );
3030
+
3031
+                    break;
3032
+                default:
3033
+                    $valid_type = false;
3034
+                    break;
3035
+            }
3036
+
3037
+            if ( $valid_type ) {
3038
+                $block_content = '<div class="' . esc_attr( wp_get_block_default_classname( $instance->name ) ) . ' sd-block-has-rule">' . $content . '</div>';
3039
+            }
3040
+        }
3041
+    }
3042
+
3043
+    return apply_filters( 'sd_render_block_visibility_content', $block_content, $_block_content, $attributes, $block, $instance );
3044 3044
 }
3045 3045
 add_filter( 'render_block', 'sd_render_block', 9, 3 );
3046 3046
 
3047 3047
 function sd_get_page_content( $page_id ) {
3048
-	$content = $page_id > 0 ? get_post_field( 'post_content', (int) $page_id ) : '';
3048
+    $content = $page_id > 0 ? get_post_field( 'post_content', (int) $page_id ) : '';
3049 3049
 
3050
-	// Maybe bypass content
3051
-	$bypass_content = apply_filters( 'sd_bypass_page_content', '', $content, $page_id );
3052
-	if ( $bypass_content ) {
3053
-		return $bypass_content;
3054
-	}
3050
+    // Maybe bypass content
3051
+    $bypass_content = apply_filters( 'sd_bypass_page_content', '', $content, $page_id );
3052
+    if ( $bypass_content ) {
3053
+        return $bypass_content;
3054
+    }
3055 3055
 
3056
-	// Run the shortcodes on the content.
3057
-	$content = do_shortcode( $content );
3056
+    // Run the shortcodes on the content.
3057
+    $content = do_shortcode( $content );
3058 3058
 
3059
-	// Run block content if its available.
3060
-	if ( function_exists( 'do_blocks' ) ) {
3061
-		$content = do_blocks( $content );
3062
-	}
3059
+    // Run block content if its available.
3060
+    if ( function_exists( 'do_blocks' ) ) {
3061
+        $content = do_blocks( $content );
3062
+    }
3063 3063
 
3064
-	return apply_filters( 'sd_get_page_content', $content, $page_id );
3064
+    return apply_filters( 'sd_get_page_content', $content, $page_id );
3065 3065
 }
3066 3066
 
3067 3067
 function sd_get_template_part_content( $template_part ) {
3068
-	$template_part_post = $template_part ? sd_get_template_part_by_slug( $template_part ) : array();
3069
-	$content = ! empty( $template_part_post ) ? $template_part_post->content : '';
3068
+    $template_part_post = $template_part ? sd_get_template_part_by_slug( $template_part ) : array();
3069
+    $content = ! empty( $template_part_post ) ? $template_part_post->content : '';
3070 3070
 
3071
-	// Maybe bypass content
3072
-	$bypass_content = apply_filters( 'sd_bypass_template_part_content', '', $content, $template_part );
3073
-	if ( $bypass_content ) {
3074
-		return $bypass_content;
3075
-	}
3071
+    // Maybe bypass content
3072
+    $bypass_content = apply_filters( 'sd_bypass_template_part_content', '', $content, $template_part );
3073
+    if ( $bypass_content ) {
3074
+        return $bypass_content;
3075
+    }
3076 3076
 
3077
-	// Run the shortcodes on the content.
3078
-	$content = do_shortcode( $content );
3077
+    // Run the shortcodes on the content.
3078
+    $content = do_shortcode( $content );
3079 3079
 
3080
-	// Run block content if its available.
3081
-	if ( function_exists( 'do_blocks' ) ) {
3082
-		$content = do_blocks( $content );
3083
-	}
3080
+    // Run block content if its available.
3081
+    if ( function_exists( 'do_blocks' ) ) {
3082
+        $content = do_blocks( $content );
3083
+    }
3084 3084
 
3085
-	return apply_filters( 'sd_get_template_part_content', $content, $template_part );
3085
+    return apply_filters( 'sd_get_template_part_content', $content, $template_part );
3086 3086
 }
3087 3087
 
3088 3088
 function sd_block_parse_rules( $attrs ) {
3089
-	$rules = array();
3089
+    $rules = array();
3090 3090
 
3091
-	if ( ! empty( $attrs ) && is_array( $attrs ) ) {
3092
-		$attrs_keys = array_keys( $attrs );
3091
+    if ( ! empty( $attrs ) && is_array( $attrs ) ) {
3092
+        $attrs_keys = array_keys( $attrs );
3093 3093
 
3094
-		for ( $i = 1; $i <= count( $attrs_keys ); $i++ ) {
3095
-			if ( ! empty( $attrs[ 'rule' . $i ] ) && is_array( $attrs[ 'rule' . $i ] ) ) {
3096
-				$rules[] = $attrs[ 'rule' . $i ];
3097
-			}
3098
-		}
3099
-	}
3094
+        for ( $i = 1; $i <= count( $attrs_keys ); $i++ ) {
3095
+            if ( ! empty( $attrs[ 'rule' . $i ] ) && is_array( $attrs[ 'rule' . $i ] ) ) {
3096
+                $rules[] = $attrs[ 'rule' . $i ];
3097
+            }
3098
+        }
3099
+    }
3100 3100
 
3101
-	return apply_filters( 'sd_block_parse_rules', $rules, $attrs );
3101
+    return apply_filters( 'sd_block_parse_rules', $rules, $attrs );
3102 3102
 }
3103 3103
 
3104 3104
 function sd_block_check_rules( $rules ) {
3105
-	if ( ! ( is_array( $rules ) && ! empty( $rules ) ) ) {
3106
-		return true;
3107
-	}
3105
+    if ( ! ( is_array( $rules ) && ! empty( $rules ) ) ) {
3106
+        return true;
3107
+    }
3108 3108
 
3109
-	foreach ( $rules as $key => $rule ) {
3110
-		$match = apply_filters( 'sd_block_check_rule', true, $rule );
3109
+    foreach ( $rules as $key => $rule ) {
3110
+        $match = apply_filters( 'sd_block_check_rule', true, $rule );
3111 3111
 
3112
-		if ( ! $match ) {
3113
-			break;
3114
-		}
3115
-	}
3112
+        if ( ! $match ) {
3113
+            break;
3114
+        }
3115
+    }
3116 3116
 
3117
-	return apply_filters( 'sd_block_check_rules', $match, $rules );
3117
+    return apply_filters( 'sd_block_check_rules', $match, $rules );
3118 3118
 }
3119 3119
 
3120 3120
 function sd_block_check_rule( $match, $rule ) {
3121
-	global $post;
3121
+    global $post;
3122 3122
 
3123
-	if ( $match && ! empty( $rule['type'] ) ) {
3124
-		switch ( $rule['type'] ) {
3125
-			case 'logged_in':
3126
-				$match = (bool) is_user_logged_in();
3123
+    if ( $match && ! empty( $rule['type'] ) ) {
3124
+        switch ( $rule['type'] ) {
3125
+            case 'logged_in':
3126
+                $match = (bool) is_user_logged_in();
3127 3127
 
3128
-				break;
3129
-			case 'logged_out':
3130
-				$match = ! is_user_logged_in();
3128
+                break;
3129
+            case 'logged_out':
3130
+                $match = ! is_user_logged_in();
3131 3131
 
3132
-				break;
3133
-			case 'post_author':
3134
-				if ( ! empty( $post ) && $post->post_type != 'page' && ! empty( $post->post_author ) && is_user_logged_in() ) {
3135
-					$match = (int) $post->post_author === (int) get_current_user_id() ? true : false;
3136
-				} else {
3137
-					$match = false;
3138
-				}
3132
+                break;
3133
+            case 'post_author':
3134
+                if ( ! empty( $post ) && $post->post_type != 'page' && ! empty( $post->post_author ) && is_user_logged_in() ) {
3135
+                    $match = (int) $post->post_author === (int) get_current_user_id() ? true : false;
3136
+                } else {
3137
+                    $match = false;
3138
+                }
3139 3139
 
3140
-				break;
3141
-			case 'user_roles':
3142
-				$match = false;
3140
+                break;
3141
+            case 'user_roles':
3142
+                $match = false;
3143 3143
 
3144
-				if ( ! empty( $rule['user_roles'] ) ) {
3145
-					$user_roles = is_scalar( $rule['user_roles'] ) ? explode( ",", $rule['user_roles'] ) : $rule['user_roles'];
3144
+                if ( ! empty( $rule['user_roles'] ) ) {
3145
+                    $user_roles = is_scalar( $rule['user_roles'] ) ? explode( ",", $rule['user_roles'] ) : $rule['user_roles'];
3146 3146
 
3147
-					if ( is_array( $user_roles ) ) {
3148
-						$user_roles = array_filter( array_map( 'trim', $user_roles ) );
3149
-					}
3147
+                    if ( is_array( $user_roles ) ) {
3148
+                        $user_roles = array_filter( array_map( 'trim', $user_roles ) );
3149
+                    }
3150 3150
 
3151
-					if ( ! empty( $user_roles ) && is_array( $user_roles ) && is_user_logged_in() && ( $current_user = wp_get_current_user() ) ) {
3152
-						$current_user_roles = $current_user->roles;
3151
+                    if ( ! empty( $user_roles ) && is_array( $user_roles ) && is_user_logged_in() && ( $current_user = wp_get_current_user() ) ) {
3152
+                        $current_user_roles = $current_user->roles;
3153 3153
 
3154
-						foreach ( $user_roles as $role ) {
3155
-							if ( in_array( $role, $current_user_roles ) ) {
3156
-								$match = true;
3157
-							}
3158
-						}
3159
-					}
3160
-				}
3154
+                        foreach ( $user_roles as $role ) {
3155
+                            if ( in_array( $role, $current_user_roles ) ) {
3156
+                                $match = true;
3157
+                            }
3158
+                        }
3159
+                    }
3160
+                }
3161 3161
 
3162
-				break;
3163
-			case 'gd_field':
3164
-				$match = sd_block_check_rule_gd_field( $rule );
3162
+                break;
3163
+            case 'gd_field':
3164
+                $match = sd_block_check_rule_gd_field( $rule );
3165 3165
 
3166
-				break;
3167
-		}
3168
-	}
3166
+                break;
3167
+        }
3168
+    }
3169 3169
 
3170
-	return $match;
3170
+    return $match;
3171 3171
 }
3172 3172
 add_filter( 'sd_block_check_rule', 'sd_block_check_rule', 10, 2 );
3173 3173
 
3174 3174
 function sd_block_check_rule_gd_field( $rule ) {
3175
-	global $gd_post;
3176
-
3177
-	$match_found = false;
3178
-
3179
-	if ( class_exists( 'GeoDirectory' ) && ! empty( $gd_post->ID ) && ! empty( $rule['field'] ) && ! empty( $rule['condition'] ) ) {
3180
-		$args['block_visibility'] = true;
3181
-		$args['key'] = $rule['field'];
3182
-		$args['condition'] = $rule['condition'];
3183
-		$args['search'] = isset( $rule['search'] ) ? $rule['search'] : '';
3184
-
3185
-		if ( $args['key'] == 'street' ) {
3186
-			$args['key'] = 'address';
3187
-		}
3188
-
3189
-		$match_field = $_match_field = $args['key'];
3190
-
3191
-		if ( $match_field == 'address' ) {
3192
-			$match_field = 'street';
3193
-		} elseif ( $match_field == 'post_images' ) {
3194
-			$match_field = 'featured_image';
3195
-		}
3196
-
3197
-		$find_post = $gd_post;
3198
-		$find_post_keys = ! empty( $find_post ) ? array_keys( (array) $find_post ) : array();
3199
-
3200
-		if ( ! empty( $find_post->ID ) && ! in_array( 'post_category', $find_post_keys ) ) {
3201
-			$find_post = geodir_get_post_info( (int) $find_post->ID );
3202
-			$find_post_keys = ! empty( $find_post ) ? array_keys( (array) $find_post ) : array();
3203
-		}
3204
-
3205
-		if ( $match_field === '' || ( ! empty( $find_post_keys ) && ( in_array( $match_field, $find_post_keys ) || in_array( $_match_field, $find_post_keys ) ) ) ) {
3206
-			$address_fields = array( 'street2', 'neighbourhood', 'city', 'region', 'country', 'zip', 'latitude', 'longitude' ); // Address fields
3207
-			$field = array();
3208
-
3209
-			$standard_fields = sd_visibility_gd_standard_fields();
3210
-
3211
-			if ( $match_field && ! in_array( $match_field, array_keys( $standard_fields ) ) && ! in_array( $match_field, $address_fields ) ) {
3212
-				$package_id = geodir_get_post_package_id( $find_post->ID, $find_post->post_type );
3213
-				$fields = geodir_post_custom_fields( $package_id, 'all', $find_post->post_type, 'none' );
3214
-
3215
-				foreach ( $fields as $field_info ) {
3216
-					if ( $match_field == $field_info['htmlvar_name'] ) {
3217
-						$field = $field_info;
3218
-						break;
3219
-					} elseif( $_match_field == $field_info['htmlvar_name'] ) {
3220
-						$field = $field_info;
3221
-						break;
3222
-					}
3223
-				}
3224
-
3225
-				if ( empty( $field ) ) {
3226
-					return false;
3227
-				}
3228
-			}
3229
-
3230
-			// Address fields.
3231
-			if ( in_array( $match_field, $address_fields ) && ( $address_fields = geodir_post_meta_address_fields( '' ) ) ) {
3232
-				if ( ! empty( $address_fields[ $match_field ] ) ) {
3233
-					$field = $address_fields[ $match_field ];
3234
-				}
3235
-			} else if ( in_array( $match_field, array_keys( $standard_fields ) ) ) {
3236
-				if ( ! empty( $standard_fields[ $match_field ] ) ) {
3237
-					$field = $standard_fields[ $match_field ];
3238
-				}
3239
-			}
3240
-
3241
-			// Parse search.
3242
-			$search = sd_gd_field_rule_search( $args['search'], $find_post->post_type, $rule, $field, $find_post );
3243
-
3244
-			$is_date = ( ! empty( $field['type'] ) && $field['type'] == 'datepicker' ) || in_array( $match_field, array( 'post_date', 'post_modified' ) ) ? true : false;
3245
-			$is_date = apply_filters( 'geodir_post_badge_is_date', $is_date, $match_field, $field, $args, $find_post );
3246
-
3247
-			$match_value = isset($find_post->{$match_field}) ? esc_attr( trim( $find_post->{$match_field} ) ) : '';
3248
-			$match_found = $match_field === '' ? true : false;
3249
-
3250
-			if ( ! $match_found ) {
3251
-				if ( ( $match_field == 'post_date' || $match_field == 'post_modified' ) && ( empty( $args['condition'] ) || $args['condition'] == 'is_greater_than' || $args['condition'] == 'is_less_than' ) ) {
3252
-					if ( strpos( $search, '+' ) === false && strpos( $search, '-' ) === false ) {
3253
-						$search = '+' . $search;
3254
-					}
3255
-					$the_time = $match_field == 'post_modified' ? get_the_modified_date( 'Y-m-d', $find_post ) : get_the_time( 'Y-m-d', $find_post );
3256
-					$until_time = strtotime( $the_time . ' ' . $search . ' days' );
3257
-					$now_time   = strtotime( date_i18n( 'Y-m-d', current_time( 'timestamp' ) ) );
3258
-					if ( ( empty( $args['condition'] ) || $args['condition'] == 'is_less_than' ) && $until_time > $now_time ) {
3259
-						$match_found = true;
3260
-					} elseif ( $args['condition'] == 'is_greater_than' && $until_time < $now_time ) {
3261
-						$match_found = true;
3262
-					}
3263
-				} else {
3264
-					switch ( $args['condition'] ) {
3265
-						case 'is_equal':
3266
-							$match_found = (bool) ( $search != '' && $match_value == $search );
3267
-							break;
3268
-						case 'is_not_equal':
3269
-							$match_found = (bool) ( $search != '' && $match_value != $search );
3270
-							break;
3271
-						case 'is_greater_than':
3272
-							$match_found = (bool) ( $search != '' && ( is_float( $search ) || is_numeric( $search ) ) && ( is_float( $match_value ) || is_numeric( $match_value ) ) && $match_value > $search );
3273
-							break;
3274
-						case 'is_less_than':
3275
-							$match_found = (bool) ( $search != '' && ( is_float( $search ) || is_numeric( $search ) ) && ( is_float( $match_value ) || is_numeric( $match_value ) ) && $match_value < $search );
3276
-							break;
3277
-						case 'is_empty':
3278
-							$match_found = (bool) ( $match_value === '' || $match_value === false || $match_value === '0' || is_null( $match_value ) );
3279
-							break;
3280
-						case 'is_not_empty':
3281
-							$match_found = (bool) ( $match_value !== '' && $match_value !== false && $match_value !== '0' && ! is_null( $match_value ) );
3282
-							break;
3283
-						case 'is_contains':
3284
-							$match_found = (bool) ( $search != '' && stripos( $match_value, $search ) !== false );
3285
-							break;
3286
-						case 'is_not_contains':
3287
-							$match_found = (bool) ( $search != '' && stripos( $match_value, $search ) === false );
3288
-							break;
3289
-					}
3290
-				}
3291
-			}
3292
-
3293
-			$match_found = apply_filters( 'geodir_post_badge_check_match_found', $match_found, $args, $find_post );
3294
-		}
3295
-	}
3296
-
3297
-	return $match_found;
3175
+    global $gd_post;
3176
+
3177
+    $match_found = false;
3178
+
3179
+    if ( class_exists( 'GeoDirectory' ) && ! empty( $gd_post->ID ) && ! empty( $rule['field'] ) && ! empty( $rule['condition'] ) ) {
3180
+        $args['block_visibility'] = true;
3181
+        $args['key'] = $rule['field'];
3182
+        $args['condition'] = $rule['condition'];
3183
+        $args['search'] = isset( $rule['search'] ) ? $rule['search'] : '';
3184
+
3185
+        if ( $args['key'] == 'street' ) {
3186
+            $args['key'] = 'address';
3187
+        }
3188
+
3189
+        $match_field = $_match_field = $args['key'];
3190
+
3191
+        if ( $match_field == 'address' ) {
3192
+            $match_field = 'street';
3193
+        } elseif ( $match_field == 'post_images' ) {
3194
+            $match_field = 'featured_image';
3195
+        }
3196
+
3197
+        $find_post = $gd_post;
3198
+        $find_post_keys = ! empty( $find_post ) ? array_keys( (array) $find_post ) : array();
3199
+
3200
+        if ( ! empty( $find_post->ID ) && ! in_array( 'post_category', $find_post_keys ) ) {
3201
+            $find_post = geodir_get_post_info( (int) $find_post->ID );
3202
+            $find_post_keys = ! empty( $find_post ) ? array_keys( (array) $find_post ) : array();
3203
+        }
3204
+
3205
+        if ( $match_field === '' || ( ! empty( $find_post_keys ) && ( in_array( $match_field, $find_post_keys ) || in_array( $_match_field, $find_post_keys ) ) ) ) {
3206
+            $address_fields = array( 'street2', 'neighbourhood', 'city', 'region', 'country', 'zip', 'latitude', 'longitude' ); // Address fields
3207
+            $field = array();
3208
+
3209
+            $standard_fields = sd_visibility_gd_standard_fields();
3210
+
3211
+            if ( $match_field && ! in_array( $match_field, array_keys( $standard_fields ) ) && ! in_array( $match_field, $address_fields ) ) {
3212
+                $package_id = geodir_get_post_package_id( $find_post->ID, $find_post->post_type );
3213
+                $fields = geodir_post_custom_fields( $package_id, 'all', $find_post->post_type, 'none' );
3214
+
3215
+                foreach ( $fields as $field_info ) {
3216
+                    if ( $match_field == $field_info['htmlvar_name'] ) {
3217
+                        $field = $field_info;
3218
+                        break;
3219
+                    } elseif( $_match_field == $field_info['htmlvar_name'] ) {
3220
+                        $field = $field_info;
3221
+                        break;
3222
+                    }
3223
+                }
3224
+
3225
+                if ( empty( $field ) ) {
3226
+                    return false;
3227
+                }
3228
+            }
3229
+
3230
+            // Address fields.
3231
+            if ( in_array( $match_field, $address_fields ) && ( $address_fields = geodir_post_meta_address_fields( '' ) ) ) {
3232
+                if ( ! empty( $address_fields[ $match_field ] ) ) {
3233
+                    $field = $address_fields[ $match_field ];
3234
+                }
3235
+            } else if ( in_array( $match_field, array_keys( $standard_fields ) ) ) {
3236
+                if ( ! empty( $standard_fields[ $match_field ] ) ) {
3237
+                    $field = $standard_fields[ $match_field ];
3238
+                }
3239
+            }
3240
+
3241
+            // Parse search.
3242
+            $search = sd_gd_field_rule_search( $args['search'], $find_post->post_type, $rule, $field, $find_post );
3243
+
3244
+            $is_date = ( ! empty( $field['type'] ) && $field['type'] == 'datepicker' ) || in_array( $match_field, array( 'post_date', 'post_modified' ) ) ? true : false;
3245
+            $is_date = apply_filters( 'geodir_post_badge_is_date', $is_date, $match_field, $field, $args, $find_post );
3246
+
3247
+            $match_value = isset($find_post->{$match_field}) ? esc_attr( trim( $find_post->{$match_field} ) ) : '';
3248
+            $match_found = $match_field === '' ? true : false;
3249
+
3250
+            if ( ! $match_found ) {
3251
+                if ( ( $match_field == 'post_date' || $match_field == 'post_modified' ) && ( empty( $args['condition'] ) || $args['condition'] == 'is_greater_than' || $args['condition'] == 'is_less_than' ) ) {
3252
+                    if ( strpos( $search, '+' ) === false && strpos( $search, '-' ) === false ) {
3253
+                        $search = '+' . $search;
3254
+                    }
3255
+                    $the_time = $match_field == 'post_modified' ? get_the_modified_date( 'Y-m-d', $find_post ) : get_the_time( 'Y-m-d', $find_post );
3256
+                    $until_time = strtotime( $the_time . ' ' . $search . ' days' );
3257
+                    $now_time   = strtotime( date_i18n( 'Y-m-d', current_time( 'timestamp' ) ) );
3258
+                    if ( ( empty( $args['condition'] ) || $args['condition'] == 'is_less_than' ) && $until_time > $now_time ) {
3259
+                        $match_found = true;
3260
+                    } elseif ( $args['condition'] == 'is_greater_than' && $until_time < $now_time ) {
3261
+                        $match_found = true;
3262
+                    }
3263
+                } else {
3264
+                    switch ( $args['condition'] ) {
3265
+                        case 'is_equal':
3266
+                            $match_found = (bool) ( $search != '' && $match_value == $search );
3267
+                            break;
3268
+                        case 'is_not_equal':
3269
+                            $match_found = (bool) ( $search != '' && $match_value != $search );
3270
+                            break;
3271
+                        case 'is_greater_than':
3272
+                            $match_found = (bool) ( $search != '' && ( is_float( $search ) || is_numeric( $search ) ) && ( is_float( $match_value ) || is_numeric( $match_value ) ) && $match_value > $search );
3273
+                            break;
3274
+                        case 'is_less_than':
3275
+                            $match_found = (bool) ( $search != '' && ( is_float( $search ) || is_numeric( $search ) ) && ( is_float( $match_value ) || is_numeric( $match_value ) ) && $match_value < $search );
3276
+                            break;
3277
+                        case 'is_empty':
3278
+                            $match_found = (bool) ( $match_value === '' || $match_value === false || $match_value === '0' || is_null( $match_value ) );
3279
+                            break;
3280
+                        case 'is_not_empty':
3281
+                            $match_found = (bool) ( $match_value !== '' && $match_value !== false && $match_value !== '0' && ! is_null( $match_value ) );
3282
+                            break;
3283
+                        case 'is_contains':
3284
+                            $match_found = (bool) ( $search != '' && stripos( $match_value, $search ) !== false );
3285
+                            break;
3286
+                        case 'is_not_contains':
3287
+                            $match_found = (bool) ( $search != '' && stripos( $match_value, $search ) === false );
3288
+                            break;
3289
+                    }
3290
+                }
3291
+            }
3292
+
3293
+            $match_found = apply_filters( 'geodir_post_badge_check_match_found', $match_found, $args, $find_post );
3294
+        }
3295
+    }
3296
+
3297
+    return $match_found;
3298 3298
 }
3299 3299
 
3300 3300
 function sd_gd_field_rule_search( $search, $post_type, $rule, $field = array(), $gd_post = array() ) {
3301
-	global $post;
3302
-
3303
-	if ( ! $search ) {
3304
-		return $search;
3305
-	}
3306
-
3307
-	$orig_search = $search;
3308
-	$_search = strtolower( $search );
3309
-
3310
-	if ( ! empty( $rule['field'] ) && $rule['field'] == 'post_author' ) {
3311
-		if ( $search == 'current_user' ) {
3312
-			$search = is_user_logged_in() ? (int) get_current_user_id() : - 1;
3313
-		} else if ( $search == 'current_author' ) {
3314
-			$search = ( ! empty( $post ) && $post->post_type != 'page' && isset( $post->post_author ) ) ? absint( $post->post_author ) : - 1;
3315
-		}
3316
-	} else if ( $_search == 'date_today' ) {
3317
-		$search = date( 'Y-m-d' );
3318
-	} else if ( $_search == 'date_tomorrow' ) {
3319
-		$search = date( 'Y-m-d', strtotime( "+1 day" ) );
3320
-	} else if ( $_search == 'date_yesterday' ) {
3321
-		$search = date( 'Y-m-d', strtotime( "-1 day" ) );
3322
-	} else if ( $_search == 'time_his' ) {
3323
-		$search = date( 'H:i:s' );
3324
-	} else if ( $_search == 'time_hi' ) {
3325
-		$search = date( 'H:i' );
3326
-	} else if ( $_search == 'datetime_now' ) {
3327
-		$search = date( 'Y-m-d H:i:s' );
3328
-	} else if ( strpos( $_search, 'datetime_after_' ) === 0 ) {
3329
-		$_searches = explode( 'datetime_after_', $_search, 2 );
3330
-
3331
-		if ( ! empty( $_searches[1] ) ) {
3332
-			$search = date( 'Y-m-d H:i:s', strtotime( "+ " . str_replace( "_", " ", $_searches[1] ) ) );
3333
-		} else {
3334
-			$search = date( 'Y-m-d H:i:s' );
3335
-		}
3336
-	} else if ( strpos( $_search, 'datetime_before_' ) === 0 ) {
3337
-		$_searches = explode( 'datetime_before_', $_search, 2 );
3338
-
3339
-		if ( ! empty( $_searches[1] ) ) {
3340
-			$search = date( 'Y-m-d H:i:s', strtotime( "- " . str_replace( "_", " ", $_searches[1] ) ) );
3341
-		} else {
3342
-			$search = date( 'Y-m-d H:i:s' );
3343
-		}
3344
-	} else if ( strpos( $_search, 'date_after_' ) === 0 ) {
3345
-		$_searches = explode( 'date_after_', $_search, 2 );
3346
-
3347
-		if ( ! empty( $_searches[1] ) ) {
3348
-			$search = date( 'Y-m-d', strtotime( "+ " . str_replace( "_", " ", $_searches[1] ) ) );
3349
-		} else {
3350
-			$search = date( 'Y-m-d' );
3351
-		}
3352
-	} else if ( strpos( $_search, 'date_before_' ) === 0 ) {
3353
-		$_searches = explode( 'date_before_', $_search, 2 );
3354
-
3355
-		if ( ! empty( $_searches[1] ) ) {
3356
-			$search = date( 'Y-m-d', strtotime( "- " . str_replace( "_", " ", $_searches[1] ) ) );
3357
-		} else {
3358
-			$search = date( 'Y-m-d' );
3359
-		}
3360
-	}
3361
-
3362
-	return apply_filters( 'sd_gd_field_rule_search', $search, $post_type, $rule, $orig_search );
3301
+    global $post;
3302
+
3303
+    if ( ! $search ) {
3304
+        return $search;
3305
+    }
3306
+
3307
+    $orig_search = $search;
3308
+    $_search = strtolower( $search );
3309
+
3310
+    if ( ! empty( $rule['field'] ) && $rule['field'] == 'post_author' ) {
3311
+        if ( $search == 'current_user' ) {
3312
+            $search = is_user_logged_in() ? (int) get_current_user_id() : - 1;
3313
+        } else if ( $search == 'current_author' ) {
3314
+            $search = ( ! empty( $post ) && $post->post_type != 'page' && isset( $post->post_author ) ) ? absint( $post->post_author ) : - 1;
3315
+        }
3316
+    } else if ( $_search == 'date_today' ) {
3317
+        $search = date( 'Y-m-d' );
3318
+    } else if ( $_search == 'date_tomorrow' ) {
3319
+        $search = date( 'Y-m-d', strtotime( "+1 day" ) );
3320
+    } else if ( $_search == 'date_yesterday' ) {
3321
+        $search = date( 'Y-m-d', strtotime( "-1 day" ) );
3322
+    } else if ( $_search == 'time_his' ) {
3323
+        $search = date( 'H:i:s' );
3324
+    } else if ( $_search == 'time_hi' ) {
3325
+        $search = date( 'H:i' );
3326
+    } else if ( $_search == 'datetime_now' ) {
3327
+        $search = date( 'Y-m-d H:i:s' );
3328
+    } else if ( strpos( $_search, 'datetime_after_' ) === 0 ) {
3329
+        $_searches = explode( 'datetime_after_', $_search, 2 );
3330
+
3331
+        if ( ! empty( $_searches[1] ) ) {
3332
+            $search = date( 'Y-m-d H:i:s', strtotime( "+ " . str_replace( "_", " ", $_searches[1] ) ) );
3333
+        } else {
3334
+            $search = date( 'Y-m-d H:i:s' );
3335
+        }
3336
+    } else if ( strpos( $_search, 'datetime_before_' ) === 0 ) {
3337
+        $_searches = explode( 'datetime_before_', $_search, 2 );
3338
+
3339
+        if ( ! empty( $_searches[1] ) ) {
3340
+            $search = date( 'Y-m-d H:i:s', strtotime( "- " . str_replace( "_", " ", $_searches[1] ) ) );
3341
+        } else {
3342
+            $search = date( 'Y-m-d H:i:s' );
3343
+        }
3344
+    } else if ( strpos( $_search, 'date_after_' ) === 0 ) {
3345
+        $_searches = explode( 'date_after_', $_search, 2 );
3346
+
3347
+        if ( ! empty( $_searches[1] ) ) {
3348
+            $search = date( 'Y-m-d', strtotime( "+ " . str_replace( "_", " ", $_searches[1] ) ) );
3349
+        } else {
3350
+            $search = date( 'Y-m-d' );
3351
+        }
3352
+    } else if ( strpos( $_search, 'date_before_' ) === 0 ) {
3353
+        $_searches = explode( 'date_before_', $_search, 2 );
3354
+
3355
+        if ( ! empty( $_searches[1] ) ) {
3356
+            $search = date( 'Y-m-d', strtotime( "- " . str_replace( "_", " ", $_searches[1] ) ) );
3357
+        } else {
3358
+            $search = date( 'Y-m-d' );
3359
+        }
3360
+    }
3361
+
3362
+    return apply_filters( 'sd_gd_field_rule_search', $search, $post_type, $rule, $orig_search );
3363 3363
 }
3364 3364
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +956 added lines, -956 removed lines patch added patch discarded remove patch
@@ -37,7 +37,7 @@  discard block
 block discarded – undo
37 37
  * @return mixed|void
38 38
  */
39 39
 function sd_widget_exclude() {
40
-	return apply_filters( 'sd_widget_exclude', array() );
40
+	return apply_filters('sd_widget_exclude', array());
41 41
 }
42 42
 
43 43
 
@@ -49,11 +49,11 @@  discard block
 block discarded – undo
49 49
  *
50 50
  * @return array
51 51
  */
52
-function sd_get_margin_input( $type = 'mt', $overwrite = array(), $include_negatives = true ) {
52
+function sd_get_margin_input($type = 'mt', $overwrite = array(), $include_negatives = true) {
53 53
 	global $aui_bs5;
54 54
 	$options = array(
55
-		''     => __( 'None', 'ayecode-connect' ),
56
-		'auto' => __( 'auto', 'ayecode-connect' ),
55
+		''     => __('None', 'ayecode-connect'),
56
+		'auto' => __('auto', 'ayecode-connect'),
57 57
 		'0'    => '0',
58 58
 		'1'    => '1',
59 59
 		'2'    => '2',
@@ -69,7 +69,7 @@  discard block
 block discarded – undo
69 69
 		'12'   => '12',
70 70
 	);
71 71
 
72
-	if ( $include_negatives ) {
72
+	if ($include_negatives) {
73 73
 		$options['n1']  = '-1';
74 74
 		$options['n2']  = '-2';
75 75
 		$options['n3']  = '-3';
@@ -86,37 +86,37 @@  discard block
 block discarded – undo
86 86
 
87 87
 	$defaults = array(
88 88
 		'type'     => 'select',
89
-		'title'    => __( 'Margin top', 'ayecode-connect' ),
89
+		'title'    => __('Margin top', 'ayecode-connect'),
90 90
 		'options'  => $options,
91 91
 		'default'  => '',
92 92
 		'desc_tip' => true,
93
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
93
+		'group'    => __('Wrapper Styles', 'ayecode-connect'),
94 94
 	);
95 95
 
96 96
 	// title
97
-	if ( $type == 'mt' ) {
98
-		$defaults['title'] = __( 'Margin top', 'ayecode-connect' );
97
+	if ($type == 'mt') {
98
+		$defaults['title'] = __('Margin top', 'ayecode-connect');
99 99
 		$defaults['icon']  = 'box-top';
100 100
 		$defaults['row']   = array(
101
-			'title' => __( 'Margins', 'ayecode-connect' ),
101
+			'title' => __('Margins', 'ayecode-connect'),
102 102
 			'key'   => 'wrapper-margins',
103 103
 			'open'  => true,
104 104
 			'class' => 'text-center',
105 105
 		);
106
-	} elseif ( $type == 'mr' ) {
107
-		$defaults['title'] = __( 'Margin right', 'ayecode-connect' );
106
+	} elseif ($type == 'mr') {
107
+		$defaults['title'] = __('Margin right', 'ayecode-connect');
108 108
 		$defaults['icon']  = 'box-right';
109 109
 		$defaults['row']   = array(
110 110
 			'key' => 'wrapper-margins',
111 111
 		);
112
-	} elseif ( $type == 'mb' ) {
113
-		$defaults['title'] = __( 'Margin bottom', 'ayecode-connect' );
112
+	} elseif ($type == 'mb') {
113
+		$defaults['title'] = __('Margin bottom', 'ayecode-connect');
114 114
 		$defaults['icon']  = 'box-bottom';
115 115
 		$defaults['row']   = array(
116 116
 			'key' => 'wrapper-margins',
117 117
 		);
118
-	} elseif ( $type == 'ml' ) {
119
-		$defaults['title'] = __( 'Margin left', 'ayecode-connect' );
118
+	} elseif ($type == 'ml') {
119
+		$defaults['title'] = __('Margin left', 'ayecode-connect');
120 120
 		$defaults['icon']  = 'box-left';
121 121
 		$defaults['row']   = array(
122 122
 			'key'   => 'wrapper-margins',
@@ -124,7 +124,7 @@  discard block
 block discarded – undo
124 124
 		);
125 125
 	}
126 126
 
127
-	$input = wp_parse_args( $overwrite, $defaults );
127
+	$input = wp_parse_args($overwrite, $defaults);
128 128
 
129 129
 	return $input;
130 130
 }
@@ -137,9 +137,9 @@  discard block
 block discarded – undo
137 137
  *
138 138
  * @return array
139 139
  */
140
-function sd_get_padding_input( $type = 'pt', $overwrite = array() ) {
140
+function sd_get_padding_input($type = 'pt', $overwrite = array()) {
141 141
 	$options = array(
142
-		''   => __( 'None', 'ayecode-connect' ),
142
+		''   => __('None', 'ayecode-connect'),
143 143
 		'0'  => '0',
144 144
 		'1'  => '1',
145 145
 		'2'  => '2',
@@ -157,37 +157,37 @@  discard block
 block discarded – undo
157 157
 
158 158
 	$defaults = array(
159 159
 		'type'     => 'select',
160
-		'title'    => __( 'Padding top', 'ayecode-connect' ),
160
+		'title'    => __('Padding top', 'ayecode-connect'),
161 161
 		'options'  => $options,
162 162
 		'default'  => '',
163 163
 		'desc_tip' => true,
164
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
164
+		'group'    => __('Wrapper Styles', 'ayecode-connect'),
165 165
 	);
166 166
 
167 167
 	// title
168
-	if ( $type == 'pt' ) {
169
-		$defaults['title'] = __( 'Padding top', 'ayecode-connect' );
168
+	if ($type == 'pt') {
169
+		$defaults['title'] = __('Padding top', 'ayecode-connect');
170 170
 		$defaults['icon']  = 'box-top';
171 171
 		$defaults['row']   = array(
172
-			'title' => __( 'Padding', 'ayecode-connect' ),
172
+			'title' => __('Padding', 'ayecode-connect'),
173 173
 			'key'   => 'wrapper-padding',
174 174
 			'open'  => true,
175 175
 			'class' => 'text-center',
176 176
 		);
177
-	} elseif ( $type == 'pr' ) {
178
-		$defaults['title'] = __( 'Padding right', 'ayecode-connect' );
177
+	} elseif ($type == 'pr') {
178
+		$defaults['title'] = __('Padding right', 'ayecode-connect');
179 179
 		$defaults['icon']  = 'box-right';
180 180
 		$defaults['row']   = array(
181 181
 			'key' => 'wrapper-padding',
182 182
 		);
183
-	} elseif ( $type == 'pb' ) {
184
-		$defaults['title'] = __( 'Padding bottom', 'ayecode-connect' );
183
+	} elseif ($type == 'pb') {
184
+		$defaults['title'] = __('Padding bottom', 'ayecode-connect');
185 185
 		$defaults['icon']  = 'box-bottom';
186 186
 		$defaults['row']   = array(
187 187
 			'key' => 'wrapper-padding',
188 188
 		);
189
-	} elseif ( $type == 'pl' ) {
190
-		$defaults['title'] = __( 'Padding left', 'ayecode-connect' );
189
+	} elseif ($type == 'pl') {
190
+		$defaults['title'] = __('Padding left', 'ayecode-connect');
191 191
 		$defaults['icon']  = 'box-left';
192 192
 		$defaults['row']   = array(
193 193
 			'key'   => 'wrapper-padding',
@@ -196,7 +196,7 @@  discard block
 block discarded – undo
196 196
 		);
197 197
 	}
198 198
 
199
-	$input = wp_parse_args( $overwrite, $defaults );
199
+	$input = wp_parse_args($overwrite, $defaults);
200 200
 
201 201
 	return $input;
202 202
 }
@@ -209,23 +209,23 @@  discard block
 block discarded – undo
209 209
  *
210 210
  * @return array
211 211
  */
212
-function sd_get_border_input( $type = 'border', $overwrite = array() ) {
212
+function sd_get_border_input($type = 'border', $overwrite = array()) {
213 213
 	global $aui_bs5;
214 214
 
215 215
 	$defaults = array(
216 216
 		'type'     => 'select',
217
-		'title'    => __( 'Border', 'ayecode-connect' ),
217
+		'title'    => __('Border', 'ayecode-connect'),
218 218
 		'options'  => array(),
219 219
 		'default'  => '',
220 220
 		'desc_tip' => true,
221
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
221
+		'group'    => __('Wrapper Styles', 'ayecode-connect'),
222 222
 	);
223 223
 
224 224
 	// title
225
-	if ( 'rounded' === $type ) {
226
-		$defaults['title']           = __( 'Border radius type', 'ayecode-connect' );
225
+	if ('rounded' === $type) {
226
+		$defaults['title']           = __('Border radius type', 'ayecode-connect');
227 227
 		$defaults['options']         = array(
228
-			''               => __( 'Default', 'ayecode-connect' ),
228
+			''               => __('Default', 'ayecode-connect'),
229 229
 			'rounded'        => 'rounded',
230 230
 			'rounded-top'    => 'rounded-top',
231 231
 			'rounded-right'  => 'rounded-right',
@@ -233,12 +233,12 @@  discard block
 block discarded – undo
233 233
 			'rounded-left'   => 'rounded-left',
234 234
 		);
235 235
 		$defaults['element_require'] = '[%border%]';
236
-	} elseif ( 'rounded_size' === $type ) {
237
-		$defaults['title'] = __( 'Border radius size', 'ayecode-connect' );
236
+	} elseif ('rounded_size' === $type) {
237
+		$defaults['title'] = __('Border radius size', 'ayecode-connect');
238 238
 
239
-		if ( $aui_bs5 ) {
239
+		if ($aui_bs5) {
240 240
 			$defaults['options'] = array(
241
-				''       => __( 'Default', 'ayecode-connect' ),
241
+				''       => __('Default', 'ayecode-connect'),
242 242
 				'0'      => '0',
243 243
 				'1'      => '1',
244 244
 				'2'      => '2',
@@ -249,56 +249,56 @@  discard block
 block discarded – undo
249 249
 			);
250 250
 		} else {
251 251
 			$defaults['options'] = array(
252
-				''   => __( 'Default', 'ayecode-connect' ),
253
-				'sm' => __( 'Small', 'ayecode-connect' ),
254
-				'lg' => __( 'Large', 'ayecode-connect' ),
252
+				''   => __('Default', 'ayecode-connect'),
253
+				'sm' => __('Small', 'ayecode-connect'),
254
+				'lg' => __('Large', 'ayecode-connect'),
255 255
 			);
256 256
 		}
257 257
 		$defaults['element_require'] = '[%border%]';
258
-	} elseif ( 'width' === $type ) { // BS%
259
-		$defaults['title']           = __( 'Border width', 'ayecode-connect' );
258
+	} elseif ('width' === $type) { // BS%
259
+		$defaults['title']           = __('Border width', 'ayecode-connect');
260 260
 		$defaults['options']         = array(
261
-			''         => __( 'Default', 'ayecode-connect' ),
261
+			''         => __('Default', 'ayecode-connect'),
262 262
 			'border-2' => '2',
263 263
 			'border-3' => '3',
264 264
 			'border-4' => '4',
265 265
 			'border-5' => '5',
266 266
 		);
267 267
 		$defaults['element_require'] = $aui_bs5 ? '[%border%]' : '1==2';
268
-	} elseif ( 'opacity' === $type ) { // BS%
269
-		$defaults['title']           = __( 'Border opacity', 'ayecode-connect' );
268
+	} elseif ('opacity' === $type) { // BS%
269
+		$defaults['title']           = __('Border opacity', 'ayecode-connect');
270 270
 		$defaults['options']         = array(
271
-			''                  => __( 'Default', 'ayecode-connect' ),
271
+			''                  => __('Default', 'ayecode-connect'),
272 272
 			'border-opacity-75' => '75%',
273 273
 			'border-opacity-50' => '50%',
274 274
 			'border-opacity-25' => '25%',
275 275
 			'border-opacity-10' => '10%',
276 276
 		);
277 277
 		$defaults['element_require'] = $aui_bs5 ? '[%border%]' : '1==2';
278
-	} elseif ( 'type' === $type ) {
279
-		$defaults['title']           = __( 'Border show', 'ayecode-connect' );
278
+	} elseif ('type' === $type) {
279
+		$defaults['title']           = __('Border show', 'ayecode-connect');
280 280
 		$defaults['options']         = array(
281
-			'border'          => __( 'Full (set color to show)', 'ayecode-connect' ),
282
-			'border-top'      => __( 'Top', 'ayecode-connect' ),
283
-			'border-bottom'   => __( 'Bottom', 'ayecode-connect' ),
284
-			'border-left'     => __( 'Left', 'ayecode-connect' ),
285
-			'border-right'    => __( 'Right', 'ayecode-connect' ),
286
-			'border-top-0'    => __( '-Top', 'ayecode-connect' ),
287
-			'border-bottom-0' => __( '-Bottom', 'ayecode-connect' ),
288
-			'border-left-0'   => __( '-Left', 'ayecode-connect' ),
289
-			'border-right-0'  => __( '-Right', 'ayecode-connect' ),
281
+			'border'          => __('Full (set color to show)', 'ayecode-connect'),
282
+			'border-top'      => __('Top', 'ayecode-connect'),
283
+			'border-bottom'   => __('Bottom', 'ayecode-connect'),
284
+			'border-left'     => __('Left', 'ayecode-connect'),
285
+			'border-right'    => __('Right', 'ayecode-connect'),
286
+			'border-top-0'    => __('-Top', 'ayecode-connect'),
287
+			'border-bottom-0' => __('-Bottom', 'ayecode-connect'),
288
+			'border-left-0'   => __('-Left', 'ayecode-connect'),
289
+			'border-right-0'  => __('-Right', 'ayecode-connect'),
290 290
 		);
291 291
 		$defaults['element_require'] = '[%border%]';
292 292
 
293 293
 	} else {
294
-		$defaults['title']   = __( 'Border color', 'ayecode-connect' );
294
+		$defaults['title']   = __('Border color', 'ayecode-connect');
295 295
 		$defaults['options'] = array(
296
-			                       ''  => __( 'Default', 'ayecode-connect' ),
297
-			                       '0' => __( 'None', 'ayecode-connect' ),
296
+			                       ''  => __('Default', 'ayecode-connect'),
297
+			                       '0' => __('None', 'ayecode-connect'),
298 298
 		                       ) + sd_aui_colors();
299 299
 	}
300 300
 
301
-	$input = wp_parse_args( $overwrite, $defaults );
301
+	$input = wp_parse_args($overwrite, $defaults);
302 302
 
303 303
 	return $input;
304 304
 }
@@ -311,24 +311,24 @@  discard block
 block discarded – undo
311 311
  *
312 312
  * @return array
313 313
  */
314
-function sd_get_shadow_input( $type = 'shadow', $overwrite = array() ) {
314
+function sd_get_shadow_input($type = 'shadow', $overwrite = array()) {
315 315
 	$options = array(
316
-		''          => __( 'None', 'ayecode-connect' ),
317
-		'shadow-sm' => __( 'Small', 'ayecode-connect' ),
318
-		'shadow'    => __( 'Regular', 'ayecode-connect' ),
319
-		'shadow-lg' => __( 'Large', 'ayecode-connect' ),
316
+		''          => __('None', 'ayecode-connect'),
317
+		'shadow-sm' => __('Small', 'ayecode-connect'),
318
+		'shadow'    => __('Regular', 'ayecode-connect'),
319
+		'shadow-lg' => __('Large', 'ayecode-connect'),
320 320
 	);
321 321
 
322 322
 	$defaults = array(
323 323
 		'type'     => 'select',
324
-		'title'    => __( 'Shadow', 'ayecode-connect' ),
324
+		'title'    => __('Shadow', 'ayecode-connect'),
325 325
 		'options'  => $options,
326 326
 		'default'  => '',
327 327
 		'desc_tip' => true,
328
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
328
+		'group'    => __('Wrapper Styles', 'ayecode-connect'),
329 329
 	);
330 330
 
331
-	$input = wp_parse_args( $overwrite, $defaults );
331
+	$input = wp_parse_args($overwrite, $defaults);
332 332
 
333 333
 	return $input;
334 334
 }
@@ -341,22 +341,22 @@  discard block
 block discarded – undo
341 341
  *
342 342
  * @return array
343 343
  */
344
-function sd_get_background_input( $type = 'bg', $overwrite = array() ) {
344
+function sd_get_background_input($type = 'bg', $overwrite = array()) {
345 345
 	$options = array(
346
-		           ''            => __( 'None', 'ayecode-connect' ),
347
-		           'transparent' => __( 'Transparent', 'ayecode-connect' ),
346
+		           ''            => __('None', 'ayecode-connect'),
347
+		           'transparent' => __('Transparent', 'ayecode-connect'),
348 348
 	           ) + sd_aui_colors();
349 349
 
350 350
 	$defaults = array(
351 351
 		'type'     => 'select',
352
-		'title'    => __( 'Background color', 'ayecode-connect' ),
352
+		'title'    => __('Background color', 'ayecode-connect'),
353 353
 		'options'  => $options,
354 354
 		'default'  => '',
355 355
 		'desc_tip' => true,
356
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
356
+		'group'    => __('Wrapper Styles', 'ayecode-connect'),
357 357
 	);
358 358
 
359
-	$input = wp_parse_args( $overwrite, $defaults );
359
+	$input = wp_parse_args($overwrite, $defaults);
360 360
 
361 361
 	return $input;
362 362
 }
@@ -369,9 +369,9 @@  discard block
 block discarded – undo
369 369
  *
370 370
  * @return array
371 371
  */
372
-function sd_get_opacity_input( $type = 'opacity', $overwrite = array() ) {
372
+function sd_get_opacity_input($type = 'opacity', $overwrite = array()) {
373 373
 	$options = array(
374
-		''            => __( 'Default', 'ayecode-connect' ),
374
+		''            => __('Default', 'ayecode-connect'),
375 375
 		'opacity-10'  => '10%',
376 376
 		'opacity-15'  => '15%',
377 377
 		'opacity-25'  => '25%',
@@ -389,14 +389,14 @@  discard block
 block discarded – undo
389 389
 
390 390
 	$defaults = array(
391 391
 		'type'     => 'select',
392
-		'title'    => __( 'Opacity', 'ayecode-connect' ),
392
+		'title'    => __('Opacity', 'ayecode-connect'),
393 393
 		'options'  => $options,
394 394
 		'default'  => '',
395 395
 		'desc_tip' => true,
396
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
396
+		'group'    => __('Wrapper Styles', 'ayecode-connect'),
397 397
 	);
398 398
 
399
-	$input = wp_parse_args( $overwrite, $defaults );
399
+	$input = wp_parse_args($overwrite, $defaults);
400 400
 
401 401
 	return $input;
402 402
 }
@@ -409,102 +409,102 @@  discard block
 block discarded – undo
409 409
  *
410 410
  * @return array
411 411
  */
412
-function sd_get_background_inputs( $type = 'bg', $overwrite = array(), $overwrite_color = array(), $overwrite_gradient = array(), $overwrite_image = array(), $include_button_colors = false ) {
412
+function sd_get_background_inputs($type = 'bg', $overwrite = array(), $overwrite_color = array(), $overwrite_gradient = array(), $overwrite_image = array(), $include_button_colors = false) {
413 413
 
414
-	$color_options = $include_button_colors ? sd_aui_colors( false, true, true, true ) : sd_aui_colors();
414
+	$color_options = $include_button_colors ? sd_aui_colors(false, true, true, true) : sd_aui_colors();
415 415
 
416 416
 	$options = array(
417
-		           ''            => __( 'None', 'ayecode-connect' ),
418
-		           'transparent' => __( 'Transparent', 'ayecode-connect' ),
417
+		           ''            => __('None', 'ayecode-connect'),
418
+		           'transparent' => __('Transparent', 'ayecode-connect'),
419 419
 	           ) + $color_options;
420 420
 
421
-	if ( false !== $overwrite_color ) {
422
-		$options['custom-color'] = __( 'Custom Color', 'ayecode-connect' );
421
+	if (false !== $overwrite_color) {
422
+		$options['custom-color'] = __('Custom Color', 'ayecode-connect');
423 423
 	}
424 424
 
425
-	if ( false !== $overwrite_gradient ) {
426
-		$options['custom-gradient'] = __( 'Custom Gradient', 'ayecode-connect' );
425
+	if (false !== $overwrite_gradient) {
426
+		$options['custom-gradient'] = __('Custom Gradient', 'ayecode-connect');
427 427
 	}
428 428
 
429 429
 	$defaults = array(
430 430
 		'type'     => 'select',
431
-		'title'    => __( 'Background Color', 'ayecode-connect' ),
431
+		'title'    => __('Background Color', 'ayecode-connect'),
432 432
 		'options'  => $options,
433 433
 		'default'  => '',
434 434
 		'desc_tip' => true,
435
-		'group'    => __( 'Background', 'ayecode-connect' ),
435
+		'group'    => __('Background', 'ayecode-connect'),
436 436
 	);
437 437
 
438
-	if ( $overwrite !== false ) {
439
-		$input[ $type ] = wp_parse_args( $overwrite, $defaults );
438
+	if ($overwrite !== false) {
439
+		$input[$type] = wp_parse_args($overwrite, $defaults);
440 440
 	}
441 441
 
442
-	if ( $overwrite_color !== false ) {
443
-		$input[ $type . '_color' ] = wp_parse_args(
442
+	if ($overwrite_color !== false) {
443
+		$input[$type . '_color'] = wp_parse_args(
444 444
 			$overwrite_color,
445 445
 			array(
446 446
 				'type'            => 'color',
447
-				'title'           => __( 'Custom color', 'ayecode-connect' ),
447
+				'title'           => __('Custom color', 'ayecode-connect'),
448 448
 				'placeholder'     => '',
449 449
 				'default'         => '#0073aa',
450 450
 				'desc_tip'        => true,
451
-				'group'           => __( 'Background', 'ayecode-connect' ),
451
+				'group'           => __('Background', 'ayecode-connect'),
452 452
 				'element_require' => '[%' . $type . '%]=="custom-color"',
453 453
 			)
454 454
 		);
455 455
 	}
456 456
 
457
-	if ( $overwrite_gradient !== false ) {
458
-		$input[ $type . '_gradient' ] = wp_parse_args(
457
+	if ($overwrite_gradient !== false) {
458
+		$input[$type . '_gradient'] = wp_parse_args(
459 459
 			$overwrite_gradient,
460 460
 			array(
461 461
 				'type'            => 'gradient',
462
-				'title'           => __( 'Custom gradient', 'ayecode-connect' ),
462
+				'title'           => __('Custom gradient', 'ayecode-connect'),
463 463
 				'placeholder'     => '',
464 464
 				'default'         => 'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
465 465
 				'desc_tip'        => true,
466
-				'group'           => __( 'Background', 'ayecode-connect' ),
466
+				'group'           => __('Background', 'ayecode-connect'),
467 467
 				'element_require' => '[%' . $type . '%]=="custom-gradient"',
468 468
 			)
469 469
 		);
470 470
 	}
471 471
 
472
-	if ( $overwrite_image !== false ) {
472
+	if ($overwrite_image !== false) {
473 473
 
474
-		$input[ $type . '_image_fixed' ] = array(
474
+		$input[$type . '_image_fixed'] = array(
475 475
 			'type'            => 'checkbox',
476
-			'title'           => __( 'Fixed background', 'ayecode-connect' ),
476
+			'title'           => __('Fixed background', 'ayecode-connect'),
477 477
 			'default'         => '',
478 478
 			'desc_tip'        => true,
479
-			'group'           => ! empty( $overwrite_image['group'] ) ? $overwrite_image['group'] : __( 'Background', 'ayecode-connect' ),
479
+			'group'           => !empty($overwrite_image['group']) ? $overwrite_image['group'] : __('Background', 'ayecode-connect'),
480 480
 			'element_require' => '( [%' . $type . '%]=="" || [%' . $type . '%]=="custom-color" || [%' . $type . '%]=="custom-gradient" || [%' . $type . '%]=="transparent" )',
481 481
 
482 482
 		);
483 483
 
484
-		$input[ $type . '_image_use_featured' ] = array(
484
+		$input[$type . '_image_use_featured'] = array(
485 485
 			'type'            => 'checkbox',
486
-			'title'           => __( 'Use featured image', 'ayecode-connect' ),
486
+			'title'           => __('Use featured image', 'ayecode-connect'),
487 487
 			'default'         => '',
488 488
 			'desc_tip'        => true,
489
-			'group'           => ! empty( $overwrite_image['group'] ) ? $overwrite_image['group'] : __( 'Background', 'ayecode-connect' ),
489
+			'group'           => !empty($overwrite_image['group']) ? $overwrite_image['group'] : __('Background', 'ayecode-connect'),
490 490
 			'element_require' => '( [%' . $type . '%]=="" || [%' . $type . '%]=="custom-color" || [%' . $type . '%]=="custom-gradient" || [%' . $type . '%]=="transparent" )',
491 491
 
492 492
 		);
493 493
 
494
-		$input[ $type . '_image' ] = wp_parse_args(
494
+		$input[$type . '_image'] = wp_parse_args(
495 495
 			$overwrite_image,
496 496
 			array(
497 497
 				'type'        => 'image',
498
-				'title'       => __( 'Custom image', 'ayecode-connect' ),
498
+				'title'       => __('Custom image', 'ayecode-connect'),
499 499
 				'placeholder' => '',
500 500
 				'default'     => '',
501 501
 				'desc_tip'    => true,
502
-				'group'       => __( 'Background', 'ayecode-connect' ),
502
+				'group'       => __('Background', 'ayecode-connect'),
503 503
 				//          'element_require' => ' ![%' . $type . '_image_use_featured%] '
504 504
 			)
505 505
 		);
506 506
 
507
-		$input[ $type . '_image_id' ] = wp_parse_args(
507
+		$input[$type . '_image_id'] = wp_parse_args(
508 508
 			$overwrite_image,
509 509
 			array(
510 510
 				'type'        => 'hidden',
@@ -512,18 +512,18 @@  discard block
 block discarded – undo
512 512
 				'title'       => '',
513 513
 				'placeholder' => '',
514 514
 				'default'     => '',
515
-				'group'       => __( 'Background', 'ayecode-connect' ),
515
+				'group'       => __('Background', 'ayecode-connect'),
516 516
 			)
517 517
 		);
518 518
 
519
-		$input[ $type . '_image_xy' ] = wp_parse_args(
519
+		$input[$type . '_image_xy'] = wp_parse_args(
520 520
 			$overwrite_image,
521 521
 			array(
522 522
 				'type'        => 'image_xy',
523 523
 				'title'       => '',
524 524
 				'placeholder' => '',
525 525
 				'default'     => '',
526
-				'group'       => __( 'Background', 'ayecode-connect' ),
526
+				'group'       => __('Background', 'ayecode-connect'),
527 527
 			)
528 528
 		);
529 529
 	}
@@ -539,102 +539,102 @@  discard block
 block discarded – undo
539 539
  *
540 540
  * @return array
541 541
  */
542
-function sd_get_shape_divider_inputs( $type = 'sd', $overwrite = array(), $overwrite_color = array(), $overwrite_gradient = array(), $overwrite_image = array() ) {
542
+function sd_get_shape_divider_inputs($type = 'sd', $overwrite = array(), $overwrite_color = array(), $overwrite_gradient = array(), $overwrite_image = array()) {
543 543
 
544 544
 	$options = array(
545
-		''                      => __( 'None', 'ayecode-connect' ),
546
-		'mountains'             => __( 'Mountains', 'ayecode-connect' ),
547
-		'drops'                 => __( 'Drops', 'ayecode-connect' ),
548
-		'clouds'                => __( 'Clouds', 'ayecode-connect' ),
549
-		'zigzag'                => __( 'Zigzag', 'ayecode-connect' ),
550
-		'pyramids'              => __( 'Pyramids', 'ayecode-connect' ),
551
-		'triangle'              => __( 'Triangle', 'ayecode-connect' ),
552
-		'triangle-asymmetrical' => __( 'Triangle Asymmetrical', 'ayecode-connect' ),
553
-		'tilt'                  => __( 'Tilt', 'ayecode-connect' ),
554
-		'opacity-tilt'          => __( 'Opacity Tilt', 'ayecode-connect' ),
555
-		'opacity-fan'           => __( 'Opacity Fan', 'ayecode-connect' ),
556
-		'curve'                 => __( 'Curve', 'ayecode-connect' ),
557
-		'curve-asymmetrical'    => __( 'Curve Asymmetrical', 'ayecode-connect' ),
558
-		'waves'                 => __( 'Waves', 'ayecode-connect' ),
559
-		'wave-brush'            => __( 'Wave Brush', 'ayecode-connect' ),
560
-		'waves-pattern'         => __( 'Waves Pattern', 'ayecode-connect' ),
561
-		'arrow'                 => __( 'Arrow', 'ayecode-connect' ),
562
-		'split'                 => __( 'Split', 'ayecode-connect' ),
563
-		'book'                  => __( 'Book', 'ayecode-connect' ),
545
+		''                      => __('None', 'ayecode-connect'),
546
+		'mountains'             => __('Mountains', 'ayecode-connect'),
547
+		'drops'                 => __('Drops', 'ayecode-connect'),
548
+		'clouds'                => __('Clouds', 'ayecode-connect'),
549
+		'zigzag'                => __('Zigzag', 'ayecode-connect'),
550
+		'pyramids'              => __('Pyramids', 'ayecode-connect'),
551
+		'triangle'              => __('Triangle', 'ayecode-connect'),
552
+		'triangle-asymmetrical' => __('Triangle Asymmetrical', 'ayecode-connect'),
553
+		'tilt'                  => __('Tilt', 'ayecode-connect'),
554
+		'opacity-tilt'          => __('Opacity Tilt', 'ayecode-connect'),
555
+		'opacity-fan'           => __('Opacity Fan', 'ayecode-connect'),
556
+		'curve'                 => __('Curve', 'ayecode-connect'),
557
+		'curve-asymmetrical'    => __('Curve Asymmetrical', 'ayecode-connect'),
558
+		'waves'                 => __('Waves', 'ayecode-connect'),
559
+		'wave-brush'            => __('Wave Brush', 'ayecode-connect'),
560
+		'waves-pattern'         => __('Waves Pattern', 'ayecode-connect'),
561
+		'arrow'                 => __('Arrow', 'ayecode-connect'),
562
+		'split'                 => __('Split', 'ayecode-connect'),
563
+		'book'                  => __('Book', 'ayecode-connect'),
564 564
 	);
565 565
 
566 566
 	$defaults = array(
567 567
 		'type'     => 'select',
568
-		'title'    => __( 'Type', 'ayecode-connect' ),
568
+		'title'    => __('Type', 'ayecode-connect'),
569 569
 		'options'  => $options,
570 570
 		'default'  => '',
571 571
 		'desc_tip' => true,
572
-		'group'    => __( 'Shape Divider', 'ayecode-connect' ),
572
+		'group'    => __('Shape Divider', 'ayecode-connect'),
573 573
 	);
574 574
 
575
-	$input[ $type ] = wp_parse_args( $overwrite, $defaults );
575
+	$input[$type] = wp_parse_args($overwrite, $defaults);
576 576
 
577
-	$input[ $type . '_notice' ] = array(
577
+	$input[$type . '_notice'] = array(
578 578
 		'type'            => 'notice',
579
-		'desc'            => __( 'Parent element must be position `relative`', 'ayecode-connect' ),
579
+		'desc'            => __('Parent element must be position `relative`', 'ayecode-connect'),
580 580
 		'status'          => 'warning',
581
-		'group'           => __( 'Shape Divider', 'ayecode-connect' ),
581
+		'group'           => __('Shape Divider', 'ayecode-connect'),
582 582
 		'element_require' => '[%' . $type . '%]!=""',
583 583
 	);
584 584
 
585
-	$input[ $type . '_position' ] = wp_parse_args(
585
+	$input[$type . '_position'] = wp_parse_args(
586 586
 		$overwrite_color,
587 587
 		array(
588 588
 			'type'            => 'select',
589
-			'title'           => __( 'Position', 'ayecode-connect' ),
589
+			'title'           => __('Position', 'ayecode-connect'),
590 590
 			'options'         => array(
591
-				'top'    => __( 'Top', 'ayecode-connect' ),
592
-				'bottom' => __( 'Bottom', 'ayecode-connect' ),
591
+				'top'    => __('Top', 'ayecode-connect'),
592
+				'bottom' => __('Bottom', 'ayecode-connect'),
593 593
 			),
594 594
 			'desc_tip'        => true,
595
-			'group'           => __( 'Shape Divider', 'ayecode-connect' ),
595
+			'group'           => __('Shape Divider', 'ayecode-connect'),
596 596
 			'element_require' => '[%' . $type . '%]!=""',
597 597
 		)
598 598
 	);
599 599
 
600 600
 	$options = array(
601
-		           ''            => __( 'None', 'ayecode-connect' ),
602
-		           'transparent' => __( 'Transparent', 'ayecode-connect' ),
601
+		           ''            => __('None', 'ayecode-connect'),
602
+		           'transparent' => __('Transparent', 'ayecode-connect'),
603 603
 	           ) + sd_aui_colors()
604 604
 	           + array(
605
-		           'custom-color' => __( 'Custom Color', 'ayecode-connect' ),
605
+		           'custom-color' => __('Custom Color', 'ayecode-connect'),
606 606
 	           );
607 607
 
608
-	$input[ $type . '_color' ] = wp_parse_args(
608
+	$input[$type . '_color'] = wp_parse_args(
609 609
 		$overwrite_color,
610 610
 		array(
611 611
 			'type'            => 'select',
612
-			'title'           => __( 'Color', 'ayecode-connect' ),
612
+			'title'           => __('Color', 'ayecode-connect'),
613 613
 			'options'         => $options,
614 614
 			'desc_tip'        => true,
615
-			'group'           => __( 'Shape Divider', 'ayecode-connect' ),
615
+			'group'           => __('Shape Divider', 'ayecode-connect'),
616 616
 			'element_require' => '[%' . $type . '%]!=""',
617 617
 		)
618 618
 	);
619 619
 
620
-	$input[ $type . '_custom_color' ] = wp_parse_args(
620
+	$input[$type . '_custom_color'] = wp_parse_args(
621 621
 		$overwrite_color,
622 622
 		array(
623 623
 			'type'            => 'color',
624
-			'title'           => __( 'Custom color', 'ayecode-connect' ),
624
+			'title'           => __('Custom color', 'ayecode-connect'),
625 625
 			'placeholder'     => '',
626 626
 			'default'         => '#0073aa',
627 627
 			'desc_tip'        => true,
628
-			'group'           => __( 'Shape Divider', 'ayecode-connect' ),
628
+			'group'           => __('Shape Divider', 'ayecode-connect'),
629 629
 			'element_require' => '[%' . $type . '_color%]=="custom-color" && [%' . $type . '%]!=""',
630 630
 		)
631 631
 	);
632 632
 
633
-	$input[ $type . '_width' ] = wp_parse_args(
633
+	$input[$type . '_width'] = wp_parse_args(
634 634
 		$overwrite_gradient,
635 635
 		array(
636 636
 			'type'              => 'range',
637
-			'title'             => __( 'Width', 'ayecode-connect' ),
637
+			'title'             => __('Width', 'ayecode-connect'),
638 638
 			'placeholder'       => '',
639 639
 			'default'           => '200',
640 640
 			'desc_tip'          => true,
@@ -642,69 +642,69 @@  discard block
 block discarded – undo
642 642
 				'min' => 100,
643 643
 				'max' => 300,
644 644
 			),
645
-			'group'             => __( 'Shape Divider', 'ayecode-connect' ),
645
+			'group'             => __('Shape Divider', 'ayecode-connect'),
646 646
 			'element_require'   => '[%' . $type . '%]!=""',
647 647
 		)
648 648
 	);
649 649
 
650
-	$input[ $type . '_height' ] = array(
650
+	$input[$type . '_height'] = array(
651 651
 		'type'              => 'range',
652
-		'title'             => __( 'Height', 'ayecode-connect' ),
652
+		'title'             => __('Height', 'ayecode-connect'),
653 653
 		'default'           => '100',
654 654
 		'desc_tip'          => true,
655 655
 		'custom_attributes' => array(
656 656
 			'min' => 0,
657 657
 			'max' => 500,
658 658
 		),
659
-		'group'             => __( 'Shape Divider', 'ayecode-connect' ),
659
+		'group'             => __('Shape Divider', 'ayecode-connect'),
660 660
 		'element_require'   => '[%' . $type . '%]!=""',
661 661
 	);
662 662
 
663 663
 	$requires = array(
664
-		'mountains'             => array( 'flip' ),
665
-		'drops'                 => array( 'flip', 'invert' ),
666
-		'clouds'                => array( 'flip', 'invert' ),
664
+		'mountains'             => array('flip'),
665
+		'drops'                 => array('flip', 'invert'),
666
+		'clouds'                => array('flip', 'invert'),
667 667
 		'zigzag'                => array(),
668
-		'pyramids'              => array( 'flip', 'invert' ),
669
-		'triangle'              => array( 'invert' ),
670
-		'triangle-asymmetrical' => array( 'flip', 'invert' ),
671
-		'tilt'                  => array( 'flip' ),
672
-		'opacity-tilt'          => array( 'flip' ),
668
+		'pyramids'              => array('flip', 'invert'),
669
+		'triangle'              => array('invert'),
670
+		'triangle-asymmetrical' => array('flip', 'invert'),
671
+		'tilt'                  => array('flip'),
672
+		'opacity-tilt'          => array('flip'),
673 673
 		'opacity-fan'           => array(),
674
-		'curve'                 => array( 'invert' ),
675
-		'curve-asymmetrical'    => array( 'flip', 'invert' ),
676
-		'waves'                 => array( 'flip', 'invert' ),
677
-		'wave-brush'            => array( 'flip' ),
678
-		'waves-pattern'         => array( 'flip' ),
679
-		'arrow'                 => array( 'invert' ),
680
-		'split'                 => array( 'invert' ),
681
-		'book'                  => array( 'invert' ),
674
+		'curve'                 => array('invert'),
675
+		'curve-asymmetrical'    => array('flip', 'invert'),
676
+		'waves'                 => array('flip', 'invert'),
677
+		'wave-brush'            => array('flip'),
678
+		'waves-pattern'         => array('flip'),
679
+		'arrow'                 => array('invert'),
680
+		'split'                 => array('invert'),
681
+		'book'                  => array('invert'),
682 682
 	);
683 683
 
684
-	$input[ $type . '_flip' ] = array(
684
+	$input[$type . '_flip'] = array(
685 685
 		'type'            => 'checkbox',
686
-		'title'           => __( 'Flip', 'ayecode-connect' ),
686
+		'title'           => __('Flip', 'ayecode-connect'),
687 687
 		'default'         => '',
688 688
 		'desc_tip'        => true,
689
-		'group'           => __( 'Shape Divider', 'ayecode-connect' ),
690
-		'element_require' => sd_get_element_require_string( $requires, 'flip', 'sd' ),
689
+		'group'           => __('Shape Divider', 'ayecode-connect'),
690
+		'element_require' => sd_get_element_require_string($requires, 'flip', 'sd'),
691 691
 	);
692 692
 
693
-	$input[ $type . '_invert' ] = array(
693
+	$input[$type . '_invert'] = array(
694 694
 		'type'            => 'checkbox',
695
-		'title'           => __( 'Invert', 'ayecode-connect' ),
695
+		'title'           => __('Invert', 'ayecode-connect'),
696 696
 		'default'         => '',
697 697
 		'desc_tip'        => true,
698
-		'group'           => __( 'Shape Divider', 'ayecode-connect' ),
699
-		'element_require' => sd_get_element_require_string( $requires, 'invert', 'sd' ),
698
+		'group'           => __('Shape Divider', 'ayecode-connect'),
699
+		'element_require' => sd_get_element_require_string($requires, 'invert', 'sd'),
700 700
 	);
701 701
 
702
-	$input[ $type . '_btf' ] = array(
702
+	$input[$type . '_btf'] = array(
703 703
 		'type'            => 'checkbox',
704
-		'title'           => __( 'Bring to front', 'ayecode-connect' ),
704
+		'title'           => __('Bring to front', 'ayecode-connect'),
705 705
 		'default'         => '',
706 706
 		'desc_tip'        => true,
707
-		'group'           => __( 'Shape Divider', 'ayecode-connect' ),
707
+		'group'           => __('Shape Divider', 'ayecode-connect'),
708 708
 		'element_require' => '[%' . $type . '%]!=""',
709 709
 
710 710
 	);
@@ -721,19 +721,19 @@  discard block
 block discarded – undo
721 721
  *
722 722
  * @return string
723 723
  */
724
-function sd_get_element_require_string( $args, $key, $type ) {
724
+function sd_get_element_require_string($args, $key, $type) {
725 725
 	$output   = '';
726 726
 	$requires = array();
727 727
 
728
-	if ( ! empty( $args ) ) {
729
-		foreach ( $args as $t => $k ) {
730
-			if ( in_array( $key, $k ) ) {
728
+	if (!empty($args)) {
729
+		foreach ($args as $t => $k) {
730
+			if (in_array($key, $k)) {
731 731
 				$requires[] = '[%' . $type . '%]=="' . $t . '"';
732 732
 			}
733 733
 		}
734 734
 
735
-		if ( ! empty( $requires ) ) {
736
-			$output = '(' . implode( ' || ', $requires ) . ')';
735
+		if (!empty($requires)) {
736
+			$output = '(' . implode(' || ', $requires) . ')';
737 737
 		}
738 738
 	}
739 739
 
@@ -748,39 +748,39 @@  discard block
 block discarded – undo
748 748
  *
749 749
  * @return array
750 750
  */
751
-function sd_get_text_color_input( $type = 'text_color', $overwrite = array(), $has_custom = false ) {
751
+function sd_get_text_color_input($type = 'text_color', $overwrite = array(), $has_custom = false) {
752 752
 	$options = array(
753
-		           '' => __( 'None', 'ayecode-connect' ),
753
+		           '' => __('None', 'ayecode-connect'),
754 754
 	           ) + sd_aui_colors();
755 755
 
756
-	if ( $has_custom ) {
757
-		$options['custom'] = __( 'Custom color', 'ayecode-connect' );
756
+	if ($has_custom) {
757
+		$options['custom'] = __('Custom color', 'ayecode-connect');
758 758
 	}
759 759
 
760 760
 	$defaults = array(
761 761
 		'type'     => 'select',
762
-		'title'    => __( 'Text color', 'ayecode-connect' ),
762
+		'title'    => __('Text color', 'ayecode-connect'),
763 763
 		'options'  => $options,
764 764
 		'default'  => '',
765 765
 		'desc_tip' => true,
766
-		'group'    => __( 'Typography', 'ayecode-connect' ),
766
+		'group'    => __('Typography', 'ayecode-connect'),
767 767
 	);
768 768
 
769
-	$input = wp_parse_args( $overwrite, $defaults );
769
+	$input = wp_parse_args($overwrite, $defaults);
770 770
 
771 771
 	return $input;
772 772
 }
773 773
 
774
-function sd_get_text_color_input_group( $type = 'text_color', $overwrite = array(), $overwrite_custom = array() ) {
774
+function sd_get_text_color_input_group($type = 'text_color', $overwrite = array(), $overwrite_custom = array()) {
775 775
 	$inputs = array();
776 776
 
777
-	if ( $overwrite !== false ) {
778
-		$inputs[ $type ] = sd_get_text_color_input( $type, $overwrite, true );
777
+	if ($overwrite !== false) {
778
+		$inputs[$type] = sd_get_text_color_input($type, $overwrite, true);
779 779
 	}
780 780
 
781
-	if ( $overwrite_custom !== false ) {
781
+	if ($overwrite_custom !== false) {
782 782
 		$custom            = $type . '_custom';
783
-		$inputs[ $custom ] = sd_get_custom_color_input( $custom, $overwrite_custom, $type );
783
+		$inputs[$custom] = sd_get_custom_color_input($custom, $overwrite_custom, $type);
784 784
 	}
785 785
 
786 786
 	return $inputs;
@@ -794,22 +794,22 @@  discard block
 block discarded – undo
794 794
  *
795 795
  * @return array
796 796
  */
797
-function sd_get_custom_color_input( $type = 'color_custom', $overwrite = array(), $parent_type = '' ) {
797
+function sd_get_custom_color_input($type = 'color_custom', $overwrite = array(), $parent_type = '') {
798 798
 
799 799
 	$defaults = array(
800 800
 		'type'        => 'color',
801
-		'title'       => __( 'Custom color', 'ayecode-connect' ),
801
+		'title'       => __('Custom color', 'ayecode-connect'),
802 802
 		'default'     => '',
803 803
 		'placeholder' => '',
804 804
 		'desc_tip'    => true,
805
-		'group'       => __( 'Typography', 'ayecode-connect' ),
805
+		'group'       => __('Typography', 'ayecode-connect'),
806 806
 	);
807 807
 
808
-	if ( $parent_type ) {
808
+	if ($parent_type) {
809 809
 		$defaults['element_require'] = '[%' . $parent_type . '%]=="custom"';
810 810
 	}
811 811
 
812
-	$input = wp_parse_args( $overwrite, $defaults );
812
+	$input = wp_parse_args($overwrite, $defaults);
813 813
 
814 814
 	return $input;
815 815
 }
@@ -822,19 +822,19 @@  discard block
 block discarded – undo
822 822
  *
823 823
  * @return array
824 824
  */
825
-function sd_get_col_input( $type = 'col', $overwrite = array() ) {
825
+function sd_get_col_input($type = 'col', $overwrite = array()) {
826 826
 
827 827
 	$device_size = '';
828
-	if ( ! empty( $overwrite['device_type'] ) ) {
829
-		if ( $overwrite['device_type'] == 'Tablet' ) {
828
+	if (!empty($overwrite['device_type'])) {
829
+		if ($overwrite['device_type'] == 'Tablet') {
830 830
 			$device_size = '-md';
831
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
831
+		} elseif ($overwrite['device_type'] == 'Desktop') {
832 832
 			$device_size = '-lg';
833 833
 		}
834 834
 	}
835 835
 	$options = array(
836
-		''     => __( 'Default', 'ayecode-connect' ),
837
-		'auto' => __( 'auto', 'ayecode-connect' ),
836
+		''     => __('Default', 'ayecode-connect'),
837
+		'auto' => __('auto', 'ayecode-connect'),
838 838
 		'1'    => '1/12',
839 839
 		'2'    => '2/12',
840 840
 		'3'    => '3/12',
@@ -851,15 +851,15 @@  discard block
 block discarded – undo
851 851
 
852 852
 	$defaults = array(
853 853
 		'type'            => 'select',
854
-		'title'           => __( 'Column width', 'ayecode-connect' ),
854
+		'title'           => __('Column width', 'ayecode-connect'),
855 855
 		'options'         => $options,
856 856
 		'default'         => '',
857 857
 		'desc_tip'        => true,
858
-		'group'           => __( 'Container', 'ayecode-connect' ),
858
+		'group'           => __('Container', 'ayecode-connect'),
859 859
 		'element_require' => '[%container%]=="col"',
860 860
 	);
861 861
 
862
-	$input = wp_parse_args( $overwrite, $defaults );
862
+	$input = wp_parse_args($overwrite, $defaults);
863 863
 
864 864
 	return $input;
865 865
 }
@@ -872,18 +872,18 @@  discard block
 block discarded – undo
872 872
  *
873 873
  * @return array
874 874
  */
875
-function sd_get_row_cols_input( $type = 'row_cols', $overwrite = array() ) {
875
+function sd_get_row_cols_input($type = 'row_cols', $overwrite = array()) {
876 876
 
877 877
 	$device_size = '';
878
-	if ( ! empty( $overwrite['device_type'] ) ) {
879
-		if ( $overwrite['device_type'] == 'Tablet' ) {
878
+	if (!empty($overwrite['device_type'])) {
879
+		if ($overwrite['device_type'] == 'Tablet') {
880 880
 			$device_size = '-md';
881
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
881
+		} elseif ($overwrite['device_type'] == 'Desktop') {
882 882
 			$device_size = '-lg';
883 883
 		}
884 884
 	}
885 885
 	$options = array(
886
-		''  => __( 'auto', 'ayecode-connect' ),
886
+		''  => __('auto', 'ayecode-connect'),
887 887
 		'1' => '1',
888 888
 		'2' => '2',
889 889
 		'3' => '3',
@@ -894,15 +894,15 @@  discard block
 block discarded – undo
894 894
 
895 895
 	$defaults = array(
896 896
 		'type'            => 'select',
897
-		'title'           => __( 'Row columns', 'ayecode-connect' ),
897
+		'title'           => __('Row columns', 'ayecode-connect'),
898 898
 		'options'         => $options,
899 899
 		'default'         => '',
900 900
 		'desc_tip'        => true,
901
-		'group'           => __( 'Container', 'ayecode-connect' ),
901
+		'group'           => __('Container', 'ayecode-connect'),
902 902
 		'element_require' => '[%container%]=="row"',
903 903
 	);
904 904
 
905
-	$input = wp_parse_args( $overwrite, $defaults );
905
+	$input = wp_parse_args($overwrite, $defaults);
906 906
 
907 907
 	return $input;
908 908
 }
@@ -915,33 +915,33 @@  discard block
 block discarded – undo
915 915
  *
916 916
  * @return array
917 917
  */
918
-function sd_get_text_align_input( $type = 'text_align', $overwrite = array() ) {
918
+function sd_get_text_align_input($type = 'text_align', $overwrite = array()) {
919 919
 
920 920
 	$device_size = '';
921
-	if ( ! empty( $overwrite['device_type'] ) ) {
922
-		if ( $overwrite['device_type'] == 'Tablet' ) {
921
+	if (!empty($overwrite['device_type'])) {
922
+		if ($overwrite['device_type'] == 'Tablet') {
923 923
 			$device_size = '-md';
924
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
924
+		} elseif ($overwrite['device_type'] == 'Desktop') {
925 925
 			$device_size = '-lg';
926 926
 		}
927 927
 	}
928 928
 	$options = array(
929
-		''                                => __( 'Default', 'ayecode-connect' ),
930
-		'text' . $device_size . '-left'   => __( 'Left', 'ayecode-connect' ),
931
-		'text' . $device_size . '-right'  => __( 'Right', 'ayecode-connect' ),
932
-		'text' . $device_size . '-center' => __( 'Center', 'ayecode-connect' ),
929
+		''                                => __('Default', 'ayecode-connect'),
930
+		'text' . $device_size . '-left'   => __('Left', 'ayecode-connect'),
931
+		'text' . $device_size . '-right'  => __('Right', 'ayecode-connect'),
932
+		'text' . $device_size . '-center' => __('Center', 'ayecode-connect'),
933 933
 	);
934 934
 
935 935
 	$defaults = array(
936 936
 		'type'     => 'select',
937
-		'title'    => __( 'Text align', 'ayecode-connect' ),
937
+		'title'    => __('Text align', 'ayecode-connect'),
938 938
 		'options'  => $options,
939 939
 		'default'  => '',
940 940
 		'desc_tip' => true,
941
-		'group'    => __( 'Typography', 'ayecode-connect' ),
941
+		'group'    => __('Typography', 'ayecode-connect'),
942 942
 	);
943 943
 
944
-	$input = wp_parse_args( $overwrite, $defaults );
944
+	$input = wp_parse_args($overwrite, $defaults);
945 945
 
946 946
 	return $input;
947 947
 }
@@ -954,18 +954,18 @@  discard block
 block discarded – undo
954 954
  *
955 955
  * @return array
956 956
  */
957
-function sd_get_display_input( $type = 'display', $overwrite = array() ) {
957
+function sd_get_display_input($type = 'display', $overwrite = array()) {
958 958
 
959 959
 	$device_size = '';
960
-	if ( ! empty( $overwrite['device_type'] ) ) {
961
-		if ( $overwrite['device_type'] == 'Tablet' ) {
960
+	if (!empty($overwrite['device_type'])) {
961
+		if ($overwrite['device_type'] == 'Tablet') {
962 962
 			$device_size = '-md';
963
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
963
+		} elseif ($overwrite['device_type'] == 'Desktop') {
964 964
 			$device_size = '-lg';
965 965
 		}
966 966
 	}
967 967
 	$options = array(
968
-		''                                   => __( 'Default', 'ayecode-connect' ),
968
+		''                                   => __('Default', 'ayecode-connect'),
969 969
 		'd' . $device_size . '-none'         => 'none',
970 970
 		'd' . $device_size . '-inline'       => 'inline',
971 971
 		'd' . $device_size . '-inline-block' => 'inline-block',
@@ -979,14 +979,14 @@  discard block
 block discarded – undo
979 979
 
980 980
 	$defaults = array(
981 981
 		'type'     => 'select',
982
-		'title'    => __( 'Display', 'ayecode-connect' ),
982
+		'title'    => __('Display', 'ayecode-connect'),
983 983
 		'options'  => $options,
984 984
 		'default'  => '',
985 985
 		'desc_tip' => true,
986
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
986
+		'group'    => __('Wrapper Styles', 'ayecode-connect'),
987 987
 	);
988 988
 
989
-	$input = wp_parse_args( $overwrite, $defaults );
989
+	$input = wp_parse_args($overwrite, $defaults);
990 990
 
991 991
 	return $input;
992 992
 }
@@ -999,17 +999,17 @@  discard block
 block discarded – undo
999 999
  *
1000 1000
  * @return array
1001 1001
  */
1002
-function sd_get_text_justify_input( $type = 'text_justify', $overwrite = array() ) {
1002
+function sd_get_text_justify_input($type = 'text_justify', $overwrite = array()) {
1003 1003
 
1004 1004
 	$defaults = array(
1005 1005
 		'type'     => 'checkbox',
1006
-		'title'    => __( 'Text justify', 'ayecode-connect' ),
1006
+		'title'    => __('Text justify', 'ayecode-connect'),
1007 1007
 		'default'  => '',
1008 1008
 		'desc_tip' => true,
1009
-		'group'    => __( 'Typography', 'ayecode-connect' ),
1009
+		'group'    => __('Typography', 'ayecode-connect'),
1010 1010
 	);
1011 1011
 
1012
-	$input = wp_parse_args( $overwrite, $defaults );
1012
+	$input = wp_parse_args($overwrite, $defaults);
1013 1013
 
1014 1014
 	return $input;
1015 1015
 }
@@ -1023,73 +1023,73 @@  discard block
 block discarded – undo
1023 1023
  *
1024 1024
  * @return array
1025 1025
  */
1026
-function sd_aui_colors( $include_branding = false, $include_outlines = false, $outline_button_only_text = false, $include_translucent = false ) {
1026
+function sd_aui_colors($include_branding = false, $include_outlines = false, $outline_button_only_text = false, $include_translucent = false) {
1027 1027
 	$theme_colors = array();
1028 1028
 
1029
-	$theme_colors['primary']   = __( 'Primary', 'ayecode-connect' );
1030
-	$theme_colors['secondary'] = __( 'Secondary', 'ayecode-connect' );
1031
-	$theme_colors['success']   = __( 'Success', 'ayecode-connect' );
1032
-	$theme_colors['danger']    = __( 'Danger', 'ayecode-connect' );
1033
-	$theme_colors['warning']   = __( 'Warning', 'ayecode-connect' );
1034
-	$theme_colors['info']      = __( 'Info', 'ayecode-connect' );
1035
-	$theme_colors['light']     = __( 'Light', 'ayecode-connect' );
1036
-	$theme_colors['dark']      = __( 'Dark', 'ayecode-connect' );
1037
-	$theme_colors['black']     = __( 'Black', 'ayecode-connect' );
1038
-	$theme_colors['white']     = __( 'White', 'ayecode-connect' );
1039
-	$theme_colors['purple']    = __( 'Purple', 'ayecode-connect' );
1040
-	$theme_colors['salmon']    = __( 'Salmon', 'ayecode-connect' );
1041
-	$theme_colors['cyan']      = __( 'Cyan', 'ayecode-connect' );
1042
-	$theme_colors['gray']      = __( 'Gray', 'ayecode-connect' );
1043
-	$theme_colors['muted']     = __( 'Muted', 'ayecode-connect' );
1044
-	$theme_colors['gray-dark'] = __( 'Gray dark', 'ayecode-connect' );
1045
-	$theme_colors['indigo']    = __( 'Indigo', 'ayecode-connect' );
1046
-	$theme_colors['orange']    = __( 'Orange', 'ayecode-connect' );
1047
-
1048
-	if ( $include_outlines ) {
1049
-		$button_only                       = $outline_button_only_text ? ' ' . __( '(button only)', 'ayecode-connect' ) : '';
1050
-		$theme_colors['outline-primary']   = __( 'Primary outline', 'ayecode-connect' ) . $button_only;
1051
-		$theme_colors['outline-secondary'] = __( 'Secondary outline', 'ayecode-connect' ) . $button_only;
1052
-		$theme_colors['outline-success']   = __( 'Success outline', 'ayecode-connect' ) . $button_only;
1053
-		$theme_colors['outline-danger']    = __( 'Danger outline', 'ayecode-connect' ) . $button_only;
1054
-		$theme_colors['outline-warning']   = __( 'Warning outline', 'ayecode-connect' ) . $button_only;
1055
-		$theme_colors['outline-info']      = __( 'Info outline', 'ayecode-connect' ) . $button_only;
1056
-		$theme_colors['outline-light']     = __( 'Light outline', 'ayecode-connect' ) . $button_only;
1057
-		$theme_colors['outline-dark']      = __( 'Dark outline', 'ayecode-connect' ) . $button_only;
1058
-		$theme_colors['outline-white']     = __( 'White outline', 'ayecode-connect' ) . $button_only;
1059
-		$theme_colors['outline-purple']    = __( 'Purple outline', 'ayecode-connect' ) . $button_only;
1060
-		$theme_colors['outline-salmon']    = __( 'Salmon outline', 'ayecode-connect' ) . $button_only;
1061
-		$theme_colors['outline-cyan']      = __( 'Cyan outline', 'ayecode-connect' ) . $button_only;
1062
-		$theme_colors['outline-gray']      = __( 'Gray outline', 'ayecode-connect' ) . $button_only;
1063
-		$theme_colors['outline-gray-dark'] = __( 'Gray dark outline', 'ayecode-connect' ) . $button_only;
1064
-		$theme_colors['outline-indigo']    = __( 'Indigo outline', 'ayecode-connect' ) . $button_only;
1065
-		$theme_colors['outline-orange']    = __( 'Orange outline', 'ayecode-connect' ) . $button_only;
1066
-	}
1067
-
1068
-	if ( $include_branding ) {
1029
+	$theme_colors['primary']   = __('Primary', 'ayecode-connect');
1030
+	$theme_colors['secondary'] = __('Secondary', 'ayecode-connect');
1031
+	$theme_colors['success']   = __('Success', 'ayecode-connect');
1032
+	$theme_colors['danger']    = __('Danger', 'ayecode-connect');
1033
+	$theme_colors['warning']   = __('Warning', 'ayecode-connect');
1034
+	$theme_colors['info']      = __('Info', 'ayecode-connect');
1035
+	$theme_colors['light']     = __('Light', 'ayecode-connect');
1036
+	$theme_colors['dark']      = __('Dark', 'ayecode-connect');
1037
+	$theme_colors['black']     = __('Black', 'ayecode-connect');
1038
+	$theme_colors['white']     = __('White', 'ayecode-connect');
1039
+	$theme_colors['purple']    = __('Purple', 'ayecode-connect');
1040
+	$theme_colors['salmon']    = __('Salmon', 'ayecode-connect');
1041
+	$theme_colors['cyan']      = __('Cyan', 'ayecode-connect');
1042
+	$theme_colors['gray']      = __('Gray', 'ayecode-connect');
1043
+	$theme_colors['muted']     = __('Muted', 'ayecode-connect');
1044
+	$theme_colors['gray-dark'] = __('Gray dark', 'ayecode-connect');
1045
+	$theme_colors['indigo']    = __('Indigo', 'ayecode-connect');
1046
+	$theme_colors['orange']    = __('Orange', 'ayecode-connect');
1047
+
1048
+	if ($include_outlines) {
1049
+		$button_only                       = $outline_button_only_text ? ' ' . __('(button only)', 'ayecode-connect') : '';
1050
+		$theme_colors['outline-primary']   = __('Primary outline', 'ayecode-connect') . $button_only;
1051
+		$theme_colors['outline-secondary'] = __('Secondary outline', 'ayecode-connect') . $button_only;
1052
+		$theme_colors['outline-success']   = __('Success outline', 'ayecode-connect') . $button_only;
1053
+		$theme_colors['outline-danger']    = __('Danger outline', 'ayecode-connect') . $button_only;
1054
+		$theme_colors['outline-warning']   = __('Warning outline', 'ayecode-connect') . $button_only;
1055
+		$theme_colors['outline-info']      = __('Info outline', 'ayecode-connect') . $button_only;
1056
+		$theme_colors['outline-light']     = __('Light outline', 'ayecode-connect') . $button_only;
1057
+		$theme_colors['outline-dark']      = __('Dark outline', 'ayecode-connect') . $button_only;
1058
+		$theme_colors['outline-white']     = __('White outline', 'ayecode-connect') . $button_only;
1059
+		$theme_colors['outline-purple']    = __('Purple outline', 'ayecode-connect') . $button_only;
1060
+		$theme_colors['outline-salmon']    = __('Salmon outline', 'ayecode-connect') . $button_only;
1061
+		$theme_colors['outline-cyan']      = __('Cyan outline', 'ayecode-connect') . $button_only;
1062
+		$theme_colors['outline-gray']      = __('Gray outline', 'ayecode-connect') . $button_only;
1063
+		$theme_colors['outline-gray-dark'] = __('Gray dark outline', 'ayecode-connect') . $button_only;
1064
+		$theme_colors['outline-indigo']    = __('Indigo outline', 'ayecode-connect') . $button_only;
1065
+		$theme_colors['outline-orange']    = __('Orange outline', 'ayecode-connect') . $button_only;
1066
+	}
1067
+
1068
+	if ($include_branding) {
1069 1069
 		$theme_colors = $theme_colors + sd_aui_branding_colors();
1070 1070
 	}
1071 1071
 
1072
-	if ( $include_translucent ) {
1073
-		$button_only                           = $outline_button_only_text ? ' ' . __( '(button only)', 'ayecode-connect' ) : '';
1074
-		$theme_colors['translucent-primary']   = __( 'Primary translucent', 'ayecode-connect' ) . $button_only;
1075
-		$theme_colors['translucent-secondary'] = __( 'Secondary translucent', 'ayecode-connect' ) . $button_only;
1076
-		$theme_colors['translucent-success']   = __( 'Success translucent', 'ayecode-connect' ) . $button_only;
1077
-		$theme_colors['translucent-danger']    = __( 'Danger translucent', 'ayecode-connect' ) . $button_only;
1078
-		$theme_colors['translucent-warning']   = __( 'Warning translucent', 'ayecode-connect' ) . $button_only;
1079
-		$theme_colors['translucent-info']      = __( 'Info translucent', 'ayecode-connect' ) . $button_only;
1080
-		$theme_colors['translucent-light']     = __( 'Light translucent', 'ayecode-connect' ) . $button_only;
1081
-		$theme_colors['translucent-dark']      = __( 'Dark translucent', 'ayecode-connect' ) . $button_only;
1082
-		$theme_colors['translucent-white']     = __( 'White translucent', 'ayecode-connect' ) . $button_only;
1083
-		$theme_colors['translucent-purple']    = __( 'Purple translucent', 'ayecode-connect' ) . $button_only;
1084
-		$theme_colors['translucent-salmon']    = __( 'Salmon translucent', 'ayecode-connect' ) . $button_only;
1085
-		$theme_colors['translucent-cyan']      = __( 'Cyan translucent', 'ayecode-connect' ) . $button_only;
1086
-		$theme_colors['translucent-gray']      = __( 'Gray translucent', 'ayecode-connect' ) . $button_only;
1087
-		$theme_colors['translucent-gray-dark'] = __( 'Gray dark translucent', 'ayecode-connect' ) . $button_only;
1088
-		$theme_colors['translucent-indigo']    = __( 'Indigo translucent', 'ayecode-connect' ) . $button_only;
1089
-		$theme_colors['translucent-orange']    = __( 'Orange translucent', 'ayecode-connect' ) . $button_only;
1072
+	if ($include_translucent) {
1073
+		$button_only                           = $outline_button_only_text ? ' ' . __('(button only)', 'ayecode-connect') : '';
1074
+		$theme_colors['translucent-primary']   = __('Primary translucent', 'ayecode-connect') . $button_only;
1075
+		$theme_colors['translucent-secondary'] = __('Secondary translucent', 'ayecode-connect') . $button_only;
1076
+		$theme_colors['translucent-success']   = __('Success translucent', 'ayecode-connect') . $button_only;
1077
+		$theme_colors['translucent-danger']    = __('Danger translucent', 'ayecode-connect') . $button_only;
1078
+		$theme_colors['translucent-warning']   = __('Warning translucent', 'ayecode-connect') . $button_only;
1079
+		$theme_colors['translucent-info']      = __('Info translucent', 'ayecode-connect') . $button_only;
1080
+		$theme_colors['translucent-light']     = __('Light translucent', 'ayecode-connect') . $button_only;
1081
+		$theme_colors['translucent-dark']      = __('Dark translucent', 'ayecode-connect') . $button_only;
1082
+		$theme_colors['translucent-white']     = __('White translucent', 'ayecode-connect') . $button_only;
1083
+		$theme_colors['translucent-purple']    = __('Purple translucent', 'ayecode-connect') . $button_only;
1084
+		$theme_colors['translucent-salmon']    = __('Salmon translucent', 'ayecode-connect') . $button_only;
1085
+		$theme_colors['translucent-cyan']      = __('Cyan translucent', 'ayecode-connect') . $button_only;
1086
+		$theme_colors['translucent-gray']      = __('Gray translucent', 'ayecode-connect') . $button_only;
1087
+		$theme_colors['translucent-gray-dark'] = __('Gray dark translucent', 'ayecode-connect') . $button_only;
1088
+		$theme_colors['translucent-indigo']    = __('Indigo translucent', 'ayecode-connect') . $button_only;
1089
+		$theme_colors['translucent-orange']    = __('Orange translucent', 'ayecode-connect') . $button_only;
1090 1090
 	}
1091 1091
 
1092
-	return apply_filters( 'sd_aui_colors', $theme_colors, $include_outlines, $include_branding );
1092
+	return apply_filters('sd_aui_colors', $theme_colors, $include_outlines, $include_branding);
1093 1093
 }
1094 1094
 
1095 1095
 /**
@@ -1099,17 +1099,17 @@  discard block
 block discarded – undo
1099 1099
  */
1100 1100
 function sd_aui_branding_colors() {
1101 1101
 	return array(
1102
-		'facebook'  => __( 'Facebook', 'ayecode-connect' ),
1103
-		'twitter'   => __( 'Twitter', 'ayecode-connect' ),
1104
-		'instagram' => __( 'Instagram', 'ayecode-connect' ),
1105
-		'linkedin'  => __( 'Linkedin', 'ayecode-connect' ),
1106
-		'flickr'    => __( 'Flickr', 'ayecode-connect' ),
1107
-		'github'    => __( 'GitHub', 'ayecode-connect' ),
1108
-		'youtube'   => __( 'YouTube', 'ayecode-connect' ),
1109
-		'wordpress' => __( 'WordPress', 'ayecode-connect' ),
1110
-		'google'    => __( 'Google', 'ayecode-connect' ),
1111
-		'yahoo'     => __( 'Yahoo', 'ayecode-connect' ),
1112
-		'vkontakte' => __( 'Vkontakte', 'ayecode-connect' ),
1102
+		'facebook'  => __('Facebook', 'ayecode-connect'),
1103
+		'twitter'   => __('Twitter', 'ayecode-connect'),
1104
+		'instagram' => __('Instagram', 'ayecode-connect'),
1105
+		'linkedin'  => __('Linkedin', 'ayecode-connect'),
1106
+		'flickr'    => __('Flickr', 'ayecode-connect'),
1107
+		'github'    => __('GitHub', 'ayecode-connect'),
1108
+		'youtube'   => __('YouTube', 'ayecode-connect'),
1109
+		'wordpress' => __('WordPress', 'ayecode-connect'),
1110
+		'google'    => __('Google', 'ayecode-connect'),
1111
+		'yahoo'     => __('Yahoo', 'ayecode-connect'),
1112
+		'vkontakte' => __('Vkontakte', 'ayecode-connect'),
1113 1113
 	);
1114 1114
 }
1115 1115
 
@@ -1122,10 +1122,10 @@  discard block
 block discarded – undo
1122 1122
  *
1123 1123
  * @return array
1124 1124
  */
1125
-function sd_get_container_class_input( $type = 'container', $overwrite = array() ) {
1125
+function sd_get_container_class_input($type = 'container', $overwrite = array()) {
1126 1126
 
1127 1127
 	$options = array(
1128
-		'container'       => __( 'container (default)', 'ayecode-connect' ),
1128
+		'container'       => __('container (default)', 'ayecode-connect'),
1129 1129
 		'container-sm'    => 'container-sm',
1130 1130
 		'container-md'    => 'container-md',
1131 1131
 		'container-lg'    => 'container-lg',
@@ -1141,19 +1141,19 @@  discard block
 block discarded – undo
1141 1141
 		'card-footer'     => 'card-footer',
1142 1142
 		'list-group'      => 'list-group',
1143 1143
 		'list-group-item' => 'list-group-item',
1144
-		''                => __( 'no container class', 'ayecode-connect' ),
1144
+		''                => __('no container class', 'ayecode-connect'),
1145 1145
 	);
1146 1146
 
1147 1147
 	$defaults = array(
1148 1148
 		'type'     => 'select',
1149
-		'title'    => __( 'Type', 'ayecode-connect' ),
1149
+		'title'    => __('Type', 'ayecode-connect'),
1150 1150
 		'options'  => $options,
1151 1151
 		'default'  => '',
1152 1152
 		'desc_tip' => true,
1153
-		'group'    => __( 'Container', 'ayecode-connect' ),
1153
+		'group'    => __('Container', 'ayecode-connect'),
1154 1154
 	);
1155 1155
 
1156
-	$input = wp_parse_args( $overwrite, $defaults );
1156
+	$input = wp_parse_args($overwrite, $defaults);
1157 1157
 
1158 1158
 	return $input;
1159 1159
 }
@@ -1166,10 +1166,10 @@  discard block
 block discarded – undo
1166 1166
  *
1167 1167
  * @return array
1168 1168
  */
1169
-function sd_get_position_class_input( $type = 'position', $overwrite = array() ) {
1169
+function sd_get_position_class_input($type = 'position', $overwrite = array()) {
1170 1170
 
1171 1171
 	$options = array(
1172
-		''                  => __( 'Default', 'ayecode-connect' ),
1172
+		''                  => __('Default', 'ayecode-connect'),
1173 1173
 		'position-static'   => 'static',
1174 1174
 		'position-relative' => 'relative',
1175 1175
 		'position-absolute' => 'absolute',
@@ -1182,14 +1182,14 @@  discard block
 block discarded – undo
1182 1182
 
1183 1183
 	$defaults = array(
1184 1184
 		'type'     => 'select',
1185
-		'title'    => __( 'Position', 'ayecode-connect' ),
1185
+		'title'    => __('Position', 'ayecode-connect'),
1186 1186
 		'options'  => $options,
1187 1187
 		'default'  => '',
1188 1188
 		'desc_tip' => true,
1189
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1189
+		'group'    => __('Wrapper Styles', 'ayecode-connect'),
1190 1190
 	);
1191 1191
 
1192
-	$input = wp_parse_args( $overwrite, $defaults );
1192
+	$input = wp_parse_args($overwrite, $defaults);
1193 1193
 
1194 1194
 	return $input;
1195 1195
 }
@@ -1200,10 +1200,10 @@  discard block
 block discarded – undo
1200 1200
  *
1201 1201
  * @return array
1202 1202
  */
1203
-function sd_get_absolute_position_input( $type = 'absolute_position', $overwrite = array() ) {
1203
+function sd_get_absolute_position_input($type = 'absolute_position', $overwrite = array()) {
1204 1204
 
1205 1205
 	$options = array(
1206
-		''              => __( 'Default', 'ayecode-connect' ),
1206
+		''              => __('Default', 'ayecode-connect'),
1207 1207
 		'top-left'      => 'top-left',
1208 1208
 		'top-center'    => 'top-center',
1209 1209
 		'top-right'     => 'top-right',
@@ -1217,15 +1217,15 @@  discard block
 block discarded – undo
1217 1217
 
1218 1218
 	$defaults = array(
1219 1219
 		'type'            => 'select',
1220
-		'title'           => __( 'Absolute Position', 'ayecode-connect' ),
1220
+		'title'           => __('Absolute Position', 'ayecode-connect'),
1221 1221
 		'options'         => $options,
1222 1222
 		'default'         => '',
1223 1223
 		'desc_tip'        => true,
1224
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1224
+		'group'           => __('Wrapper Styles', 'ayecode-connect'),
1225 1225
 		'element_require' => '[%position%]=="position-absolute"',
1226 1226
 	);
1227 1227
 
1228
-	$input = wp_parse_args( $overwrite, $defaults );
1228
+	$input = wp_parse_args($overwrite, $defaults);
1229 1229
 
1230 1230
 	return $input;
1231 1231
 }
@@ -1238,30 +1238,30 @@  discard block
 block discarded – undo
1238 1238
  *
1239 1239
  * @return array
1240 1240
  */
1241
-function sd_get_sticky_offset_input( $type = 'top', $overwrite = array() ) {
1241
+function sd_get_sticky_offset_input($type = 'top', $overwrite = array()) {
1242 1242
 
1243 1243
 	$defaults = array(
1244 1244
 		'type'            => 'number',
1245
-		'title'           => __( 'Sticky offset', 'ayecode-connect' ),
1245
+		'title'           => __('Sticky offset', 'ayecode-connect'),
1246 1246
 		//'desc' =>  __( 'Sticky offset', 'ayecode-connect' ),
1247 1247
 		'default'         => '',
1248 1248
 		'desc_tip'        => true,
1249
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1249
+		'group'           => __('Wrapper Styles', 'ayecode-connect'),
1250 1250
 		'element_require' => '[%position%]=="sticky" || [%position%]=="sticky-top"',
1251 1251
 	);
1252 1252
 
1253 1253
 	// title
1254
-	if ( $type == 'top' ) {
1255
-		$defaults['title'] = __( 'Top offset', 'ayecode-connect' );
1254
+	if ($type == 'top') {
1255
+		$defaults['title'] = __('Top offset', 'ayecode-connect');
1256 1256
 		$defaults['icon']  = 'box-top';
1257 1257
 		$defaults['row']   = array(
1258
-			'title' => __( 'Sticky offset', 'ayecode-connect' ),
1258
+			'title' => __('Sticky offset', 'ayecode-connect'),
1259 1259
 			'key'   => 'sticky-offset',
1260 1260
 			'open'  => true,
1261 1261
 			'class' => 'text-center',
1262 1262
 		);
1263
-	} elseif ( $type == 'bottom' ) {
1264
-		$defaults['title'] = __( 'Bottom offset', 'ayecode-connect' );
1263
+	} elseif ($type == 'bottom') {
1264
+		$defaults['title'] = __('Bottom offset', 'ayecode-connect');
1265 1265
 		$defaults['icon']  = 'box-bottom';
1266 1266
 		$defaults['row']   = array(
1267 1267
 			'key'   => 'sticky-offset',
@@ -1269,7 +1269,7 @@  discard block
 block discarded – undo
1269 1269
 		);
1270 1270
 	}
1271 1271
 
1272
-	$input = wp_parse_args( $overwrite, $defaults );
1272
+	$input = wp_parse_args($overwrite, $defaults);
1273 1273
 
1274 1274
 	return $input;
1275 1275
 }
@@ -1282,11 +1282,11 @@  discard block
 block discarded – undo
1282 1282
  *
1283 1283
  * @return array
1284 1284
  */
1285
-function sd_get_font_size_input( $type = 'font_size', $overwrite = array(), $has_custom = false ) {
1285
+function sd_get_font_size_input($type = 'font_size', $overwrite = array(), $has_custom = false) {
1286 1286
 	global $aui_bs5;
1287 1287
 
1288
-	$options[] = __( 'Inherit from parent', 'ayecode-connect' );
1289
-	if ( $aui_bs5 ) {
1288
+	$options[] = __('Inherit from parent', 'ayecode-connect');
1289
+	if ($aui_bs5) {
1290 1290
 		// responsive font sizes
1291 1291
 		$options['fs-base'] = 'fs-base (body default)';
1292 1292
 		$options['fs-6']    = 'fs-6';
@@ -1317,25 +1317,25 @@  discard block
 block discarded – undo
1317 1317
 			'display-4' => 'display-4',
1318 1318
 		);
1319 1319
 
1320
-	if ( $aui_bs5 ) {
1320
+	if ($aui_bs5) {
1321 1321
 		$options['display-5'] = 'display-5';
1322 1322
 		$options['display-6'] = 'display-6';
1323 1323
 	}
1324 1324
 
1325
-	if ( $has_custom ) {
1326
-		$options['custom'] = __( 'Custom size', 'ayecode-connect' );
1325
+	if ($has_custom) {
1326
+		$options['custom'] = __('Custom size', 'ayecode-connect');
1327 1327
 	}
1328 1328
 
1329 1329
 	$defaults = array(
1330 1330
 		'type'     => 'select',
1331
-		'title'    => __( 'Font size', 'ayecode-connect' ),
1331
+		'title'    => __('Font size', 'ayecode-connect'),
1332 1332
 		'options'  => $options,
1333 1333
 		'default'  => '',
1334 1334
 		'desc_tip' => true,
1335
-		'group'    => __( 'Typography', 'ayecode-connect' ),
1335
+		'group'    => __('Typography', 'ayecode-connect'),
1336 1336
 	);
1337 1337
 
1338
-	$input = wp_parse_args( $overwrite, $defaults );
1338
+	$input = wp_parse_args($overwrite, $defaults);
1339 1339
 
1340 1340
 	return $input;
1341 1341
 }
@@ -1348,11 +1348,11 @@  discard block
 block discarded – undo
1348 1348
  *
1349 1349
  * @return array
1350 1350
  */
1351
-function sd_get_font_custom_size_input( $type = 'font_size_custom', $overwrite = array(), $parent_type = '' ) {
1351
+function sd_get_font_custom_size_input($type = 'font_size_custom', $overwrite = array(), $parent_type = '') {
1352 1352
 
1353 1353
 	$defaults = array(
1354 1354
 		'type'              => 'number',
1355
-		'title'             => __( 'Font size (rem)', 'ayecode-connect' ),
1355
+		'title'             => __('Font size (rem)', 'ayecode-connect'),
1356 1356
 		'default'           => '',
1357 1357
 		'placeholder'       => '1.25',
1358 1358
 		'custom_attributes' => array(
@@ -1361,14 +1361,14 @@  discard block
 block discarded – undo
1361 1361
 			'max'  => '100',
1362 1362
 		),
1363 1363
 		'desc_tip'          => true,
1364
-		'group'             => __( 'Typography', 'ayecode-connect' ),
1364
+		'group'             => __('Typography', 'ayecode-connect'),
1365 1365
 	);
1366 1366
 
1367
-	if ( $parent_type ) {
1367
+	if ($parent_type) {
1368 1368
 		$defaults['element_require'] = '[%' . $parent_type . '%]=="custom"';
1369 1369
 	}
1370 1370
 
1371
-	$input = wp_parse_args( $overwrite, $defaults );
1371
+	$input = wp_parse_args($overwrite, $defaults);
1372 1372
 
1373 1373
 	return $input;
1374 1374
 }
@@ -1381,11 +1381,11 @@  discard block
 block discarded – undo
1381 1381
  *
1382 1382
  * @return array
1383 1383
  */
1384
-function sd_get_font_line_height_input( $type = 'font_line_height', $overwrite = array() ) {
1384
+function sd_get_font_line_height_input($type = 'font_line_height', $overwrite = array()) {
1385 1385
 
1386 1386
 	$defaults = array(
1387 1387
 		'type'              => 'number',
1388
-		'title'             => __( 'Font Line Height', 'ayecode-connect' ),
1388
+		'title'             => __('Font Line Height', 'ayecode-connect'),
1389 1389
 		'default'           => '',
1390 1390
 		'placeholder'       => '1.75',
1391 1391
 		'custom_attributes' => array(
@@ -1394,10 +1394,10 @@  discard block
 block discarded – undo
1394 1394
 			'max'  => '100',
1395 1395
 		),
1396 1396
 		'desc_tip'          => true,
1397
-		'group'             => __( 'Typography', 'ayecode-connect' ),
1397
+		'group'             => __('Typography', 'ayecode-connect'),
1398 1398
 	);
1399 1399
 
1400
-	$input = wp_parse_args( $overwrite, $defaults );
1400
+	$input = wp_parse_args($overwrite, $defaults);
1401 1401
 
1402 1402
 	return $input;
1403 1403
 }
@@ -1410,17 +1410,17 @@  discard block
 block discarded – undo
1410 1410
  *
1411 1411
  * @return array
1412 1412
  */
1413
-function sd_get_font_size_input_group( $type = 'font_size', $overwrite = array(), $overwrite_custom = array() ) {
1413
+function sd_get_font_size_input_group($type = 'font_size', $overwrite = array(), $overwrite_custom = array()) {
1414 1414
 
1415 1415
 	$inputs = array();
1416 1416
 
1417
-	if ( $overwrite !== false ) {
1418
-		$inputs[ $type ] = sd_get_font_size_input( $type, $overwrite, true );
1417
+	if ($overwrite !== false) {
1418
+		$inputs[$type] = sd_get_font_size_input($type, $overwrite, true);
1419 1419
 	}
1420 1420
 
1421
-	if ( $overwrite_custom !== false ) {
1421
+	if ($overwrite_custom !== false) {
1422 1422
 		$custom            = $type . '_custom';
1423
-		$inputs[ $custom ] = sd_get_font_custom_size_input( $custom, $overwrite_custom, $type );
1423
+		$inputs[$custom] = sd_get_font_custom_size_input($custom, $overwrite_custom, $type);
1424 1424
 	}
1425 1425
 
1426 1426
 	return $inputs;
@@ -1434,10 +1434,10 @@  discard block
 block discarded – undo
1434 1434
  *
1435 1435
  * @return array
1436 1436
  */
1437
-function sd_get_font_weight_input( $type = 'font_weight', $overwrite = array() ) {
1437
+function sd_get_font_weight_input($type = 'font_weight', $overwrite = array()) {
1438 1438
 
1439 1439
 	$options = array(
1440
-		''                                => __( 'Inherit', 'ayecode-connect' ),
1440
+		''                                => __('Inherit', 'ayecode-connect'),
1441 1441
 		'font-weight-bold'                => 'bold',
1442 1442
 		'font-weight-bolder'              => 'bolder',
1443 1443
 		'font-weight-normal'              => 'normal',
@@ -1453,14 +1453,14 @@  discard block
 block discarded – undo
1453 1453
 
1454 1454
 	$defaults = array(
1455 1455
 		'type'     => 'select',
1456
-		'title'    => __( 'Appearance', 'ayecode-connect' ),
1456
+		'title'    => __('Appearance', 'ayecode-connect'),
1457 1457
 		'options'  => $options,
1458 1458
 		'default'  => '',
1459 1459
 		'desc_tip' => true,
1460
-		'group'    => __( 'Typography', 'ayecode-connect' ),
1460
+		'group'    => __('Typography', 'ayecode-connect'),
1461 1461
 	);
1462 1462
 
1463
-	$input = wp_parse_args( $overwrite, $defaults );
1463
+	$input = wp_parse_args($overwrite, $defaults);
1464 1464
 
1465 1465
 	return $input;
1466 1466
 }
@@ -1473,25 +1473,25 @@  discard block
 block discarded – undo
1473 1473
  *
1474 1474
  * @return array
1475 1475
  */
1476
-function sd_get_font_case_input( $type = 'font_weight', $overwrite = array() ) {
1476
+function sd_get_font_case_input($type = 'font_weight', $overwrite = array()) {
1477 1477
 
1478 1478
 	$options = array(
1479
-		''                => __( 'Default', 'ayecode-connect' ),
1480
-		'text-lowercase'  => __( 'lowercase', 'ayecode-connect' ),
1481
-		'text-uppercase'  => __( 'UPPERCASE', 'ayecode-connect' ),
1482
-		'text-capitalize' => __( 'Capitalize', 'ayecode-connect' ),
1479
+		''                => __('Default', 'ayecode-connect'),
1480
+		'text-lowercase'  => __('lowercase', 'ayecode-connect'),
1481
+		'text-uppercase'  => __('UPPERCASE', 'ayecode-connect'),
1482
+		'text-capitalize' => __('Capitalize', 'ayecode-connect'),
1483 1483
 	);
1484 1484
 
1485 1485
 	$defaults = array(
1486 1486
 		'type'     => 'select',
1487
-		'title'    => __( 'Letter case', 'ayecode-connect' ),
1487
+		'title'    => __('Letter case', 'ayecode-connect'),
1488 1488
 		'options'  => $options,
1489 1489
 		'default'  => '',
1490 1490
 		'desc_tip' => true,
1491
-		'group'    => __( 'Typography', 'ayecode-connect' ),
1491
+		'group'    => __('Typography', 'ayecode-connect'),
1492 1492
 	);
1493 1493
 
1494
-	$input = wp_parse_args( $overwrite, $defaults );
1494
+	$input = wp_parse_args($overwrite, $defaults);
1495 1495
 
1496 1496
 	return $input;
1497 1497
 }
@@ -1505,23 +1505,23 @@  discard block
 block discarded – undo
1505 1505
  * A helper function for font size
1506 1506
  *
1507 1507
  */
1508
-function sd_get_font_italic_input( $type = 'font_italic', $overwrite = array() ) {
1508
+function sd_get_font_italic_input($type = 'font_italic', $overwrite = array()) {
1509 1509
 
1510 1510
 	$options = array(
1511
-		''            => __( 'No', 'ayecode-connect' ),
1512
-		'font-italic' => __( 'Yes', 'ayecode-connect' ),
1511
+		''            => __('No', 'ayecode-connect'),
1512
+		'font-italic' => __('Yes', 'ayecode-connect'),
1513 1513
 	);
1514 1514
 
1515 1515
 	$defaults = array(
1516 1516
 		'type'     => 'select',
1517
-		'title'    => __( 'Font italic', 'ayecode-connect' ),
1517
+		'title'    => __('Font italic', 'ayecode-connect'),
1518 1518
 		'options'  => $options,
1519 1519
 		'default'  => '',
1520 1520
 		'desc_tip' => true,
1521
-		'group'    => __( 'Typography', 'ayecode-connect' ),
1521
+		'group'    => __('Typography', 'ayecode-connect'),
1522 1522
 	);
1523 1523
 
1524
-	$input = wp_parse_args( $overwrite, $defaults );
1524
+	$input = wp_parse_args($overwrite, $defaults);
1525 1525
 
1526 1526
 	return $input;
1527 1527
 }
@@ -1534,18 +1534,18 @@  discard block
 block discarded – undo
1534 1534
  *
1535 1535
  * @return array
1536 1536
  */
1537
-function sd_get_anchor_input( $type = 'anchor', $overwrite = array() ) {
1537
+function sd_get_anchor_input($type = 'anchor', $overwrite = array()) {
1538 1538
 
1539 1539
 	$defaults = array(
1540 1540
 		'type'     => 'text',
1541
-		'title'    => __( 'HTML anchor', 'ayecode-connect' ),
1542
-		'desc'     => __( 'Enter a word or two — without spaces — to make a unique web address just for this block, called an “anchor.” Then, you’ll be able to link directly to this section of your page.', 'ayecode-connect' ),
1541
+		'title'    => __('HTML anchor', 'ayecode-connect'),
1542
+		'desc'     => __('Enter a word or two — without spaces — to make a unique web address just for this block, called an “anchor.” Then, you’ll be able to link directly to this section of your page.', 'ayecode-connect'),
1543 1543
 		'default'  => '',
1544 1544
 		'desc_tip' => true,
1545
-		'group'    => __( 'Advanced', 'ayecode-connect' ),
1545
+		'group'    => __('Advanced', 'ayecode-connect'),
1546 1546
 	);
1547 1547
 
1548
-	$input = wp_parse_args( $overwrite, $defaults );
1548
+	$input = wp_parse_args($overwrite, $defaults);
1549 1549
 
1550 1550
 	return $input;
1551 1551
 }
@@ -1558,18 +1558,18 @@  discard block
 block discarded – undo
1558 1558
  *
1559 1559
  * @return array
1560 1560
  */
1561
-function sd_get_class_input( $type = 'css_class', $overwrite = array() ) {
1561
+function sd_get_class_input($type = 'css_class', $overwrite = array()) {
1562 1562
 
1563 1563
 	$defaults = array(
1564 1564
 		'type'     => 'text',
1565
-		'title'    => __( 'Additional CSS class(es)', 'ayecode-connect' ),
1566
-		'desc'     => __( 'Separate multiple classes with spaces.', 'ayecode-connect' ),
1565
+		'title'    => __('Additional CSS class(es)', 'ayecode-connect'),
1566
+		'desc'     => __('Separate multiple classes with spaces.', 'ayecode-connect'),
1567 1567
 		'default'  => '',
1568 1568
 		'desc_tip' => true,
1569
-		'group'    => __( 'Advanced', 'ayecode-connect' ),
1569
+		'group'    => __('Advanced', 'ayecode-connect'),
1570 1570
 	);
1571 1571
 
1572
-	$input = wp_parse_args( $overwrite, $defaults );
1572
+	$input = wp_parse_args($overwrite, $defaults);
1573 1573
 
1574 1574
 	return $input;
1575 1575
 }
@@ -1582,45 +1582,45 @@  discard block
 block discarded – undo
1582 1582
  *
1583 1583
  * @return array
1584 1584
  */
1585
-function sd_get_hover_animations_input( $type = 'hover_animations', $overwrite = array() ) {
1585
+function sd_get_hover_animations_input($type = 'hover_animations', $overwrite = array()) {
1586 1586
 
1587 1587
 	$options = array(
1588
-		''                 => __( 'none', 'ayecode-connect' ),
1589
-		'hover-zoom'       => __( 'Zoom', 'ayecode-connect' ),
1590
-		'hover-shadow'     => __( 'Shadow', 'ayecode-connect' ),
1591
-		'hover-move-up'    => __( 'Move up', 'ayecode-connect' ),
1592
-		'hover-move-down'  => __( 'Move down', 'ayecode-connect' ),
1593
-		'hover-move-left'  => __( 'Move left', 'ayecode-connect' ),
1594
-		'hover-move-right' => __( 'Move right', 'ayecode-connect' ),
1588
+		''                 => __('none', 'ayecode-connect'),
1589
+		'hover-zoom'       => __('Zoom', 'ayecode-connect'),
1590
+		'hover-shadow'     => __('Shadow', 'ayecode-connect'),
1591
+		'hover-move-up'    => __('Move up', 'ayecode-connect'),
1592
+		'hover-move-down'  => __('Move down', 'ayecode-connect'),
1593
+		'hover-move-left'  => __('Move left', 'ayecode-connect'),
1594
+		'hover-move-right' => __('Move right', 'ayecode-connect'),
1595 1595
 	);
1596 1596
 
1597 1597
 	$defaults = array(
1598 1598
 		'type'     => 'select',
1599 1599
 		'multiple' => true,
1600
-		'title'    => __( 'Hover Animations', 'ayecode-connect' ),
1600
+		'title'    => __('Hover Animations', 'ayecode-connect'),
1601 1601
 		'options'  => $options,
1602 1602
 		'default'  => '',
1603 1603
 		'desc_tip' => true,
1604
-		'group'    => __( 'Hover Animations', 'ayecode-connect' ),
1604
+		'group'    => __('Hover Animations', 'ayecode-connect'),
1605 1605
 	);
1606 1606
 
1607
-	$input = wp_parse_args( $overwrite, $defaults );
1607
+	$input = wp_parse_args($overwrite, $defaults);
1608 1608
 
1609 1609
 	return $input;
1610 1610
 }
1611 1611
 
1612 1612
 
1613
-function sd_get_flex_align_items_input( $type = 'align-items', $overwrite = array() ) {
1613
+function sd_get_flex_align_items_input($type = 'align-items', $overwrite = array()) {
1614 1614
 	$device_size = '';
1615
-	if ( ! empty( $overwrite['device_type'] ) ) {
1616
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1615
+	if (!empty($overwrite['device_type'])) {
1616
+		if ($overwrite['device_type'] == 'Tablet') {
1617 1617
 			$device_size = '-md';
1618
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1618
+		} elseif ($overwrite['device_type'] == 'Desktop') {
1619 1619
 			$device_size = '-lg';
1620 1620
 		}
1621 1621
 	}
1622 1622
 	$options = array(
1623
-		''                                         => __( 'Default', 'ayecode-connect' ),
1623
+		''                                         => __('Default', 'ayecode-connect'),
1624 1624
 		'align-items' . $device_size . '-start'    => 'align-items-start',
1625 1625
 		'align-items' . $device_size . '-end'      => 'align-items-end',
1626 1626
 		'align-items' . $device_size . '-center'   => 'align-items-center',
@@ -1630,21 +1630,21 @@  discard block
 block discarded – undo
1630 1630
 
1631 1631
 	$defaults = array(
1632 1632
 		'type'            => 'select',
1633
-		'title'           => __( 'Vertical Align Items', 'ayecode-connect' ),
1633
+		'title'           => __('Vertical Align Items', 'ayecode-connect'),
1634 1634
 		'options'         => $options,
1635 1635
 		'default'         => '',
1636 1636
 		'desc_tip'        => true,
1637
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1637
+		'group'           => __('Wrapper Styles', 'ayecode-connect'),
1638 1638
 		'element_require' => ' ( ( [%container%]=="row" ) || ( [%display%]=="d-flex" || [%display_md%]=="d-md-flex" || [%display_lg%]=="d-lg-flex" ) ) ',
1639 1639
 
1640 1640
 	);
1641 1641
 
1642
-	$input = wp_parse_args( $overwrite, $defaults );
1642
+	$input = wp_parse_args($overwrite, $defaults);
1643 1643
 
1644 1644
 	return $input;
1645 1645
 }
1646 1646
 
1647
-function sd_get_flex_align_items_input_group( $type = 'flex_align_items', $overwrite = array() ) {
1647
+function sd_get_flex_align_items_input_group($type = 'flex_align_items', $overwrite = array()) {
1648 1648
 	$inputs = array();
1649 1649
 	$sizes  = array(
1650 1650
 		''    => 'Mobile',
@@ -1652,28 +1652,28 @@  discard block
 block discarded – undo
1652 1652
 		'_lg' => 'Desktop',
1653 1653
 	);
1654 1654
 
1655
-	if ( $overwrite !== false ) {
1655
+	if ($overwrite !== false) {
1656 1656
 
1657
-		foreach ( $sizes as $ds => $dt ) {
1657
+		foreach ($sizes as $ds => $dt) {
1658 1658
 			$overwrite['device_type'] = $dt;
1659
-			$inputs[ $type . $ds ]    = sd_get_flex_align_items_input( $type, $overwrite );
1659
+			$inputs[$type . $ds]    = sd_get_flex_align_items_input($type, $overwrite);
1660 1660
 		}
1661 1661
 	}
1662 1662
 
1663 1663
 	return $inputs;
1664 1664
 }
1665 1665
 
1666
-function sd_get_flex_justify_content_input( $type = 'flex_justify_content', $overwrite = array() ) {
1666
+function sd_get_flex_justify_content_input($type = 'flex_justify_content', $overwrite = array()) {
1667 1667
 	$device_size = '';
1668
-	if ( ! empty( $overwrite['device_type'] ) ) {
1669
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1668
+	if (!empty($overwrite['device_type'])) {
1669
+		if ($overwrite['device_type'] == 'Tablet') {
1670 1670
 			$device_size = '-md';
1671
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1671
+		} elseif ($overwrite['device_type'] == 'Desktop') {
1672 1672
 			$device_size = '-lg';
1673 1673
 		}
1674 1674
 	}
1675 1675
 	$options = array(
1676
-		''                                            => __( 'Default', 'ayecode-connect' ),
1676
+		''                                            => __('Default', 'ayecode-connect'),
1677 1677
 		'justify-content' . $device_size . '-start'   => 'justify-content-start',
1678 1678
 		'justify-content' . $device_size . '-end'     => 'justify-content-end',
1679 1679
 		'justify-content' . $device_size . '-center'  => 'justify-content-center',
@@ -1683,21 +1683,21 @@  discard block
 block discarded – undo
1683 1683
 
1684 1684
 	$defaults = array(
1685 1685
 		'type'            => 'select',
1686
-		'title'           => __( 'Justify content', 'ayecode-connect' ),
1686
+		'title'           => __('Justify content', 'ayecode-connect'),
1687 1687
 		'options'         => $options,
1688 1688
 		'default'         => '',
1689 1689
 		'desc_tip'        => true,
1690
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1690
+		'group'           => __('Wrapper Styles', 'ayecode-connect'),
1691 1691
 		'element_require' => '( ( [%container%]=="row" ) || ( [%display%]=="d-flex" || [%display_md%]=="d-md-flex" || [%display_lg%]=="d-lg-flex" ) ) ',
1692 1692
 
1693 1693
 	);
1694 1694
 
1695
-	$input = wp_parse_args( $overwrite, $defaults );
1695
+	$input = wp_parse_args($overwrite, $defaults);
1696 1696
 
1697 1697
 	return $input;
1698 1698
 }
1699 1699
 
1700
-function sd_get_flex_justify_content_input_group( $type = 'flex_justify_content', $overwrite = array() ) {
1700
+function sd_get_flex_justify_content_input_group($type = 'flex_justify_content', $overwrite = array()) {
1701 1701
 	$inputs = array();
1702 1702
 	$sizes  = array(
1703 1703
 		''    => 'Mobile',
@@ -1705,11 +1705,11 @@  discard block
 block discarded – undo
1705 1705
 		'_lg' => 'Desktop',
1706 1706
 	);
1707 1707
 
1708
-	if ( $overwrite !== false ) {
1708
+	if ($overwrite !== false) {
1709 1709
 
1710
-		foreach ( $sizes as $ds => $dt ) {
1710
+		foreach ($sizes as $ds => $dt) {
1711 1711
 			$overwrite['device_type'] = $dt;
1712
-			$inputs[ $type . $ds ]    = sd_get_flex_justify_content_input( $type, $overwrite );
1712
+			$inputs[$type . $ds]    = sd_get_flex_justify_content_input($type, $overwrite);
1713 1713
 		}
1714 1714
 	}
1715 1715
 
@@ -1717,17 +1717,17 @@  discard block
 block discarded – undo
1717 1717
 }
1718 1718
 
1719 1719
 
1720
-function sd_get_flex_align_self_input( $type = 'flex_align_self', $overwrite = array() ) {
1720
+function sd_get_flex_align_self_input($type = 'flex_align_self', $overwrite = array()) {
1721 1721
 	$device_size = '';
1722
-	if ( ! empty( $overwrite['device_type'] ) ) {
1723
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1722
+	if (!empty($overwrite['device_type'])) {
1723
+		if ($overwrite['device_type'] == 'Tablet') {
1724 1724
 			$device_size = '-md';
1725
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1725
+		} elseif ($overwrite['device_type'] == 'Desktop') {
1726 1726
 			$device_size = '-lg';
1727 1727
 		}
1728 1728
 	}
1729 1729
 	$options = array(
1730
-		''                                         => __( 'Default', 'ayecode-connect' ),
1730
+		''                                         => __('Default', 'ayecode-connect'),
1731 1731
 		'align-items' . $device_size . '-start'    => 'align-items-start',
1732 1732
 		'align-items' . $device_size . '-end'      => 'align-items-end',
1733 1733
 		'align-items' . $device_size . '-center'   => 'align-items-center',
@@ -1737,21 +1737,21 @@  discard block
 block discarded – undo
1737 1737
 
1738 1738
 	$defaults = array(
1739 1739
 		'type'            => 'select',
1740
-		'title'           => __( 'Align Self', 'ayecode-connect' ),
1740
+		'title'           => __('Align Self', 'ayecode-connect'),
1741 1741
 		'options'         => $options,
1742 1742
 		'default'         => '',
1743 1743
 		'desc_tip'        => true,
1744
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1744
+		'group'           => __('Wrapper Styles', 'ayecode-connect'),
1745 1745
 		'element_require' => ' [%container%]=="col" ',
1746 1746
 
1747 1747
 	);
1748 1748
 
1749
-	$input = wp_parse_args( $overwrite, $defaults );
1749
+	$input = wp_parse_args($overwrite, $defaults);
1750 1750
 
1751 1751
 	return $input;
1752 1752
 }
1753 1753
 
1754
-function sd_get_flex_align_self_input_group( $type = 'flex_align_self', $overwrite = array() ) {
1754
+function sd_get_flex_align_self_input_group($type = 'flex_align_self', $overwrite = array()) {
1755 1755
 	$inputs = array();
1756 1756
 	$sizes  = array(
1757 1757
 		''    => 'Mobile',
@@ -1759,53 +1759,53 @@  discard block
 block discarded – undo
1759 1759
 		'_lg' => 'Desktop',
1760 1760
 	);
1761 1761
 
1762
-	if ( $overwrite !== false ) {
1762
+	if ($overwrite !== false) {
1763 1763
 
1764
-		foreach ( $sizes as $ds => $dt ) {
1764
+		foreach ($sizes as $ds => $dt) {
1765 1765
 			$overwrite['device_type'] = $dt;
1766
-			$inputs[ $type . $ds ]    = sd_get_flex_align_self_input( $type, $overwrite );
1766
+			$inputs[$type . $ds]    = sd_get_flex_align_self_input($type, $overwrite);
1767 1767
 		}
1768 1768
 	}
1769 1769
 
1770 1770
 	return $inputs;
1771 1771
 }
1772 1772
 
1773
-function sd_get_flex_order_input( $type = 'flex_order', $overwrite = array() ) {
1773
+function sd_get_flex_order_input($type = 'flex_order', $overwrite = array()) {
1774 1774
 	$device_size = '';
1775
-	if ( ! empty( $overwrite['device_type'] ) ) {
1776
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1775
+	if (!empty($overwrite['device_type'])) {
1776
+		if ($overwrite['device_type'] == 'Tablet') {
1777 1777
 			$device_size = '-md';
1778
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1778
+		} elseif ($overwrite['device_type'] == 'Desktop') {
1779 1779
 			$device_size = '-lg';
1780 1780
 		}
1781 1781
 	}
1782 1782
 	$options = array(
1783
-		'' => __( 'Default', 'ayecode-connect' ),
1783
+		'' => __('Default', 'ayecode-connect'),
1784 1784
 	);
1785 1785
 
1786 1786
 	$i = 0;
1787
-	while ( $i <= 5 ) {
1788
-		$options[ 'order' . $device_size . '-' . $i ] = $i;
1787
+	while ($i <= 5) {
1788
+		$options['order' . $device_size . '-' . $i] = $i;
1789 1789
 		$i++;
1790 1790
 	}
1791 1791
 
1792 1792
 	$defaults = array(
1793 1793
 		'type'            => 'select',
1794
-		'title'           => __( 'Flex Order', 'ayecode-connect' ),
1794
+		'title'           => __('Flex Order', 'ayecode-connect'),
1795 1795
 		'options'         => $options,
1796 1796
 		'default'         => '',
1797 1797
 		'desc_tip'        => true,
1798
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1798
+		'group'           => __('Wrapper Styles', 'ayecode-connect'),
1799 1799
 		'element_require' => ' [%container%]=="col" ',
1800 1800
 
1801 1801
 	);
1802 1802
 
1803
-	$input = wp_parse_args( $overwrite, $defaults );
1803
+	$input = wp_parse_args($overwrite, $defaults);
1804 1804
 
1805 1805
 	return $input;
1806 1806
 }
1807 1807
 
1808
-function sd_get_flex_order_input_group( $type = 'flex_order', $overwrite = array() ) {
1808
+function sd_get_flex_order_input_group($type = 'flex_order', $overwrite = array()) {
1809 1809
 	$inputs = array();
1810 1810
 	$sizes  = array(
1811 1811
 		''    => 'Mobile',
@@ -1813,18 +1813,18 @@  discard block
 block discarded – undo
1813 1813
 		'_lg' => 'Desktop',
1814 1814
 	);
1815 1815
 
1816
-	if ( $overwrite !== false ) {
1816
+	if ($overwrite !== false) {
1817 1817
 
1818
-		foreach ( $sizes as $ds => $dt ) {
1818
+		foreach ($sizes as $ds => $dt) {
1819 1819
 			$overwrite['device_type'] = $dt;
1820
-			$inputs[ $type . $ds ]    = sd_get_flex_order_input( $type, $overwrite );
1820
+			$inputs[$type . $ds]    = sd_get_flex_order_input($type, $overwrite);
1821 1821
 		}
1822 1822
 	}
1823 1823
 
1824 1824
 	return $inputs;
1825 1825
 }
1826 1826
 
1827
-function sd_get_flex_wrap_group( $type = 'flex_wrap', $overwrite = array() ) {
1827
+function sd_get_flex_wrap_group($type = 'flex_wrap', $overwrite = array()) {
1828 1828
 	$inputs = array();
1829 1829
 	$sizes  = array(
1830 1830
 		''    => 'Mobile',
@@ -1832,28 +1832,28 @@  discard block
 block discarded – undo
1832 1832
 		'_lg' => 'Desktop',
1833 1833
 	);
1834 1834
 
1835
-	if ( $overwrite !== false ) {
1835
+	if ($overwrite !== false) {
1836 1836
 
1837
-		foreach ( $sizes as $ds => $dt ) {
1837
+		foreach ($sizes as $ds => $dt) {
1838 1838
 			$overwrite['device_type'] = $dt;
1839
-			$inputs[ $type . $ds ]    = sd_get_flex_wrap_input( $type, $overwrite );
1839
+			$inputs[$type . $ds]    = sd_get_flex_wrap_input($type, $overwrite);
1840 1840
 		}
1841 1841
 	}
1842 1842
 
1843 1843
 	return $inputs;
1844 1844
 }
1845 1845
 
1846
-function sd_get_flex_wrap_input( $type = 'flex_wrap', $overwrite = array() ) {
1846
+function sd_get_flex_wrap_input($type = 'flex_wrap', $overwrite = array()) {
1847 1847
 	$device_size = '';
1848
-	if ( ! empty( $overwrite['device_type'] ) ) {
1849
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1848
+	if (!empty($overwrite['device_type'])) {
1849
+		if ($overwrite['device_type'] == 'Tablet') {
1850 1850
 			$device_size = '-md';
1851
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1851
+		} elseif ($overwrite['device_type'] == 'Desktop') {
1852 1852
 			$device_size = '-lg';
1853 1853
 		}
1854 1854
 	}
1855 1855
 	$options = array(
1856
-		''                                      => __( 'Default', 'ayecode-connect' ),
1856
+		''                                      => __('Default', 'ayecode-connect'),
1857 1857
 		'flex' . $device_size . '-nowrap'       => 'nowrap',
1858 1858
 		'flex' . $device_size . '-wrap'         => 'wrap',
1859 1859
 		'flex' . $device_size . '-wrap-reverse' => 'wrap-reverse',
@@ -1861,19 +1861,19 @@  discard block
 block discarded – undo
1861 1861
 
1862 1862
 	$defaults = array(
1863 1863
 		'type'     => 'select',
1864
-		'title'    => __( 'Flex wrap', 'ayecode-connect' ),
1864
+		'title'    => __('Flex wrap', 'ayecode-connect'),
1865 1865
 		'options'  => $options,
1866 1866
 		'default'  => '',
1867 1867
 		'desc_tip' => true,
1868
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1868
+		'group'    => __('Wrapper Styles', 'ayecode-connect'),
1869 1869
 	);
1870 1870
 
1871
-	$input = wp_parse_args( $overwrite, $defaults );
1871
+	$input = wp_parse_args($overwrite, $defaults);
1872 1872
 
1873 1873
 	return $input;
1874 1874
 }
1875 1875
 
1876
-function sd_get_float_group( $type = 'float', $overwrite = array() ) {
1876
+function sd_get_float_group($type = 'float', $overwrite = array()) {
1877 1877
 	$inputs = array();
1878 1878
 	$sizes  = array(
1879 1879
 		''    => 'Mobile',
@@ -1881,27 +1881,27 @@  discard block
 block discarded – undo
1881 1881
 		'_lg' => 'Desktop',
1882 1882
 	);
1883 1883
 
1884
-	if ( $overwrite !== false ) {
1884
+	if ($overwrite !== false) {
1885 1885
 
1886
-		foreach ( $sizes as $ds => $dt ) {
1886
+		foreach ($sizes as $ds => $dt) {
1887 1887
 			$overwrite['device_type'] = $dt;
1888
-			$inputs[ $type . $ds ]    = sd_get_float_input( $type, $overwrite );
1888
+			$inputs[$type . $ds]    = sd_get_float_input($type, $overwrite);
1889 1889
 		}
1890 1890
 	}
1891 1891
 
1892 1892
 	return $inputs;
1893 1893
 }
1894
-function sd_get_float_input( $type = 'float', $overwrite = array() ) {
1894
+function sd_get_float_input($type = 'float', $overwrite = array()) {
1895 1895
 	$device_size = '';
1896
-	if ( ! empty( $overwrite['device_type'] ) ) {
1897
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1896
+	if (!empty($overwrite['device_type'])) {
1897
+		if ($overwrite['device_type'] == 'Tablet') {
1898 1898
 			$device_size = '-md';
1899
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1899
+		} elseif ($overwrite['device_type'] == 'Desktop') {
1900 1900
 			$device_size = '-lg';
1901 1901
 		}
1902 1902
 	}
1903 1903
 	$options = array(
1904
-		''                                      => __( 'Default', 'ayecode-connect' ),
1904
+		''                                      => __('Default', 'ayecode-connect'),
1905 1905
 		'float' . $device_size . '-start'       => 'left',
1906 1906
 		'float' . $device_size . '-end'         => 'right',
1907 1907
 		'float' . $device_size . '-none' => 'none',
@@ -1909,14 +1909,14 @@  discard block
 block discarded – undo
1909 1909
 
1910 1910
 	$defaults = array(
1911 1911
 		'type'     => 'select',
1912
-		'title'    => __( 'Float', 'ayecode-connect' ),
1912
+		'title'    => __('Float', 'ayecode-connect'),
1913 1913
 		'options'  => $options,
1914 1914
 		'default'  => '',
1915 1915
 		'desc_tip' => true,
1916
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1916
+		'group'    => __('Wrapper Styles', 'ayecode-connect'),
1917 1917
 	);
1918 1918
 
1919
-	$input = wp_parse_args( $overwrite, $defaults );
1919
+	$input = wp_parse_args($overwrite, $defaults);
1920 1920
 
1921 1921
 	return $input;
1922 1922
 }
@@ -1927,10 +1927,10 @@  discard block
 block discarded – undo
1927 1927
  *
1928 1928
  * @return array
1929 1929
  */
1930
-function sd_get_zindex_input( $type = 'zindex', $overwrite = array() ) {
1930
+function sd_get_zindex_input($type = 'zindex', $overwrite = array()) {
1931 1931
 
1932 1932
 	$options = array(
1933
-		''          => __( 'Default', 'ayecode-connect' ),
1933
+		''          => __('Default', 'ayecode-connect'),
1934 1934
 		'zindex-0'  => '0',
1935 1935
 		'zindex-1'  => '1',
1936 1936
 		'zindex-5'  => '5',
@@ -1939,14 +1939,14 @@  discard block
 block discarded – undo
1939 1939
 
1940 1940
 	$defaults = array(
1941 1941
 		'type'     => 'select',
1942
-		'title'    => __( 'Z-index', 'ayecode-connect' ),
1942
+		'title'    => __('Z-index', 'ayecode-connect'),
1943 1943
 		'options'  => $options,
1944 1944
 		'default'  => '',
1945 1945
 		'desc_tip' => true,
1946
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1946
+		'group'    => __('Wrapper Styles', 'ayecode-connect'),
1947 1947
 	);
1948 1948
 
1949
-	$input = wp_parse_args( $overwrite, $defaults );
1949
+	$input = wp_parse_args($overwrite, $defaults);
1950 1950
 
1951 1951
 	return $input;
1952 1952
 }
@@ -1957,26 +1957,26 @@  discard block
 block discarded – undo
1957 1957
  *
1958 1958
  * @return array
1959 1959
  */
1960
-function sd_get_overflow_input( $type = 'overflow', $overwrite = array() ) {
1960
+function sd_get_overflow_input($type = 'overflow', $overwrite = array()) {
1961 1961
 
1962 1962
 	$options = array(
1963
-		''                 => __( 'Default', 'ayecode-connect' ),
1964
-		'overflow-auto'    => __( 'Auto', 'ayecode-connect' ),
1965
-		'overflow-hidden'  => __( 'Hidden', 'ayecode-connect' ),
1966
-		'overflow-visible' => __( 'Visible', 'ayecode-connect' ),
1967
-		'overflow-scroll'  => __( 'Scroll', 'ayecode-connect' ),
1963
+		''                 => __('Default', 'ayecode-connect'),
1964
+		'overflow-auto'    => __('Auto', 'ayecode-connect'),
1965
+		'overflow-hidden'  => __('Hidden', 'ayecode-connect'),
1966
+		'overflow-visible' => __('Visible', 'ayecode-connect'),
1967
+		'overflow-scroll'  => __('Scroll', 'ayecode-connect'),
1968 1968
 	);
1969 1969
 
1970 1970
 	$defaults = array(
1971 1971
 		'type'     => 'select',
1972
-		'title'    => __( 'Overflow', 'ayecode-connect' ),
1972
+		'title'    => __('Overflow', 'ayecode-connect'),
1973 1973
 		'options'  => $options,
1974 1974
 		'default'  => '',
1975 1975
 		'desc_tip' => true,
1976
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1976
+		'group'    => __('Wrapper Styles', 'ayecode-connect'),
1977 1977
 	);
1978 1978
 
1979
-	$input = wp_parse_args( $overwrite, $defaults );
1979
+	$input = wp_parse_args($overwrite, $defaults);
1980 1980
 
1981 1981
 	return $input;
1982 1982
 }
@@ -1987,19 +1987,19 @@  discard block
 block discarded – undo
1987 1987
  *
1988 1988
  * @return array
1989 1989
  */
1990
-function sd_get_max_height_input( $type = 'max_height', $overwrite = array() ) {
1990
+function sd_get_max_height_input($type = 'max_height', $overwrite = array()) {
1991 1991
 
1992 1992
 	$defaults = array(
1993 1993
 		'type'        => 'text',
1994
-		'title'       => __( 'Max height', 'ayecode-connect' ),
1994
+		'title'       => __('Max height', 'ayecode-connect'),
1995 1995
 		'value'       => '',
1996 1996
 		'default'     => '',
1997 1997
 		'placeholder' => '',
1998 1998
 		'desc_tip'    => true,
1999
-		'group'       => __( 'Wrapper Styles', 'ayecode-connect' ),
1999
+		'group'       => __('Wrapper Styles', 'ayecode-connect'),
2000 2000
 	);
2001 2001
 
2002
-	$input = wp_parse_args( $overwrite, $defaults );
2002
+	$input = wp_parse_args($overwrite, $defaults);
2003 2003
 
2004 2004
 	return $input;
2005 2005
 }
@@ -2010,23 +2010,23 @@  discard block
 block discarded – undo
2010 2010
  *
2011 2011
  * @return array
2012 2012
  */
2013
-function sd_get_scrollbars_input( $type = 'scrollbars', $overwrite = array() ) {
2013
+function sd_get_scrollbars_input($type = 'scrollbars', $overwrite = array()) {
2014 2014
 
2015 2015
 	$options = array(
2016
-		''               => __( 'Default', 'ayecode-connect' ),
2017
-		'scrollbars-ios' => __( 'IOS Style', 'ayecode-connect' ),
2016
+		''               => __('Default', 'ayecode-connect'),
2017
+		'scrollbars-ios' => __('IOS Style', 'ayecode-connect'),
2018 2018
 	);
2019 2019
 
2020 2020
 	$defaults = array(
2021 2021
 		'type'     => 'select',
2022
-		'title'    => __( 'Scrollbars', 'ayecode-connect' ),
2022
+		'title'    => __('Scrollbars', 'ayecode-connect'),
2023 2023
 		'options'  => $options,
2024 2024
 		'default'  => '',
2025 2025
 		'desc_tip' => true,
2026
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2026
+		'group'    => __('Wrapper Styles', 'ayecode-connect'),
2027 2027
 	);
2028 2028
 
2029
-	$input = wp_parse_args( $overwrite, $defaults );
2029
+	$input = wp_parse_args($overwrite, $defaults);
2030 2030
 
2031 2031
 	return $input;
2032 2032
 }
@@ -2039,12 +2039,12 @@  discard block
 block discarded – undo
2039 2039
  * @return string
2040 2040
  * @todo find best way to use px- py- or general p-
2041 2041
  */
2042
-function sd_build_aui_class( $args ) {
2042
+function sd_build_aui_class($args) {
2043 2043
 	global $aui_bs5;
2044 2044
 
2045 2045
 	$classes = array();
2046 2046
 
2047
-	if ( $aui_bs5 ) {
2047
+	if ($aui_bs5) {
2048 2048
 		$p_ml = 'ms-';
2049 2049
 		$p_mr = 'me-';
2050 2050
 
@@ -2059,254 +2059,254 @@  discard block
 block discarded – undo
2059 2059
 	}
2060 2060
 
2061 2061
 	// margins.
2062
-	if ( isset( $args['mt'] ) && $args['mt'] !== '' ) {
2063
-		$classes[] = 'mt-' . sanitize_html_class( $args['mt'] );
2062
+	if (isset($args['mt']) && $args['mt'] !== '') {
2063
+		$classes[] = 'mt-' . sanitize_html_class($args['mt']);
2064 2064
 		$mt        = $args['mt'];
2065 2065
 	} else {
2066 2066
 		$mt = null;
2067 2067
 	}
2068
-	if ( isset( $args['mr'] ) && $args['mr'] !== '' ) {
2069
-		$classes[] = $p_mr . sanitize_html_class( $args['mr'] );
2068
+	if (isset($args['mr']) && $args['mr'] !== '') {
2069
+		$classes[] = $p_mr . sanitize_html_class($args['mr']);
2070 2070
 		$mr        = $args['mr'];
2071 2071
 	} else {
2072 2072
 		$mr = null;
2073 2073
 	}
2074
-	if ( isset( $args['mb'] ) && $args['mb'] !== '' ) {
2075
-		$classes[] = 'mb-' . sanitize_html_class( $args['mb'] );
2074
+	if (isset($args['mb']) && $args['mb'] !== '') {
2075
+		$classes[] = 'mb-' . sanitize_html_class($args['mb']);
2076 2076
 		$mb        = $args['mb'];
2077 2077
 	} else {
2078 2078
 		$mb = null;
2079 2079
 	}
2080
-	if ( isset( $args['ml'] ) && $args['ml'] !== '' ) {
2081
-		$classes[] = $p_ml . sanitize_html_class( $args['ml'] );
2080
+	if (isset($args['ml']) && $args['ml'] !== '') {
2081
+		$classes[] = $p_ml . sanitize_html_class($args['ml']);
2082 2082
 		$ml        = $args['ml'];
2083 2083
 	} else {
2084 2084
 		$ml = null;
2085 2085
 	}
2086 2086
 
2087 2087
 	// margins tablet.
2088
-	if ( isset( $args['mt_md'] ) && $args['mt_md'] !== '' ) {
2089
-		$classes[] = 'mt-md-' . sanitize_html_class( $args['mt_md'] );
2088
+	if (isset($args['mt_md']) && $args['mt_md'] !== '') {
2089
+		$classes[] = 'mt-md-' . sanitize_html_class($args['mt_md']);
2090 2090
 		$mt_md     = $args['mt_md'];
2091 2091
 	} else {
2092 2092
 		$mt_md = null;
2093 2093
 	}
2094
-	if ( isset( $args['mr_md'] ) && $args['mr_md'] !== '' ) {
2095
-		$classes[] = $p_mr . 'md-' . sanitize_html_class( $args['mr_md'] );
2094
+	if (isset($args['mr_md']) && $args['mr_md'] !== '') {
2095
+		$classes[] = $p_mr . 'md-' . sanitize_html_class($args['mr_md']);
2096 2096
 		$mt_md     = $args['mr_md'];
2097 2097
 	} else {
2098 2098
 		$mr_md = null;
2099 2099
 	}
2100
-	if ( isset( $args['mb_md'] ) && $args['mb_md'] !== '' ) {
2101
-		$classes[] = 'mb-md-' . sanitize_html_class( $args['mb_md'] );
2100
+	if (isset($args['mb_md']) && $args['mb_md'] !== '') {
2101
+		$classes[] = 'mb-md-' . sanitize_html_class($args['mb_md']);
2102 2102
 		$mt_md     = $args['mb_md'];
2103 2103
 	} else {
2104 2104
 		$mb_md = null;
2105 2105
 	}
2106
-	if ( isset( $args['ml_md'] ) && $args['ml_md'] !== '' ) {
2107
-		$classes[] = $p_ml . 'md-' . sanitize_html_class( $args['ml_md'] );
2106
+	if (isset($args['ml_md']) && $args['ml_md'] !== '') {
2107
+		$classes[] = $p_ml . 'md-' . sanitize_html_class($args['ml_md']);
2108 2108
 		$mt_md     = $args['ml_md'];
2109 2109
 	} else {
2110 2110
 		$ml_md = null;
2111 2111
 	}
2112 2112
 
2113 2113
 	// margins desktop.
2114
-	if ( isset( $args['mt_lg'] ) && $args['mt_lg'] !== '' ) {
2115
-		if ( $mt == null && $mt_md == null ) {
2116
-			$classes[] = 'mt-' . sanitize_html_class( $args['mt_lg'] );
2114
+	if (isset($args['mt_lg']) && $args['mt_lg'] !== '') {
2115
+		if ($mt == null && $mt_md == null) {
2116
+			$classes[] = 'mt-' . sanitize_html_class($args['mt_lg']);
2117 2117
 		} else {
2118
-			$classes[] = 'mt-lg-' . sanitize_html_class( $args['mt_lg'] );
2118
+			$classes[] = 'mt-lg-' . sanitize_html_class($args['mt_lg']);
2119 2119
 		}
2120 2120
 	}
2121
-	if ( isset( $args['mr_lg'] ) && $args['mr_lg'] !== '' ) {
2122
-		if ( $mr == null && $mr_md == null ) {
2123
-			$classes[] = $p_mr . sanitize_html_class( $args['mr_lg'] );
2121
+	if (isset($args['mr_lg']) && $args['mr_lg'] !== '') {
2122
+		if ($mr == null && $mr_md == null) {
2123
+			$classes[] = $p_mr . sanitize_html_class($args['mr_lg']);
2124 2124
 		} else {
2125
-			$classes[] = $p_mr . 'lg-' . sanitize_html_class( $args['mr_lg'] );
2125
+			$classes[] = $p_mr . 'lg-' . sanitize_html_class($args['mr_lg']);
2126 2126
 		}
2127 2127
 	}
2128
-	if ( isset( $args['mb_lg'] ) && $args['mb_lg'] !== '' ) {
2129
-		if ( $mb == null && $mb_md == null ) {
2130
-			$classes[] = 'mb-' . sanitize_html_class( $args['mb_lg'] );
2128
+	if (isset($args['mb_lg']) && $args['mb_lg'] !== '') {
2129
+		if ($mb == null && $mb_md == null) {
2130
+			$classes[] = 'mb-' . sanitize_html_class($args['mb_lg']);
2131 2131
 		} else {
2132
-			$classes[] = 'mb-lg-' . sanitize_html_class( $args['mb_lg'] );
2132
+			$classes[] = 'mb-lg-' . sanitize_html_class($args['mb_lg']);
2133 2133
 		}
2134 2134
 	}
2135
-	if ( isset( $args['ml_lg'] ) && $args['ml_lg'] !== '' ) {
2136
-		if ( $ml == null && $ml_md == null ) {
2137
-			$classes[] = $p_ml . sanitize_html_class( $args['ml_lg'] );
2135
+	if (isset($args['ml_lg']) && $args['ml_lg'] !== '') {
2136
+		if ($ml == null && $ml_md == null) {
2137
+			$classes[] = $p_ml . sanitize_html_class($args['ml_lg']);
2138 2138
 		} else {
2139
-			$classes[] = $p_ml . 'lg-' . sanitize_html_class( $args['ml_lg'] );
2139
+			$classes[] = $p_ml . 'lg-' . sanitize_html_class($args['ml_lg']);
2140 2140
 		}
2141 2141
 	}
2142 2142
 
2143 2143
 	// padding.
2144
-	if ( isset( $args['pt'] ) && $args['pt'] !== '' ) {
2145
-		$classes[] = 'pt-' . sanitize_html_class( $args['pt'] );
2144
+	if (isset($args['pt']) && $args['pt'] !== '') {
2145
+		$classes[] = 'pt-' . sanitize_html_class($args['pt']);
2146 2146
 		$pt        = $args['pt'];
2147 2147
 	} else {
2148 2148
 		$pt = null;
2149 2149
 	}
2150
-	if ( isset( $args['pr'] ) && $args['pr'] !== '' ) {
2151
-		$classes[] = $p_pr . sanitize_html_class( $args['pr'] );
2150
+	if (isset($args['pr']) && $args['pr'] !== '') {
2151
+		$classes[] = $p_pr . sanitize_html_class($args['pr']);
2152 2152
 		$pr        = $args['pr'];
2153 2153
 	} else {
2154 2154
 		$pr = null;
2155 2155
 	}
2156
-	if ( isset( $args['pb'] ) && $args['pb'] !== '' ) {
2157
-		$classes[] = 'pb-' . sanitize_html_class( $args['pb'] );
2156
+	if (isset($args['pb']) && $args['pb'] !== '') {
2157
+		$classes[] = 'pb-' . sanitize_html_class($args['pb']);
2158 2158
 		$pb        = $args['pb'];
2159 2159
 	} else {
2160 2160
 		$pb = null;
2161 2161
 	}
2162
-	if ( isset( $args['pl'] ) && $args['pl'] !== '' ) {
2163
-		$classes[] = $p_pl . sanitize_html_class( $args['pl'] );
2162
+	if (isset($args['pl']) && $args['pl'] !== '') {
2163
+		$classes[] = $p_pl . sanitize_html_class($args['pl']);
2164 2164
 		$pl        = $args['pl'];
2165 2165
 	} else {
2166 2166
 		$pl = null;
2167 2167
 	}
2168 2168
 
2169 2169
 	// padding tablet.
2170
-	if ( isset( $args['pt_md'] ) && $args['pt_md'] !== '' ) {
2171
-		$classes[] = 'pt-md-' . sanitize_html_class( $args['pt_md'] );
2170
+	if (isset($args['pt_md']) && $args['pt_md'] !== '') {
2171
+		$classes[] = 'pt-md-' . sanitize_html_class($args['pt_md']);
2172 2172
 		$pt_md     = $args['pt_md'];
2173 2173
 	} else {
2174 2174
 		$pt_md = null;
2175 2175
 	}
2176
-	if ( isset( $args['pr_md'] ) && $args['pr_md'] !== '' ) {
2177
-		$classes[] = $p_pr . 'md-' . sanitize_html_class( $args['pr_md'] );
2176
+	if (isset($args['pr_md']) && $args['pr_md'] !== '') {
2177
+		$classes[] = $p_pr . 'md-' . sanitize_html_class($args['pr_md']);
2178 2178
 		$pr_md     = $args['pr_md'];
2179 2179
 	} else {
2180 2180
 		$pr_md = null;
2181 2181
 	}
2182
-	if ( isset( $args['pb_md'] ) && $args['pb_md'] !== '' ) {
2183
-		$classes[] = 'pb-md-' . sanitize_html_class( $args['pb_md'] );
2182
+	if (isset($args['pb_md']) && $args['pb_md'] !== '') {
2183
+		$classes[] = 'pb-md-' . sanitize_html_class($args['pb_md']);
2184 2184
 		$pb_md     = $args['pb_md'];
2185 2185
 	} else {
2186 2186
 		$pb_md = null;
2187 2187
 	}
2188
-	if ( isset( $args['pl_md'] ) && $args['pl_md'] !== '' ) {
2189
-		$classes[] = $p_pl . 'md-' . sanitize_html_class( $args['pl_md'] );
2188
+	if (isset($args['pl_md']) && $args['pl_md'] !== '') {
2189
+		$classes[] = $p_pl . 'md-' . sanitize_html_class($args['pl_md']);
2190 2190
 		$pl_md     = $args['pl_md'];
2191 2191
 	} else {
2192 2192
 		$pl_md = null;
2193 2193
 	}
2194 2194
 
2195 2195
 	// padding desktop.
2196
-	if ( isset( $args['pt_lg'] ) && $args['pt_lg'] !== '' ) {
2197
-		if ( $pt == null && $pt_md == null ) {
2198
-			$classes[] = 'pt-' . sanitize_html_class( $args['pt_lg'] );
2196
+	if (isset($args['pt_lg']) && $args['pt_lg'] !== '') {
2197
+		if ($pt == null && $pt_md == null) {
2198
+			$classes[] = 'pt-' . sanitize_html_class($args['pt_lg']);
2199 2199
 		} else {
2200
-			$classes[] = 'pt-lg-' . sanitize_html_class( $args['pt_lg'] );
2200
+			$classes[] = 'pt-lg-' . sanitize_html_class($args['pt_lg']);
2201 2201
 		}
2202 2202
 	}
2203
-	if ( isset( $args['pr_lg'] ) && $args['pr_lg'] !== '' ) {
2204
-		if ( $pr == null && $pr_md == null ) {
2205
-			$classes[] = $p_pr . sanitize_html_class( $args['pr_lg'] );
2203
+	if (isset($args['pr_lg']) && $args['pr_lg'] !== '') {
2204
+		if ($pr == null && $pr_md == null) {
2205
+			$classes[] = $p_pr . sanitize_html_class($args['pr_lg']);
2206 2206
 		} else {
2207
-			$classes[] = $p_pr . 'lg-' . sanitize_html_class( $args['pr_lg'] );
2207
+			$classes[] = $p_pr . 'lg-' . sanitize_html_class($args['pr_lg']);
2208 2208
 		}
2209 2209
 	}
2210
-	if ( isset( $args['pb_lg'] ) && $args['pb_lg'] !== '' ) {
2211
-		if ( $pb == null && $pb_md == null ) {
2212
-			$classes[] = 'pb-' . sanitize_html_class( $args['pb_lg'] );
2210
+	if (isset($args['pb_lg']) && $args['pb_lg'] !== '') {
2211
+		if ($pb == null && $pb_md == null) {
2212
+			$classes[] = 'pb-' . sanitize_html_class($args['pb_lg']);
2213 2213
 		} else {
2214
-			$classes[] = 'pb-lg-' . sanitize_html_class( $args['pb_lg'] );
2214
+			$classes[] = 'pb-lg-' . sanitize_html_class($args['pb_lg']);
2215 2215
 		}
2216 2216
 	}
2217
-	if ( isset( $args['pl_lg'] ) && $args['pl_lg'] !== '' ) {
2218
-		if ( $pl == null && $pl_md == null ) {
2219
-			$classes[] = $p_pl . sanitize_html_class( $args['pl_lg'] );
2217
+	if (isset($args['pl_lg']) && $args['pl_lg'] !== '') {
2218
+		if ($pl == null && $pl_md == null) {
2219
+			$classes[] = $p_pl . sanitize_html_class($args['pl_lg']);
2220 2220
 		} else {
2221
-			$classes[] = $p_pl . 'lg-' . sanitize_html_class( $args['pl_lg'] );
2221
+			$classes[] = $p_pl . 'lg-' . sanitize_html_class($args['pl_lg']);
2222 2222
 		}
2223 2223
 	}
2224 2224
 
2225 2225
 	// row cols, mobile, tablet, desktop
2226
-	if ( ! empty( $args['row_cols'] ) && $args['row_cols'] !== '' ) {
2227
-		$classes[] = sanitize_html_class( 'row-cols-' . $args['row_cols'] );
2226
+	if (!empty($args['row_cols']) && $args['row_cols'] !== '') {
2227
+		$classes[] = sanitize_html_class('row-cols-' . $args['row_cols']);
2228 2228
 		$row_cols  = $args['row_cols'];
2229 2229
 	} else {
2230 2230
 		$row_cols = null;
2231 2231
 	}
2232
-	if ( ! empty( $args['row_cols_md'] ) && $args['row_cols_md'] !== '' ) {
2233
-		$classes[]   = sanitize_html_class( 'row-cols-md-' . $args['row_cols_md'] );
2232
+	if (!empty($args['row_cols_md']) && $args['row_cols_md'] !== '') {
2233
+		$classes[]   = sanitize_html_class('row-cols-md-' . $args['row_cols_md']);
2234 2234
 		$row_cols_md = $args['row_cols_md'];
2235 2235
 	} else {
2236 2236
 		$row_cols_md = null;
2237 2237
 	}
2238
-	if ( ! empty( $args['row_cols_lg'] ) && $args['row_cols_lg'] !== '' ) {
2239
-		if ( $row_cols == null && $row_cols_md == null ) {
2240
-			$classes[] = sanitize_html_class( 'row-cols-' . $args['row_cols_lg'] );
2238
+	if (!empty($args['row_cols_lg']) && $args['row_cols_lg'] !== '') {
2239
+		if ($row_cols == null && $row_cols_md == null) {
2240
+			$classes[] = sanitize_html_class('row-cols-' . $args['row_cols_lg']);
2241 2241
 		} else {
2242
-			$classes[] = sanitize_html_class( 'row-cols-lg-' . $args['row_cols_lg'] );
2242
+			$classes[] = sanitize_html_class('row-cols-lg-' . $args['row_cols_lg']);
2243 2243
 		}
2244 2244
 	}
2245 2245
 
2246 2246
 	// columns , mobile, tablet, desktop
2247
-	if ( ! empty( $args['col'] ) && $args['col'] !== '' ) {
2248
-		$classes[] = sanitize_html_class( 'col-' . $args['col'] );
2247
+	if (!empty($args['col']) && $args['col'] !== '') {
2248
+		$classes[] = sanitize_html_class('col-' . $args['col']);
2249 2249
 		$col       = $args['col'];
2250 2250
 	} else {
2251 2251
 		$col = null;
2252 2252
 	}
2253
-	if ( ! empty( $args['col_md'] ) && $args['col_md'] !== '' ) {
2254
-		$classes[] = sanitize_html_class( 'col-md-' . $args['col_md'] );
2253
+	if (!empty($args['col_md']) && $args['col_md'] !== '') {
2254
+		$classes[] = sanitize_html_class('col-md-' . $args['col_md']);
2255 2255
 		$col_md    = $args['col_md'];
2256 2256
 	} else {
2257 2257
 		$col_md = null;
2258 2258
 	}
2259
-	if ( ! empty( $args['col_lg'] ) && $args['col_lg'] !== '' ) {
2260
-		if ( $col == null && $col_md == null ) {
2261
-			$classes[] = sanitize_html_class( 'col-' . $args['col_lg'] );
2259
+	if (!empty($args['col_lg']) && $args['col_lg'] !== '') {
2260
+		if ($col == null && $col_md == null) {
2261
+			$classes[] = sanitize_html_class('col-' . $args['col_lg']);
2262 2262
 		} else {
2263
-			$classes[] = sanitize_html_class( 'col-lg-' . $args['col_lg'] );
2263
+			$classes[] = sanitize_html_class('col-lg-' . $args['col_lg']);
2264 2264
 		}
2265 2265
 	}
2266 2266
 
2267 2267
 	// border
2268
-	if ( isset( $args['border'] ) && ( $args['border'] == 'none' || $args['border'] === '0' || $args['border'] === 0 ) ) {
2268
+	if (isset($args['border']) && ($args['border'] == 'none' || $args['border'] === '0' || $args['border'] === 0)) {
2269 2269
 		$classes[] = 'border-0';
2270
-	} elseif ( ! empty( $args['border'] ) ) {
2270
+	} elseif (!empty($args['border'])) {
2271 2271
 		$border_class = 'border';
2272
-		if ( ! empty( $args['border_type'] ) && strpos( $args['border_type'], '-0' ) === false ) {
2272
+		if (!empty($args['border_type']) && strpos($args['border_type'], '-0') === false) {
2273 2273
 			$border_class = '';
2274 2274
 		}
2275
-		$classes[] = $border_class . ' border-' . sanitize_html_class( $args['border'] );
2275
+		$classes[] = $border_class . ' border-' . sanitize_html_class($args['border']);
2276 2276
 	}
2277 2277
 
2278 2278
 	// border radius type
2279
-	if ( ! empty( $args['rounded'] ) ) {
2280
-		$classes[] = sanitize_html_class( $args['rounded'] );
2279
+	if (!empty($args['rounded'])) {
2280
+		$classes[] = sanitize_html_class($args['rounded']);
2281 2281
 	}
2282 2282
 
2283 2283
 	// border radius size BS4
2284
-	if ( isset( $args['rounded_size'] ) && in_array( $args['rounded_size'], array( 'sm', 'lg' ) ) ) {
2285
-		$classes[] = 'rounded-' . sanitize_html_class( $args['rounded_size'] );
2284
+	if (isset($args['rounded_size']) && in_array($args['rounded_size'], array('sm', 'lg'))) {
2285
+		$classes[] = 'rounded-' . sanitize_html_class($args['rounded_size']);
2286 2286
 		// if we set a size then we need to remove "rounded" if set
2287
-		if ( ( $key = array_search( 'rounded', $classes ) ) !== false ) {
2288
-			unset( $classes[ $key ] );
2287
+		if (($key = array_search('rounded', $classes)) !== false) {
2288
+			unset($classes[$key]);
2289 2289
 		}
2290 2290
 	} else {
2291 2291
 
2292 2292
 		// border radius size , mobile, tablet, desktop
2293
-		if ( isset( $args['rounded_size'] ) && $args['rounded_size'] !== '' ) {
2294
-			$classes[]    = sanitize_html_class( 'rounded-' . $args['rounded_size'] );
2293
+		if (isset($args['rounded_size']) && $args['rounded_size'] !== '') {
2294
+			$classes[]    = sanitize_html_class('rounded-' . $args['rounded_size']);
2295 2295
 			$rounded_size = $args['rounded_size'];
2296 2296
 		} else {
2297 2297
 			$rounded_size = null;
2298 2298
 		}
2299
-		if ( isset( $args['rounded_size_md'] ) && $args['rounded_size_md'] !== '' ) {
2300
-			$classes[]       = sanitize_html_class( 'rounded-md-' . $args['rounded_size_md'] );
2299
+		if (isset($args['rounded_size_md']) && $args['rounded_size_md'] !== '') {
2300
+			$classes[]       = sanitize_html_class('rounded-md-' . $args['rounded_size_md']);
2301 2301
 			$rounded_size_md = $args['rounded_size_md'];
2302 2302
 		} else {
2303 2303
 			$rounded_size_md = null;
2304 2304
 		}
2305
-		if ( isset( $args['rounded_size_lg'] ) && $args['rounded_size_lg'] !== '' ) {
2306
-			if ( $rounded_size == null && $rounded_size_md == null ) {
2307
-				$classes[] = sanitize_html_class( 'rounded-' . $args['rounded_size_lg'] );
2305
+		if (isset($args['rounded_size_lg']) && $args['rounded_size_lg'] !== '') {
2306
+			if ($rounded_size == null && $rounded_size_md == null) {
2307
+				$classes[] = sanitize_html_class('rounded-' . $args['rounded_size_lg']);
2308 2308
 			} else {
2309
-				$classes[] = sanitize_html_class( 'rounded-lg-' . $args['rounded_size_lg'] );
2309
+				$classes[] = sanitize_html_class('rounded-lg-' . $args['rounded_size_lg']);
2310 2310
 			}
2311 2311
 		}
2312 2312
 	}
@@ -2315,140 +2315,140 @@  discard block
 block discarded – undo
2315 2315
 	//if ( !empty( $args['shadow'] ) ) { $classes[] = sanitize_html_class($args['shadow']); }
2316 2316
 
2317 2317
 	// background
2318
-	if ( ! empty( $args['bg'] ) ) {
2319
-		$classes[] = 'bg-' . sanitize_html_class( $args['bg'] );
2318
+	if (!empty($args['bg'])) {
2319
+		$classes[] = 'bg-' . sanitize_html_class($args['bg']);
2320 2320
 	}
2321 2321
 
2322 2322
 	// text_color
2323
-	if ( ! empty( $args['text_color'] ) ) {
2324
-		$classes[] = 'text-' . sanitize_html_class( $args['text_color'] );
2323
+	if (!empty($args['text_color'])) {
2324
+		$classes[] = 'text-' . sanitize_html_class($args['text_color']);
2325 2325
 	}
2326 2326
 
2327 2327
 	// text_align
2328
-	if ( ! empty( $args['text_justify'] ) ) {
2328
+	if (!empty($args['text_justify'])) {
2329 2329
 		$classes[] = 'text-justify';
2330 2330
 	} else {
2331
-		if ( ! empty( $args['text_align'] ) ) {
2332
-			$classes[]  = sanitize_html_class( $args['text_align'] );
2331
+		if (!empty($args['text_align'])) {
2332
+			$classes[]  = sanitize_html_class($args['text_align']);
2333 2333
 			$text_align = $args['text_align'];
2334 2334
 		} else {
2335 2335
 			$text_align = null;
2336 2336
 		}
2337
-		if ( ! empty( $args['text_align_md'] ) && $args['text_align_md'] !== '' ) {
2338
-			$classes[]     = sanitize_html_class( $args['text_align_md'] );
2337
+		if (!empty($args['text_align_md']) && $args['text_align_md'] !== '') {
2338
+			$classes[]     = sanitize_html_class($args['text_align_md']);
2339 2339
 			$text_align_md = $args['text_align_md'];
2340 2340
 		} else {
2341 2341
 			$text_align_md = null;
2342 2342
 		}
2343
-		if ( ! empty( $args['text_align_lg'] ) && $args['text_align_lg'] !== '' ) {
2344
-			if ( $text_align == null && $text_align_md == null ) {
2345
-				$classes[] = sanitize_html_class( str_replace( '-lg', '', $args['text_align_lg'] ) );
2343
+		if (!empty($args['text_align_lg']) && $args['text_align_lg'] !== '') {
2344
+			if ($text_align == null && $text_align_md == null) {
2345
+				$classes[] = sanitize_html_class(str_replace('-lg', '', $args['text_align_lg']));
2346 2346
 			} else {
2347
-				$classes[] = sanitize_html_class( $args['text_align_lg'] );
2347
+				$classes[] = sanitize_html_class($args['text_align_lg']);
2348 2348
 			}
2349 2349
 		}
2350 2350
 	}
2351 2351
 
2352 2352
 	// display
2353
-	if ( ! empty( $args['display'] ) ) {
2354
-		$classes[] = sanitize_html_class( $args['display'] );
2353
+	if (!empty($args['display'])) {
2354
+		$classes[] = sanitize_html_class($args['display']);
2355 2355
 		$display   = $args['display'];
2356 2356
 	} else {
2357 2357
 		$display = null;
2358 2358
 	}
2359
-	if ( ! empty( $args['display_md'] ) && $args['display_md'] !== '' ) {
2360
-		$classes[]  = sanitize_html_class( $args['display_md'] );
2359
+	if (!empty($args['display_md']) && $args['display_md'] !== '') {
2360
+		$classes[]  = sanitize_html_class($args['display_md']);
2361 2361
 		$display_md = $args['display_md'];
2362 2362
 	} else {
2363 2363
 		$display_md = null;
2364 2364
 	}
2365
-	if ( ! empty( $args['display_lg'] ) && $args['display_lg'] !== '' ) {
2366
-		if ( $display == null && $display_md == null ) {
2367
-			$classes[] = sanitize_html_class( str_replace( '-lg', '', $args['display_lg'] ) );
2365
+	if (!empty($args['display_lg']) && $args['display_lg'] !== '') {
2366
+		if ($display == null && $display_md == null) {
2367
+			$classes[] = sanitize_html_class(str_replace('-lg', '', $args['display_lg']));
2368 2368
 		} else {
2369
-			$classes[] = sanitize_html_class( $args['display_lg'] );
2369
+			$classes[] = sanitize_html_class($args['display_lg']);
2370 2370
 		}
2371 2371
 	}
2372 2372
 
2373 2373
 	// bgtus - background transparent until scroll
2374
-	if ( ! empty( $args['bgtus'] ) ) {
2375
-		$classes[] = sanitize_html_class( 'bg-transparent-until-scroll' );
2374
+	if (!empty($args['bgtus'])) {
2375
+		$classes[] = sanitize_html_class('bg-transparent-until-scroll');
2376 2376
 	}
2377 2377
 
2378 2378
 	// cscos - change color scheme on scroll
2379
-	if ( ! empty( $args['bgtus'] ) && ! empty( $args['cscos'] ) ) {
2380
-		$classes[] = sanitize_html_class( 'color-scheme-flip-on-scroll' );
2379
+	if (!empty($args['bgtus']) && !empty($args['cscos'])) {
2380
+		$classes[] = sanitize_html_class('color-scheme-flip-on-scroll');
2381 2381
 	}
2382 2382
 
2383 2383
 	// hover animations
2384
-	if ( ! empty( $args['hover_animations'] ) ) {
2385
-		$classes[] = sd_sanitize_html_classes( str_replace( ',', ' ', $args['hover_animations'] ) );
2384
+	if (!empty($args['hover_animations'])) {
2385
+		$classes[] = sd_sanitize_html_classes(str_replace(',', ' ', $args['hover_animations']));
2386 2386
 	}
2387 2387
 
2388 2388
 	// absolute_position
2389
-	if ( ! empty( $args['absolute_position'] ) ) {
2390
-		if ( 'top-left' === $args['absolute_position'] ) {
2389
+	if (!empty($args['absolute_position'])) {
2390
+		if ('top-left' === $args['absolute_position']) {
2391 2391
 			$classes[] = 'start-0 top-0';
2392
-		} elseif ( 'top-center' === $args['absolute_position'] ) {
2392
+		} elseif ('top-center' === $args['absolute_position']) {
2393 2393
 			$classes[] = 'start-50 top-0 translate-middle';
2394
-		} elseif ( 'top-right' === $args['absolute_position'] ) {
2394
+		} elseif ('top-right' === $args['absolute_position']) {
2395 2395
 			$classes[] = 'end-0 top-0';
2396
-		} elseif ( 'center-left' === $args['absolute_position'] ) {
2396
+		} elseif ('center-left' === $args['absolute_position']) {
2397 2397
 			$classes[] = 'start-0 top-50';
2398
-		} elseif ( 'center' === $args['absolute_position'] ) {
2398
+		} elseif ('center' === $args['absolute_position']) {
2399 2399
 			$classes[] = 'start-50 top-50 translate-middle';
2400
-		} elseif ( 'center-right' === $args['absolute_position'] ) {
2400
+		} elseif ('center-right' === $args['absolute_position']) {
2401 2401
 			$classes[] = 'end-0 top-50';
2402
-		} elseif ( 'bottom-left' === $args['absolute_position'] ) {
2402
+		} elseif ('bottom-left' === $args['absolute_position']) {
2403 2403
 			$classes[] = 'start-0 bottom-0';
2404
-		} elseif ( 'bottom-center' === $args['absolute_position'] ) {
2404
+		} elseif ('bottom-center' === $args['absolute_position']) {
2405 2405
 			$classes[] = 'start-50 bottom-0 translate-middle';
2406
-		} elseif ( 'bottom-right' === $args['absolute_position'] ) {
2406
+		} elseif ('bottom-right' === $args['absolute_position']) {
2407 2407
 			$classes[] = 'end-0 bottom-0';
2408 2408
 		}
2409 2409
 	}
2410 2410
 
2411 2411
 	// build classes from build keys
2412 2412
 	$build_keys = sd_get_class_build_keys();
2413
-	if ( ! empty( $build_keys ) ) {
2414
-		foreach ( $build_keys as $key ) {
2413
+	if (!empty($build_keys)) {
2414
+		foreach ($build_keys as $key) {
2415 2415
 
2416
-			if ( substr( $key, -4 ) == '-MTD' ) {
2416
+			if (substr($key, -4) == '-MTD') {
2417 2417
 
2418
-				$k = str_replace( '-MTD', '', $key );
2418
+				$k = str_replace('-MTD', '', $key);
2419 2419
 
2420 2420
 				// Mobile, Tablet, Desktop
2421
-				if ( ! empty( $args[ $k ] ) && $args[ $k ] !== '' ) {
2422
-					$classes[] = sanitize_html_class( $args[ $k ] );
2423
-					$v         = $args[ $k ];
2421
+				if (!empty($args[$k]) && $args[$k] !== '') {
2422
+					$classes[] = sanitize_html_class($args[$k]);
2423
+					$v         = $args[$k];
2424 2424
 				} else {
2425 2425
 					$v = null;
2426 2426
 				}
2427
-				if ( ! empty( $args[ $k . '_md' ] ) && $args[ $k . '_md' ] !== '' ) {
2428
-					$classes[] = sanitize_html_class( $args[ $k . '_md' ] );
2429
-					$v_md      = $args[ $k . '_md' ];
2427
+				if (!empty($args[$k . '_md']) && $args[$k . '_md'] !== '') {
2428
+					$classes[] = sanitize_html_class($args[$k . '_md']);
2429
+					$v_md      = $args[$k . '_md'];
2430 2430
 				} else {
2431 2431
 					$v_md = null;
2432 2432
 				}
2433
-				if ( ! empty( $args[ $k . '_lg' ] ) && $args[ $k . '_lg' ] !== '' ) {
2434
-					if ( $v == null && $v_md == null ) {
2435
-						$classes[] = sanitize_html_class( str_replace( '-lg', '', $args[ $k . '_lg' ] ) );
2433
+				if (!empty($args[$k . '_lg']) && $args[$k . '_lg'] !== '') {
2434
+					if ($v == null && $v_md == null) {
2435
+						$classes[] = sanitize_html_class(str_replace('-lg', '', $args[$k . '_lg']));
2436 2436
 					} else {
2437
-						$classes[] = sanitize_html_class( $args[ $k . '_lg' ] );
2437
+						$classes[] = sanitize_html_class($args[$k . '_lg']);
2438 2438
 					}
2439 2439
 				}
2440 2440
 			} else {
2441
-				if ( $key == 'font_size' && ! empty( $args[ $key ] ) && $args[ $key ] == 'custom' ) {
2441
+				if ($key == 'font_size' && !empty($args[$key]) && $args[$key] == 'custom') {
2442 2442
 					continue;
2443 2443
 				}
2444
-				if ( ! empty( $args[ $key ] ) ) {
2445
-					$classes[] = sd_sanitize_html_classes( $args[ $key ] );
2444
+				if (!empty($args[$key])) {
2445
+					$classes[] = sd_sanitize_html_classes($args[$key]);
2446 2446
 				}
2447 2447
 			}
2448 2448
 		}
2449 2449
 	}
2450 2450
 
2451
-	return implode( ' ', $classes );
2451
+	return implode(' ', $classes);
2452 2452
 }
2453 2453
 
2454 2454
 /**
@@ -2458,19 +2458,19 @@  discard block
 block discarded – undo
2458 2458
  *
2459 2459
  * @return array
2460 2460
  */
2461
-function sd_build_aui_styles( $args ) {
2461
+function sd_build_aui_styles($args) {
2462 2462
 
2463 2463
 	$styles = array();
2464 2464
 
2465 2465
 	// background color
2466
-	if ( ! empty( $args['bg'] ) && $args['bg'] !== '' ) {
2467
-		if ( $args['bg'] == 'custom-color' ) {
2466
+	if (!empty($args['bg']) && $args['bg'] !== '') {
2467
+		if ($args['bg'] == 'custom-color') {
2468 2468
 			$styles['background-color'] = $args['bg_color'];
2469
-		} elseif ( $args['bg'] == 'custom-gradient' ) {
2469
+		} elseif ($args['bg'] == 'custom-gradient') {
2470 2470
 			$styles['background-image'] = $args['bg_gradient'];
2471 2471
 
2472 2472
 			// use background on text.
2473
-			if ( ! empty( $args['bg_on_text'] ) && $args['bg_on_text'] ) {
2473
+			if (!empty($args['bg_on_text']) && $args['bg_on_text']) {
2474 2474
 				$styles['background-clip']         = 'text';
2475 2475
 				$styles['-webkit-background-clip'] = 'text';
2476 2476
 				$styles['text-fill-color']         = 'transparent';
@@ -2479,67 +2479,67 @@  discard block
 block discarded – undo
2479 2479
 		}
2480 2480
 	}
2481 2481
 
2482
-	if ( ! empty( $args['bg_image'] ) && $args['bg_image'] !== '' ) {
2482
+	if (!empty($args['bg_image']) && $args['bg_image'] !== '') {
2483 2483
 		$hasImage = true;
2484
-		if ( ! empty( $styles['background-color'] ) && $args['bg'] == 'custom-color' ) {
2484
+		if (!empty($styles['background-color']) && $args['bg'] == 'custom-color') {
2485 2485
 			$styles['background-image']      = 'url(' . $args['bg_image'] . ')';
2486 2486
 			$styles['background-blend-mode'] = 'overlay';
2487
-		} elseif ( ! empty( $styles['background-image'] ) && $args['bg'] == 'custom-gradient' ) {
2487
+		} elseif (!empty($styles['background-image']) && $args['bg'] == 'custom-gradient') {
2488 2488
 			$styles['background-image'] .= ',url(' . $args['bg_image'] . ')';
2489
-		} elseif ( ! empty( $args['bg'] ) && $args['bg'] != '' && $args['bg'] != 'transparent' ) {
2489
+		} elseif (!empty($args['bg']) && $args['bg'] != '' && $args['bg'] != 'transparent') {
2490 2490
 			// do nothing as we alreay have a preset
2491 2491
 			$hasImage = false;
2492 2492
 		} else {
2493 2493
 			$styles['background-image'] = 'url(' . $args['bg_image'] . ')';
2494 2494
 		}
2495 2495
 
2496
-		if ( $hasImage ) {
2496
+		if ($hasImage) {
2497 2497
 			$styles['background-size'] = 'cover';
2498 2498
 
2499
-			if ( ! empty( $args['bg_image_fixed'] ) && $args['bg_image_fixed'] ) {
2499
+			if (!empty($args['bg_image_fixed']) && $args['bg_image_fixed']) {
2500 2500
 				$styles['background-attachment'] = 'fixed';
2501 2501
 			}
2502 2502
 		}
2503 2503
 
2504
-		if ( $hasImage && ! empty( $args['bg_image_xy'] ) && ! empty( $args['bg_image_xy']['x'] ) ) {
2505
-			$styles['background-position'] = ( $args['bg_image_xy']['x'] * 100 ) . '% ' . ( $args['bg_image_xy']['y'] * 100 ) . '%';
2504
+		if ($hasImage && !empty($args['bg_image_xy']) && !empty($args['bg_image_xy']['x'])) {
2505
+			$styles['background-position'] = ($args['bg_image_xy']['x'] * 100) . '% ' . ($args['bg_image_xy']['y'] * 100) . '%';
2506 2506
 		}
2507 2507
 	}
2508 2508
 
2509 2509
 	// sticky offset top
2510
-	if ( ! empty( $args['sticky_offset_top'] ) && $args['sticky_offset_top'] !== '' ) {
2511
-		$styles['top'] = absint( $args['sticky_offset_top'] );
2510
+	if (!empty($args['sticky_offset_top']) && $args['sticky_offset_top'] !== '') {
2511
+		$styles['top'] = absint($args['sticky_offset_top']);
2512 2512
 	}
2513 2513
 
2514 2514
 	// sticky offset bottom
2515
-	if ( ! empty( $args['sticky_offset_bottom'] ) && $args['sticky_offset_bottom'] !== '' ) {
2516
-		$styles['bottom'] = absint( $args['sticky_offset_bottom'] );
2515
+	if (!empty($args['sticky_offset_bottom']) && $args['sticky_offset_bottom'] !== '') {
2516
+		$styles['bottom'] = absint($args['sticky_offset_bottom']);
2517 2517
 	}
2518 2518
 
2519 2519
 	// font size
2520
-	if ( ! empty( $args['font_size_custom'] ) && $args['font_size_custom'] !== '' ) {
2520
+	if (!empty($args['font_size_custom']) && $args['font_size_custom'] !== '') {
2521 2521
 		$styles['font-size'] = (float) $args['font_size_custom'] . 'rem';
2522 2522
 	}
2523 2523
 
2524 2524
 	// font color
2525
-	if ( ! empty( $args['text_color_custom'] ) && $args['text_color_custom'] !== '' ) {
2526
-		$styles['color'] = esc_attr( $args['text_color_custom'] );
2525
+	if (!empty($args['text_color_custom']) && $args['text_color_custom'] !== '') {
2526
+		$styles['color'] = esc_attr($args['text_color_custom']);
2527 2527
 	}
2528 2528
 
2529 2529
 	// font line height
2530
-	if ( ! empty( $args['font_line_height'] ) && $args['font_line_height'] !== '' ) {
2531
-		$styles['line-height'] = esc_attr( $args['font_line_height'] );
2530
+	if (!empty($args['font_line_height']) && $args['font_line_height'] !== '') {
2531
+		$styles['line-height'] = esc_attr($args['font_line_height']);
2532 2532
 	}
2533 2533
 
2534 2534
 	// max height
2535
-	if ( ! empty( $args['max_height'] ) && $args['max_height'] !== '' ) {
2536
-		$styles['max-height'] = esc_attr( $args['max_height'] );
2535
+	if (!empty($args['max_height']) && $args['max_height'] !== '') {
2536
+		$styles['max-height'] = esc_attr($args['max_height']);
2537 2537
 	}
2538 2538
 
2539 2539
 	$style_string = '';
2540
-	if ( ! empty( $styles ) ) {
2541
-		foreach ( $styles as $key => $val ) {
2542
-			$style_string .= esc_attr( $key ) . ':' . esc_attr( $val ) . ';';
2540
+	if (!empty($styles)) {
2541
+		foreach ($styles as $key => $val) {
2542
+			$style_string .= esc_attr($key) . ':' . esc_attr($val) . ';';
2543 2543
 		}
2544 2544
 	}
2545 2545
 
@@ -2555,28 +2555,28 @@  discard block
 block discarded – undo
2555 2555
  *
2556 2556
  * @return string
2557 2557
  */
2558
-function sd_build_hover_styles( $args, $is_preview = false ) {
2558
+function sd_build_hover_styles($args, $is_preview = false) {
2559 2559
 	$rules = '';
2560 2560
 	// text color
2561
-	if ( ! empty( $args['styleid'] ) ) {
2562
-		$styleid = $is_preview ? 'html .editor-styles-wrapper .' . esc_attr( $args['styleid'] ) : 'html .' . esc_attr( $args['styleid'] );
2561
+	if (!empty($args['styleid'])) {
2562
+		$styleid = $is_preview ? 'html .editor-styles-wrapper .' . esc_attr($args['styleid']) : 'html .' . esc_attr($args['styleid']);
2563 2563
 
2564 2564
 		// text
2565
-		if ( ! empty( $args['text_color_hover'] ) ) {
2566
-			$key    = 'custom' === $args['text_color_hover'] && ! empty( $args['text_color_hover_custom'] ) ? 'text_color_hover_custom' : 'text_color_hover';
2567
-			$color  = sd_get_color_from_var( $args[ $key ] );
2565
+		if (!empty($args['text_color_hover'])) {
2566
+			$key    = 'custom' === $args['text_color_hover'] && !empty($args['text_color_hover_custom']) ? 'text_color_hover_custom' : 'text_color_hover';
2567
+			$color  = sd_get_color_from_var($args[$key]);
2568 2568
 			$rules .= $styleid . ':hover {color: ' . $color . ' !important;} ';
2569 2569
 		}
2570 2570
 
2571 2571
 		// bg
2572
-		if ( ! empty( $args['bg_hover'] ) ) {
2573
-			if ( 'custom-gradient' === $args['bg_hover'] ) {
2572
+		if (!empty($args['bg_hover'])) {
2573
+			if ('custom-gradient' === $args['bg_hover']) {
2574 2574
 				$color  = $args['bg_hover_gradient'];
2575 2575
 				$rules .= $styleid . ':hover {background-image: ' . $color . ' !important;} ';
2576 2576
 				$rules .= $styleid . '.btn:hover {border-color: transparent !important;} ';
2577 2577
 			} else {
2578 2578
 				$key    = 'custom-color' === $args['bg_hover'] ? 'bg_hover_color' : 'bg_hover';
2579
-				$color  = sd_get_color_from_var( $args[ $key ] );
2579
+				$color  = sd_get_color_from_var($args[$key]);
2580 2580
 				$rules .= $styleid . ':hover {background: ' . $color . ' !important;} ';
2581 2581
 				$rules .= $styleid . '.btn:hover {border-color: ' . $color . ' !important;} ';
2582 2582
 			}
@@ -2593,11 +2593,11 @@  discard block
 block discarded – undo
2593 2593
  *
2594 2594
  * @return mixed|string
2595 2595
  */
2596
-function sd_get_color_from_var( $var ) {
2596
+function sd_get_color_from_var($var) {
2597 2597
 
2598 2598
 	//sanitize_hex_color() @todo this does not cover transparency
2599
-	if ( strpos( $var, '#' ) === false ) {
2600
-		$var = defined( 'BLOCKSTRAP_BLOCKS_VERSION' ) ? 'var(--wp--preset--color--' . esc_attr( $var ) . ')' : 'var(--' . esc_attr( $var ) . ')';
2599
+	if (strpos($var, '#') === false) {
2600
+		$var = defined('BLOCKSTRAP_BLOCKS_VERSION') ? 'var(--wp--preset--color--' . esc_attr($var) . ')' : 'var(--' . esc_attr($var) . ')';
2601 2601
 	}
2602 2602
 
2603 2603
 	return $var;
@@ -2611,16 +2611,16 @@  discard block
 block discarded – undo
2611 2611
  *
2612 2612
  * @return string
2613 2613
  */
2614
-function sd_sanitize_html_classes( $classes, $sep = ' ' ) {
2614
+function sd_sanitize_html_classes($classes, $sep = ' ') {
2615 2615
 	$return = '';
2616 2616
 
2617
-	if ( ! is_array( $classes ) ) {
2618
-		$classes = explode( $sep, $classes );
2617
+	if (!is_array($classes)) {
2618
+		$classes = explode($sep, $classes);
2619 2619
 	}
2620 2620
 
2621
-	if ( ! empty( $classes ) ) {
2622
-		foreach ( $classes as $class ) {
2623
-			$return .= sanitize_html_class( $class ) . ' ';
2621
+	if (!empty($classes)) {
2622
+		foreach ($classes as $class) {
2623
+			$return .= sanitize_html_class($class) . ' ';
2624 2624
 		}
2625 2625
 	}
2626 2626
 
@@ -2665,7 +2665,7 @@  discard block
 block discarded – undo
2665 2665
 		'float-MTD'
2666 2666
 	);
2667 2667
 
2668
-	return apply_filters( 'sd_class_build_keys', $keys );
2668
+	return apply_filters('sd_class_build_keys', $keys);
2669 2669
 }
2670 2670
 
2671 2671
 /**
@@ -2676,17 +2676,17 @@  discard block
 block discarded – undo
2676 2676
  *
2677 2677
  * @return array
2678 2678
  */
2679
-function sd_get_visibility_conditions_input( $type = 'visibility_conditions', $overwrite = array() ) {
2679
+function sd_get_visibility_conditions_input($type = 'visibility_conditions', $overwrite = array()) {
2680 2680
 	$defaults = array(
2681 2681
 		'type'         => 'visibility_conditions',
2682
-		'title'        => __( 'Block Visibility', 'ayecode-connect' ),
2683
-		'button_title' => __( 'Set Block Visibility', 'ayecode-connect' ),
2682
+		'title'        => __('Block Visibility', 'ayecode-connect'),
2683
+		'button_title' => __('Set Block Visibility', 'ayecode-connect'),
2684 2684
 		'default'      => '',
2685 2685
 		'desc_tip'     => true,
2686
-		'group'        => __( 'Visibility Conditions', 'ayecode-connect' ),
2686
+		'group'        => __('Visibility Conditions', 'ayecode-connect'),
2687 2687
 	);
2688 2688
 
2689
-	$input = wp_parse_args( $overwrite, $defaults );
2689
+	$input = wp_parse_args($overwrite, $defaults);
2690 2690
 
2691 2691
 	return $input;
2692 2692
 }
@@ -2699,22 +2699,22 @@  discard block
 block discarded – undo
2699 2699
  * @param array $exclude An array of roles to exclude from the return array.
2700 2700
  * @return array An array of roles.
2701 2701
  */
2702
-function sd_user_roles_options( $exclude = array() ) {
2702
+function sd_user_roles_options($exclude = array()) {
2703 2703
 	$user_roles = array();
2704 2704
 
2705
-	if ( !function_exists('get_editable_roles') ) {
2706
-		require_once( ABSPATH . '/wp-admin/includes/user.php' );
2705
+	if (!function_exists('get_editable_roles')) {
2706
+		require_once(ABSPATH . '/wp-admin/includes/user.php');
2707 2707
 	}
2708 2708
 
2709 2709
 	$roles = get_editable_roles();
2710 2710
 
2711
-	foreach ( $roles as $role => $data ) {
2712
-		if ( ! ( ! empty( $exclude ) && in_array( $role, $exclude ) ) ) {
2713
-			$user_roles[ esc_attr( $role ) ] = translate_user_role( $data['name'] );
2711
+	foreach ($roles as $role => $data) {
2712
+		if (!(!empty($exclude) && in_array($role, $exclude))) {
2713
+			$user_roles[esc_attr($role)] = translate_user_role($data['name']);
2714 2714
 		}
2715 2715
 	}
2716 2716
 
2717
-	return apply_filters( 'sd_user_roles_options', $user_roles );
2717
+	return apply_filters('sd_user_roles_options', $user_roles);
2718 2718
 }
2719 2719
 
2720 2720
 /**
@@ -2726,17 +2726,17 @@  discard block
 block discarded – undo
2726 2726
  */
2727 2727
 function sd_visibility_rules_options() {
2728 2728
 	$options = array(
2729
-		'logged_in'  => __( 'Logged In', 'ayecode-connect' ),
2730
-		'logged_out' => __( 'Logged Out', 'ayecode-connect' ),
2731
-		'post_author'  => __( 'Post Author', 'ayecode-connect' ),
2732
-		'user_roles' => __( 'Specific User Roles', 'ayecode-connect' )
2729
+		'logged_in'  => __('Logged In', 'ayecode-connect'),
2730
+		'logged_out' => __('Logged Out', 'ayecode-connect'),
2731
+		'post_author'  => __('Post Author', 'ayecode-connect'),
2732
+		'user_roles' => __('Specific User Roles', 'ayecode-connect')
2733 2733
 	);
2734 2734
 
2735
-	if ( class_exists( 'GeoDirectory' ) ) {
2736
-		$options['gd_field'] = __( 'GD Field', 'ayecode-connect' );
2735
+	if (class_exists('GeoDirectory')) {
2736
+		$options['gd_field'] = __('GD Field', 'ayecode-connect');
2737 2737
 	}
2738 2738
 
2739
-	return apply_filters( 'sd_visibility_rules_options', $options );
2739
+	return apply_filters('sd_visibility_rules_options', $options);
2740 2740
 }
2741 2741
 
2742 2742
 /**
@@ -2745,22 +2745,22 @@  discard block
 block discarded – undo
2745 2745
  * @return array
2746 2746
  */
2747 2747
 function sd_visibility_gd_field_options() {
2748
-	$fields = geodir_post_custom_fields( '', 'all', 'all', 'none' );
2748
+	$fields = geodir_post_custom_fields('', 'all', 'all', 'none');
2749 2749
 
2750 2750
 	$keys = array();
2751
-	if ( ! empty( $fields ) ) {
2752
-		foreach( $fields as $field ) {
2753
-			if ( apply_filters( 'geodir_badge_field_skip_key', false, $field ) ) {
2751
+	if (!empty($fields)) {
2752
+		foreach ($fields as $field) {
2753
+			if (apply_filters('geodir_badge_field_skip_key', false, $field)) {
2754 2754
 				continue;
2755 2755
 			}
2756 2756
 
2757
-			$keys[ $field['htmlvar_name'] ] = $field['htmlvar_name'] . ' ( ' . __( $field['admin_title'], 'geodirectory' ) . ' )';
2757
+			$keys[$field['htmlvar_name']] = $field['htmlvar_name'] . ' ( ' . __($field['admin_title'], 'geodirectory') . ' )';
2758 2758
 
2759 2759
 			// Extra address fields
2760
-			if ( $field['htmlvar_name'] == 'address' && ( $address_fields = geodir_post_meta_address_fields( '' ) ) ) {
2761
-				foreach ( $address_fields as $_field => $args ) {
2762
-					if ( $_field != 'map_directions' && $_field != 'street' ) {
2763
-						$keys[ $_field ] = $_field . ' ( ' . $args['frontend_title'] . ' )';
2760
+			if ($field['htmlvar_name'] == 'address' && ($address_fields = geodir_post_meta_address_fields(''))) {
2761
+				foreach ($address_fields as $_field => $args) {
2762
+					if ($_field != 'map_directions' && $_field != 'street') {
2763
+						$keys[$_field] = $_field . ' ( ' . $args['frontend_title'] . ' )';
2764 2764
 					}
2765 2765
 				}
2766 2766
 			}
@@ -2769,15 +2769,15 @@  discard block
 block discarded – undo
2769 2769
 
2770 2770
 	$standard_fields = sd_visibility_gd_standard_field_options();
2771 2771
 
2772
-	if ( ! empty( $standard_fields ) ) {
2773
-		foreach ( $standard_fields as $key => $option ) {
2774
-			$keys[ $key ] = $option;
2772
+	if (!empty($standard_fields)) {
2773
+		foreach ($standard_fields as $key => $option) {
2774
+			$keys[$key] = $option;
2775 2775
 		}
2776 2776
 	}
2777 2777
 
2778
-	$options = apply_filters( 'geodir_badge_field_keys', $keys );
2778
+	$options = apply_filters('geodir_badge_field_keys', $keys);
2779 2779
 
2780
-	return apply_filters( 'sd_visibility_gd_field_options', $options );
2780
+	return apply_filters('sd_visibility_gd_field_options', $options);
2781 2781
 }
2782 2782
 
2783 2783
 /**
@@ -2785,18 +2785,18 @@  discard block
 block discarded – undo
2785 2785
  *
2786 2786
  * @return array
2787 2787
  */
2788
-function sd_visibility_gd_standard_field_options( $post_type = '' ) {
2789
-	$fields = sd_visibility_gd_standard_fields( $post_type );
2788
+function sd_visibility_gd_standard_field_options($post_type = '') {
2789
+	$fields = sd_visibility_gd_standard_fields($post_type);
2790 2790
 
2791 2791
 	$options = array();
2792 2792
 
2793
-	foreach ( $fields as $key => $field ) {
2794
-		if ( ! empty( $field['frontend_title'] ) ) {
2795
-			$options[ $key ] = $key . ' ( ' . $field['frontend_title'] . ' )';
2793
+	foreach ($fields as $key => $field) {
2794
+		if (!empty($field['frontend_title'])) {
2795
+			$options[$key] = $key . ' ( ' . $field['frontend_title'] . ' )';
2796 2796
 		}
2797 2797
 	}
2798 2798
 
2799
-	return apply_filters( 'sd_visibility_gd_standard_field_options', $options, $fields );
2799
+	return apply_filters('sd_visibility_gd_standard_field_options', $options, $fields);
2800 2800
 }
2801 2801
 
2802 2802
 /**
@@ -2804,18 +2804,18 @@  discard block
 block discarded – undo
2804 2804
  *
2805 2805
  * @return array
2806 2806
  */
2807
-function sd_visibility_gd_standard_fields( $post_type = '' ) {
2808
-	$standard_fields = geodir_post_meta_standard_fields( $post_type );
2807
+function sd_visibility_gd_standard_fields($post_type = '') {
2808
+	$standard_fields = geodir_post_meta_standard_fields($post_type);
2809 2809
 
2810 2810
 	$fields = array();
2811 2811
 
2812
-	foreach ( $standard_fields as $key => $field ) {
2813
-		if ( $key != 'post_link' && strpos( $key, 'event' ) === false && ! empty( $field['frontend_title'] ) ) {
2814
-			$fields[ $key ] = $field;
2812
+	foreach ($standard_fields as $key => $field) {
2813
+		if ($key != 'post_link' && strpos($key, 'event') === false && !empty($field['frontend_title'])) {
2814
+			$fields[$key] = $field;
2815 2815
 		}
2816 2816
 	}
2817 2817
 
2818
-	return apply_filters( 'sd_visibility_gd_standard_fields', $fields );
2818
+	return apply_filters('sd_visibility_gd_standard_fields', $fields);
2819 2819
 }
2820 2820
 
2821 2821
 /**
@@ -2823,19 +2823,19 @@  discard block
 block discarded – undo
2823 2823
  *
2824 2824
  * @return array
2825 2825
  */
2826
-function sd_visibility_field_condition_options(){
2826
+function sd_visibility_field_condition_options() {
2827 2827
 	$options = array(
2828
-		'is_empty' => __( 'is empty', 'ayecode-connect' ),
2829
-		'is_not_empty' => __( 'is not empty', 'ayecode-connect' ),
2830
-		'is_equal' => __( 'is equal', 'ayecode-connect' ),
2831
-		'is_not_equal' => __( 'is not equal', 'ayecode-connect' ),
2832
-		'is_greater_than' => __( 'is greater than', 'ayecode-connect' ),
2833
-		'is_less_than' => __( 'is less than', 'ayecode-connect' ),
2834
-		'is_contains' => __( 'is contains', 'ayecode-connect' ),
2835
-		'is_not_contains' => __( 'is not contains', 'ayecode-connect' ),
2828
+		'is_empty' => __('is empty', 'ayecode-connect'),
2829
+		'is_not_empty' => __('is not empty', 'ayecode-connect'),
2830
+		'is_equal' => __('is equal', 'ayecode-connect'),
2831
+		'is_not_equal' => __('is not equal', 'ayecode-connect'),
2832
+		'is_greater_than' => __('is greater than', 'ayecode-connect'),
2833
+		'is_less_than' => __('is less than', 'ayecode-connect'),
2834
+		'is_contains' => __('is contains', 'ayecode-connect'),
2835
+		'is_not_contains' => __('is not contains', 'ayecode-connect'),
2836 2836
 	);
2837 2837
 
2838
-	return apply_filters( 'sd_visibility_field_condition_options', $options );
2838
+	return apply_filters('sd_visibility_field_condition_options', $options);
2839 2839
 }
2840 2840
 
2841 2841
 /**
@@ -2847,13 +2847,13 @@  discard block
 block discarded – undo
2847 2847
  */
2848 2848
 function sd_visibility_output_options() {
2849 2849
 	$options = array(
2850
-		'hide'          => __( 'Hide Block', 'ayecode-connect' ),
2851
-		'message'       => __( 'Show Custom Message', 'ayecode-connect' ),
2852
-		'page'          => __( 'Show Page Content', 'ayecode-connect' ),
2853
-		'template_part' => __( 'Show Template Part', 'ayecode-connect' ),
2850
+		'hide'          => __('Hide Block', 'ayecode-connect'),
2851
+		'message'       => __('Show Custom Message', 'ayecode-connect'),
2852
+		'page'          => __('Show Page Content', 'ayecode-connect'),
2853
+		'template_part' => __('Show Template Part', 'ayecode-connect'),
2854 2854
 	);
2855 2855
 
2856
-	return apply_filters( 'sd_visibility_output_options', $options );
2856
+	return apply_filters('sd_visibility_output_options', $options);
2857 2857
 }
2858 2858
 
2859 2859
 /**
@@ -2864,46 +2864,46 @@  discard block
 block discarded – undo
2864 2864
  * @param array $args Array of arguments.
2865 2865
  * @return array Template page options.
2866 2866
  */
2867
-function sd_template_page_options( $args = array() ) {
2867
+function sd_template_page_options($args = array()) {
2868 2868
 	global $sd_tmpl_page_options;
2869 2869
 
2870
-	if ( ! empty( $sd_tmpl_page_options ) ) {
2870
+	if (!empty($sd_tmpl_page_options)) {
2871 2871
 		return $sd_tmpl_page_options;
2872 2872
 	}
2873 2873
 
2874
-	$args = wp_parse_args( $args, array(
2874
+	$args = wp_parse_args($args, array(
2875 2875
 		'child_of'    => 0,
2876 2876
 		'sort_column' => 'post_title',
2877 2877
 		'sort_order'  => 'ASC'
2878
-	) );
2878
+	));
2879 2879
 
2880 2880
 	$exclude_pages = array();
2881
-	if ( $page_on_front = get_option( 'page_on_front' ) ) {
2881
+	if ($page_on_front = get_option('page_on_front')) {
2882 2882
 		$exclude_pages[] = $page_on_front;
2883 2883
 	}
2884 2884
 
2885
-	if ( $page_for_posts = get_option( 'page_for_posts' ) ) {
2885
+	if ($page_for_posts = get_option('page_for_posts')) {
2886 2886
 		$exclude_pages[] = $page_for_posts;
2887 2887
 	}
2888 2888
 
2889
-	if ( ! empty( $exclude_pages ) ) {
2889
+	if (!empty($exclude_pages)) {
2890 2890
 		$args['exclude'] = $exclude_pages;
2891 2891
 	}
2892 2892
 
2893
-	$pages = get_pages( $args );
2893
+	$pages = get_pages($args);
2894 2894
 
2895
-	$options = array( '' => __( 'Select Page...', 'ayecode-connect' ) );
2896
-	if ( ! empty( $pages ) ) {
2897
-		foreach ( $pages as $page ) {
2898
-			if ( ! empty( $page->ID ) && ! empty( $page->post_title ) ) {
2899
-				$options[ $page->ID ] = $page->post_title . ' (#' . $page->ID . ')';
2895
+	$options = array('' => __('Select Page...', 'ayecode-connect'));
2896
+	if (!empty($pages)) {
2897
+		foreach ($pages as $page) {
2898
+			if (!empty($page->ID) && !empty($page->post_title)) {
2899
+				$options[$page->ID] = $page->post_title . ' (#' . $page->ID . ')';
2900 2900
 			}
2901 2901
 		}
2902 2902
 	}
2903 2903
 
2904 2904
 	$sd_tmpl_page_options = $options;
2905 2905
 
2906
-	return apply_filters( 'sd_template_page_options', $options );
2906
+	return apply_filters('sd_template_page_options', $options);
2907 2907
 }
2908 2908
 
2909 2909
 /**
@@ -2914,26 +2914,26 @@  discard block
 block discarded – undo
2914 2914
  * @param array $args Array of arguments.
2915 2915
  * @return array Template part options.
2916 2916
  */
2917
-function sd_template_part_options( $args = array() ) {
2917
+function sd_template_part_options($args = array()) {
2918 2918
 	global $sd_tmpl_part_options;
2919 2919
 
2920
-	if ( ! empty( $sd_tmpl_part_options ) ) {
2920
+	if (!empty($sd_tmpl_part_options)) {
2921 2921
 		return $sd_tmpl_part_options;
2922 2922
 	}
2923 2923
 
2924
-	$options = array( '' => __( 'Select Template Part...', 'ayecode-connect' ) );
2924
+	$options = array('' => __('Select Template Part...', 'ayecode-connect'));
2925 2925
 
2926
-	$parts = get_block_templates( array(), 'wp_template_part' );
2926
+	$parts = get_block_templates(array(), 'wp_template_part');
2927 2927
 
2928
-	if ( ! empty( $parts ) ) {
2929
-		foreach ( $parts as $part ) {
2930
-			$options[ $part->slug ] = $part->title . ' (#' . $part->slug . ')';
2928
+	if (!empty($parts)) {
2929
+		foreach ($parts as $part) {
2930
+			$options[$part->slug] = $part->title . ' (#' . $part->slug . ')';
2931 2931
 		}
2932 2932
 	}
2933 2933
 
2934 2934
 	$sd_tmpl_part_options = $options;
2935 2935
 
2936
-	return apply_filters( 'sd_template_part_options', $options, $args );
2936
+	return apply_filters('sd_template_part_options', $options, $args);
2937 2937
 }
2938 2938
 
2939 2939
 /**
@@ -2944,26 +2944,26 @@  discard block
 block discarded – undo
2944 2944
  * @param string $slug Template slug.
2945 2945
  * @return array Template part object.
2946 2946
  */
2947
-function sd_get_template_part_by_slug( $slug ) {
2947
+function sd_get_template_part_by_slug($slug) {
2948 2948
 	global $bs_tmpl_part_by_slug;
2949 2949
 
2950
-	if ( empty( $bs_tmpl_part_by_slug ) ) {
2950
+	if (empty($bs_tmpl_part_by_slug)) {
2951 2951
 		$bs_tmpl_part_by_slug = array();
2952 2952
 	}
2953 2953
 
2954
-	if ( isset( $bs_tmpl_part_by_slug[ $slug ] ) ) {
2955
-		return $bs_tmpl_part_by_slug[ $slug ];
2954
+	if (isset($bs_tmpl_part_by_slug[$slug])) {
2955
+		return $bs_tmpl_part_by_slug[$slug];
2956 2956
 	}
2957 2957
 
2958
-	$template_query = get_block_templates( array( 'slug__in' => array( $slug ) ), 'wp_template_part' );
2958
+	$template_query = get_block_templates(array('slug__in' => array($slug)), 'wp_template_part');
2959 2959
 
2960
-	$query_post = ! empty( $template_query ) ? $template_query[0] : array();
2960
+	$query_post = !empty($template_query) ? $template_query[0] : array();
2961 2961
 
2962
-	$template_part = ! empty( $query_post ) && $query_post->status == 'publish' ? $query_post : array();
2962
+	$template_part = !empty($query_post) && $query_post->status == 'publish' ? $query_post : array();
2963 2963
 
2964
-	$bs_tmpl_part_by_slug[ $slug ] = $template_part;
2964
+	$bs_tmpl_part_by_slug[$slug] = $template_part;
2965 2965
 
2966
-	return apply_filters( 'sd_get_template_part_by_slug', $template_part, $slug );
2966
+	return apply_filters('sd_get_template_part_by_slug', $template_part, $slug);
2967 2967
 }
2968 2968
 
2969 2969
 /**
@@ -2975,25 +2975,25 @@  discard block
 block discarded – undo
2975 2975
  * @param array    $block         The full block, including name and attributes.
2976 2976
  * @param WP_Block $instance      The block instance.
2977 2977
  */
2978
-function sd_render_block( $block_content, $block, $instance = '' ) {
2978
+function sd_render_block($block_content, $block, $instance = '') {
2979 2979
 	// No block visibility conditions set.
2980
-	if ( empty( $block['attrs']['visibility_conditions'] ) ) {
2980
+	if (empty($block['attrs']['visibility_conditions'])) {
2981 2981
 		return $block_content;
2982 2982
 	}
2983 2983
 
2984
-	$attributes = json_decode( $block['attrs']['visibility_conditions'], true );
2985
-	$rules = ! empty( $attributes ) ? sd_block_parse_rules( $attributes ) : array();
2984
+	$attributes = json_decode($block['attrs']['visibility_conditions'], true);
2985
+	$rules = !empty($attributes) ? sd_block_parse_rules($attributes) : array();
2986 2986
 
2987 2987
 	// No rules set.
2988
-	if ( empty( $rules ) ) {
2988
+	if (empty($rules)) {
2989 2989
 		return $block_content;
2990 2990
 	}
2991 2991
 
2992 2992
 	$_block_content = $block_content;
2993 2993
 
2994
-	if ( ! empty( $rules ) && sd_block_check_rules( $rules ) ) {
2995
-		if ( ! empty( $attributes['output']['type'] ) ) {
2996
-			switch ( $attributes['output']['type'] ) {
2994
+	if (!empty($rules) && sd_block_check_rules($rules)) {
2995
+		if (!empty($attributes['output']['type'])) {
2996
+			switch ($attributes['output']['type']) {
2997 2997
 				case 'hide':
2998 2998
 					$valid_type = true;
2999 2999
 					$content = '';
@@ -3002,11 +3002,11 @@  discard block
 block discarded – undo
3002 3002
 				case 'message':
3003 3003
 					$valid_type = true;
3004 3004
 
3005
-					if ( isset( $attributes['output']['message'] ) ) {
3006
-						$content = $attributes['output']['message'] != '' ? __( stripslashes( $attributes['output']['message'] ), 'ayecode-connect' ) : $attributes['output']['message'];
3005
+					if (isset($attributes['output']['message'])) {
3006
+						$content = $attributes['output']['message'] != '' ? __(stripslashes($attributes['output']['message']), 'ayecode-connect') : $attributes['output']['message'];
3007 3007
 
3008
-						if ( ! empty( $attributes['output']['message_type'] ) ) {
3009
-							$content = aui()->alert( array(
3008
+						if (!empty($attributes['output']['message_type'])) {
3009
+							$content = aui()->alert(array(
3010 3010
 									'type'=> $attributes['output']['message_type'],
3011 3011
 									'content'=> $content
3012 3012
 								)
@@ -3018,15 +3018,15 @@  discard block
 block discarded – undo
3018 3018
 				case 'page':
3019 3019
 					$valid_type = true;
3020 3020
 
3021
-					$page_id = ! empty( $attributes['output']['page'] ) ? absint( $attributes['output']['page'] ) : 0;
3022
-					$content = sd_get_page_content( $page_id );
3021
+					$page_id = !empty($attributes['output']['page']) ? absint($attributes['output']['page']) : 0;
3022
+					$content = sd_get_page_content($page_id);
3023 3023
 
3024 3024
 					break;
3025 3025
 				case 'template_part':
3026 3026
 					$valid_type = true;
3027 3027
 
3028
-					$template_part = ! empty( $attributes['output']['template_part'] ) ? $attributes['output']['template_part'] : '';
3029
-					$content = sd_get_template_part_content( $template_part );
3028
+					$template_part = !empty($attributes['output']['template_part']) ? $attributes['output']['template_part'] : '';
3029
+					$content = sd_get_template_part_content($template_part);
3030 3030
 
3031 3031
 					break;
3032 3032
 				default:
@@ -3034,104 +3034,104 @@  discard block
 block discarded – undo
3034 3034
 					break;
3035 3035
 			}
3036 3036
 
3037
-			if ( $valid_type ) {
3038
-				$block_content = '<div class="' . esc_attr( wp_get_block_default_classname( $instance->name ) ) . ' sd-block-has-rule">' . $content . '</div>';
3037
+			if ($valid_type) {
3038
+				$block_content = '<div class="' . esc_attr(wp_get_block_default_classname($instance->name)) . ' sd-block-has-rule">' . $content . '</div>';
3039 3039
 			}
3040 3040
 		}
3041 3041
 	}
3042 3042
 
3043
-	return apply_filters( 'sd_render_block_visibility_content', $block_content, $_block_content, $attributes, $block, $instance );
3043
+	return apply_filters('sd_render_block_visibility_content', $block_content, $_block_content, $attributes, $block, $instance);
3044 3044
 }
3045
-add_filter( 'render_block', 'sd_render_block', 9, 3 );
3045
+add_filter('render_block', 'sd_render_block', 9, 3);
3046 3046
 
3047
-function sd_get_page_content( $page_id ) {
3048
-	$content = $page_id > 0 ? get_post_field( 'post_content', (int) $page_id ) : '';
3047
+function sd_get_page_content($page_id) {
3048
+	$content = $page_id > 0 ? get_post_field('post_content', (int) $page_id) : '';
3049 3049
 
3050 3050
 	// Maybe bypass content
3051
-	$bypass_content = apply_filters( 'sd_bypass_page_content', '', $content, $page_id );
3052
-	if ( $bypass_content ) {
3051
+	$bypass_content = apply_filters('sd_bypass_page_content', '', $content, $page_id);
3052
+	if ($bypass_content) {
3053 3053
 		return $bypass_content;
3054 3054
 	}
3055 3055
 
3056 3056
 	// Run the shortcodes on the content.
3057
-	$content = do_shortcode( $content );
3057
+	$content = do_shortcode($content);
3058 3058
 
3059 3059
 	// Run block content if its available.
3060
-	if ( function_exists( 'do_blocks' ) ) {
3061
-		$content = do_blocks( $content );
3060
+	if (function_exists('do_blocks')) {
3061
+		$content = do_blocks($content);
3062 3062
 	}
3063 3063
 
3064
-	return apply_filters( 'sd_get_page_content', $content, $page_id );
3064
+	return apply_filters('sd_get_page_content', $content, $page_id);
3065 3065
 }
3066 3066
 
3067
-function sd_get_template_part_content( $template_part ) {
3068
-	$template_part_post = $template_part ? sd_get_template_part_by_slug( $template_part ) : array();
3069
-	$content = ! empty( $template_part_post ) ? $template_part_post->content : '';
3067
+function sd_get_template_part_content($template_part) {
3068
+	$template_part_post = $template_part ? sd_get_template_part_by_slug($template_part) : array();
3069
+	$content = !empty($template_part_post) ? $template_part_post->content : '';
3070 3070
 
3071 3071
 	// Maybe bypass content
3072
-	$bypass_content = apply_filters( 'sd_bypass_template_part_content', '', $content, $template_part );
3073
-	if ( $bypass_content ) {
3072
+	$bypass_content = apply_filters('sd_bypass_template_part_content', '', $content, $template_part);
3073
+	if ($bypass_content) {
3074 3074
 		return $bypass_content;
3075 3075
 	}
3076 3076
 
3077 3077
 	// Run the shortcodes on the content.
3078
-	$content = do_shortcode( $content );
3078
+	$content = do_shortcode($content);
3079 3079
 
3080 3080
 	// Run block content if its available.
3081
-	if ( function_exists( 'do_blocks' ) ) {
3082
-		$content = do_blocks( $content );
3081
+	if (function_exists('do_blocks')) {
3082
+		$content = do_blocks($content);
3083 3083
 	}
3084 3084
 
3085
-	return apply_filters( 'sd_get_template_part_content', $content, $template_part );
3085
+	return apply_filters('sd_get_template_part_content', $content, $template_part);
3086 3086
 }
3087 3087
 
3088
-function sd_block_parse_rules( $attrs ) {
3088
+function sd_block_parse_rules($attrs) {
3089 3089
 	$rules = array();
3090 3090
 
3091
-	if ( ! empty( $attrs ) && is_array( $attrs ) ) {
3092
-		$attrs_keys = array_keys( $attrs );
3091
+	if (!empty($attrs) && is_array($attrs)) {
3092
+		$attrs_keys = array_keys($attrs);
3093 3093
 
3094
-		for ( $i = 1; $i <= count( $attrs_keys ); $i++ ) {
3095
-			if ( ! empty( $attrs[ 'rule' . $i ] ) && is_array( $attrs[ 'rule' . $i ] ) ) {
3096
-				$rules[] = $attrs[ 'rule' . $i ];
3094
+		for ($i = 1; $i <= count($attrs_keys); $i++) {
3095
+			if (!empty($attrs['rule' . $i]) && is_array($attrs['rule' . $i])) {
3096
+				$rules[] = $attrs['rule' . $i];
3097 3097
 			}
3098 3098
 		}
3099 3099
 	}
3100 3100
 
3101
-	return apply_filters( 'sd_block_parse_rules', $rules, $attrs );
3101
+	return apply_filters('sd_block_parse_rules', $rules, $attrs);
3102 3102
 }
3103 3103
 
3104
-function sd_block_check_rules( $rules ) {
3105
-	if ( ! ( is_array( $rules ) && ! empty( $rules ) ) ) {
3104
+function sd_block_check_rules($rules) {
3105
+	if (!(is_array($rules) && !empty($rules))) {
3106 3106
 		return true;
3107 3107
 	}
3108 3108
 
3109
-	foreach ( $rules as $key => $rule ) {
3110
-		$match = apply_filters( 'sd_block_check_rule', true, $rule );
3109
+	foreach ($rules as $key => $rule) {
3110
+		$match = apply_filters('sd_block_check_rule', true, $rule);
3111 3111
 
3112
-		if ( ! $match ) {
3112
+		if (!$match) {
3113 3113
 			break;
3114 3114
 		}
3115 3115
 	}
3116 3116
 
3117
-	return apply_filters( 'sd_block_check_rules', $match, $rules );
3117
+	return apply_filters('sd_block_check_rules', $match, $rules);
3118 3118
 }
3119 3119
 
3120
-function sd_block_check_rule( $match, $rule ) {
3120
+function sd_block_check_rule($match, $rule) {
3121 3121
 	global $post;
3122 3122
 
3123
-	if ( $match && ! empty( $rule['type'] ) ) {
3124
-		switch ( $rule['type'] ) {
3123
+	if ($match && !empty($rule['type'])) {
3124
+		switch ($rule['type']) {
3125 3125
 			case 'logged_in':
3126 3126
 				$match = (bool) is_user_logged_in();
3127 3127
 
3128 3128
 				break;
3129 3129
 			case 'logged_out':
3130
-				$match = ! is_user_logged_in();
3130
+				$match = !is_user_logged_in();
3131 3131
 
3132 3132
 				break;
3133 3133
 			case 'post_author':
3134
-				if ( ! empty( $post ) && $post->post_type != 'page' && ! empty( $post->post_author ) && is_user_logged_in() ) {
3134
+				if (!empty($post) && $post->post_type != 'page' && !empty($post->post_author) && is_user_logged_in()) {
3135 3135
 					$match = (int) $post->post_author === (int) get_current_user_id() ? true : false;
3136 3136
 				} else {
3137 3137
 					$match = false;
@@ -3141,18 +3141,18 @@  discard block
 block discarded – undo
3141 3141
 			case 'user_roles':
3142 3142
 				$match = false;
3143 3143
 
3144
-				if ( ! empty( $rule['user_roles'] ) ) {
3145
-					$user_roles = is_scalar( $rule['user_roles'] ) ? explode( ",", $rule['user_roles'] ) : $rule['user_roles'];
3144
+				if (!empty($rule['user_roles'])) {
3145
+					$user_roles = is_scalar($rule['user_roles']) ? explode(",", $rule['user_roles']) : $rule['user_roles'];
3146 3146
 
3147
-					if ( is_array( $user_roles ) ) {
3148
-						$user_roles = array_filter( array_map( 'trim', $user_roles ) );
3147
+					if (is_array($user_roles)) {
3148
+						$user_roles = array_filter(array_map('trim', $user_roles));
3149 3149
 					}
3150 3150
 
3151
-					if ( ! empty( $user_roles ) && is_array( $user_roles ) && is_user_logged_in() && ( $current_user = wp_get_current_user() ) ) {
3151
+					if (!empty($user_roles) && is_array($user_roles) && is_user_logged_in() && ($current_user = wp_get_current_user())) {
3152 3152
 						$current_user_roles = $current_user->roles;
3153 3153
 
3154
-						foreach ( $user_roles as $role ) {
3155
-							if ( in_array( $role, $current_user_roles ) ) {
3154
+						foreach ($user_roles as $role) {
3155
+							if (in_array($role, $current_user_roles)) {
3156 3156
 								$match = true;
3157 3157
 							}
3158 3158
 						}
@@ -3161,7 +3161,7 @@  discard block
 block discarded – undo
3161 3161
 
3162 3162
 				break;
3163 3163
 			case 'gd_field':
3164
-				$match = sd_block_check_rule_gd_field( $rule );
3164
+				$match = sd_block_check_rule_gd_field($rule);
3165 3165
 
3166 3166
 				break;
3167 3167
 		}
@@ -3169,195 +3169,195 @@  discard block
 block discarded – undo
3169 3169
 
3170 3170
 	return $match;
3171 3171
 }
3172
-add_filter( 'sd_block_check_rule', 'sd_block_check_rule', 10, 2 );
3172
+add_filter('sd_block_check_rule', 'sd_block_check_rule', 10, 2);
3173 3173
 
3174
-function sd_block_check_rule_gd_field( $rule ) {
3174
+function sd_block_check_rule_gd_field($rule) {
3175 3175
 	global $gd_post;
3176 3176
 
3177 3177
 	$match_found = false;
3178 3178
 
3179
-	if ( class_exists( 'GeoDirectory' ) && ! empty( $gd_post->ID ) && ! empty( $rule['field'] ) && ! empty( $rule['condition'] ) ) {
3179
+	if (class_exists('GeoDirectory') && !empty($gd_post->ID) && !empty($rule['field']) && !empty($rule['condition'])) {
3180 3180
 		$args['block_visibility'] = true;
3181 3181
 		$args['key'] = $rule['field'];
3182 3182
 		$args['condition'] = $rule['condition'];
3183
-		$args['search'] = isset( $rule['search'] ) ? $rule['search'] : '';
3183
+		$args['search'] = isset($rule['search']) ? $rule['search'] : '';
3184 3184
 
3185
-		if ( $args['key'] == 'street' ) {
3185
+		if ($args['key'] == 'street') {
3186 3186
 			$args['key'] = 'address';
3187 3187
 		}
3188 3188
 
3189 3189
 		$match_field = $_match_field = $args['key'];
3190 3190
 
3191
-		if ( $match_field == 'address' ) {
3191
+		if ($match_field == 'address') {
3192 3192
 			$match_field = 'street';
3193
-		} elseif ( $match_field == 'post_images' ) {
3193
+		} elseif ($match_field == 'post_images') {
3194 3194
 			$match_field = 'featured_image';
3195 3195
 		}
3196 3196
 
3197 3197
 		$find_post = $gd_post;
3198
-		$find_post_keys = ! empty( $find_post ) ? array_keys( (array) $find_post ) : array();
3198
+		$find_post_keys = !empty($find_post) ? array_keys((array) $find_post) : array();
3199 3199
 
3200
-		if ( ! empty( $find_post->ID ) && ! in_array( 'post_category', $find_post_keys ) ) {
3201
-			$find_post = geodir_get_post_info( (int) $find_post->ID );
3202
-			$find_post_keys = ! empty( $find_post ) ? array_keys( (array) $find_post ) : array();
3200
+		if (!empty($find_post->ID) && !in_array('post_category', $find_post_keys)) {
3201
+			$find_post = geodir_get_post_info((int) $find_post->ID);
3202
+			$find_post_keys = !empty($find_post) ? array_keys((array) $find_post) : array();
3203 3203
 		}
3204 3204
 
3205
-		if ( $match_field === '' || ( ! empty( $find_post_keys ) && ( in_array( $match_field, $find_post_keys ) || in_array( $_match_field, $find_post_keys ) ) ) ) {
3206
-			$address_fields = array( 'street2', 'neighbourhood', 'city', 'region', 'country', 'zip', 'latitude', 'longitude' ); // Address fields
3205
+		if ($match_field === '' || (!empty($find_post_keys) && (in_array($match_field, $find_post_keys) || in_array($_match_field, $find_post_keys)))) {
3206
+			$address_fields = array('street2', 'neighbourhood', 'city', 'region', 'country', 'zip', 'latitude', 'longitude'); // Address fields
3207 3207
 			$field = array();
3208 3208
 
3209 3209
 			$standard_fields = sd_visibility_gd_standard_fields();
3210 3210
 
3211
-			if ( $match_field && ! in_array( $match_field, array_keys( $standard_fields ) ) && ! in_array( $match_field, $address_fields ) ) {
3212
-				$package_id = geodir_get_post_package_id( $find_post->ID, $find_post->post_type );
3213
-				$fields = geodir_post_custom_fields( $package_id, 'all', $find_post->post_type, 'none' );
3211
+			if ($match_field && !in_array($match_field, array_keys($standard_fields)) && !in_array($match_field, $address_fields)) {
3212
+				$package_id = geodir_get_post_package_id($find_post->ID, $find_post->post_type);
3213
+				$fields = geodir_post_custom_fields($package_id, 'all', $find_post->post_type, 'none');
3214 3214
 
3215
-				foreach ( $fields as $field_info ) {
3216
-					if ( $match_field == $field_info['htmlvar_name'] ) {
3215
+				foreach ($fields as $field_info) {
3216
+					if ($match_field == $field_info['htmlvar_name']) {
3217 3217
 						$field = $field_info;
3218 3218
 						break;
3219
-					} elseif( $_match_field == $field_info['htmlvar_name'] ) {
3219
+					} elseif ($_match_field == $field_info['htmlvar_name']) {
3220 3220
 						$field = $field_info;
3221 3221
 						break;
3222 3222
 					}
3223 3223
 				}
3224 3224
 
3225
-				if ( empty( $field ) ) {
3225
+				if (empty($field)) {
3226 3226
 					return false;
3227 3227
 				}
3228 3228
 			}
3229 3229
 
3230 3230
 			// Address fields.
3231
-			if ( in_array( $match_field, $address_fields ) && ( $address_fields = geodir_post_meta_address_fields( '' ) ) ) {
3232
-				if ( ! empty( $address_fields[ $match_field ] ) ) {
3233
-					$field = $address_fields[ $match_field ];
3231
+			if (in_array($match_field, $address_fields) && ($address_fields = geodir_post_meta_address_fields(''))) {
3232
+				if (!empty($address_fields[$match_field])) {
3233
+					$field = $address_fields[$match_field];
3234 3234
 				}
3235
-			} else if ( in_array( $match_field, array_keys( $standard_fields ) ) ) {
3236
-				if ( ! empty( $standard_fields[ $match_field ] ) ) {
3237
-					$field = $standard_fields[ $match_field ];
3235
+			} else if (in_array($match_field, array_keys($standard_fields))) {
3236
+				if (!empty($standard_fields[$match_field])) {
3237
+					$field = $standard_fields[$match_field];
3238 3238
 				}
3239 3239
 			}
3240 3240
 
3241 3241
 			// Parse search.
3242
-			$search = sd_gd_field_rule_search( $args['search'], $find_post->post_type, $rule, $field, $find_post );
3242
+			$search = sd_gd_field_rule_search($args['search'], $find_post->post_type, $rule, $field, $find_post);
3243 3243
 
3244
-			$is_date = ( ! empty( $field['type'] ) && $field['type'] == 'datepicker' ) || in_array( $match_field, array( 'post_date', 'post_modified' ) ) ? true : false;
3245
-			$is_date = apply_filters( 'geodir_post_badge_is_date', $is_date, $match_field, $field, $args, $find_post );
3244
+			$is_date = (!empty($field['type']) && $field['type'] == 'datepicker') || in_array($match_field, array('post_date', 'post_modified')) ? true : false;
3245
+			$is_date = apply_filters('geodir_post_badge_is_date', $is_date, $match_field, $field, $args, $find_post);
3246 3246
 
3247
-			$match_value = isset($find_post->{$match_field}) ? esc_attr( trim( $find_post->{$match_field} ) ) : '';
3247
+			$match_value = isset($find_post->{$match_field}) ? esc_attr(trim($find_post->{$match_field} )) : '';
3248 3248
 			$match_found = $match_field === '' ? true : false;
3249 3249
 
3250
-			if ( ! $match_found ) {
3251
-				if ( ( $match_field == 'post_date' || $match_field == 'post_modified' ) && ( empty( $args['condition'] ) || $args['condition'] == 'is_greater_than' || $args['condition'] == 'is_less_than' ) ) {
3252
-					if ( strpos( $search, '+' ) === false && strpos( $search, '-' ) === false ) {
3250
+			if (!$match_found) {
3251
+				if (($match_field == 'post_date' || $match_field == 'post_modified') && (empty($args['condition']) || $args['condition'] == 'is_greater_than' || $args['condition'] == 'is_less_than')) {
3252
+					if (strpos($search, '+') === false && strpos($search, '-') === false) {
3253 3253
 						$search = '+' . $search;
3254 3254
 					}
3255
-					$the_time = $match_field == 'post_modified' ? get_the_modified_date( 'Y-m-d', $find_post ) : get_the_time( 'Y-m-d', $find_post );
3256
-					$until_time = strtotime( $the_time . ' ' . $search . ' days' );
3257
-					$now_time   = strtotime( date_i18n( 'Y-m-d', current_time( 'timestamp' ) ) );
3258
-					if ( ( empty( $args['condition'] ) || $args['condition'] == 'is_less_than' ) && $until_time > $now_time ) {
3255
+					$the_time = $match_field == 'post_modified' ? get_the_modified_date('Y-m-d', $find_post) : get_the_time('Y-m-d', $find_post);
3256
+					$until_time = strtotime($the_time . ' ' . $search . ' days');
3257
+					$now_time   = strtotime(date_i18n('Y-m-d', current_time('timestamp')));
3258
+					if ((empty($args['condition']) || $args['condition'] == 'is_less_than') && $until_time > $now_time) {
3259 3259
 						$match_found = true;
3260
-					} elseif ( $args['condition'] == 'is_greater_than' && $until_time < $now_time ) {
3260
+					} elseif ($args['condition'] == 'is_greater_than' && $until_time < $now_time) {
3261 3261
 						$match_found = true;
3262 3262
 					}
3263 3263
 				} else {
3264
-					switch ( $args['condition'] ) {
3264
+					switch ($args['condition']) {
3265 3265
 						case 'is_equal':
3266
-							$match_found = (bool) ( $search != '' && $match_value == $search );
3266
+							$match_found = (bool) ($search != '' && $match_value == $search);
3267 3267
 							break;
3268 3268
 						case 'is_not_equal':
3269
-							$match_found = (bool) ( $search != '' && $match_value != $search );
3269
+							$match_found = (bool) ($search != '' && $match_value != $search);
3270 3270
 							break;
3271 3271
 						case 'is_greater_than':
3272
-							$match_found = (bool) ( $search != '' && ( is_float( $search ) || is_numeric( $search ) ) && ( is_float( $match_value ) || is_numeric( $match_value ) ) && $match_value > $search );
3272
+							$match_found = (bool) ($search != '' && (is_float($search) || is_numeric($search)) && (is_float($match_value) || is_numeric($match_value)) && $match_value > $search);
3273 3273
 							break;
3274 3274
 						case 'is_less_than':
3275
-							$match_found = (bool) ( $search != '' && ( is_float( $search ) || is_numeric( $search ) ) && ( is_float( $match_value ) || is_numeric( $match_value ) ) && $match_value < $search );
3275
+							$match_found = (bool) ($search != '' && (is_float($search) || is_numeric($search)) && (is_float($match_value) || is_numeric($match_value)) && $match_value < $search);
3276 3276
 							break;
3277 3277
 						case 'is_empty':
3278
-							$match_found = (bool) ( $match_value === '' || $match_value === false || $match_value === '0' || is_null( $match_value ) );
3278
+							$match_found = (bool) ($match_value === '' || $match_value === false || $match_value === '0' || is_null($match_value));
3279 3279
 							break;
3280 3280
 						case 'is_not_empty':
3281
-							$match_found = (bool) ( $match_value !== '' && $match_value !== false && $match_value !== '0' && ! is_null( $match_value ) );
3281
+							$match_found = (bool) ($match_value !== '' && $match_value !== false && $match_value !== '0' && !is_null($match_value));
3282 3282
 							break;
3283 3283
 						case 'is_contains':
3284
-							$match_found = (bool) ( $search != '' && stripos( $match_value, $search ) !== false );
3284
+							$match_found = (bool) ($search != '' && stripos($match_value, $search) !== false);
3285 3285
 							break;
3286 3286
 						case 'is_not_contains':
3287
-							$match_found = (bool) ( $search != '' && stripos( $match_value, $search ) === false );
3287
+							$match_found = (bool) ($search != '' && stripos($match_value, $search) === false);
3288 3288
 							break;
3289 3289
 					}
3290 3290
 				}
3291 3291
 			}
3292 3292
 
3293
-			$match_found = apply_filters( 'geodir_post_badge_check_match_found', $match_found, $args, $find_post );
3293
+			$match_found = apply_filters('geodir_post_badge_check_match_found', $match_found, $args, $find_post);
3294 3294
 		}
3295 3295
 	}
3296 3296
 
3297 3297
 	return $match_found;
3298 3298
 }
3299 3299
 
3300
-function sd_gd_field_rule_search( $search, $post_type, $rule, $field = array(), $gd_post = array() ) {
3300
+function sd_gd_field_rule_search($search, $post_type, $rule, $field = array(), $gd_post = array()) {
3301 3301
 	global $post;
3302 3302
 
3303
-	if ( ! $search ) {
3303
+	if (!$search) {
3304 3304
 		return $search;
3305 3305
 	}
3306 3306
 
3307 3307
 	$orig_search = $search;
3308
-	$_search = strtolower( $search );
3308
+	$_search = strtolower($search);
3309 3309
 
3310
-	if ( ! empty( $rule['field'] ) && $rule['field'] == 'post_author' ) {
3311
-		if ( $search == 'current_user' ) {
3310
+	if (!empty($rule['field']) && $rule['field'] == 'post_author') {
3311
+		if ($search == 'current_user') {
3312 3312
 			$search = is_user_logged_in() ? (int) get_current_user_id() : - 1;
3313
-		} else if ( $search == 'current_author' ) {
3314
-			$search = ( ! empty( $post ) && $post->post_type != 'page' && isset( $post->post_author ) ) ? absint( $post->post_author ) : - 1;
3315
-		}
3316
-	} else if ( $_search == 'date_today' ) {
3317
-		$search = date( 'Y-m-d' );
3318
-	} else if ( $_search == 'date_tomorrow' ) {
3319
-		$search = date( 'Y-m-d', strtotime( "+1 day" ) );
3320
-	} else if ( $_search == 'date_yesterday' ) {
3321
-		$search = date( 'Y-m-d', strtotime( "-1 day" ) );
3322
-	} else if ( $_search == 'time_his' ) {
3323
-		$search = date( 'H:i:s' );
3324
-	} else if ( $_search == 'time_hi' ) {
3325
-		$search = date( 'H:i' );
3326
-	} else if ( $_search == 'datetime_now' ) {
3327
-		$search = date( 'Y-m-d H:i:s' );
3328
-	} else if ( strpos( $_search, 'datetime_after_' ) === 0 ) {
3329
-		$_searches = explode( 'datetime_after_', $_search, 2 );
3330
-
3331
-		if ( ! empty( $_searches[1] ) ) {
3332
-			$search = date( 'Y-m-d H:i:s', strtotime( "+ " . str_replace( "_", " ", $_searches[1] ) ) );
3313
+		} else if ($search == 'current_author') {
3314
+			$search = (!empty($post) && $post->post_type != 'page' && isset($post->post_author)) ? absint($post->post_author) : - 1;
3315
+		}
3316
+	} else if ($_search == 'date_today') {
3317
+		$search = date('Y-m-d');
3318
+	} else if ($_search == 'date_tomorrow') {
3319
+		$search = date('Y-m-d', strtotime("+1 day"));
3320
+	} else if ($_search == 'date_yesterday') {
3321
+		$search = date('Y-m-d', strtotime("-1 day"));
3322
+	} else if ($_search == 'time_his') {
3323
+		$search = date('H:i:s');
3324
+	} else if ($_search == 'time_hi') {
3325
+		$search = date('H:i');
3326
+	} else if ($_search == 'datetime_now') {
3327
+		$search = date('Y-m-d H:i:s');
3328
+	} else if (strpos($_search, 'datetime_after_') === 0) {
3329
+		$_searches = explode('datetime_after_', $_search, 2);
3330
+
3331
+		if (!empty($_searches[1])) {
3332
+			$search = date('Y-m-d H:i:s', strtotime("+ " . str_replace("_", " ", $_searches[1])));
3333 3333
 		} else {
3334
-			$search = date( 'Y-m-d H:i:s' );
3334
+			$search = date('Y-m-d H:i:s');
3335 3335
 		}
3336
-	} else if ( strpos( $_search, 'datetime_before_' ) === 0 ) {
3337
-		$_searches = explode( 'datetime_before_', $_search, 2 );
3336
+	} else if (strpos($_search, 'datetime_before_') === 0) {
3337
+		$_searches = explode('datetime_before_', $_search, 2);
3338 3338
 
3339
-		if ( ! empty( $_searches[1] ) ) {
3340
-			$search = date( 'Y-m-d H:i:s', strtotime( "- " . str_replace( "_", " ", $_searches[1] ) ) );
3339
+		if (!empty($_searches[1])) {
3340
+			$search = date('Y-m-d H:i:s', strtotime("- " . str_replace("_", " ", $_searches[1])));
3341 3341
 		} else {
3342
-			$search = date( 'Y-m-d H:i:s' );
3342
+			$search = date('Y-m-d H:i:s');
3343 3343
 		}
3344
-	} else if ( strpos( $_search, 'date_after_' ) === 0 ) {
3345
-		$_searches = explode( 'date_after_', $_search, 2 );
3344
+	} else if (strpos($_search, 'date_after_') === 0) {
3345
+		$_searches = explode('date_after_', $_search, 2);
3346 3346
 
3347
-		if ( ! empty( $_searches[1] ) ) {
3348
-			$search = date( 'Y-m-d', strtotime( "+ " . str_replace( "_", " ", $_searches[1] ) ) );
3347
+		if (!empty($_searches[1])) {
3348
+			$search = date('Y-m-d', strtotime("+ " . str_replace("_", " ", $_searches[1])));
3349 3349
 		} else {
3350
-			$search = date( 'Y-m-d' );
3350
+			$search = date('Y-m-d');
3351 3351
 		}
3352
-	} else if ( strpos( $_search, 'date_before_' ) === 0 ) {
3353
-		$_searches = explode( 'date_before_', $_search, 2 );
3352
+	} else if (strpos($_search, 'date_before_') === 0) {
3353
+		$_searches = explode('date_before_', $_search, 2);
3354 3354
 
3355
-		if ( ! empty( $_searches[1] ) ) {
3356
-			$search = date( 'Y-m-d', strtotime( "- " . str_replace( "_", " ", $_searches[1] ) ) );
3355
+		if (!empty($_searches[1])) {
3356
+			$search = date('Y-m-d', strtotime("- " . str_replace("_", " ", $_searches[1])));
3357 3357
 		} else {
3358
-			$search = date( 'Y-m-d' );
3358
+			$search = date('Y-m-d');
3359 3359
 		}
3360 3360
 	}
3361 3361
 
3362
-	return apply_filters( 'sd_gd_field_rule_search', $search, $post_type, $rule, $orig_search );
3362
+	return apply_filters('sd_gd_field_rule_search', $search, $post_type, $rule, $orig_search);
3363 3363
 }
3364 3364
\ No newline at end of file
Please login to merge, or discard this patch.
templates/frontend-footer.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -7,7 +7,7 @@  discard block
 block discarded – undo
7 7
  * @version 1.0.19
8 8
  */
9 9
 
10
-defined( 'ABSPATH' ) || exit;
10
+defined('ABSPATH') || exit;
11 11
 
12 12
 global $aui_bs5;
13 13
 ?>
@@ -17,8 +17,8 @@  discard block
 block discarded – undo
17 17
 		<div class="modal-dialog modal-dialog-centered modal-lg" role="checkout" style="max-width: 650px;">
18 18
 			<div class="modal-content">
19 19
 				<div class="modal-body">
20
-					<button type="button" class=" btn-close p-2 getpaid-payment-modal-close d-sm-none" data-<?php echo $aui_bs5 ? 'bs-' : ''; ?>dismiss="modal" aria-label="<?php esc_attr__( 'Close', 'invoicing' ); ?>">
21
-						<?php if ( empty( $aui_bs5 ) ) : ?>
20
+					<button type="button" class=" btn-close p-2 getpaid-payment-modal-close d-sm-none" data-<?php echo $aui_bs5 ? 'bs-' : ''; ?>dismiss="modal" aria-label="<?php esc_attr__('Close', 'invoicing'); ?>">
21
+						<?php if (empty($aui_bs5)) : ?>
22 22
                             <span aria-hidden="true">×</span>
23 23
                         <?php endif; ?>
24 24
 					</button>
Please login to merge, or discard this patch.
Switch Indentation   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -1,4 +1,4 @@  discard block
 block discarded – undo
1
-<?php
1
+    <?php
2 2
 /**
3 3
  * Template that prints additional code in the footer when viewing a blog on the frontend..
4 4
  *
@@ -7,10 +7,10 @@  discard block
 block discarded – undo
7 7
  * @version 1.0.19
8 8
  */
9 9
 
10
-defined( 'ABSPATH' ) || exit;
10
+    defined( 'ABSPATH' ) || exit;
11 11
 
12
-global $aui_bs5;
13
-?>
12
+    global $aui_bs5;
13
+    ?>
14 14
 
15 15
 <div class="bsui">
16 16
 	<div  id="getpaid-payment-modal" class="modal" tabindex="-1" role="dialog">
@@ -19,7 +19,7 @@  discard block
 block discarded – undo
19 19
 				<div class="modal-body">
20 20
 					<button type="button" class=" btn-close p-2 getpaid-payment-modal-close d-sm-none" data-<?php echo $aui_bs5 ? 'bs-' : ''; ?>dismiss="modal" aria-label="<?php esc_attr__( 'Close', 'invoicing' ); ?>">
21 21
 						<?php if ( empty( $aui_bs5 ) ) : ?>
22
-                            <span aria-hidden="true">×</span>
22
+                                <span aria-hidden="true">×</span>
23 23
                         <?php endif; ?>
24 24
 					</button>
25 25
 					<div class="modal-body-wrapper"></div>
Please login to merge, or discard this patch.
includes/libraries/class-emogrifier.php 2 patches
Indentation   +779 added lines, -779 removed lines patch added patch discarded remove patch
@@ -9,346 +9,346 @@  discard block
 block discarded – undo
9 9
  * @author Roman Ožana <[email protected]>
10 10
  */
11 11
 class Emogrifier {
12
-	/**
13
-	 * @var string
14
-	 */
15
-	const ENCODING = 'UTF-8';
16
-
17
-	/**
18
-	 * @var integer
19
-	 */
20
-	const CACHE_KEY_CSS = 0;
21
-
22
-	/**
23
-	 * @var integer
24
-	 */
25
-	const CACHE_KEY_SELECTOR = 1;
26
-
27
-	/**
28
-	 * @var integer
29
-	 */
30
-	const CACHE_KEY_XPATH = 2;
31
-
32
-	/**
33
-	 * @var integer
34
-	 */
35
-	const CACHE_KEY_CSS_DECLARATION_BLOCK = 3;
36
-
37
-	/**
38
-	 * for calculating nth-of-type and nth-child selectors.
39
-	 *
40
-	 * @var integer
41
-	 */
42
-	const INDEX = 0;
43
-
44
-	/**
45
-	 * for calculating nth-of-type and nth-child selectors.
46
-	 *
47
-	 * @var integer
48
-	 */
49
-	const MULTIPLIER = 1;
50
-
51
-	/**
52
-	 * @var string
53
-	 */
54
-	const ID_ATTRIBUTE_MATCHER = '/(\\w+)?\\#([\\w\\-]+)/';
55
-
56
-	/**
57
-	 * @var string
58
-	 */
59
-	const CLASS_ATTRIBUTE_MATCHER = '/(\\w+|[\\*\\]])?((\\.[\\w\\-]+)+)/';
60
-
61
-	/**
62
-	 * @var string
63
-	 */
64
-	private $html = '';
65
-
66
-	/**
67
-	 * @var string
68
-	 */
69
-	private $css = '';
70
-
71
-	/**
72
-	 * @var array<string>
73
-	 */
74
-	private $unprocessableHtmlTags = array('wbr');
75
-
76
-	/**
77
-	 * @var array<array>
78
-	 */
79
-	private $caches = array(
80
-		self::CACHE_KEY_CSS => array(),
81
-		self::CACHE_KEY_SELECTOR => array(),
82
-		self::CACHE_KEY_XPATH => array(),
83
-		self::CACHE_KEY_CSS_DECLARATION_BLOCK => array(),
84
-	);
85
-
86
-	/**
87
-	 * the visited nodes with the XPath paths as array keys.
88
-	 *
89
-	 * @var array<\DOMNode>
90
-	 */
91
-	private $visitedNodes = array();
92
-
93
-	/**
94
-	 * the styles to apply to the nodes with the XPath paths as array keys for the outer array and the attribute names/values.
95
-	 * as key/value pairs for the inner array.
96
-	 *
97
-	 * @var array<array><string>
98
-	 */
99
-	private $styleAttributesForNodes = array();
100
-
101
-	/**
102
-	 * This attribute applies to the case where you want to preserve your original text encoding.
103
-	 *
104
-	 * By default, emogrifier translates your text into HTML entities for two reasons:
105
-	 *
106
-	 * 1. Because of client incompatibilities, it is better practice to send out HTML entities rather than unicode over email.
107
-	 *
108
-	 * 2. It translates any illegal XML characters that DOMDocument cannot work with.
109
-	 *
110
-	 * If you would like to preserve your original encoding, set this attribute to TRUE.
111
-	 *
112
-	 * @var boolean
113
-	 */
114
-	public $preserveEncoding = false;
115
-
116
-	public static $_media = '';
117
-
118
-	/**
119
-	 * The constructor.
120
-	 *
121
-	 * @param string $html the HTML to emogrify, must be UTF-8-encoded
122
-	 * @param string $css the CSS to merge, must be UTF-8-encoded
123
-	 */
124
-	public function __construct($html = '', $css = '') {
125
-		$this->setHtml($html);
126
-		$this->setCss($css);
127
-	}
128
-
129
-	/**
130
-	 * The destructor.
131
-	 */
132
-	public function __destruct() {
133
-		$this->purgeVisitedNodes();
134
-	}
135
-
136
-	/**
137
-	 * Sets the HTML to emogrify.
138
-	 *
139
-	 * @param string $html the HTML to emogrify, must be UTF-8-encoded
140
-	 */
141
-	public function setHtml($html = '') {
142
-		$this->html = $html;
143
-	}
144
-
145
-	/**
146
-	 * Sets the CSS to merge with the HTML.
147
-	 *
148
-	 * @param string $css the CSS to merge, must be UTF-8-encoded
149
-	 */
150
-	public function setCss($css = '') {
151
-		$this->css = $css;
152
-	}
153
-
154
-	/**
155
-	 * Clears all caches.
156
-	 */
157
-	private function clearAllCaches() {
158
-		$this->clearCache(self::CACHE_KEY_CSS);
159
-		$this->clearCache(self::CACHE_KEY_SELECTOR);
160
-		$this->clearCache(self::CACHE_KEY_XPATH);
161
-		$this->clearCache(self::CACHE_KEY_CSS_DECLARATION_BLOCK);
162
-	}
163
-
164
-	/**
165
-	 * Clears a single cache by key.
166
-	 *
167
-	 * @param integer $key the cache key, must be CACHE_KEY_CSS, CACHE_KEY_SELECTOR, CACHE_KEY_XPATH or CACHE_KEY_CSS_DECLARATION_BLOCK
168
-	 *
169
-	 * @throws InvalidArgumentException
170
-	 */
171
-	private function clearCache($key) {
172
-		$allowedCacheKeys = array(self::CACHE_KEY_CSS, self::CACHE_KEY_SELECTOR, self::CACHE_KEY_XPATH, self::CACHE_KEY_CSS_DECLARATION_BLOCK);
173
-		if (!in_array($key, $allowedCacheKeys, true)) {
174
-			throw new InvalidArgumentException('Invalid cache key: ' . $key, 1391822035);
175
-		}
176
-
177
-		$this->caches[$key] = array();
178
-	}
179
-
180
-	/**
181
-	 * Purges the visited nodes.
182
-	 */
183
-	private function purgeVisitedNodes() {
184
-		$this->visitedNodes = array();
185
-		$this->styleAttributesForNodes = array();
186
-	}
187
-
188
-	/**
189
-	 * Marks a tag for removal.
190
-	 *
191
-	 * There are some HTML tags that DOMDocument cannot process, and it will throw an error if it encounters them.
192
-	 * In particular, DOMDocument will complain if you try to use HTML5 tags in an XHTML document.
193
-	 *
194
-	 * Note: The tags will not be removed if they have any content.
195
-	 *
196
-	 * @param string $tagName the tag name, e.g., "p"
197
-	 */
198
-	public function addUnprocessableHtmlTag($tagName) {
199
-		$this->unprocessableHtmlTags[] = $tagName;
200
-	}
201
-
202
-	/**
203
-	 * Drops a tag from the removal list.
204
-	 *
205
-	 * @param string $tagName the tag name, e.g., "p"
206
-	 */
207
-	public function removeUnprocessableHtmlTag($tagName) {
208
-		$key = array_search($tagName, $this->unprocessableHtmlTags, true);
209
-		if ($key !== false) {
210
-			unset($this->unprocessableHtmlTags[$key]);
211
-		}
212
-	}
213
-
214
-	/**
215
-	 * Applies the CSS you submit to the HTML you submit.
216
-	 *
217
-	 * This method places the CSS inline.
218
-	 *
219
-	 * @return string
220
-	 *
221
-	 * @throws BadMethodCallException
222
-	 */
223
-	public function emogrify() {
224
-		if ($this->html === '') {
225
-			throw new BadMethodCallException('Please set some HTML first before calling emogrify.', 1390393096);
226
-		}
227
-
228
-		$xmlDocument = $this->createXmlDocument();
229
-		$xpath = new DOMXPath($xmlDocument);
230
-		$this->clearAllCaches();
231
-
232
-		// before be begin processing the CSS file, parse the document and normalize all existing CSS attributes (changes 'DISPLAY: none' to 'display: none');
233
-		// we wouldn't have to do this if DOMXPath supported XPath 2.0.
234
-		// also store a reference of nodes with existing inline styles so we don't overwrite them
235
-		$this->purgeVisitedNodes();
236
-
237
-		$nodesWithStyleAttributes = $xpath->query('//*[@style]');
238
-		if ($nodesWithStyleAttributes !== false) {
239
-			/** @var $nodeWithStyleAttribute DOMNode */
240
-			foreach ($nodesWithStyleAttributes as $node) {
241
-				$normalizedOriginalStyle = preg_replace_callback( '/[A-z\\-]+(?=\\:)/S', array( $this, 'strtolower' ), $node->getAttribute('style') );
242
-
243
-				// in order to not overwrite existing style attributes in the HTML, we have to save the original HTML styles
244
-				$nodePath = $node->getNodePath();
245
-				if (!isset($this->styleAttributesForNodes[$nodePath])) {
246
-					$this->styleAttributesForNodes[$nodePath] = $this->parseCssDeclarationBlock($normalizedOriginalStyle);
247
-					$this->visitedNodes[$nodePath] = $node;
248
-				}
249
-
250
-				$node->setAttribute('style', $normalizedOriginalStyle);
251
-			}
252
-		}
253
-
254
-		// grab any existing style blocks from the html and append them to the existing CSS
255
-		// (these blocks should be appended so as to have precedence over conflicting styles in the existing CSS)
256
-		$allCss = $this->css;
257
-
258
-		$allCss .= $this->getCssFromAllStyleNodes($xpath);
259
-
260
-		$cssParts = $this->splitCssAndMediaQuery($allCss);
261
-		self::$_media = ''; // reset
262
-
263
-		$cssKey = md5($cssParts['css']);
264
-		if (!isset($this->caches[self::CACHE_KEY_CSS][$cssKey])) {
265
-			// process the CSS file for selectors and definitions
266
-			preg_match_all('/(?:^|[\\s^{}]*)([^{]+){([^}]*)}/mis', $cssParts['css'], $matches, PREG_SET_ORDER);
267
-
268
-			$allSelectors = array();
269
-			foreach ($matches as $key => $selectorString) {
270
-				// if there is a blank definition, skip
271
-				if (!strlen(trim($selectorString[2]))) {
272
-					continue;
273
-				}
274
-
275
-				// else split by commas and duplicate attributes so we can sort by selector precedence
276
-				$selectors = explode(',', $selectorString[1]);
277
-				foreach ($selectors as $selector) {
278
-					// don't process pseudo-elements and behavioral (dynamic) pseudo-classes; ONLY allow structural pseudo-classes
279
-					if (strpos($selector, ':') !== false && !preg_match('/:\\S+\\-(child|type)\\(/i', $selector)) {
280
-						continue;
281
-					}
282
-
283
-					$allSelectors[] = array('selector' => trim($selector),
284
-											 'attributes' => trim($selectorString[2]),
285
-											 // keep track of where it appears in the file, since order is important
286
-											 'line' => $key,
287
-					);
288
-				}
289
-			}
290
-
291
-			// now sort the selectors by precedence
292
-			usort($allSelectors, array($this,'sortBySelectorPrecedence'));
293
-
294
-			$this->caches[self::CACHE_KEY_CSS][$cssKey] = $allSelectors;
295
-		}
296
-
297
-		foreach ($this->caches[self::CACHE_KEY_CSS][$cssKey] as $value) {
298
-			// query the body for the xpath selector
299
-			$nodesMatchingCssSelectors = $xpath->query($this->translateCssToXpath($value['selector']));
300
-
301
-			/** @var $node \DOMNode */
302
-			foreach ($nodesMatchingCssSelectors as $node) {
303
-				// if it has a style attribute, get it, process it, and append (overwrite) new stuff
304
-				if ($node->hasAttribute('style')) {
305
-					// break it up into an associative array
306
-					$oldStyleDeclarations = $this->parseCssDeclarationBlock($node->getAttribute('style'));
307
-				} else {
308
-					$oldStyleDeclarations = array();
309
-				}
310
-				$newStyleDeclarations = $this->parseCssDeclarationBlock($value['attributes']);
311
-				$node->setAttribute('style', $this->generateStyleStringFromDeclarationsArrays($oldStyleDeclarations, $newStyleDeclarations));
312
-			}
313
-		}
314
-
315
-		// now iterate through the nodes that contained inline styles in the original HTML
316
-		foreach ($this->styleAttributesForNodes as $nodePath => $styleAttributesForNode) {
317
-			$node = $this->visitedNodes[$nodePath];
318
-			$currentStyleAttributes = $this->parseCssDeclarationBlock($node->getAttribute('style'));
319
-			$node->setAttribute('style', $this->generateStyleStringFromDeclarationsArrays($currentStyleAttributes, $styleAttributesForNode));
320
-		}
321
-
322
-		// This removes styles from your email that contain display:none.
323
-		// We need to look for display:none, but we need to do a case-insensitive search. Since DOMDocument only supports XPath 1.0,
324
-		// lower-case() isn't available to us. We've thus far only set attributes to lowercase, not attribute values. Consequently, we need
325
-		// to translate() the letters that would be in 'NONE' ("NOE") to lowercase.
326
-		$nodesWithStyleDisplayNone = $xpath->query('//*[contains(translate(translate(@style," ",""),"NOE","noe"),"display:none")]');
327
-		// The checks on parentNode and is_callable below ensure that if we've deleted the parent node,
328
-		// we don't try to call removeChild on a nonexistent child node
329
-		if ($nodesWithStyleDisplayNone->length > 0) {
330
-			/** @var $node \DOMNode */
331
-			foreach ($nodesWithStyleDisplayNone as $node) {
332
-				if ($node->parentNode && is_callable(array($node->parentNode,'removeChild'))) {
333
-					$node->parentNode->removeChild($node);
334
-				}
335
-			}
336
-		}
337
-
338
-		$this->copyCssWithMediaToStyleNode($cssParts, $xmlDocument);
339
-
340
-		if ($this->preserveEncoding) {
341
-			// Deprecated since PHP 8.2
342
-			if ( version_compare( PHP_VERSION, '8.2', '<' ) && function_exists( 'mb_convert_encoding' ) ) {
343
-				return mb_convert_encoding( $xmlDocument->saveHTML(), self::ENCODING, 'HTML-ENTITIES' );
344
-			} else {
345
-				return mb_encode_numericentity( $xmlDocument->saveHTML(), [0x80, 0x10FFFF, 0, ~0], self::ENCODING );
346
-				//return htmlspecialchars_decode( utf8_encode( html_entity_decode( $xmlDocument->saveHTML(), ENT_COMPAT, self::ENCODING ) ) );
347
-			}
348
-		} else {
349
-			return $xmlDocument->saveHTML();
350
-		}
351
-	}
12
+    /**
13
+     * @var string
14
+     */
15
+    const ENCODING = 'UTF-8';
16
+
17
+    /**
18
+     * @var integer
19
+     */
20
+    const CACHE_KEY_CSS = 0;
21
+
22
+    /**
23
+     * @var integer
24
+     */
25
+    const CACHE_KEY_SELECTOR = 1;
26
+
27
+    /**
28
+     * @var integer
29
+     */
30
+    const CACHE_KEY_XPATH = 2;
31
+
32
+    /**
33
+     * @var integer
34
+     */
35
+    const CACHE_KEY_CSS_DECLARATION_BLOCK = 3;
36
+
37
+    /**
38
+     * for calculating nth-of-type and nth-child selectors.
39
+     *
40
+     * @var integer
41
+     */
42
+    const INDEX = 0;
43
+
44
+    /**
45
+     * for calculating nth-of-type and nth-child selectors.
46
+     *
47
+     * @var integer
48
+     */
49
+    const MULTIPLIER = 1;
50
+
51
+    /**
52
+     * @var string
53
+     */
54
+    const ID_ATTRIBUTE_MATCHER = '/(\\w+)?\\#([\\w\\-]+)/';
55
+
56
+    /**
57
+     * @var string
58
+     */
59
+    const CLASS_ATTRIBUTE_MATCHER = '/(\\w+|[\\*\\]])?((\\.[\\w\\-]+)+)/';
60
+
61
+    /**
62
+     * @var string
63
+     */
64
+    private $html = '';
65
+
66
+    /**
67
+     * @var string
68
+     */
69
+    private $css = '';
70
+
71
+    /**
72
+     * @var array<string>
73
+     */
74
+    private $unprocessableHtmlTags = array('wbr');
75
+
76
+    /**
77
+     * @var array<array>
78
+     */
79
+    private $caches = array(
80
+        self::CACHE_KEY_CSS => array(),
81
+        self::CACHE_KEY_SELECTOR => array(),
82
+        self::CACHE_KEY_XPATH => array(),
83
+        self::CACHE_KEY_CSS_DECLARATION_BLOCK => array(),
84
+    );
85
+
86
+    /**
87
+     * the visited nodes with the XPath paths as array keys.
88
+     *
89
+     * @var array<\DOMNode>
90
+     */
91
+    private $visitedNodes = array();
92
+
93
+    /**
94
+     * the styles to apply to the nodes with the XPath paths as array keys for the outer array and the attribute names/values.
95
+     * as key/value pairs for the inner array.
96
+     *
97
+     * @var array<array><string>
98
+     */
99
+    private $styleAttributesForNodes = array();
100
+
101
+    /**
102
+     * This attribute applies to the case where you want to preserve your original text encoding.
103
+     *
104
+     * By default, emogrifier translates your text into HTML entities for two reasons:
105
+     *
106
+     * 1. Because of client incompatibilities, it is better practice to send out HTML entities rather than unicode over email.
107
+     *
108
+     * 2. It translates any illegal XML characters that DOMDocument cannot work with.
109
+     *
110
+     * If you would like to preserve your original encoding, set this attribute to TRUE.
111
+     *
112
+     * @var boolean
113
+     */
114
+    public $preserveEncoding = false;
115
+
116
+    public static $_media = '';
117
+
118
+    /**
119
+     * The constructor.
120
+     *
121
+     * @param string $html the HTML to emogrify, must be UTF-8-encoded
122
+     * @param string $css the CSS to merge, must be UTF-8-encoded
123
+     */
124
+    public function __construct($html = '', $css = '') {
125
+        $this->setHtml($html);
126
+        $this->setCss($css);
127
+    }
128
+
129
+    /**
130
+     * The destructor.
131
+     */
132
+    public function __destruct() {
133
+        $this->purgeVisitedNodes();
134
+    }
135
+
136
+    /**
137
+     * Sets the HTML to emogrify.
138
+     *
139
+     * @param string $html the HTML to emogrify, must be UTF-8-encoded
140
+     */
141
+    public function setHtml($html = '') {
142
+        $this->html = $html;
143
+    }
144
+
145
+    /**
146
+     * Sets the CSS to merge with the HTML.
147
+     *
148
+     * @param string $css the CSS to merge, must be UTF-8-encoded
149
+     */
150
+    public function setCss($css = '') {
151
+        $this->css = $css;
152
+    }
153
+
154
+    /**
155
+     * Clears all caches.
156
+     */
157
+    private function clearAllCaches() {
158
+        $this->clearCache(self::CACHE_KEY_CSS);
159
+        $this->clearCache(self::CACHE_KEY_SELECTOR);
160
+        $this->clearCache(self::CACHE_KEY_XPATH);
161
+        $this->clearCache(self::CACHE_KEY_CSS_DECLARATION_BLOCK);
162
+    }
163
+
164
+    /**
165
+     * Clears a single cache by key.
166
+     *
167
+     * @param integer $key the cache key, must be CACHE_KEY_CSS, CACHE_KEY_SELECTOR, CACHE_KEY_XPATH or CACHE_KEY_CSS_DECLARATION_BLOCK
168
+     *
169
+     * @throws InvalidArgumentException
170
+     */
171
+    private function clearCache($key) {
172
+        $allowedCacheKeys = array(self::CACHE_KEY_CSS, self::CACHE_KEY_SELECTOR, self::CACHE_KEY_XPATH, self::CACHE_KEY_CSS_DECLARATION_BLOCK);
173
+        if (!in_array($key, $allowedCacheKeys, true)) {
174
+            throw new InvalidArgumentException('Invalid cache key: ' . $key, 1391822035);
175
+        }
176
+
177
+        $this->caches[$key] = array();
178
+    }
179
+
180
+    /**
181
+     * Purges the visited nodes.
182
+     */
183
+    private function purgeVisitedNodes() {
184
+        $this->visitedNodes = array();
185
+        $this->styleAttributesForNodes = array();
186
+    }
187
+
188
+    /**
189
+     * Marks a tag for removal.
190
+     *
191
+     * There are some HTML tags that DOMDocument cannot process, and it will throw an error if it encounters them.
192
+     * In particular, DOMDocument will complain if you try to use HTML5 tags in an XHTML document.
193
+     *
194
+     * Note: The tags will not be removed if they have any content.
195
+     *
196
+     * @param string $tagName the tag name, e.g., "p"
197
+     */
198
+    public function addUnprocessableHtmlTag($tagName) {
199
+        $this->unprocessableHtmlTags[] = $tagName;
200
+    }
201
+
202
+    /**
203
+     * Drops a tag from the removal list.
204
+     *
205
+     * @param string $tagName the tag name, e.g., "p"
206
+     */
207
+    public function removeUnprocessableHtmlTag($tagName) {
208
+        $key = array_search($tagName, $this->unprocessableHtmlTags, true);
209
+        if ($key !== false) {
210
+            unset($this->unprocessableHtmlTags[$key]);
211
+        }
212
+    }
213
+
214
+    /**
215
+     * Applies the CSS you submit to the HTML you submit.
216
+     *
217
+     * This method places the CSS inline.
218
+     *
219
+     * @return string
220
+     *
221
+     * @throws BadMethodCallException
222
+     */
223
+    public function emogrify() {
224
+        if ($this->html === '') {
225
+            throw new BadMethodCallException('Please set some HTML first before calling emogrify.', 1390393096);
226
+        }
227
+
228
+        $xmlDocument = $this->createXmlDocument();
229
+        $xpath = new DOMXPath($xmlDocument);
230
+        $this->clearAllCaches();
231
+
232
+        // before be begin processing the CSS file, parse the document and normalize all existing CSS attributes (changes 'DISPLAY: none' to 'display: none');
233
+        // we wouldn't have to do this if DOMXPath supported XPath 2.0.
234
+        // also store a reference of nodes with existing inline styles so we don't overwrite them
235
+        $this->purgeVisitedNodes();
236
+
237
+        $nodesWithStyleAttributes = $xpath->query('//*[@style]');
238
+        if ($nodesWithStyleAttributes !== false) {
239
+            /** @var $nodeWithStyleAttribute DOMNode */
240
+            foreach ($nodesWithStyleAttributes as $node) {
241
+                $normalizedOriginalStyle = preg_replace_callback( '/[A-z\\-]+(?=\\:)/S', array( $this, 'strtolower' ), $node->getAttribute('style') );
242
+
243
+                // in order to not overwrite existing style attributes in the HTML, we have to save the original HTML styles
244
+                $nodePath = $node->getNodePath();
245
+                if (!isset($this->styleAttributesForNodes[$nodePath])) {
246
+                    $this->styleAttributesForNodes[$nodePath] = $this->parseCssDeclarationBlock($normalizedOriginalStyle);
247
+                    $this->visitedNodes[$nodePath] = $node;
248
+                }
249
+
250
+                $node->setAttribute('style', $normalizedOriginalStyle);
251
+            }
252
+        }
253
+
254
+        // grab any existing style blocks from the html and append them to the existing CSS
255
+        // (these blocks should be appended so as to have precedence over conflicting styles in the existing CSS)
256
+        $allCss = $this->css;
257
+
258
+        $allCss .= $this->getCssFromAllStyleNodes($xpath);
259
+
260
+        $cssParts = $this->splitCssAndMediaQuery($allCss);
261
+        self::$_media = ''; // reset
262
+
263
+        $cssKey = md5($cssParts['css']);
264
+        if (!isset($this->caches[self::CACHE_KEY_CSS][$cssKey])) {
265
+            // process the CSS file for selectors and definitions
266
+            preg_match_all('/(?:^|[\\s^{}]*)([^{]+){([^}]*)}/mis', $cssParts['css'], $matches, PREG_SET_ORDER);
267
+
268
+            $allSelectors = array();
269
+            foreach ($matches as $key => $selectorString) {
270
+                // if there is a blank definition, skip
271
+                if (!strlen(trim($selectorString[2]))) {
272
+                    continue;
273
+                }
274
+
275
+                // else split by commas and duplicate attributes so we can sort by selector precedence
276
+                $selectors = explode(',', $selectorString[1]);
277
+                foreach ($selectors as $selector) {
278
+                    // don't process pseudo-elements and behavioral (dynamic) pseudo-classes; ONLY allow structural pseudo-classes
279
+                    if (strpos($selector, ':') !== false && !preg_match('/:\\S+\\-(child|type)\\(/i', $selector)) {
280
+                        continue;
281
+                    }
282
+
283
+                    $allSelectors[] = array('selector' => trim($selector),
284
+                                                'attributes' => trim($selectorString[2]),
285
+                                                // keep track of where it appears in the file, since order is important
286
+                                                'line' => $key,
287
+                    );
288
+                }
289
+            }
290
+
291
+            // now sort the selectors by precedence
292
+            usort($allSelectors, array($this,'sortBySelectorPrecedence'));
293
+
294
+            $this->caches[self::CACHE_KEY_CSS][$cssKey] = $allSelectors;
295
+        }
296
+
297
+        foreach ($this->caches[self::CACHE_KEY_CSS][$cssKey] as $value) {
298
+            // query the body for the xpath selector
299
+            $nodesMatchingCssSelectors = $xpath->query($this->translateCssToXpath($value['selector']));
300
+
301
+            /** @var $node \DOMNode */
302
+            foreach ($nodesMatchingCssSelectors as $node) {
303
+                // if it has a style attribute, get it, process it, and append (overwrite) new stuff
304
+                if ($node->hasAttribute('style')) {
305
+                    // break it up into an associative array
306
+                    $oldStyleDeclarations = $this->parseCssDeclarationBlock($node->getAttribute('style'));
307
+                } else {
308
+                    $oldStyleDeclarations = array();
309
+                }
310
+                $newStyleDeclarations = $this->parseCssDeclarationBlock($value['attributes']);
311
+                $node->setAttribute('style', $this->generateStyleStringFromDeclarationsArrays($oldStyleDeclarations, $newStyleDeclarations));
312
+            }
313
+        }
314
+
315
+        // now iterate through the nodes that contained inline styles in the original HTML
316
+        foreach ($this->styleAttributesForNodes as $nodePath => $styleAttributesForNode) {
317
+            $node = $this->visitedNodes[$nodePath];
318
+            $currentStyleAttributes = $this->parseCssDeclarationBlock($node->getAttribute('style'));
319
+            $node->setAttribute('style', $this->generateStyleStringFromDeclarationsArrays($currentStyleAttributes, $styleAttributesForNode));
320
+        }
321
+
322
+        // This removes styles from your email that contain display:none.
323
+        // We need to look for display:none, but we need to do a case-insensitive search. Since DOMDocument only supports XPath 1.0,
324
+        // lower-case() isn't available to us. We've thus far only set attributes to lowercase, not attribute values. Consequently, we need
325
+        // to translate() the letters that would be in 'NONE' ("NOE") to lowercase.
326
+        $nodesWithStyleDisplayNone = $xpath->query('//*[contains(translate(translate(@style," ",""),"NOE","noe"),"display:none")]');
327
+        // The checks on parentNode and is_callable below ensure that if we've deleted the parent node,
328
+        // we don't try to call removeChild on a nonexistent child node
329
+        if ($nodesWithStyleDisplayNone->length > 0) {
330
+            /** @var $node \DOMNode */
331
+            foreach ($nodesWithStyleDisplayNone as $node) {
332
+                if ($node->parentNode && is_callable(array($node->parentNode,'removeChild'))) {
333
+                    $node->parentNode->removeChild($node);
334
+                }
335
+            }
336
+        }
337
+
338
+        $this->copyCssWithMediaToStyleNode($cssParts, $xmlDocument);
339
+
340
+        if ($this->preserveEncoding) {
341
+            // Deprecated since PHP 8.2
342
+            if ( version_compare( PHP_VERSION, '8.2', '<' ) && function_exists( 'mb_convert_encoding' ) ) {
343
+                return mb_convert_encoding( $xmlDocument->saveHTML(), self::ENCODING, 'HTML-ENTITIES' );
344
+            } else {
345
+                return mb_encode_numericentity( $xmlDocument->saveHTML(), [0x80, 0x10FFFF, 0, ~0], self::ENCODING );
346
+                //return htmlspecialchars_decode( utf8_encode( html_entity_decode( $xmlDocument->saveHTML(), ENT_COMPAT, self::ENCODING ) ) );
347
+            }
348
+        } else {
349
+            return $xmlDocument->saveHTML();
350
+        }
351
+    }
352 352
 
353 353
     /**
354 354
      * String to lower.
@@ -358,143 +358,143 @@  discard block
 block discarded – undo
358 358
      * @param array $m
359 359
      * @return string
360 360
      */
361
-	public function strtolower(array $m) {
362
-		return strtolower($m[0]);
363
-	}
364
-
365
-
366
-	/**
367
-	 * This method merges old or existing name/value array with new name/value array.
368
-	 * and then generates a string of the combined style suitable for placing inline.
369
-	 * This becomes the single point for CSS string generation allowing for consistent.
370
-	 * CSS output no matter where the CSS originally came from.
371
-	 * @param array $oldStyles
372
-	 * @param array $newStyles
373
-	 * @return string
374
-	 */
375
-	private function generateStyleStringFromDeclarationsArrays(array $oldStyles, array $newStyles) {
376
-		$combinedStyles = array_merge($oldStyles, $newStyles);
377
-		$style = '';
378
-		foreach ($combinedStyles as $attributeName => $attributeValue) {
379
-			$style .= (strtolower(trim($attributeName)) . ': ' . trim($attributeValue) . '; ');
380
-		}
381
-		return trim($style);
382
-	}
383
-
384
-
385
-	/**
386
-	 * Copies the media part from CSS array parts to $xmlDocument.
387
-	 *
388
-	 * @param array $cssParts
389
-	 * @param DOMDocument $xmlDocument
390
-	 */
391
-	public function copyCssWithMediaToStyleNode(array $cssParts, DOMDocument $xmlDocument) {
392
-		if (isset($cssParts['media']) && $cssParts['media'] !== '') {
393
-			$this->addStyleElementToDocument($xmlDocument, $cssParts['media']);
394
-		}
395
-	}
396
-
397
-	/**
398
-	 * Returns CSS content.
399
-	 *
400
-	 * @param DOMXPath $xpath
401
-	 * @return string
402
-	 */
403
-	private function getCssFromAllStyleNodes(DOMXPath $xpath) {
404
-		$styleNodes = $xpath->query('//style');
405
-
406
-		if ($styleNodes === false) {
407
-			return '';
408
-		}
409
-
410
-		$css = '';
411
-		/** @var $styleNode DOMNode */
412
-		foreach ($styleNodes as $styleNode) {
413
-			$css .= "\n\n" . $styleNode->nodeValue;
414
-			$styleNode->parentNode->removeChild($styleNode);
415
-		}
416
-
417
-		return $css;
418
-	}
419
-
420
-	/**
421
-	 * Adds a style element with $css to $document.
422
-	 *
423
-	 * @param DOMDocument $document
424
-	 * @param string $css
425
-	 */
426
-	private function addStyleElementToDocument(DOMDocument $document, $css) {
427
-		$styleElement = $document->createElement('style', $css);
428
-		$styleAttribute = $document->createAttribute('type');
429
-		$styleAttribute->value = 'text/css';
430
-		$styleElement->appendChild($styleAttribute);
431
-
432
-		$head = $this->getOrCreateHeadElement($document);
433
-		$head->appendChild($styleElement);
434
-	}
435
-
436
-	/**
437
-	 * Returns the existing or creates a new head element in $document.
438
-	 *
439
-	 * @param DOMDocument $document
440
-	 * @return DOMNode the head element
441
-	 */
442
-	private function getOrCreateHeadElement(DOMDocument $document) {
443
-		$head = $document->getElementsByTagName('head')->item(0);
444
-
445
-		if ($head === null) {
446
-			$head = $document->createElement('head');
447
-			$html = $document->getElementsByTagName('html')->item(0);
448
-			$html->insertBefore($head, $document->getElementsByTagName('body')->item(0));
449
-		}
450
-
451
-		return $head;
452
-	}
453
-
454
-	/**
455
-	 * Splits input CSS code to an array where:
456
-	 *
457
-	 * - key "css" will be contains clean CSS code.
458
-	 * - key "media" will be contains all valuable media queries.
459
-	 *
460
-	 * Example:
461
-	 *
462
-	 * The CSS code.
463
-	 *
464
-	 *   "@import "file.css"; h1 { color:red; } @media { h1 {}} @media tv { h1 {}}"
465
-	 *
466
-	 * will be parsed into the following array:
467
-	 *
468
-	 *   "css" => "h1 { color:red; }"
469
-	 *   "media" => "@media { h1 {}}"
470
-	 *
471
-	 * @param string $css
472
-	 * @return array
473
-	 */
474
-	private function splitCssAndMediaQuery($css) {
475
-		$css = preg_replace_callback( '#@media\\s+(?:only\\s)?(?:[\\s{\(]|screen|all)\\s?[^{]+{.*}\\s*}\\s*#misU', array( $this, '_media_concat' ), $css );
476
-
477
-		// filter the CSS
478
-		$search = array(
479
-			// get rid of css comment code
480
-			'/\\/\\*.*\\*\\//sU',
481
-			// strip out any import directives
482
-			'/^\\s*@import\\s[^;]+;/misU',
483
-			// strip remains media enclosures
484
-			'/^\\s*@media\\s[^{]+{(.*)}\\s*}\\s/misU',
485
-		);
486
-
487
-		$replace = array(
488
-			'',
489
-			'',
490
-			'',
491
-		);
492
-
493
-		// clean CSS before output
494
-		$css = preg_replace($search, $replace, $css);
495
-
496
-		return array('css' => $css, 'media' => self::$_media);
497
-	}
361
+    public function strtolower(array $m) {
362
+        return strtolower($m[0]);
363
+    }
364
+
365
+
366
+    /**
367
+     * This method merges old or existing name/value array with new name/value array.
368
+     * and then generates a string of the combined style suitable for placing inline.
369
+     * This becomes the single point for CSS string generation allowing for consistent.
370
+     * CSS output no matter where the CSS originally came from.
371
+     * @param array $oldStyles
372
+     * @param array $newStyles
373
+     * @return string
374
+     */
375
+    private function generateStyleStringFromDeclarationsArrays(array $oldStyles, array $newStyles) {
376
+        $combinedStyles = array_merge($oldStyles, $newStyles);
377
+        $style = '';
378
+        foreach ($combinedStyles as $attributeName => $attributeValue) {
379
+            $style .= (strtolower(trim($attributeName)) . ': ' . trim($attributeValue) . '; ');
380
+        }
381
+        return trim($style);
382
+    }
383
+
384
+
385
+    /**
386
+     * Copies the media part from CSS array parts to $xmlDocument.
387
+     *
388
+     * @param array $cssParts
389
+     * @param DOMDocument $xmlDocument
390
+     */
391
+    public function copyCssWithMediaToStyleNode(array $cssParts, DOMDocument $xmlDocument) {
392
+        if (isset($cssParts['media']) && $cssParts['media'] !== '') {
393
+            $this->addStyleElementToDocument($xmlDocument, $cssParts['media']);
394
+        }
395
+    }
396
+
397
+    /**
398
+     * Returns CSS content.
399
+     *
400
+     * @param DOMXPath $xpath
401
+     * @return string
402
+     */
403
+    private function getCssFromAllStyleNodes(DOMXPath $xpath) {
404
+        $styleNodes = $xpath->query('//style');
405
+
406
+        if ($styleNodes === false) {
407
+            return '';
408
+        }
409
+
410
+        $css = '';
411
+        /** @var $styleNode DOMNode */
412
+        foreach ($styleNodes as $styleNode) {
413
+            $css .= "\n\n" . $styleNode->nodeValue;
414
+            $styleNode->parentNode->removeChild($styleNode);
415
+        }
416
+
417
+        return $css;
418
+    }
419
+
420
+    /**
421
+     * Adds a style element with $css to $document.
422
+     *
423
+     * @param DOMDocument $document
424
+     * @param string $css
425
+     */
426
+    private function addStyleElementToDocument(DOMDocument $document, $css) {
427
+        $styleElement = $document->createElement('style', $css);
428
+        $styleAttribute = $document->createAttribute('type');
429
+        $styleAttribute->value = 'text/css';
430
+        $styleElement->appendChild($styleAttribute);
431
+
432
+        $head = $this->getOrCreateHeadElement($document);
433
+        $head->appendChild($styleElement);
434
+    }
435
+
436
+    /**
437
+     * Returns the existing or creates a new head element in $document.
438
+     *
439
+     * @param DOMDocument $document
440
+     * @return DOMNode the head element
441
+     */
442
+    private function getOrCreateHeadElement(DOMDocument $document) {
443
+        $head = $document->getElementsByTagName('head')->item(0);
444
+
445
+        if ($head === null) {
446
+            $head = $document->createElement('head');
447
+            $html = $document->getElementsByTagName('html')->item(0);
448
+            $html->insertBefore($head, $document->getElementsByTagName('body')->item(0));
449
+        }
450
+
451
+        return $head;
452
+    }
453
+
454
+    /**
455
+     * Splits input CSS code to an array where:
456
+     *
457
+     * - key "css" will be contains clean CSS code.
458
+     * - key "media" will be contains all valuable media queries.
459
+     *
460
+     * Example:
461
+     *
462
+     * The CSS code.
463
+     *
464
+     *   "@import "file.css"; h1 { color:red; } @media { h1 {}} @media tv { h1 {}}"
465
+     *
466
+     * will be parsed into the following array:
467
+     *
468
+     *   "css" => "h1 { color:red; }"
469
+     *   "media" => "@media { h1 {}}"
470
+     *
471
+     * @param string $css
472
+     * @return array
473
+     */
474
+    private function splitCssAndMediaQuery($css) {
475
+        $css = preg_replace_callback( '#@media\\s+(?:only\\s)?(?:[\\s{\(]|screen|all)\\s?[^{]+{.*}\\s*}\\s*#misU', array( $this, '_media_concat' ), $css );
476
+
477
+        // filter the CSS
478
+        $search = array(
479
+            // get rid of css comment code
480
+            '/\\/\\*.*\\*\\//sU',
481
+            // strip out any import directives
482
+            '/^\\s*@import\\s[^;]+;/misU',
483
+            // strip remains media enclosures
484
+            '/^\\s*@media\\s[^{]+{(.*)}\\s*}\\s/misU',
485
+        );
486
+
487
+        $replace = array(
488
+            '',
489
+            '',
490
+            '',
491
+        );
492
+
493
+        // clean CSS before output
494
+        $css = preg_replace($search, $replace, $css);
495
+
496
+        return array('css' => $css, 'media' => self::$_media);
497
+    }
498 498
 
499 499
     /**
500 500
      * Media concat.
@@ -503,306 +503,306 @@  discard block
 block discarded – undo
503 503
      *
504 504
      * @param array $matches Matches result array.
505 505
      */
506
-	private function _media_concat( $matches ) {
507
-		self::$_media .= $matches[0];
508
-	}
509
-
510
-	/**
511
-	 * Creates a DOMDocument instance with the current HTML.
512
-	 *
513
-	 * @return DOMDocument
514
-	 */
515
-	private function createXmlDocument() {
516
-		$xmlDocument = new DOMDocument;
517
-		$xmlDocument->encoding = self::ENCODING;
518
-		$xmlDocument->strictErrorChecking = false;
519
-		$xmlDocument->formatOutput = true;
520
-		$libXmlState = libxml_use_internal_errors(true);
521
-		// phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
522
-		/** @scrutinizer ignore-unhandled */ @$xmlDocument->loadHTML($this->getUnifiedHtml());
523
-		libxml_clear_errors();
524
-		libxml_use_internal_errors($libXmlState);
525
-		$xmlDocument->normalizeDocument();
526
-
527
-		return $xmlDocument;
528
-	}
529
-
530
-	/**
531
-	 * Returns the HTML with the non-ASCII characters converts into HTML entities and the unprocessable HTML tags removed.
532
-	 *
533
-	 * @return string the unified HTML
534
-	 *
535
-	 * @throws BadMethodCallException
536
-	 */
537
-	private function getUnifiedHtml() {
538
-		if (!empty($this->unprocessableHtmlTags)) {
539
-			$unprocessableHtmlTags = implode('|', $this->unprocessableHtmlTags);
540
-			$bodyWithoutUnprocessableTags = preg_replace('/<\\/?(' . $unprocessableHtmlTags . ')[^>]*>/i', '', $this->html);
541
-		} else {
542
-			$bodyWithoutUnprocessableTags = $this->html;
543
-		}
544
-
545
-		// Deprecated since PHP 8.2
546
-		if ( version_compare( PHP_VERSION, '8.2', '<' ) && function_exists( 'mb_convert_encoding' ) ) {
547
-			return mb_convert_encoding( $bodyWithoutUnprocessableTags, 'HTML-ENTITIES', self::ENCODING );
548
-		} else {
549
-			return mb_encode_numericentity( $bodyWithoutUnprocessableTags, [0x80, 0x10FFFF, 0, ~0], self::ENCODING );
550
-			//return htmlspecialchars_decode( utf8_decode( htmlentities( $bodyWithoutUnprocessableTags, ENT_COMPAT, self::ENCODING, false ) ) );
551
-		}
552
-	}
553
-
554
-	/**
555
-	 * @param array $a
556
-	 * @param array $b
557
-	 *
558
-	 * @return integer
559
-	 */
560
-	private function sortBySelectorPrecedence(array $a, array $b) {
561
-		$precedenceA = $this->getCssSelectorPrecedence($a['selector']);
562
-		$precedenceB = $this->getCssSelectorPrecedence($b['selector']);
563
-
564
-		// We want these sorted in ascending order so selectors with lesser precedence get processed first and
565
-		// selectors with greater precedence get sorted last.
566
-		// The parenthesis around the -1 are necessary to avoid a PHP_CodeSniffer warning about missing spaces around
567
-		// arithmetic operators.
568
-		// @see http://forge.typo3.org/issues/55605
569
-		$precedenceForEquals = ($a['line'] < $b['line'] ? (-1) : 1);
570
-		$precedenceForNotEquals = ($precedenceA < $precedenceB ? (-1) : 1);
571
-		return ($precedenceA === $precedenceB) ? $precedenceForEquals : $precedenceForNotEquals;
572
-	}
573
-
574
-	/**
575
-	 * @param string $selector
576
-	 *
577
-	 * @return integer
578
-	 */
579
-	private function getCssSelectorPrecedence($selector) {
580
-		$selectorKey = md5($selector);
581
-		if (!isset($this->caches[self::CACHE_KEY_SELECTOR][$selectorKey])) {
582
-			$precedence = 0;
583
-			$value = 100;
584
-			// ids: worth 100, classes: worth 10, elements: worth 1
585
-			$search = array('\\#','\\.','');
586
-
587
-			foreach ($search as $s) {
588
-				if (trim($selector == '')) {
589
-					break;
590
-				}
591
-				$number = 0;
592
-				$selector = preg_replace('/' . $s . '\\w+/', '', $selector, -1, $number);
593
-				$precedence += ($value * $number);
594
-				$value /= 10;
595
-			}
596
-			$this->caches[self::CACHE_KEY_SELECTOR][$selectorKey] = $precedence;
597
-		}
598
-
599
-		return $this->caches[self::CACHE_KEY_SELECTOR][$selectorKey];
600
-	}
601
-
602
-	/**
603
-	 * Right now, we support all CSS 1 selectors and most CSS2/3 selectors.
604
-	 *
605
-	 * @see http://plasmasturm.org/log/444/
606
-	 *
607
-	 * @param string $paramCssSelector
608
-	 *
609
-	 * @return string
610
-	 */
611
-	private function translateCssToXpath($paramCssSelector) {
612
-		$cssSelector = ' ' . $paramCssSelector . ' ';
613
-		$cssSelector = preg_replace_callback( '/\s+\w+\s+/', array( $this, 'strtolower' ), $cssSelector );
614
-		$cssSelector = trim($cssSelector);
615
-		$xpathKey = md5($cssSelector);
616
-		if (!isset($this->caches[self::CACHE_KEY_XPATH][$xpathKey])) {
617
-			// returns an Xpath selector
618
-			$search = array(
619
-				// Matches any element that is a child of parent.
620
-				'/\\s+>\\s+/',
621
-				// Matches any element that is an adjacent sibling.
622
-				'/\\s+\\+\\s+/',
623
-				// Matches any element that is a descendant of an parent element element.
624
-				'/\\s+/',
625
-				// first-child pseudo-selector
626
-				'/([^\\/]+):first-child/i',
627
-				// last-child pseudo-selector
628
-				'/([^\\/]+):last-child/i',
629
-				// Matches attribute only selector
630
-				'/^\\[(\\w+)\\]/',
631
-				// Matches element with attribute
632
-				'/(\\w)\\[(\\w+)\\]/',
633
-				// Matches element with EXACT attribute
634
-				'/(\\w)\\[(\\w+)\\=[\'"]?(\\w+)[\'"]?\\]/',
635
-			);
636
-			$replace = array(
637
-				'/',
638
-				'/following-sibling::*[1]/self::',
639
-				'//',
640
-				'*[1]/self::\\1',
641
-				'*[last()]/self::\\1',
642
-				'*[@\\1]',
643
-				'\\1[@\\2]',
644
-				'\\1[@\\2="\\3"]',
645
-			);
646
-
647
-			$cssSelector = '//' . preg_replace($search, $replace, $cssSelector);
648
-
649
-			$cssSelector = preg_replace_callback(self::ID_ATTRIBUTE_MATCHER, array($this, 'matchIdAttributes'), $cssSelector);
650
-			$cssSelector = preg_replace_callback(self::CLASS_ATTRIBUTE_MATCHER, array($this, 'matchClassAttributes'), $cssSelector);
651
-
652
-			// Advanced selectors are going to require a bit more advanced emogrification.
653
-			// When we required PHP 5.3, we could do this with closures.
654
-			$cssSelector = preg_replace_callback(
655
-				'/([^\\/]+):nth-child\\(\s*(odd|even|[+\-]?\\d|[+\\-]?\\d?n(\\s*[+\\-]\\s*\\d)?)\\s*\\)/i',
656
-				array($this, 'translateNthChild'), $cssSelector
657
-			);
658
-			$cssSelector = preg_replace_callback(
659
-				'/([^\\/]+):nth-of-type\\(\s*(odd|even|[+\-]?\\d|[+\\-]?\\d?n(\\s*[+\\-]\\s*\\d)?)\\s*\\)/i',
660
-				array($this, 'translateNthOfType'), $cssSelector
661
-			);
662
-
663
-			$this->caches[self::CACHE_KEY_SELECTOR][$xpathKey] = $cssSelector;
664
-		}
665
-		return $this->caches[self::CACHE_KEY_SELECTOR][$xpathKey];
666
-	}
667
-
668
-	/**
669
-	 * @param array $match
670
-	 *
671
-	 * @return string
672
-	 */
673
-	private function matchIdAttributes(array $match) {
674
-		return (strlen($match[1]) ? $match[1] : '*') . '[@id="' . $match[2] . '"]';
675
-	}
676
-
677
-	/**
678
-	 * @param array $match
679
-	 *
680
-	 * @return string
681
-	 */
682
-	private function matchClassAttributes(array $match) {
683
-		return (strlen($match[1]) ? $match[1] : '*') . '[contains(concat(" ",@class," "),concat(" ","' .
684
-			implode(
685
-				'"," "))][contains(concat(" ",@class," "),concat(" ","',
686
-				explode('.', substr($match[2], 1))
687
-			) . '"," "))]';
688
-	}
689
-
690
-	/**
691
-	 * @param array $match
692
-	 *
693
-	 * @return string
694
-	 */
695
-	private function translateNthChild(array $match) {
696
-		$result = $this->parseNth($match);
697
-
698
-		if (isset($result[self::MULTIPLIER])) {
699
-			if ($result[self::MULTIPLIER] < 0) {
700
-				$result[self::MULTIPLIER] = abs($result[self::MULTIPLIER]);
701
-				return sprintf('*[(last() - position()) mod %u = %u]/self::%s', $result[self::MULTIPLIER], $result[self::INDEX], $match[1]);
702
-			} else {
703
-				return sprintf('*[position() mod %u = %u]/self::%s', $result[self::MULTIPLIER], $result[self::INDEX], $match[1]);
704
-			}
705
-		} else {
706
-			return sprintf('*[%u]/self::%s', $result[self::INDEX], $match[1]);
707
-		}
708
-	}
709
-
710
-	/**
711
-	 * @param array $match
712
-	 *
713
-	 * @return string
714
-	 */
715
-	private function translateNthOfType(array $match) {
716
-		$result = $this->parseNth($match);
717
-
718
-		if (isset($result[self::MULTIPLIER])) {
719
-			if ($result[self::MULTIPLIER] < 0) {
720
-				$result[self::MULTIPLIER] = abs($result[self::MULTIPLIER]);
721
-				return sprintf('%s[(last() - position()) mod %u = %u]', $match[1], $result[self::MULTIPLIER], $result[self::INDEX]);
722
-			} else {
723
-				return sprintf('%s[position() mod %u = %u]', $match[1], $result[self::MULTIPLIER], $result[self::INDEX]);
724
-			}
725
-		} else {
726
-			return sprintf('%s[%u]', $match[1], $result[self::INDEX]);
727
-		}
728
-	}
729
-
730
-	/**
731
-	 * @param array $match
732
-	 *
733
-	 * @return array
734
-	 */
735
-	private function parseNth(array $match) {
736
-		if (in_array(strtolower($match[2]), array('even','odd'))) {
737
-			$index = strtolower($match[2]) == 'even' ? 0 : 1;
738
-			return array(self::MULTIPLIER => 2, self::INDEX => $index);
739
-		} elseif (stripos($match[2], 'n') === false) {
740
-			// if there is a multiplier
741
-			$index = intval(str_replace(' ', '', $match[2]));
742
-			return array(self::INDEX => $index);
743
-		} else {
744
-			if (isset($match[3])) {
745
-				$multipleTerm = str_replace($match[3], '', $match[2]);
746
-				$index = intval(str_replace(' ', '', $match[3]));
747
-			} else {
748
-				$multipleTerm = $match[2];
749
-				$index = 0;
750
-			}
751
-
752
-			$multiplier = str_ireplace('n', '', $multipleTerm);
753
-
754
-			if (!strlen($multiplier)) {
755
-				$multiplier = 1;
756
-			} elseif ($multiplier == 0) {
757
-				return array(self::INDEX => $index);
758
-			} else {
759
-				$multiplier = intval($multiplier);
760
-			}
761
-
762
-			while ($index < 0) {
763
-				$index += abs($multiplier);
764
-			}
765
-
766
-			return array(self::MULTIPLIER => $multiplier, self::INDEX => $index);
767
-		}
768
-	}
769
-
770
-	/**
771
-	 * Parses a CSS declaration block into property name/value pairs.
772
-	 *
773
-	 * Example:
774
-	 *
775
-	 * The declaration block.
776
-	 *
777
-	 *   "color: #000; font-weight: bold;".
778
-	 *
779
-	 * will be parsed into the following array:
780
-	 *
781
-	 *   "color" => "#000"
782
-	 *   "font-weight" => "bold"
783
-	 *
784
-	 * @param string $cssDeclarationBlock the CSS declaration block without the curly braces, may be empty
785
-	 *
786
-	 * @return array the CSS declarations with the property names as array keys and the property values as array values
787
-	 */
788
-	private function parseCssDeclarationBlock($cssDeclarationBlock) {
789
-		if (isset($this->caches[self::CACHE_KEY_CSS_DECLARATION_BLOCK][$cssDeclarationBlock])) {
790
-			return $this->caches[self::CACHE_KEY_CSS_DECLARATION_BLOCK][$cssDeclarationBlock];
791
-		}
792
-
793
-		$properties = array();
794
-		$declarations = explode(';', $cssDeclarationBlock);
795
-		foreach ($declarations as $declaration) {
796
-			$matches = array();
797
-			if (!preg_match('/ *([A-Za-z\\-]+) *: *([^;]+) */', $declaration, $matches)) {
798
-				continue;
799
-			}
800
-			$propertyName = strtolower($matches[1]);
801
-			$propertyValue = $matches[2];
802
-			$properties[$propertyName] = $propertyValue;
803
-		}
804
-		$this->caches[self::CACHE_KEY_CSS_DECLARATION_BLOCK][$cssDeclarationBlock] = $properties;
805
-
806
-		return $properties;
807
-	}
506
+    private function _media_concat( $matches ) {
507
+        self::$_media .= $matches[0];
508
+    }
509
+
510
+    /**
511
+     * Creates a DOMDocument instance with the current HTML.
512
+     *
513
+     * @return DOMDocument
514
+     */
515
+    private function createXmlDocument() {
516
+        $xmlDocument = new DOMDocument;
517
+        $xmlDocument->encoding = self::ENCODING;
518
+        $xmlDocument->strictErrorChecking = false;
519
+        $xmlDocument->formatOutput = true;
520
+        $libXmlState = libxml_use_internal_errors(true);
521
+        // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
522
+        /** @scrutinizer ignore-unhandled */ @$xmlDocument->loadHTML($this->getUnifiedHtml());
523
+        libxml_clear_errors();
524
+        libxml_use_internal_errors($libXmlState);
525
+        $xmlDocument->normalizeDocument();
526
+
527
+        return $xmlDocument;
528
+    }
529
+
530
+    /**
531
+     * Returns the HTML with the non-ASCII characters converts into HTML entities and the unprocessable HTML tags removed.
532
+     *
533
+     * @return string the unified HTML
534
+     *
535
+     * @throws BadMethodCallException
536
+     */
537
+    private function getUnifiedHtml() {
538
+        if (!empty($this->unprocessableHtmlTags)) {
539
+            $unprocessableHtmlTags = implode('|', $this->unprocessableHtmlTags);
540
+            $bodyWithoutUnprocessableTags = preg_replace('/<\\/?(' . $unprocessableHtmlTags . ')[^>]*>/i', '', $this->html);
541
+        } else {
542
+            $bodyWithoutUnprocessableTags = $this->html;
543
+        }
544
+
545
+        // Deprecated since PHP 8.2
546
+        if ( version_compare( PHP_VERSION, '8.2', '<' ) && function_exists( 'mb_convert_encoding' ) ) {
547
+            return mb_convert_encoding( $bodyWithoutUnprocessableTags, 'HTML-ENTITIES', self::ENCODING );
548
+        } else {
549
+            return mb_encode_numericentity( $bodyWithoutUnprocessableTags, [0x80, 0x10FFFF, 0, ~0], self::ENCODING );
550
+            //return htmlspecialchars_decode( utf8_decode( htmlentities( $bodyWithoutUnprocessableTags, ENT_COMPAT, self::ENCODING, false ) ) );
551
+        }
552
+    }
553
+
554
+    /**
555
+     * @param array $a
556
+     * @param array $b
557
+     *
558
+     * @return integer
559
+     */
560
+    private function sortBySelectorPrecedence(array $a, array $b) {
561
+        $precedenceA = $this->getCssSelectorPrecedence($a['selector']);
562
+        $precedenceB = $this->getCssSelectorPrecedence($b['selector']);
563
+
564
+        // We want these sorted in ascending order so selectors with lesser precedence get processed first and
565
+        // selectors with greater precedence get sorted last.
566
+        // The parenthesis around the -1 are necessary to avoid a PHP_CodeSniffer warning about missing spaces around
567
+        // arithmetic operators.
568
+        // @see http://forge.typo3.org/issues/55605
569
+        $precedenceForEquals = ($a['line'] < $b['line'] ? (-1) : 1);
570
+        $precedenceForNotEquals = ($precedenceA < $precedenceB ? (-1) : 1);
571
+        return ($precedenceA === $precedenceB) ? $precedenceForEquals : $precedenceForNotEquals;
572
+    }
573
+
574
+    /**
575
+     * @param string $selector
576
+     *
577
+     * @return integer
578
+     */
579
+    private function getCssSelectorPrecedence($selector) {
580
+        $selectorKey = md5($selector);
581
+        if (!isset($this->caches[self::CACHE_KEY_SELECTOR][$selectorKey])) {
582
+            $precedence = 0;
583
+            $value = 100;
584
+            // ids: worth 100, classes: worth 10, elements: worth 1
585
+            $search = array('\\#','\\.','');
586
+
587
+            foreach ($search as $s) {
588
+                if (trim($selector == '')) {
589
+                    break;
590
+                }
591
+                $number = 0;
592
+                $selector = preg_replace('/' . $s . '\\w+/', '', $selector, -1, $number);
593
+                $precedence += ($value * $number);
594
+                $value /= 10;
595
+            }
596
+            $this->caches[self::CACHE_KEY_SELECTOR][$selectorKey] = $precedence;
597
+        }
598
+
599
+        return $this->caches[self::CACHE_KEY_SELECTOR][$selectorKey];
600
+    }
601
+
602
+    /**
603
+     * Right now, we support all CSS 1 selectors and most CSS2/3 selectors.
604
+     *
605
+     * @see http://plasmasturm.org/log/444/
606
+     *
607
+     * @param string $paramCssSelector
608
+     *
609
+     * @return string
610
+     */
611
+    private function translateCssToXpath($paramCssSelector) {
612
+        $cssSelector = ' ' . $paramCssSelector . ' ';
613
+        $cssSelector = preg_replace_callback( '/\s+\w+\s+/', array( $this, 'strtolower' ), $cssSelector );
614
+        $cssSelector = trim($cssSelector);
615
+        $xpathKey = md5($cssSelector);
616
+        if (!isset($this->caches[self::CACHE_KEY_XPATH][$xpathKey])) {
617
+            // returns an Xpath selector
618
+            $search = array(
619
+                // Matches any element that is a child of parent.
620
+                '/\\s+>\\s+/',
621
+                // Matches any element that is an adjacent sibling.
622
+                '/\\s+\\+\\s+/',
623
+                // Matches any element that is a descendant of an parent element element.
624
+                '/\\s+/',
625
+                // first-child pseudo-selector
626
+                '/([^\\/]+):first-child/i',
627
+                // last-child pseudo-selector
628
+                '/([^\\/]+):last-child/i',
629
+                // Matches attribute only selector
630
+                '/^\\[(\\w+)\\]/',
631
+                // Matches element with attribute
632
+                '/(\\w)\\[(\\w+)\\]/',
633
+                // Matches element with EXACT attribute
634
+                '/(\\w)\\[(\\w+)\\=[\'"]?(\\w+)[\'"]?\\]/',
635
+            );
636
+            $replace = array(
637
+                '/',
638
+                '/following-sibling::*[1]/self::',
639
+                '//',
640
+                '*[1]/self::\\1',
641
+                '*[last()]/self::\\1',
642
+                '*[@\\1]',
643
+                '\\1[@\\2]',
644
+                '\\1[@\\2="\\3"]',
645
+            );
646
+
647
+            $cssSelector = '//' . preg_replace($search, $replace, $cssSelector);
648
+
649
+            $cssSelector = preg_replace_callback(self::ID_ATTRIBUTE_MATCHER, array($this, 'matchIdAttributes'), $cssSelector);
650
+            $cssSelector = preg_replace_callback(self::CLASS_ATTRIBUTE_MATCHER, array($this, 'matchClassAttributes'), $cssSelector);
651
+
652
+            // Advanced selectors are going to require a bit more advanced emogrification.
653
+            // When we required PHP 5.3, we could do this with closures.
654
+            $cssSelector = preg_replace_callback(
655
+                '/([^\\/]+):nth-child\\(\s*(odd|even|[+\-]?\\d|[+\\-]?\\d?n(\\s*[+\\-]\\s*\\d)?)\\s*\\)/i',
656
+                array($this, 'translateNthChild'), $cssSelector
657
+            );
658
+            $cssSelector = preg_replace_callback(
659
+                '/([^\\/]+):nth-of-type\\(\s*(odd|even|[+\-]?\\d|[+\\-]?\\d?n(\\s*[+\\-]\\s*\\d)?)\\s*\\)/i',
660
+                array($this, 'translateNthOfType'), $cssSelector
661
+            );
662
+
663
+            $this->caches[self::CACHE_KEY_SELECTOR][$xpathKey] = $cssSelector;
664
+        }
665
+        return $this->caches[self::CACHE_KEY_SELECTOR][$xpathKey];
666
+    }
667
+
668
+    /**
669
+     * @param array $match
670
+     *
671
+     * @return string
672
+     */
673
+    private function matchIdAttributes(array $match) {
674
+        return (strlen($match[1]) ? $match[1] : '*') . '[@id="' . $match[2] . '"]';
675
+    }
676
+
677
+    /**
678
+     * @param array $match
679
+     *
680
+     * @return string
681
+     */
682
+    private function matchClassAttributes(array $match) {
683
+        return (strlen($match[1]) ? $match[1] : '*') . '[contains(concat(" ",@class," "),concat(" ","' .
684
+            implode(
685
+                '"," "))][contains(concat(" ",@class," "),concat(" ","',
686
+                explode('.', substr($match[2], 1))
687
+            ) . '"," "))]';
688
+    }
689
+
690
+    /**
691
+     * @param array $match
692
+     *
693
+     * @return string
694
+     */
695
+    private function translateNthChild(array $match) {
696
+        $result = $this->parseNth($match);
697
+
698
+        if (isset($result[self::MULTIPLIER])) {
699
+            if ($result[self::MULTIPLIER] < 0) {
700
+                $result[self::MULTIPLIER] = abs($result[self::MULTIPLIER]);
701
+                return sprintf('*[(last() - position()) mod %u = %u]/self::%s', $result[self::MULTIPLIER], $result[self::INDEX], $match[1]);
702
+            } else {
703
+                return sprintf('*[position() mod %u = %u]/self::%s', $result[self::MULTIPLIER], $result[self::INDEX], $match[1]);
704
+            }
705
+        } else {
706
+            return sprintf('*[%u]/self::%s', $result[self::INDEX], $match[1]);
707
+        }
708
+    }
709
+
710
+    /**
711
+     * @param array $match
712
+     *
713
+     * @return string
714
+     */
715
+    private function translateNthOfType(array $match) {
716
+        $result = $this->parseNth($match);
717
+
718
+        if (isset($result[self::MULTIPLIER])) {
719
+            if ($result[self::MULTIPLIER] < 0) {
720
+                $result[self::MULTIPLIER] = abs($result[self::MULTIPLIER]);
721
+                return sprintf('%s[(last() - position()) mod %u = %u]', $match[1], $result[self::MULTIPLIER], $result[self::INDEX]);
722
+            } else {
723
+                return sprintf('%s[position() mod %u = %u]', $match[1], $result[self::MULTIPLIER], $result[self::INDEX]);
724
+            }
725
+        } else {
726
+            return sprintf('%s[%u]', $match[1], $result[self::INDEX]);
727
+        }
728
+    }
729
+
730
+    /**
731
+     * @param array $match
732
+     *
733
+     * @return array
734
+     */
735
+    private function parseNth(array $match) {
736
+        if (in_array(strtolower($match[2]), array('even','odd'))) {
737
+            $index = strtolower($match[2]) == 'even' ? 0 : 1;
738
+            return array(self::MULTIPLIER => 2, self::INDEX => $index);
739
+        } elseif (stripos($match[2], 'n') === false) {
740
+            // if there is a multiplier
741
+            $index = intval(str_replace(' ', '', $match[2]));
742
+            return array(self::INDEX => $index);
743
+        } else {
744
+            if (isset($match[3])) {
745
+                $multipleTerm = str_replace($match[3], '', $match[2]);
746
+                $index = intval(str_replace(' ', '', $match[3]));
747
+            } else {
748
+                $multipleTerm = $match[2];
749
+                $index = 0;
750
+            }
751
+
752
+            $multiplier = str_ireplace('n', '', $multipleTerm);
753
+
754
+            if (!strlen($multiplier)) {
755
+                $multiplier = 1;
756
+            } elseif ($multiplier == 0) {
757
+                return array(self::INDEX => $index);
758
+            } else {
759
+                $multiplier = intval($multiplier);
760
+            }
761
+
762
+            while ($index < 0) {
763
+                $index += abs($multiplier);
764
+            }
765
+
766
+            return array(self::MULTIPLIER => $multiplier, self::INDEX => $index);
767
+        }
768
+    }
769
+
770
+    /**
771
+     * Parses a CSS declaration block into property name/value pairs.
772
+     *
773
+     * Example:
774
+     *
775
+     * The declaration block.
776
+     *
777
+     *   "color: #000; font-weight: bold;".
778
+     *
779
+     * will be parsed into the following array:
780
+     *
781
+     *   "color" => "#000"
782
+     *   "font-weight" => "bold"
783
+     *
784
+     * @param string $cssDeclarationBlock the CSS declaration block without the curly braces, may be empty
785
+     *
786
+     * @return array the CSS declarations with the property names as array keys and the property values as array values
787
+     */
788
+    private function parseCssDeclarationBlock($cssDeclarationBlock) {
789
+        if (isset($this->caches[self::CACHE_KEY_CSS_DECLARATION_BLOCK][$cssDeclarationBlock])) {
790
+            return $this->caches[self::CACHE_KEY_CSS_DECLARATION_BLOCK][$cssDeclarationBlock];
791
+        }
792
+
793
+        $properties = array();
794
+        $declarations = explode(';', $cssDeclarationBlock);
795
+        foreach ($declarations as $declaration) {
796
+            $matches = array();
797
+            if (!preg_match('/ *([A-Za-z\\-]+) *: *([^;]+) */', $declaration, $matches)) {
798
+                continue;
799
+            }
800
+            $propertyName = strtolower($matches[1]);
801
+            $propertyValue = $matches[2];
802
+            $properties[$propertyName] = $propertyValue;
803
+        }
804
+        $this->caches[self::CACHE_KEY_CSS_DECLARATION_BLOCK][$cssDeclarationBlock] = $properties;
805
+
806
+        return $properties;
807
+    }
808 808
 }
Please login to merge, or discard this patch.
Spacing   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -238,7 +238,7 @@  discard block
 block discarded – undo
238 238
 		if ($nodesWithStyleAttributes !== false) {
239 239
 			/** @var $nodeWithStyleAttribute DOMNode */
240 240
 			foreach ($nodesWithStyleAttributes as $node) {
241
-				$normalizedOriginalStyle = preg_replace_callback( '/[A-z\\-]+(?=\\:)/S', array( $this, 'strtolower' ), $node->getAttribute('style') );
241
+				$normalizedOriginalStyle = preg_replace_callback('/[A-z\\-]+(?=\\:)/S', array($this, 'strtolower'), $node->getAttribute('style'));
242 242
 
243 243
 				// in order to not overwrite existing style attributes in the HTML, we have to save the original HTML styles
244 244
 				$nodePath = $node->getNodePath();
@@ -289,7 +289,7 @@  discard block
 block discarded – undo
289 289
 			}
290 290
 
291 291
 			// now sort the selectors by precedence
292
-			usort($allSelectors, array($this,'sortBySelectorPrecedence'));
292
+			usort($allSelectors, array($this, 'sortBySelectorPrecedence'));
293 293
 
294 294
 			$this->caches[self::CACHE_KEY_CSS][$cssKey] = $allSelectors;
295 295
 		}
@@ -329,7 +329,7 @@  discard block
 block discarded – undo
329 329
 		if ($nodesWithStyleDisplayNone->length > 0) {
330 330
 			/** @var $node \DOMNode */
331 331
 			foreach ($nodesWithStyleDisplayNone as $node) {
332
-				if ($node->parentNode && is_callable(array($node->parentNode,'removeChild'))) {
332
+				if ($node->parentNode && is_callable(array($node->parentNode, 'removeChild'))) {
333 333
 					$node->parentNode->removeChild($node);
334 334
 				}
335 335
 			}
@@ -339,10 +339,10 @@  discard block
 block discarded – undo
339 339
 
340 340
 		if ($this->preserveEncoding) {
341 341
 			// Deprecated since PHP 8.2
342
-			if ( version_compare( PHP_VERSION, '8.2', '<' ) && function_exists( 'mb_convert_encoding' ) ) {
343
-				return mb_convert_encoding( $xmlDocument->saveHTML(), self::ENCODING, 'HTML-ENTITIES' );
342
+			if (version_compare(PHP_VERSION, '8.2', '<') && function_exists('mb_convert_encoding')) {
343
+				return mb_convert_encoding($xmlDocument->saveHTML(), self::ENCODING, 'HTML-ENTITIES');
344 344
 			} else {
345
-				return mb_encode_numericentity( $xmlDocument->saveHTML(), [0x80, 0x10FFFF, 0, ~0], self::ENCODING );
345
+				return mb_encode_numericentity($xmlDocument->saveHTML(), [0x80, 0x10FFFF, 0, ~0], self::ENCODING);
346 346
 				//return htmlspecialchars_decode( utf8_encode( html_entity_decode( $xmlDocument->saveHTML(), ENT_COMPAT, self::ENCODING ) ) );
347 347
 			}
348 348
 		} else {
@@ -472,7 +472,7 @@  discard block
 block discarded – undo
472 472
 	 * @return array
473 473
 	 */
474 474
 	private function splitCssAndMediaQuery($css) {
475
-		$css = preg_replace_callback( '#@media\\s+(?:only\\s)?(?:[\\s{\(]|screen|all)\\s?[^{]+{.*}\\s*}\\s*#misU', array( $this, '_media_concat' ), $css );
475
+		$css = preg_replace_callback('#@media\\s+(?:only\\s)?(?:[\\s{\(]|screen|all)\\s?[^{]+{.*}\\s*}\\s*#misU', array($this, '_media_concat'), $css);
476 476
 
477 477
 		// filter the CSS
478 478
 		$search = array(
@@ -503,7 +503,7 @@  discard block
 block discarded – undo
503 503
      *
504 504
      * @param array $matches Matches result array.
505 505
      */
506
-	private function _media_concat( $matches ) {
506
+	private function _media_concat($matches) {
507 507
 		self::$_media .= $matches[0];
508 508
 	}
509 509
 
@@ -543,10 +543,10 @@  discard block
 block discarded – undo
543 543
 		}
544 544
 
545 545
 		// Deprecated since PHP 8.2
546
-		if ( version_compare( PHP_VERSION, '8.2', '<' ) && function_exists( 'mb_convert_encoding' ) ) {
547
-			return mb_convert_encoding( $bodyWithoutUnprocessableTags, 'HTML-ENTITIES', self::ENCODING );
546
+		if (version_compare(PHP_VERSION, '8.2', '<') && function_exists('mb_convert_encoding')) {
547
+			return mb_convert_encoding($bodyWithoutUnprocessableTags, 'HTML-ENTITIES', self::ENCODING);
548 548
 		} else {
549
-			return mb_encode_numericentity( $bodyWithoutUnprocessableTags, [0x80, 0x10FFFF, 0, ~0], self::ENCODING );
549
+			return mb_encode_numericentity($bodyWithoutUnprocessableTags, [0x80, 0x10FFFF, 0, ~0], self::ENCODING);
550 550
 			//return htmlspecialchars_decode( utf8_decode( htmlentities( $bodyWithoutUnprocessableTags, ENT_COMPAT, self::ENCODING, false ) ) );
551 551
 		}
552 552
 	}
@@ -582,7 +582,7 @@  discard block
 block discarded – undo
582 582
 			$precedence = 0;
583 583
 			$value = 100;
584 584
 			// ids: worth 100, classes: worth 10, elements: worth 1
585
-			$search = array('\\#','\\.','');
585
+			$search = array('\\#', '\\.', '');
586 586
 
587 587
 			foreach ($search as $s) {
588 588
 				if (trim($selector == '')) {
@@ -610,7 +610,7 @@  discard block
 block discarded – undo
610 610
 	 */
611 611
 	private function translateCssToXpath($paramCssSelector) {
612 612
 		$cssSelector = ' ' . $paramCssSelector . ' ';
613
-		$cssSelector = preg_replace_callback( '/\s+\w+\s+/', array( $this, 'strtolower' ), $cssSelector );
613
+		$cssSelector = preg_replace_callback('/\s+\w+\s+/', array($this, 'strtolower'), $cssSelector);
614 614
 		$cssSelector = trim($cssSelector);
615 615
 		$xpathKey = md5($cssSelector);
616 616
 		if (!isset($this->caches[self::CACHE_KEY_XPATH][$xpathKey])) {
@@ -733,7 +733,7 @@  discard block
 block discarded – undo
733 733
 	 * @return array
734 734
 	 */
735 735
 	private function parseNth(array $match) {
736
-		if (in_array(strtolower($match[2]), array('even','odd'))) {
736
+		if (in_array(strtolower($match[2]), array('even', 'odd'))) {
737 737
 			$index = strtolower($match[2]) == 'even' ? 0 : 1;
738 738
 			return array(self::MULTIPLIER => 2, self::INDEX => $index);
739 739
 		} elseif (stripos($match[2], 'n') === false) {
Please login to merge, or discard this patch.
includes/class-wpinv.php 2 patches
Indentation   +597 added lines, -597 removed lines patch added patch discarded remove patch
@@ -14,643 +14,643 @@
 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
-
71
-		if ( isset( $this->data[ $prop ] ) ) {
72
-			return $this->data[ $prop ];
73
-		}
74
-
75
-		return null;
76
-	}
77
-
78
-	/**
79
-	 * Define class properties.
80
-	 */
81
-	public function set_properties() {
82
-
83
-		// Sessions.
84
-		$this->set( 'session', new WPInv_Session_Handler() );
85
-		$GLOBALS['wpi_session'] = $this->get( 'session' ); // Backwards compatibility.
86
-		$GLOBALS['wpinv_euvat'] = new WPInv_EUVat(); // Backwards compatibility.
87
-
88
-		// Init other objects.
89
-		$this->set( 'notes', new WPInv_Notes() );
90
-		$this->set( 'api', new WPInv_API() );
91
-		$this->set( 'post_types', new GetPaid_Post_Types() );
92
-		$this->set( 'template', new GetPaid_Template() );
93
-		$this->set( 'admin', new GetPaid_Admin() );
94
-		$this->set( 'subscriptions', new WPInv_Subscriptions() );
95
-		$this->set( 'invoice_emails', new GetPaid_Invoice_Notification_Emails() );
96
-		$this->set( 'subscription_emails', new GetPaid_Subscription_Notification_Emails() );
97
-		$this->set( 'daily_maintenace', new GetPaid_Daily_Maintenance() );
98
-		$this->set( 'payment_forms', new GetPaid_Payment_Forms() );
99
-		$this->set( 'maxmind', new GetPaid_MaxMind_Geolocation() );
100
-
101
-	}
102
-
103
-	 /**
104
-	 * Define plugin constants.
105
-	 */
106
-	public function define_constants() {
107
-		define( 'WPINV_PLUGIN_DIR', plugin_dir_path( WPINV_PLUGIN_FILE ) );
108
-		define( 'WPINV_PLUGIN_URL', plugin_dir_url( WPINV_PLUGIN_FILE ) );
109
-		$this->version = WPINV_VERSION;
110
-	}
111
-
112
-	/**
113
-	 * Hook into actions and filters.
114
-	 *
115
-	 * @since 1.0.19
116
-	 */
117
-	protected function init_hooks() {
118
-		/* Internationalize the text strings used. */
119
-		add_action( 'plugins_loaded', array( &$this, 'plugins_loaded' ) );
120
-
121
-		// Init the plugin after WordPress inits.
122
-		add_action( 'init', array( $this, 'init' ), 1 );
123
-		add_action( 'init', array( $this, 'maybe_process_ipn' ), 10 );
124
-		add_action( 'init', array( $this, 'wpinv_actions' ) );
125
-		add_action( 'init', array( $this, 'maybe_do_authenticated_action' ), 100 );
126
-		add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), 11 );
127
-		add_action( 'wp_footer', array( $this, 'wp_footer' ) );
128
-		add_action( 'wp_head', array( $this, 'wp_head' ) );
129
-		add_action( 'widgets_init', array( $this, 'register_widgets' ) );
130
-		add_filter( 'wpseo_exclude_from_sitemap_by_post_ids', array( $this, 'wpseo_exclude_from_sitemap_by_post_ids' ) );
131
-		add_filter( 'the_seo_framework_sitemap_supported_post_types', array( $this, 'exclude_invoicing_post_types' ) );
132
-		add_filter( 'pre_get_posts', array( &$this, 'pre_get_posts' ) );
133
-
134
-		add_filter( 'query_vars', array( $this, 'custom_query_vars' ) );
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
+
71
+        if ( isset( $this->data[ $prop ] ) ) {
72
+            return $this->data[ $prop ];
73
+        }
74
+
75
+        return null;
76
+    }
77
+
78
+    /**
79
+     * Define class properties.
80
+     */
81
+    public function set_properties() {
82
+
83
+        // Sessions.
84
+        $this->set( 'session', new WPInv_Session_Handler() );
85
+        $GLOBALS['wpi_session'] = $this->get( 'session' ); // Backwards compatibility.
86
+        $GLOBALS['wpinv_euvat'] = new WPInv_EUVat(); // Backwards compatibility.
87
+
88
+        // Init other objects.
89
+        $this->set( 'notes', new WPInv_Notes() );
90
+        $this->set( 'api', new WPInv_API() );
91
+        $this->set( 'post_types', new GetPaid_Post_Types() );
92
+        $this->set( 'template', new GetPaid_Template() );
93
+        $this->set( 'admin', new GetPaid_Admin() );
94
+        $this->set( 'subscriptions', new WPInv_Subscriptions() );
95
+        $this->set( 'invoice_emails', new GetPaid_Invoice_Notification_Emails() );
96
+        $this->set( 'subscription_emails', new GetPaid_Subscription_Notification_Emails() );
97
+        $this->set( 'daily_maintenace', new GetPaid_Daily_Maintenance() );
98
+        $this->set( 'payment_forms', new GetPaid_Payment_Forms() );
99
+        $this->set( 'maxmind', new GetPaid_MaxMind_Geolocation() );
100
+
101
+    }
102
+
103
+        /**
104
+         * Define plugin constants.
105
+         */
106
+    public function define_constants() {
107
+        define( 'WPINV_PLUGIN_DIR', plugin_dir_path( WPINV_PLUGIN_FILE ) );
108
+        define( 'WPINV_PLUGIN_URL', plugin_dir_url( WPINV_PLUGIN_FILE ) );
109
+        $this->version = WPINV_VERSION;
110
+    }
111
+
112
+    /**
113
+     * Hook into actions and filters.
114
+     *
115
+     * @since 1.0.19
116
+     */
117
+    protected function init_hooks() {
118
+        /* Internationalize the text strings used. */
119
+        add_action( 'plugins_loaded', array( &$this, 'plugins_loaded' ) );
120
+
121
+        // Init the plugin after WordPress inits.
122
+        add_action( 'init', array( $this, 'init' ), 1 );
123
+        add_action( 'init', array( $this, 'maybe_process_ipn' ), 10 );
124
+        add_action( 'init', array( $this, 'wpinv_actions' ) );
125
+        add_action( 'init', array( $this, 'maybe_do_authenticated_action' ), 100 );
126
+        add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), 11 );
127
+        add_action( 'wp_footer', array( $this, 'wp_footer' ) );
128
+        add_action( 'wp_head', array( $this, 'wp_head' ) );
129
+        add_action( 'widgets_init', array( $this, 'register_widgets' ) );
130
+        add_filter( 'wpseo_exclude_from_sitemap_by_post_ids', array( $this, 'wpseo_exclude_from_sitemap_by_post_ids' ) );
131
+        add_filter( 'the_seo_framework_sitemap_supported_post_types', array( $this, 'exclude_invoicing_post_types' ) );
132
+        add_filter( 'pre_get_posts', array( &$this, 'pre_get_posts' ) );
133
+
134
+        add_filter( 'query_vars', array( $this, 'custom_query_vars' ) );
135 135
         add_action( 'init', array( $this, 'add_rewrite_rule' ), 10, 0 );
136
-		add_action( 'pre_get_posts', array( $this, 'maybe_process_new_ipn' ), 1 );
137
-
138
-		// Fires after registering actions.
139
-		do_action( 'wpinv_actions', $this );
140
-		do_action( 'getpaid_actions', $this );
141
-
142
-	}
143
-
144
-	public function plugins_loaded() {
145
-		/* Internationalize the text strings used. */
146
-		$this->load_textdomain();
147
-
148
-		do_action( 'wpinv_loaded' );
149
-
150
-		// Fix oxygen page builder conflict
151
-		if ( function_exists( 'ct_css_output' ) ) {
152
-			wpinv_oxygen_fix_conflict();
153
-		}
154
-	}
155
-
156
-	/**
157
-	 * Load Localisation files.
158
-	 *
159
-	 * Note: the first-loaded translation file overrides any following ones if the same translation is present.
160
-	 *
161
-	 * Locales found in:
162
-	 *      - WP_LANG_DIR/plugins/invoicing-LOCALE.mo
163
-	 *      - WP_PLUGIN_DIR/invoicing/languages/invoicing-LOCALE.mo
164
-	 *
165
-	 * @since 1.0.0
166
-	 */
167
-	public function load_textdomain() {
168
-
169
-		load_plugin_textdomain(
170
-			'invoicing',
171
-			false,
172
-			plugin_basename( dirname( WPINV_PLUGIN_FILE ) ) . '/languages/'
173
-		);
174
-
175
-	}
176
-
177
-	/**
178
-	 * Include required core files used in admin and on the frontend.
179
-	 */
180
-	public function includes() {
181
-
182
-		// Start with the settings.
183
-		require_once WPINV_PLUGIN_DIR . 'includes/admin/register-settings.php';
184
-
185
-		// Packages/libraries.
186
-		require_once WPINV_PLUGIN_DIR . 'vendor/autoload.php';
187
-		require_once WPINV_PLUGIN_DIR . 'vendor/ayecode/wp-ayecode-ui/ayecode-ui-loader.php';
188
-
189
-		// Load functions.
190
-		require_once WPINV_PLUGIN_DIR . 'includes/deprecated-functions.php';
191
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-email-functions.php';
192
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-general-functions.php';
193
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-helper-functions.php';
194
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-tax-functions.php';
195
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-template-functions.php';
196
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-address-functions.php';
197
-		require_once WPINV_PLUGIN_DIR . 'includes/invoice-functions.php';
198
-		require_once WPINV_PLUGIN_DIR . 'includes/subscription-functions.php';
199
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-item-functions.php';
200
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-discount-functions.php';
201
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-gateway-functions.php';
202
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-payment-functions.php';
203
-		require_once WPINV_PLUGIN_DIR . 'includes/user-functions.php';
204
-		require_once WPINV_PLUGIN_DIR . 'includes/error-functions.php';
205
-
206
-		// Register autoloader.
207
-		try {
208
-			spl_autoload_register( array( $this, 'autoload' ), true );
209
-		} catch ( Exception $e ) {
210
-			wpinv_error_log( $e->getMessage(), '', __FILE__, 149, true );
211
-		}
212
-
213
-		require_once WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-session.php';
214
-		require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-session-handler.php';
215
-		require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-ajax.php';
216
-		require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-api.php';
217
-		require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-cache-helper.php';
218
-		require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-db.php';
219
-		require_once WPINV_PLUGIN_DIR . 'includes/admin/subscriptions.php';
220
-		require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-subscriptions-db.php';
221
-		require_once WPINV_PLUGIN_DIR . 'includes/wpinv-subscription.php';
222
-		require_once WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-privacy.php';
223
-		require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-privacy.php';
224
-		require_once WPINV_PLUGIN_DIR . 'includes/libraries/class-ayecode-addons.php';
225
-		require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-addons.php';
226
-		require_once WPINV_PLUGIN_DIR . 'widgets/checkout.php';
227
-		require_once WPINV_PLUGIN_DIR . 'widgets/invoice-history.php';
228
-		require_once WPINV_PLUGIN_DIR . 'widgets/invoice-receipt.php';
229
-		require_once WPINV_PLUGIN_DIR . 'widgets/invoice-messages.php';
230
-		require_once WPINV_PLUGIN_DIR . 'widgets/subscriptions.php';
231
-		require_once WPINV_PLUGIN_DIR . 'widgets/buy-item.php';
232
-		require_once WPINV_PLUGIN_DIR . 'widgets/getpaid.php';
233
-		require_once WPINV_PLUGIN_DIR . 'widgets/invoice.php';
234
-		require_once WPINV_PLUGIN_DIR . 'includes/admin/admin-pages.php';
235
-
236
-		if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) {
237
-			GetPaid_Post_Types_Admin::init();
238
-
239
-			require_once WPINV_PLUGIN_DIR . 'includes/admin/wpinv-admin-functions.php';
240
-			require_once WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-payment-form.php';
241
-			require_once WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-notes.php';
242
-			require_once WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-admin-menus.php';
243
-			require_once WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-users.php';
244
-			require_once WPINV_PLUGIN_DIR . 'includes/admin/class-getpaid-admin-profile.php';
245
-			// load the user class only on the users.php page
246
-			global $pagenow;
247
-			if ( $pagenow == 'users.php' ) {
248
-				new WPInv_Admin_Users();
249
-			}
250
-		}
251
-
252
-		// Register cli commands
253
-		if ( defined( 'WP_CLI' ) && WP_CLI ) {
254
-			require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-cli.php';
255
-			WP_CLI::add_command( 'invoicing', 'WPInv_CLI' );
256
-		}
257
-
258
-	}
259
-
260
-	/**
261
-	 * Class autoloader
262
-	 *
263
-	 * @param       string $class_name The name of the class to load.
264
-	 * @access      public
265
-	 * @since       1.0.19
266
-	 * @return      void
267
-	 */
268
-	public function autoload( $class_name ) {
269
-
270
-		// Normalize the class name...
271
-		$class_name  = strtolower( $class_name );
272
-
273
-		// ... and make sure it is our class.
274
-		if ( false === strpos( $class_name, 'getpaid_' ) && false === strpos( $class_name, 'wpinv_' ) ) {
275
-			return;
276
-		}
277
-
278
-		// Next, prepare the file name from the class.
279
-		$file_name = 'class-' . str_replace( '_', '-', $class_name ) . '.php';
280
-
281
-		// Base path of the classes.
282
-		$plugin_path = untrailingslashit( WPINV_PLUGIN_DIR );
283
-
284
-		// And an array of possible locations in order of importance.
285
-		$locations = array(
286
-			"$plugin_path/includes",
287
-			"$plugin_path/includes/data-stores",
288
-			"$plugin_path/includes/gateways",
289
-			"$plugin_path/includes/payments",
290
-			"$plugin_path/includes/geolocation",
291
-			"$plugin_path/includes/reports",
292
-			"$plugin_path/includes/api",
293
-			"$plugin_path/includes/admin",
294
-			"$plugin_path/includes/admin/meta-boxes",
295
-		);
296
-
297
-		foreach ( apply_filters( 'getpaid_autoload_locations', $locations ) as $location ) {
298
-
299
-			if ( file_exists( trailingslashit( $location ) . $file_name ) ) {
300
-				include trailingslashit( $location ) . $file_name;
301
-				break;
302
-			}
136
+        add_action( 'pre_get_posts', array( $this, 'maybe_process_new_ipn' ), 1 );
137
+
138
+        // Fires after registering actions.
139
+        do_action( 'wpinv_actions', $this );
140
+        do_action( 'getpaid_actions', $this );
141
+
142
+    }
143
+
144
+    public function plugins_loaded() {
145
+        /* Internationalize the text strings used. */
146
+        $this->load_textdomain();
147
+
148
+        do_action( 'wpinv_loaded' );
149
+
150
+        // Fix oxygen page builder conflict
151
+        if ( function_exists( 'ct_css_output' ) ) {
152
+            wpinv_oxygen_fix_conflict();
153
+        }
154
+    }
155
+
156
+    /**
157
+     * Load Localisation files.
158
+     *
159
+     * Note: the first-loaded translation file overrides any following ones if the same translation is present.
160
+     *
161
+     * Locales found in:
162
+     *      - WP_LANG_DIR/plugins/invoicing-LOCALE.mo
163
+     *      - WP_PLUGIN_DIR/invoicing/languages/invoicing-LOCALE.mo
164
+     *
165
+     * @since 1.0.0
166
+     */
167
+    public function load_textdomain() {
168
+
169
+        load_plugin_textdomain(
170
+            'invoicing',
171
+            false,
172
+            plugin_basename( dirname( WPINV_PLUGIN_FILE ) ) . '/languages/'
173
+        );
174
+
175
+    }
176
+
177
+    /**
178
+     * Include required core files used in admin and on the frontend.
179
+     */
180
+    public function includes() {
181
+
182
+        // Start with the settings.
183
+        require_once WPINV_PLUGIN_DIR . 'includes/admin/register-settings.php';
184
+
185
+        // Packages/libraries.
186
+        require_once WPINV_PLUGIN_DIR . 'vendor/autoload.php';
187
+        require_once WPINV_PLUGIN_DIR . 'vendor/ayecode/wp-ayecode-ui/ayecode-ui-loader.php';
188
+
189
+        // Load functions.
190
+        require_once WPINV_PLUGIN_DIR . 'includes/deprecated-functions.php';
191
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-email-functions.php';
192
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-general-functions.php';
193
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-helper-functions.php';
194
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-tax-functions.php';
195
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-template-functions.php';
196
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-address-functions.php';
197
+        require_once WPINV_PLUGIN_DIR . 'includes/invoice-functions.php';
198
+        require_once WPINV_PLUGIN_DIR . 'includes/subscription-functions.php';
199
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-item-functions.php';
200
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-discount-functions.php';
201
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-gateway-functions.php';
202
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-payment-functions.php';
203
+        require_once WPINV_PLUGIN_DIR . 'includes/user-functions.php';
204
+        require_once WPINV_PLUGIN_DIR . 'includes/error-functions.php';
205
+
206
+        // Register autoloader.
207
+        try {
208
+            spl_autoload_register( array( $this, 'autoload' ), true );
209
+        } catch ( Exception $e ) {
210
+            wpinv_error_log( $e->getMessage(), '', __FILE__, 149, true );
211
+        }
212
+
213
+        require_once WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-session.php';
214
+        require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-session-handler.php';
215
+        require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-ajax.php';
216
+        require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-api.php';
217
+        require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-cache-helper.php';
218
+        require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-db.php';
219
+        require_once WPINV_PLUGIN_DIR . 'includes/admin/subscriptions.php';
220
+        require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-subscriptions-db.php';
221
+        require_once WPINV_PLUGIN_DIR . 'includes/wpinv-subscription.php';
222
+        require_once WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-privacy.php';
223
+        require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-privacy.php';
224
+        require_once WPINV_PLUGIN_DIR . 'includes/libraries/class-ayecode-addons.php';
225
+        require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-addons.php';
226
+        require_once WPINV_PLUGIN_DIR . 'widgets/checkout.php';
227
+        require_once WPINV_PLUGIN_DIR . 'widgets/invoice-history.php';
228
+        require_once WPINV_PLUGIN_DIR . 'widgets/invoice-receipt.php';
229
+        require_once WPINV_PLUGIN_DIR . 'widgets/invoice-messages.php';
230
+        require_once WPINV_PLUGIN_DIR . 'widgets/subscriptions.php';
231
+        require_once WPINV_PLUGIN_DIR . 'widgets/buy-item.php';
232
+        require_once WPINV_PLUGIN_DIR . 'widgets/getpaid.php';
233
+        require_once WPINV_PLUGIN_DIR . 'widgets/invoice.php';
234
+        require_once WPINV_PLUGIN_DIR . 'includes/admin/admin-pages.php';
235
+
236
+        if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) {
237
+            GetPaid_Post_Types_Admin::init();
238
+
239
+            require_once WPINV_PLUGIN_DIR . 'includes/admin/wpinv-admin-functions.php';
240
+            require_once WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-payment-form.php';
241
+            require_once WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-notes.php';
242
+            require_once WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-admin-menus.php';
243
+            require_once WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-users.php';
244
+            require_once WPINV_PLUGIN_DIR . 'includes/admin/class-getpaid-admin-profile.php';
245
+            // load the user class only on the users.php page
246
+            global $pagenow;
247
+            if ( $pagenow == 'users.php' ) {
248
+                new WPInv_Admin_Users();
249
+            }
250
+        }
251
+
252
+        // Register cli commands
253
+        if ( defined( 'WP_CLI' ) && WP_CLI ) {
254
+            require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-cli.php';
255
+            WP_CLI::add_command( 'invoicing', 'WPInv_CLI' );
256
+        }
257
+
258
+    }
259
+
260
+    /**
261
+     * Class autoloader
262
+     *
263
+     * @param       string $class_name The name of the class to load.
264
+     * @access      public
265
+     * @since       1.0.19
266
+     * @return      void
267
+     */
268
+    public function autoload( $class_name ) {
269
+
270
+        // Normalize the class name...
271
+        $class_name  = strtolower( $class_name );
272
+
273
+        // ... and make sure it is our class.
274
+        if ( false === strpos( $class_name, 'getpaid_' ) && false === strpos( $class_name, 'wpinv_' ) ) {
275
+            return;
276
+        }
277
+
278
+        // Next, prepare the file name from the class.
279
+        $file_name = 'class-' . str_replace( '_', '-', $class_name ) . '.php';
280
+
281
+        // Base path of the classes.
282
+        $plugin_path = untrailingslashit( WPINV_PLUGIN_DIR );
283
+
284
+        // And an array of possible locations in order of importance.
285
+        $locations = array(
286
+            "$plugin_path/includes",
287
+            "$plugin_path/includes/data-stores",
288
+            "$plugin_path/includes/gateways",
289
+            "$plugin_path/includes/payments",
290
+            "$plugin_path/includes/geolocation",
291
+            "$plugin_path/includes/reports",
292
+            "$plugin_path/includes/api",
293
+            "$plugin_path/includes/admin",
294
+            "$plugin_path/includes/admin/meta-boxes",
295
+        );
296
+
297
+        foreach ( apply_filters( 'getpaid_autoload_locations', $locations ) as $location ) {
298
+
299
+            if ( file_exists( trailingslashit( $location ) . $file_name ) ) {
300
+                include trailingslashit( $location ) . $file_name;
301
+                break;
302
+            }
303 303
 }
304 304
 
305
-	}
306
-
307
-	/**
308
-	 * Inits hooks etc.
309
-	 */
310
-	public function init() {
311
-
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
-	/**
345
-	 * Checks if this is an IPN request and processes it.
346
-	 */
347
-	public function maybe_process_ipn() {
348
-
349
-		// Ensure that this is an IPN request.
350
-		if ( empty( $_GET['wpi-listener'] ) || 'IPN' !== $_GET['wpi-listener'] || empty( $_GET['wpi-gateway'] ) ) {
351
-			return;
352
-		}
353
-
354
-		$gateway = sanitize_text_field( $_GET['wpi-gateway'] );
355
-
356
-		do_action( 'wpinv_verify_payment_ipn', $gateway );
357
-		do_action( "wpinv_verify_{$gateway}_ipn" );
358
-		exit;
359
-
360
-	}
361
-
362
-	public function enqueue_scripts() {
363
-
364
-		// Fires before adding scripts.
365
-		do_action( 'getpaid_enqueue_scripts' );
366
-
367
-		$localize                         = array();
368
-		$localize['ajax_url']             = admin_url( 'admin-ajax.php' );
369
-		$localize['thousands']            = wpinv_thousands_separator();
370
-		$localize['decimals']             = wpinv_decimal_separator();
371
-		$localize['nonce']                = wp_create_nonce( 'wpinv-nonce' );
372
-		$localize['txtComplete']          = __( 'Continue', 'invoicing' );
373
-		$localize['UseTaxes']             = wpinv_use_taxes();
374
-		$localize['formNonce']            = wp_create_nonce( 'getpaid_form_nonce' );
375
-		$localize['loading']              = __( 'Loading...', 'invoicing' );
376
-		$localize['connectionError']      = __( 'Could not establish a connection to the server.', 'invoicing' );
377
-		$localize['recaptchaSettings']    = getpaid_get_recaptcha_settings();
378
-
379
-		$localize = apply_filters( 'wpinv_front_js_localize', $localize );
380
-
381
-		// reCaptcha.
382
-		if ( getpaid_is_recaptcha_enabled() && ( $recaptcha_js = getpaid_recaptcha_api_url() ) ) {
383
-			wp_enqueue_script( 'recaptcha', $recaptcha_js, array(), null, true ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion
384
-		}
385
-
386
-		$version = filemtime( WPINV_PLUGIN_DIR . 'assets/js/payment-forms.js' );
387
-		wp_enqueue_script( 'wpinv-front-script', WPINV_PLUGIN_URL . 'assets/js/payment-forms.js', array( 'jquery' ), $version, true );
388
-		wp_localize_script( 'wpinv-front-script', 'WPInv', $localize );
389
-	}
390
-
391
-	public function wpinv_actions() {
392
-		if ( isset( $_REQUEST['wpi_action'] ) ) {
393
-			do_action( 'wpinv_' . wpinv_sanitize_key( $_REQUEST['wpi_action'] ), $_REQUEST );
394
-		}
395
-
396
-		if ( defined( 'WP_ALL_IMPORT_ROOT_DIR' ) ) {
397
-			include plugin_dir_path( __FILE__ ) . 'libraries/wp-all-import/class-getpaid-wp-all-import.php';
398
-		}
399
-	}
400
-
401
-	/**
305
+    }
306
+
307
+    /**
308
+     * Inits hooks etc.
309
+     */
310
+    public function init() {
311
+
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
+    /**
345
+     * Checks if this is an IPN request and processes it.
346
+     */
347
+    public function maybe_process_ipn() {
348
+
349
+        // Ensure that this is an IPN request.
350
+        if ( empty( $_GET['wpi-listener'] ) || 'IPN' !== $_GET['wpi-listener'] || empty( $_GET['wpi-gateway'] ) ) {
351
+            return;
352
+        }
353
+
354
+        $gateway = sanitize_text_field( $_GET['wpi-gateway'] );
355
+
356
+        do_action( 'wpinv_verify_payment_ipn', $gateway );
357
+        do_action( "wpinv_verify_{$gateway}_ipn" );
358
+        exit;
359
+
360
+    }
361
+
362
+    public function enqueue_scripts() {
363
+
364
+        // Fires before adding scripts.
365
+        do_action( 'getpaid_enqueue_scripts' );
366
+
367
+        $localize                         = array();
368
+        $localize['ajax_url']             = admin_url( 'admin-ajax.php' );
369
+        $localize['thousands']            = wpinv_thousands_separator();
370
+        $localize['decimals']             = wpinv_decimal_separator();
371
+        $localize['nonce']                = wp_create_nonce( 'wpinv-nonce' );
372
+        $localize['txtComplete']          = __( 'Continue', 'invoicing' );
373
+        $localize['UseTaxes']             = wpinv_use_taxes();
374
+        $localize['formNonce']            = wp_create_nonce( 'getpaid_form_nonce' );
375
+        $localize['loading']              = __( 'Loading...', 'invoicing' );
376
+        $localize['connectionError']      = __( 'Could not establish a connection to the server.', 'invoicing' );
377
+        $localize['recaptchaSettings']    = getpaid_get_recaptcha_settings();
378
+
379
+        $localize = apply_filters( 'wpinv_front_js_localize', $localize );
380
+
381
+        // reCaptcha.
382
+        if ( getpaid_is_recaptcha_enabled() && ( $recaptcha_js = getpaid_recaptcha_api_url() ) ) {
383
+            wp_enqueue_script( 'recaptcha', $recaptcha_js, array(), null, true ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion
384
+        }
385
+
386
+        $version = filemtime( WPINV_PLUGIN_DIR . 'assets/js/payment-forms.js' );
387
+        wp_enqueue_script( 'wpinv-front-script', WPINV_PLUGIN_URL . 'assets/js/payment-forms.js', array( 'jquery' ), $version, true );
388
+        wp_localize_script( 'wpinv-front-script', 'WPInv', $localize );
389
+    }
390
+
391
+    public function wpinv_actions() {
392
+        if ( isset( $_REQUEST['wpi_action'] ) ) {
393
+            do_action( 'wpinv_' . wpinv_sanitize_key( $_REQUEST['wpi_action'] ), $_REQUEST );
394
+        }
395
+
396
+        if ( defined( 'WP_ALL_IMPORT_ROOT_DIR' ) ) {
397
+            include plugin_dir_path( __FILE__ ) . 'libraries/wp-all-import/class-getpaid-wp-all-import.php';
398
+        }
399
+    }
400
+
401
+    /**
402 402
      * Fires an action after verifying that a user can fire them.
403
-	 *
404
-	 * Note: If the action is on an invoice, subscription etc, esure that the
405
-	 * current user owns the invoice/subscription.
403
+     *
404
+     * Note: If the action is on an invoice, subscription etc, esure that the
405
+     * current user owns the invoice/subscription.
406 406
      */
407 407
     public function maybe_do_authenticated_action() {
408 408
 
409
-		if ( isset( $_REQUEST['getpaid-action'] ) && isset( $_REQUEST['getpaid-nonce'] ) && wp_verify_nonce( $_REQUEST['getpaid-nonce'], 'getpaid-nonce' ) ) {
409
+        if ( isset( $_REQUEST['getpaid-action'] ) && isset( $_REQUEST['getpaid-nonce'] ) && wp_verify_nonce( $_REQUEST['getpaid-nonce'], 'getpaid-nonce' ) ) {
410 410
 
411
-			$key  = sanitize_key( $_REQUEST['getpaid-action'] );
412
-			$data = wp_unslash( $_REQUEST );
413
-			if ( is_user_logged_in() ) {
414
-				do_action( "getpaid_authenticated_action_$key", $data );
415
-			}
411
+            $key  = sanitize_key( $_REQUEST['getpaid-action'] );
412
+            $data = wp_unslash( $_REQUEST );
413
+            if ( is_user_logged_in() ) {
414
+                do_action( "getpaid_authenticated_action_$key", $data );
415
+            }
416 416
 
417
-			do_action( "getpaid_unauthenticated_action_$key", $data );
417
+            do_action( "getpaid_unauthenticated_action_$key", $data );
418
+
419
+        }
418 420
 
419
-		}
421
+    }
422
+
423
+    public function pre_get_posts( $wp_query ) {
424
+
425
+        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() ) {
426
+            $wp_query->query_vars['post_status'] = array_keys( wpinv_get_invoice_statuses( false, false, $wp_query->query_vars['post_type'] ) );
427
+        }
420 428
 
429
+        return $wp_query;
421 430
     }
422 431
 
423
-	public function pre_get_posts( $wp_query ) {
424
-
425
-		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() ) {
426
-			$wp_query->query_vars['post_status'] = array_keys( wpinv_get_invoice_statuses( false, false, $wp_query->query_vars['post_type'] ) );
427
-		}
428
-
429
-		return $wp_query;
430
-	}
431
-
432
-	/**
433
-	 * Register widgets
434
-	 *
435
-	 */
436
-	public function register_widgets() {
437
-		global $pagenow;
438
-
439
-		// Currently, UX Builder does not work particulaly well with SuperDuper.
440
-		// So we disable our widgets when editing a page with UX Builder.
441
-		if ( function_exists( 'ux_builder_is_active' ) && ux_builder_is_active() ) {
442
-			return;
443
-		}
444
-
445
-		$block_widget_init_screens = function_exists( 'sd_pagenow_exclude' ) ? sd_pagenow_exclude() : array();
446
-
447
-		if ( is_admin() && $pagenow && in_array( $pagenow, $block_widget_init_screens ) ) {
448
-			// don't initiate in these conditions.
449
-		} else {
450
-
451
-			// Only load allowed widgets.
452
-			$exclude = function_exists( 'sd_widget_exclude' ) ? sd_widget_exclude() : array();
453
-			$widgets = apply_filters(
454
-				'getpaid_widget_classes',
455
-				array(
456
-					'WPInv_Checkout_Widget',
457
-					'WPInv_History_Widget',
458
-					'WPInv_Receipt_Widget',
459
-					'WPInv_Subscriptions_Widget',
460
-					'WPInv_Buy_Item_Widget',
461
-					'WPInv_Messages_Widget',
462
-					'WPInv_GetPaid_Widget',
463
-					'WPInv_Invoice_Widget',
464
-				)
465
-			);
466
-
467
-			// For each widget...
468
-			foreach ( $widgets as $widget ) {
469
-
470
-				// Abort early if it is excluded for this page.
471
-				if ( in_array( $widget, $exclude ) ) {
472
-					continue;
473
-				}
474
-
475
-				// SD V1 used to extend the widget class. V2 does not, so we cannot call register widget on it.
476
-				if ( is_subclass_of( $widget, 'WP_Widget' ) ) {
477
-					register_widget( $widget );
478
-				} else {
479
-					new $widget();
480
-				}
432
+    /**
433
+     * Register widgets
434
+     *
435
+     */
436
+    public function register_widgets() {
437
+        global $pagenow;
438
+
439
+        // Currently, UX Builder does not work particulaly well with SuperDuper.
440
+        // So we disable our widgets when editing a page with UX Builder.
441
+        if ( function_exists( 'ux_builder_is_active' ) && ux_builder_is_active() ) {
442
+            return;
443
+        }
444
+
445
+        $block_widget_init_screens = function_exists( 'sd_pagenow_exclude' ) ? sd_pagenow_exclude() : array();
446
+
447
+        if ( is_admin() && $pagenow && in_array( $pagenow, $block_widget_init_screens ) ) {
448
+            // don't initiate in these conditions.
449
+        } else {
450
+
451
+            // Only load allowed widgets.
452
+            $exclude = function_exists( 'sd_widget_exclude' ) ? sd_widget_exclude() : array();
453
+            $widgets = apply_filters(
454
+                'getpaid_widget_classes',
455
+                array(
456
+                    'WPInv_Checkout_Widget',
457
+                    'WPInv_History_Widget',
458
+                    'WPInv_Receipt_Widget',
459
+                    'WPInv_Subscriptions_Widget',
460
+                    'WPInv_Buy_Item_Widget',
461
+                    'WPInv_Messages_Widget',
462
+                    'WPInv_GetPaid_Widget',
463
+                    'WPInv_Invoice_Widget',
464
+                )
465
+            );
466
+
467
+            // For each widget...
468
+            foreach ( $widgets as $widget ) {
469
+
470
+                // Abort early if it is excluded for this page.
471
+                if ( in_array( $widget, $exclude ) ) {
472
+                    continue;
473
+                }
474
+
475
+                // SD V1 used to extend the widget class. V2 does not, so we cannot call register widget on it.
476
+                if ( is_subclass_of( $widget, 'WP_Widget' ) ) {
477
+                    register_widget( $widget );
478
+                } else {
479
+                    new $widget();
480
+                }
481 481
 }
482 482
 }
483 483
 
484
-	}
484
+    }
485
+
486
+    /**
487
+     * Upgrades the database.
488
+     *
489
+     * @since 2.0.2
490
+     */
491
+    public function maybe_upgrade_database() {
492
+
493
+        // Ensure the database tables are up to date.
494
+        GetPaid_Installer::maybe_create_db_tables();
495
+
496
+        $wpi_version = get_option( 'wpinv_version', 0 );
497
+
498
+        if ( $wpi_version == WPINV_VERSION ) {
499
+            return;
500
+        }
501
+
502
+        $installer = new GetPaid_Installer();
503
+
504
+        if ( empty( $wpi_version ) ) {
505
+            return $installer->upgrade_db( 0 );
506
+        }
507
+
508
+        $upgrades  = array(
509
+            '0.0.5' => '004',
510
+            '1.0.3' => '102',
511
+            '2.0.0' => '118',
512
+            '2.8.0' => '279',
513
+        );
514
+
515
+        foreach ( $upgrades as $key => $method ) {
485 516
 
486
-	/**
487
-	 * Upgrades the database.
488
-	 *
489
-	 * @since 2.0.2
490
-	 */
491
-	public function maybe_upgrade_database() {
517
+            if ( version_compare( $wpi_version, $key, '<' ) ) {
518
+                return $installer->upgrade_db( $method );
519
+            }
520
+        }
521
+
522
+    }
523
+
524
+    /**
525
+     * Flushes the permalinks if needed.
526
+     *
527
+     * @since 2.0.8
528
+     */
529
+    public function maybe_flush_permalinks() {
492 530
 
493
-		// Ensure the database tables are up to date.
494
-		GetPaid_Installer::maybe_create_db_tables();
531
+        $flush = get_option( 'wpinv_flush_permalinks', 0 );
495 532
 
496
-		$wpi_version = get_option( 'wpinv_version', 0 );
533
+        if ( ! empty( $flush ) ) {
534
+            flush_rewrite_rules();
535
+            delete_option( 'wpinv_flush_permalinks' );
536
+        }
497 537
 
498
-		if ( $wpi_version == WPINV_VERSION ) {
499
-			return;
500
-		}
538
+    }
501 539
 
502
-		$installer = new GetPaid_Installer();
540
+    /**
541
+     * Remove our pages from yoast sitemaps.
542
+     *
543
+     * @since 1.0.19
544
+     * @param int[] $excluded_posts_ids
545
+     */
546
+    public function wpseo_exclude_from_sitemap_by_post_ids( $excluded_posts_ids ) {
547
+
548
+        // Ensure that we have an array.
549
+        if ( ! is_array( $excluded_posts_ids ) ) {
550
+            $excluded_posts_ids = array();
551
+        }
503 552
 
504
-		if ( empty( $wpi_version ) ) {
505
-			return $installer->upgrade_db( 0 );
506
-		}
553
+        // Prepare our pages.
554
+        $our_pages = array();
555
+
556
+        // Checkout page.
557
+        $our_pages[] = wpinv_get_option( 'checkout_page', false );
558
+
559
+        // Success page.
560
+        $our_pages[] = wpinv_get_option( 'success_page', false );
561
+
562
+        // Failure page.
563
+        $our_pages[] = wpinv_get_option( 'failure_page', false );
564
+
565
+        // History page.
566
+        $our_pages[] = wpinv_get_option( 'invoice_history_page', false );
567
+
568
+        // Subscriptions page.
569
+        $our_pages[] = wpinv_get_option( 'invoice_subscription_page', false );
570
+
571
+        $our_pages   = array_map( 'intval', array_filter( $our_pages ) );
572
+
573
+        $excluded_posts_ids = $excluded_posts_ids + $our_pages;
574
+        return array_unique( $excluded_posts_ids );
575
+
576
+    }
507 577
 
508
-		$upgrades  = array(
509
-			'0.0.5' => '004',
510
-			'1.0.3' => '102',
511
-			'2.0.0' => '118',
512
-			'2.8.0' => '279',
513
-		);
514
-
515
-		foreach ( $upgrades as $key => $method ) {
516
-
517
-			if ( version_compare( $wpi_version, $key, '<' ) ) {
518
-				return $installer->upgrade_db( $method );
519
-			}
520
-		}
521
-
522
-	}
523
-
524
-	/**
525
-	 * Flushes the permalinks if needed.
526
-	 *
527
-	 * @since 2.0.8
528
-	 */
529
-	public function maybe_flush_permalinks() {
530
-
531
-		$flush = get_option( 'wpinv_flush_permalinks', 0 );
532
-
533
-		if ( ! empty( $flush ) ) {
534
-			flush_rewrite_rules();
535
-			delete_option( 'wpinv_flush_permalinks' );
536
-		}
537
-
538
-	}
539
-
540
-	/**
541
-	 * Remove our pages from yoast sitemaps.
542
-	 *
543
-	 * @since 1.0.19
544
-	 * @param int[] $excluded_posts_ids
545
-	 */
546
-	public function wpseo_exclude_from_sitemap_by_post_ids( $excluded_posts_ids ) {
547
-
548
-		// Ensure that we have an array.
549
-		if ( ! is_array( $excluded_posts_ids ) ) {
550
-			$excluded_posts_ids = array();
551
-		}
552
-
553
-		// Prepare our pages.
554
-		$our_pages = array();
555
-
556
-		// Checkout page.
557
-		$our_pages[] = wpinv_get_option( 'checkout_page', false );
558
-
559
-		// Success page.
560
-		$our_pages[] = wpinv_get_option( 'success_page', false );
561
-
562
-		// Failure page.
563
-		$our_pages[] = wpinv_get_option( 'failure_page', false );
564
-
565
-		// History page.
566
-		$our_pages[] = wpinv_get_option( 'invoice_history_page', false );
567
-
568
-		// Subscriptions page.
569
-		$our_pages[] = wpinv_get_option( 'invoice_subscription_page', false );
570
-
571
-		$our_pages   = array_map( 'intval', array_filter( $our_pages ) );
572
-
573
-		$excluded_posts_ids = $excluded_posts_ids + $our_pages;
574
-		return array_unique( $excluded_posts_ids );
575
-
576
-	}
577
-
578
-	/**
579
-	 * Remove our pages from yoast sitemaps.
580
-	 *
581
-	 * @since 1.0.19
582
-	 * @param string[] $post_types
583
-	 */
584
-	public function exclude_invoicing_post_types( $post_types ) {
585
-
586
-		// Ensure that we have an array.
587
-		if ( ! is_array( $post_types ) ) {
588
-			$post_types = array();
589
-		}
590
-
591
-		// Remove our post types.
592
-		return array_diff( $post_types, array_keys( getpaid_get_invoice_post_types() ) );
593
-	}
594
-
595
-	/**
596
-	 * Displays additional footer code.
597
-	 *
598
-	 * @since 2.0.0
599
-	 */
600
-	public function wp_footer() {
601
-		wpinv_get_template( 'frontend-footer.php' );
602
-	}
603
-
604
-	/**
605
-	 * Displays additional header code.
606
-	 *
607
-	 * @since 2.0.0
608
-	 */
609
-	public function wp_head() {
610
-		wpinv_get_template( 'frontend-head.php' );
611
-	}
612
-
613
-	/**
614
-	 * Custom query vars.
615
-	 *
616
-	 */
617
-	public function custom_query_vars( $vars ) {
578
+    /**
579
+     * Remove our pages from yoast sitemaps.
580
+     *
581
+     * @since 1.0.19
582
+     * @param string[] $post_types
583
+     */
584
+    public function exclude_invoicing_post_types( $post_types ) {
585
+
586
+        // Ensure that we have an array.
587
+        if ( ! is_array( $post_types ) ) {
588
+            $post_types = array();
589
+        }
590
+
591
+        // Remove our post types.
592
+        return array_diff( $post_types, array_keys( getpaid_get_invoice_post_types() ) );
593
+    }
594
+
595
+    /**
596
+     * Displays additional footer code.
597
+     *
598
+     * @since 2.0.0
599
+     */
600
+    public function wp_footer() {
601
+        wpinv_get_template( 'frontend-footer.php' );
602
+    }
603
+
604
+    /**
605
+     * Displays additional header code.
606
+     *
607
+     * @since 2.0.0
608
+     */
609
+    public function wp_head() {
610
+        wpinv_get_template( 'frontend-head.php' );
611
+    }
612
+
613
+    /**
614
+     * Custom query vars.
615
+     *
616
+     */
617
+    public function custom_query_vars( $vars ) {
618 618
         $vars[] = 'getpaid-ipn';
619 619
         return $vars;
620
-	}
620
+    }
621 621
 
622
-	/**
623
-	 * Add rewrite tags and rules.
624
-	 *
625
-	 */
626
-	public function add_rewrite_rule() {
622
+    /**
623
+     * Add rewrite tags and rules.
624
+     *
625
+     */
626
+    public function add_rewrite_rule() {
627 627
         $tag = 'getpaid-ipn';
628 628
         add_rewrite_tag( "%$tag%", '([^&]+)' );
629 629
         add_rewrite_rule( "^$tag/([^/]*)/?", "index.php?$tag=\$matches[1]", 'top' );
630
-	}
630
+    }
631 631
 
632
-	/**
633
-	 * Processes non-query string ipns.
634
-	 *
635
-	 */
636
-	public function maybe_process_new_ipn( $query ) {
632
+    /**
633
+     * Processes non-query string ipns.
634
+     *
635
+     */
636
+    public function maybe_process_new_ipn( $query ) {
637 637
 
638 638
         if ( is_admin() || ! $query->is_main_query() ) {
639 639
             return;
640 640
         }
641 641
 
642
-		$gateway = get_query_var( 'getpaid-ipn' );
642
+        $gateway = get_query_var( 'getpaid-ipn' );
643 643
 
644 644
         if ( ! empty( $gateway ) ) {
645 645
 
646
-			$gateway = sanitize_text_field( $gateway );
647
-			nocache_headers();
648
-			do_action( 'wpinv_verify_payment_ipn', $gateway );
649
-			do_action( "wpinv_verify_{$gateway}_ipn" );
650
-			exit;
646
+            $gateway = sanitize_text_field( $gateway );
647
+            nocache_headers();
648
+            do_action( 'wpinv_verify_payment_ipn', $gateway );
649
+            do_action( "wpinv_verify_{$gateway}_ipn" );
650
+            exit;
651 651
 
652 652
         }
653 653
 
654
-	}
654
+    }
655 655
 
656 656
 }
Please login to merge, or discard this patch.
Spacing   +136 added lines, -136 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,10 +66,10 @@  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 ) {
69
+	public function get($prop) {
70 70
 
71
-		if ( isset( $this->data[ $prop ] ) ) {
72
-			return $this->data[ $prop ];
71
+		if (isset($this->data[$prop])) {
72
+			return $this->data[$prop];
73 73
 		}
74 74
 
75 75
 		return null;
@@ -81,22 +81,22 @@  discard block
 block discarded – undo
81 81
 	public function set_properties() {
82 82
 
83 83
 		// Sessions.
84
-		$this->set( 'session', new WPInv_Session_Handler() );
85
-		$GLOBALS['wpi_session'] = $this->get( 'session' ); // Backwards compatibility.
84
+		$this->set('session', new WPInv_Session_Handler());
85
+		$GLOBALS['wpi_session'] = $this->get('session'); // Backwards compatibility.
86 86
 		$GLOBALS['wpinv_euvat'] = new WPInv_EUVat(); // Backwards compatibility.
87 87
 
88 88
 		// Init other objects.
89
-		$this->set( 'notes', new WPInv_Notes() );
90
-		$this->set( 'api', new WPInv_API() );
91
-		$this->set( 'post_types', new GetPaid_Post_Types() );
92
-		$this->set( 'template', new GetPaid_Template() );
93
-		$this->set( 'admin', new GetPaid_Admin() );
94
-		$this->set( 'subscriptions', new WPInv_Subscriptions() );
95
-		$this->set( 'invoice_emails', new GetPaid_Invoice_Notification_Emails() );
96
-		$this->set( 'subscription_emails', new GetPaid_Subscription_Notification_Emails() );
97
-		$this->set( 'daily_maintenace', new GetPaid_Daily_Maintenance() );
98
-		$this->set( 'payment_forms', new GetPaid_Payment_Forms() );
99
-		$this->set( 'maxmind', new GetPaid_MaxMind_Geolocation() );
89
+		$this->set('notes', new WPInv_Notes());
90
+		$this->set('api', new WPInv_API());
91
+		$this->set('post_types', new GetPaid_Post_Types());
92
+		$this->set('template', new GetPaid_Template());
93
+		$this->set('admin', new GetPaid_Admin());
94
+		$this->set('subscriptions', new WPInv_Subscriptions());
95
+		$this->set('invoice_emails', new GetPaid_Invoice_Notification_Emails());
96
+		$this->set('subscription_emails', new GetPaid_Subscription_Notification_Emails());
97
+		$this->set('daily_maintenace', new GetPaid_Daily_Maintenance());
98
+		$this->set('payment_forms', new GetPaid_Payment_Forms());
99
+		$this->set('maxmind', new GetPaid_MaxMind_Geolocation());
100 100
 
101 101
 	}
102 102
 
@@ -104,8 +104,8 @@  discard block
 block discarded – undo
104 104
 	 * Define plugin constants.
105 105
 	 */
106 106
 	public function define_constants() {
107
-		define( 'WPINV_PLUGIN_DIR', plugin_dir_path( WPINV_PLUGIN_FILE ) );
108
-		define( 'WPINV_PLUGIN_URL', plugin_dir_url( WPINV_PLUGIN_FILE ) );
107
+		define('WPINV_PLUGIN_DIR', plugin_dir_path(WPINV_PLUGIN_FILE));
108
+		define('WPINV_PLUGIN_URL', plugin_dir_url(WPINV_PLUGIN_FILE));
109 109
 		$this->version = WPINV_VERSION;
110 110
 	}
111 111
 
@@ -116,28 +116,28 @@  discard block
 block discarded – undo
116 116
 	 */
117 117
 	protected function init_hooks() {
118 118
 		/* Internationalize the text strings used. */
119
-		add_action( 'plugins_loaded', array( &$this, 'plugins_loaded' ) );
119
+		add_action('plugins_loaded', array(&$this, 'plugins_loaded'));
120 120
 
121 121
 		// Init the plugin after WordPress inits.
122
-		add_action( 'init', array( $this, 'init' ), 1 );
123
-		add_action( 'init', array( $this, 'maybe_process_ipn' ), 10 );
124
-		add_action( 'init', array( $this, 'wpinv_actions' ) );
125
-		add_action( 'init', array( $this, 'maybe_do_authenticated_action' ), 100 );
126
-		add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), 11 );
127
-		add_action( 'wp_footer', array( $this, 'wp_footer' ) );
128
-		add_action( 'wp_head', array( $this, 'wp_head' ) );
129
-		add_action( 'widgets_init', array( $this, 'register_widgets' ) );
130
-		add_filter( 'wpseo_exclude_from_sitemap_by_post_ids', array( $this, 'wpseo_exclude_from_sitemap_by_post_ids' ) );
131
-		add_filter( 'the_seo_framework_sitemap_supported_post_types', array( $this, 'exclude_invoicing_post_types' ) );
132
-		add_filter( 'pre_get_posts', array( &$this, 'pre_get_posts' ) );
133
-
134
-		add_filter( 'query_vars', array( $this, 'custom_query_vars' ) );
135
-        add_action( 'init', array( $this, 'add_rewrite_rule' ), 10, 0 );
136
-		add_action( 'pre_get_posts', array( $this, 'maybe_process_new_ipn' ), 1 );
122
+		add_action('init', array($this, 'init'), 1);
123
+		add_action('init', array($this, 'maybe_process_ipn'), 10);
124
+		add_action('init', array($this, 'wpinv_actions'));
125
+		add_action('init', array($this, 'maybe_do_authenticated_action'), 100);
126
+		add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts'), 11);
127
+		add_action('wp_footer', array($this, 'wp_footer'));
128
+		add_action('wp_head', array($this, 'wp_head'));
129
+		add_action('widgets_init', array($this, 'register_widgets'));
130
+		add_filter('wpseo_exclude_from_sitemap_by_post_ids', array($this, 'wpseo_exclude_from_sitemap_by_post_ids'));
131
+		add_filter('the_seo_framework_sitemap_supported_post_types', array($this, 'exclude_invoicing_post_types'));
132
+		add_filter('pre_get_posts', array(&$this, 'pre_get_posts'));
133
+
134
+		add_filter('query_vars', array($this, 'custom_query_vars'));
135
+        add_action('init', array($this, 'add_rewrite_rule'), 10, 0);
136
+		add_action('pre_get_posts', array($this, 'maybe_process_new_ipn'), 1);
137 137
 
138 138
 		// Fires after registering actions.
139
-		do_action( 'wpinv_actions', $this );
140
-		do_action( 'getpaid_actions', $this );
139
+		do_action('wpinv_actions', $this);
140
+		do_action('getpaid_actions', $this);
141 141
 
142 142
 	}
143 143
 
@@ -145,10 +145,10 @@  discard block
 block discarded – undo
145 145
 		/* Internationalize the text strings used. */
146 146
 		$this->load_textdomain();
147 147
 
148
-		do_action( 'wpinv_loaded' );
148
+		do_action('wpinv_loaded');
149 149
 
150 150
 		// Fix oxygen page builder conflict
151
-		if ( function_exists( 'ct_css_output' ) ) {
151
+		if (function_exists('ct_css_output')) {
152 152
 			wpinv_oxygen_fix_conflict();
153 153
 		}
154 154
 	}
@@ -169,7 +169,7 @@  discard block
 block discarded – undo
169 169
 		load_plugin_textdomain(
170 170
 			'invoicing',
171 171
 			false,
172
-			plugin_basename( dirname( WPINV_PLUGIN_FILE ) ) . '/languages/'
172
+			plugin_basename(dirname(WPINV_PLUGIN_FILE)) . '/languages/'
173 173
 		);
174 174
 
175 175
 	}
@@ -205,9 +205,9 @@  discard block
 block discarded – undo
205 205
 
206 206
 		// Register autoloader.
207 207
 		try {
208
-			spl_autoload_register( array( $this, 'autoload' ), true );
209
-		} catch ( Exception $e ) {
210
-			wpinv_error_log( $e->getMessage(), '', __FILE__, 149, true );
208
+			spl_autoload_register(array($this, 'autoload'), true);
209
+		} catch (Exception $e) {
210
+			wpinv_error_log($e->getMessage(), '', __FILE__, 149, true);
211 211
 		}
212 212
 
213 213
 		require_once WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-session.php';
@@ -233,7 +233,7 @@  discard block
 block discarded – undo
233 233
 		require_once WPINV_PLUGIN_DIR . 'widgets/invoice.php';
234 234
 		require_once WPINV_PLUGIN_DIR . 'includes/admin/admin-pages.php';
235 235
 
236
-		if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) {
236
+		if (is_admin() || (defined('WP_CLI') && WP_CLI)) {
237 237
 			GetPaid_Post_Types_Admin::init();
238 238
 
239 239
 			require_once WPINV_PLUGIN_DIR . 'includes/admin/wpinv-admin-functions.php';
@@ -244,15 +244,15 @@  discard block
 block discarded – undo
244 244
 			require_once WPINV_PLUGIN_DIR . 'includes/admin/class-getpaid-admin-profile.php';
245 245
 			// load the user class only on the users.php page
246 246
 			global $pagenow;
247
-			if ( $pagenow == 'users.php' ) {
247
+			if ($pagenow == 'users.php') {
248 248
 				new WPInv_Admin_Users();
249 249
 			}
250 250
 		}
251 251
 
252 252
 		// Register cli commands
253
-		if ( defined( 'WP_CLI' ) && WP_CLI ) {
253
+		if (defined('WP_CLI') && WP_CLI) {
254 254
 			require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-cli.php';
255
-			WP_CLI::add_command( 'invoicing', 'WPInv_CLI' );
255
+			WP_CLI::add_command('invoicing', 'WPInv_CLI');
256 256
 		}
257 257
 
258 258
 	}
@@ -265,21 +265,21 @@  discard block
 block discarded – undo
265 265
 	 * @since       1.0.19
266 266
 	 * @return      void
267 267
 	 */
268
-	public function autoload( $class_name ) {
268
+	public function autoload($class_name) {
269 269
 
270 270
 		// Normalize the class name...
271
-		$class_name  = strtolower( $class_name );
271
+		$class_name = strtolower($class_name);
272 272
 
273 273
 		// ... and make sure it is our class.
274
-		if ( false === strpos( $class_name, 'getpaid_' ) && false === strpos( $class_name, 'wpinv_' ) ) {
274
+		if (false === strpos($class_name, 'getpaid_') && false === strpos($class_name, 'wpinv_')) {
275 275
 			return;
276 276
 		}
277 277
 
278 278
 		// Next, prepare the file name from the class.
279
-		$file_name = 'class-' . str_replace( '_', '-', $class_name ) . '.php';
279
+		$file_name = 'class-' . str_replace('_', '-', $class_name) . '.php';
280 280
 
281 281
 		// Base path of the classes.
282
-		$plugin_path = untrailingslashit( WPINV_PLUGIN_DIR );
282
+		$plugin_path = untrailingslashit(WPINV_PLUGIN_DIR);
283 283
 
284 284
 		// And an array of possible locations in order of importance.
285 285
 		$locations = array(
@@ -294,10 +294,10 @@  discard block
 block discarded – undo
294 294
 			"$plugin_path/includes/admin/meta-boxes",
295 295
 		);
296 296
 
297
-		foreach ( apply_filters( 'getpaid_autoload_locations', $locations ) as $location ) {
297
+		foreach (apply_filters('getpaid_autoload_locations', $locations) as $location) {
298 298
 
299
-			if ( file_exists( trailingslashit( $location ) . $file_name ) ) {
300
-				include trailingslashit( $location ) . $file_name;
299
+			if (file_exists(trailingslashit($location) . $file_name)) {
300
+				include trailingslashit($location) . $file_name;
301 301
 				break;
302 302
 			}
303 303
 }
@@ -310,7 +310,7 @@  discard block
 block discarded – undo
310 310
 	public function init() {
311 311
 
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
 
@@ -347,14 +347,14 @@  discard block
 block discarded – undo
347 347
 	public function maybe_process_ipn() {
348 348
 
349 349
 		// Ensure that this is an IPN request.
350
-		if ( empty( $_GET['wpi-listener'] ) || 'IPN' !== $_GET['wpi-listener'] || empty( $_GET['wpi-gateway'] ) ) {
350
+		if (empty($_GET['wpi-listener']) || 'IPN' !== $_GET['wpi-listener'] || empty($_GET['wpi-gateway'])) {
351 351
 			return;
352 352
 		}
353 353
 
354
-		$gateway = sanitize_text_field( $_GET['wpi-gateway'] );
354
+		$gateway = sanitize_text_field($_GET['wpi-gateway']);
355 355
 
356
-		do_action( 'wpinv_verify_payment_ipn', $gateway );
357
-		do_action( "wpinv_verify_{$gateway}_ipn" );
356
+		do_action('wpinv_verify_payment_ipn', $gateway);
357
+		do_action("wpinv_verify_{$gateway}_ipn");
358 358
 		exit;
359 359
 
360 360
 	}
@@ -362,39 +362,39 @@  discard block
 block discarded – undo
362 362
 	public function enqueue_scripts() {
363 363
 
364 364
 		// Fires before adding scripts.
365
-		do_action( 'getpaid_enqueue_scripts' );
365
+		do_action('getpaid_enqueue_scripts');
366 366
 
367 367
 		$localize                         = array();
368
-		$localize['ajax_url']             = admin_url( 'admin-ajax.php' );
368
+		$localize['ajax_url']             = admin_url('admin-ajax.php');
369 369
 		$localize['thousands']            = wpinv_thousands_separator();
370 370
 		$localize['decimals']             = wpinv_decimal_separator();
371
-		$localize['nonce']                = wp_create_nonce( 'wpinv-nonce' );
372
-		$localize['txtComplete']          = __( 'Continue', 'invoicing' );
371
+		$localize['nonce']                = wp_create_nonce('wpinv-nonce');
372
+		$localize['txtComplete']          = __('Continue', 'invoicing');
373 373
 		$localize['UseTaxes']             = wpinv_use_taxes();
374
-		$localize['formNonce']            = wp_create_nonce( 'getpaid_form_nonce' );
375
-		$localize['loading']              = __( 'Loading...', 'invoicing' );
376
-		$localize['connectionError']      = __( 'Could not establish a connection to the server.', 'invoicing' );
374
+		$localize['formNonce']            = wp_create_nonce('getpaid_form_nonce');
375
+		$localize['loading']              = __('Loading...', 'invoicing');
376
+		$localize['connectionError']      = __('Could not establish a connection to the server.', 'invoicing');
377 377
 		$localize['recaptchaSettings']    = getpaid_get_recaptcha_settings();
378 378
 
379
-		$localize = apply_filters( 'wpinv_front_js_localize', $localize );
379
+		$localize = apply_filters('wpinv_front_js_localize', $localize);
380 380
 
381 381
 		// reCaptcha.
382
-		if ( getpaid_is_recaptcha_enabled() && ( $recaptcha_js = getpaid_recaptcha_api_url() ) ) {
383
-			wp_enqueue_script( 'recaptcha', $recaptcha_js, array(), null, true ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion
382
+		if (getpaid_is_recaptcha_enabled() && ($recaptcha_js = getpaid_recaptcha_api_url())) {
383
+			wp_enqueue_script('recaptcha', $recaptcha_js, array(), null, true); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion
384 384
 		}
385 385
 
386
-		$version = filemtime( WPINV_PLUGIN_DIR . 'assets/js/payment-forms.js' );
387
-		wp_enqueue_script( 'wpinv-front-script', WPINV_PLUGIN_URL . 'assets/js/payment-forms.js', array( 'jquery' ), $version, true );
388
-		wp_localize_script( 'wpinv-front-script', 'WPInv', $localize );
386
+		$version = filemtime(WPINV_PLUGIN_DIR . 'assets/js/payment-forms.js');
387
+		wp_enqueue_script('wpinv-front-script', WPINV_PLUGIN_URL . 'assets/js/payment-forms.js', array('jquery'), $version, true);
388
+		wp_localize_script('wpinv-front-script', 'WPInv', $localize);
389 389
 	}
390 390
 
391 391
 	public function wpinv_actions() {
392
-		if ( isset( $_REQUEST['wpi_action'] ) ) {
393
-			do_action( 'wpinv_' . wpinv_sanitize_key( $_REQUEST['wpi_action'] ), $_REQUEST );
392
+		if (isset($_REQUEST['wpi_action'])) {
393
+			do_action('wpinv_' . wpinv_sanitize_key($_REQUEST['wpi_action']), $_REQUEST);
394 394
 		}
395 395
 
396
-		if ( defined( 'WP_ALL_IMPORT_ROOT_DIR' ) ) {
397
-			include plugin_dir_path( __FILE__ ) . 'libraries/wp-all-import/class-getpaid-wp-all-import.php';
396
+		if (defined('WP_ALL_IMPORT_ROOT_DIR')) {
397
+			include plugin_dir_path(__FILE__) . 'libraries/wp-all-import/class-getpaid-wp-all-import.php';
398 398
 		}
399 399
 	}
400 400
 
@@ -406,24 +406,24 @@  discard block
 block discarded – undo
406 406
      */
407 407
     public function maybe_do_authenticated_action() {
408 408
 
409
-		if ( isset( $_REQUEST['getpaid-action'] ) && isset( $_REQUEST['getpaid-nonce'] ) && wp_verify_nonce( $_REQUEST['getpaid-nonce'], 'getpaid-nonce' ) ) {
409
+		if (isset($_REQUEST['getpaid-action']) && isset($_REQUEST['getpaid-nonce']) && wp_verify_nonce($_REQUEST['getpaid-nonce'], 'getpaid-nonce')) {
410 410
 
411
-			$key  = sanitize_key( $_REQUEST['getpaid-action'] );
412
-			$data = wp_unslash( $_REQUEST );
413
-			if ( is_user_logged_in() ) {
414
-				do_action( "getpaid_authenticated_action_$key", $data );
411
+			$key  = sanitize_key($_REQUEST['getpaid-action']);
412
+			$data = wp_unslash($_REQUEST);
413
+			if (is_user_logged_in()) {
414
+				do_action("getpaid_authenticated_action_$key", $data);
415 415
 			}
416 416
 
417
-			do_action( "getpaid_unauthenticated_action_$key", $data );
417
+			do_action("getpaid_unauthenticated_action_$key", $data);
418 418
 
419 419
 		}
420 420
 
421 421
     }
422 422
 
423
-	public function pre_get_posts( $wp_query ) {
423
+	public function pre_get_posts($wp_query) {
424 424
 
425
-		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() ) {
426
-			$wp_query->query_vars['post_status'] = array_keys( wpinv_get_invoice_statuses( false, false, $wp_query->query_vars['post_type'] ) );
425
+		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()) {
426
+			$wp_query->query_vars['post_status'] = array_keys(wpinv_get_invoice_statuses(false, false, $wp_query->query_vars['post_type']));
427 427
 		}
428 428
 
429 429
 		return $wp_query;
@@ -438,18 +438,18 @@  discard block
 block discarded – undo
438 438
 
439 439
 		// Currently, UX Builder does not work particulaly well with SuperDuper.
440 440
 		// So we disable our widgets when editing a page with UX Builder.
441
-		if ( function_exists( 'ux_builder_is_active' ) && ux_builder_is_active() ) {
441
+		if (function_exists('ux_builder_is_active') && ux_builder_is_active()) {
442 442
 			return;
443 443
 		}
444 444
 
445
-		$block_widget_init_screens = function_exists( 'sd_pagenow_exclude' ) ? sd_pagenow_exclude() : array();
445
+		$block_widget_init_screens = function_exists('sd_pagenow_exclude') ? sd_pagenow_exclude() : array();
446 446
 
447
-		if ( is_admin() && $pagenow && in_array( $pagenow, $block_widget_init_screens ) ) {
447
+		if (is_admin() && $pagenow && in_array($pagenow, $block_widget_init_screens)) {
448 448
 			// don't initiate in these conditions.
449 449
 		} else {
450 450
 
451 451
 			// Only load allowed widgets.
452
-			$exclude = function_exists( 'sd_widget_exclude' ) ? sd_widget_exclude() : array();
452
+			$exclude = function_exists('sd_widget_exclude') ? sd_widget_exclude() : array();
453 453
 			$widgets = apply_filters(
454 454
 				'getpaid_widget_classes',
455 455
 				array(
@@ -465,16 +465,16 @@  discard block
 block discarded – undo
465 465
 			);
466 466
 
467 467
 			// For each widget...
468
-			foreach ( $widgets as $widget ) {
468
+			foreach ($widgets as $widget) {
469 469
 
470 470
 				// Abort early if it is excluded for this page.
471
-				if ( in_array( $widget, $exclude ) ) {
471
+				if (in_array($widget, $exclude)) {
472 472
 					continue;
473 473
 				}
474 474
 
475 475
 				// SD V1 used to extend the widget class. V2 does not, so we cannot call register widget on it.
476
-				if ( is_subclass_of( $widget, 'WP_Widget' ) ) {
477
-					register_widget( $widget );
476
+				if (is_subclass_of($widget, 'WP_Widget')) {
477
+					register_widget($widget);
478 478
 				} else {
479 479
 					new $widget();
480 480
 				}
@@ -493,29 +493,29 @@  discard block
 block discarded – undo
493 493
 		// Ensure the database tables are up to date.
494 494
 		GetPaid_Installer::maybe_create_db_tables();
495 495
 
496
-		$wpi_version = get_option( 'wpinv_version', 0 );
496
+		$wpi_version = get_option('wpinv_version', 0);
497 497
 
498
-		if ( $wpi_version == WPINV_VERSION ) {
498
+		if ($wpi_version == WPINV_VERSION) {
499 499
 			return;
500 500
 		}
501 501
 
502 502
 		$installer = new GetPaid_Installer();
503 503
 
504
-		if ( empty( $wpi_version ) ) {
505
-			return $installer->upgrade_db( 0 );
504
+		if (empty($wpi_version)) {
505
+			return $installer->upgrade_db(0);
506 506
 		}
507 507
 
508
-		$upgrades  = array(
508
+		$upgrades = array(
509 509
 			'0.0.5' => '004',
510 510
 			'1.0.3' => '102',
511 511
 			'2.0.0' => '118',
512 512
 			'2.8.0' => '279',
513 513
 		);
514 514
 
515
-		foreach ( $upgrades as $key => $method ) {
515
+		foreach ($upgrades as $key => $method) {
516 516
 
517
-			if ( version_compare( $wpi_version, $key, '<' ) ) {
518
-				return $installer->upgrade_db( $method );
517
+			if (version_compare($wpi_version, $key, '<')) {
518
+				return $installer->upgrade_db($method);
519 519
 			}
520 520
 		}
521 521
 
@@ -528,11 +528,11 @@  discard block
 block discarded – undo
528 528
 	 */
529 529
 	public function maybe_flush_permalinks() {
530 530
 
531
-		$flush = get_option( 'wpinv_flush_permalinks', 0 );
531
+		$flush = get_option('wpinv_flush_permalinks', 0);
532 532
 
533
-		if ( ! empty( $flush ) ) {
533
+		if (!empty($flush)) {
534 534
 			flush_rewrite_rules();
535
-			delete_option( 'wpinv_flush_permalinks' );
535
+			delete_option('wpinv_flush_permalinks');
536 536
 		}
537 537
 
538 538
 	}
@@ -543,10 +543,10 @@  discard block
 block discarded – undo
543 543
 	 * @since 1.0.19
544 544
 	 * @param int[] $excluded_posts_ids
545 545
 	 */
546
-	public function wpseo_exclude_from_sitemap_by_post_ids( $excluded_posts_ids ) {
546
+	public function wpseo_exclude_from_sitemap_by_post_ids($excluded_posts_ids) {
547 547
 
548 548
 		// Ensure that we have an array.
549
-		if ( ! is_array( $excluded_posts_ids ) ) {
549
+		if (!is_array($excluded_posts_ids)) {
550 550
 			$excluded_posts_ids = array();
551 551
 		}
552 552
 
@@ -554,24 +554,24 @@  discard block
 block discarded – undo
554 554
 		$our_pages = array();
555 555
 
556 556
 		// Checkout page.
557
-		$our_pages[] = wpinv_get_option( 'checkout_page', false );
557
+		$our_pages[] = wpinv_get_option('checkout_page', false);
558 558
 
559 559
 		// Success page.
560
-		$our_pages[] = wpinv_get_option( 'success_page', false );
560
+		$our_pages[] = wpinv_get_option('success_page', false);
561 561
 
562 562
 		// Failure page.
563
-		$our_pages[] = wpinv_get_option( 'failure_page', false );
563
+		$our_pages[] = wpinv_get_option('failure_page', false);
564 564
 
565 565
 		// History page.
566
-		$our_pages[] = wpinv_get_option( 'invoice_history_page', false );
566
+		$our_pages[] = wpinv_get_option('invoice_history_page', false);
567 567
 
568 568
 		// Subscriptions page.
569
-		$our_pages[] = wpinv_get_option( 'invoice_subscription_page', false );
569
+		$our_pages[] = wpinv_get_option('invoice_subscription_page', false);
570 570
 
571
-		$our_pages   = array_map( 'intval', array_filter( $our_pages ) );
571
+		$our_pages   = array_map('intval', array_filter($our_pages));
572 572
 
573 573
 		$excluded_posts_ids = $excluded_posts_ids + $our_pages;
574
-		return array_unique( $excluded_posts_ids );
574
+		return array_unique($excluded_posts_ids);
575 575
 
576 576
 	}
577 577
 
@@ -581,15 +581,15 @@  discard block
 block discarded – undo
581 581
 	 * @since 1.0.19
582 582
 	 * @param string[] $post_types
583 583
 	 */
584
-	public function exclude_invoicing_post_types( $post_types ) {
584
+	public function exclude_invoicing_post_types($post_types) {
585 585
 
586 586
 		// Ensure that we have an array.
587
-		if ( ! is_array( $post_types ) ) {
587
+		if (!is_array($post_types)) {
588 588
 			$post_types = array();
589 589
 		}
590 590
 
591 591
 		// Remove our post types.
592
-		return array_diff( $post_types, array_keys( getpaid_get_invoice_post_types() ) );
592
+		return array_diff($post_types, array_keys(getpaid_get_invoice_post_types()));
593 593
 	}
594 594
 
595 595
 	/**
@@ -598,7 +598,7 @@  discard block
 block discarded – undo
598 598
 	 * @since 2.0.0
599 599
 	 */
600 600
 	public function wp_footer() {
601
-		wpinv_get_template( 'frontend-footer.php' );
601
+		wpinv_get_template('frontend-footer.php');
602 602
 	}
603 603
 
604 604
 	/**
@@ -607,14 +607,14 @@  discard block
 block discarded – undo
607 607
 	 * @since 2.0.0
608 608
 	 */
609 609
 	public function wp_head() {
610
-		wpinv_get_template( 'frontend-head.php' );
610
+		wpinv_get_template('frontend-head.php');
611 611
 	}
612 612
 
613 613
 	/**
614 614
 	 * Custom query vars.
615 615
 	 *
616 616
 	 */
617
-	public function custom_query_vars( $vars ) {
617
+	public function custom_query_vars($vars) {
618 618
         $vars[] = 'getpaid-ipn';
619 619
         return $vars;
620 620
 	}
@@ -625,28 +625,28 @@  discard block
 block discarded – undo
625 625
 	 */
626 626
 	public function add_rewrite_rule() {
627 627
         $tag = 'getpaid-ipn';
628
-        add_rewrite_tag( "%$tag%", '([^&]+)' );
629
-        add_rewrite_rule( "^$tag/([^/]*)/?", "index.php?$tag=\$matches[1]", 'top' );
628
+        add_rewrite_tag("%$tag%", '([^&]+)');
629
+        add_rewrite_rule("^$tag/([^/]*)/?", "index.php?$tag=\$matches[1]", 'top');
630 630
 	}
631 631
 
632 632
 	/**
633 633
 	 * Processes non-query string ipns.
634 634
 	 *
635 635
 	 */
636
-	public function maybe_process_new_ipn( $query ) {
636
+	public function maybe_process_new_ipn($query) {
637 637
 
638
-        if ( is_admin() || ! $query->is_main_query() ) {
638
+        if (is_admin() || !$query->is_main_query()) {
639 639
             return;
640 640
         }
641 641
 
642
-		$gateway = get_query_var( 'getpaid-ipn' );
642
+		$gateway = get_query_var('getpaid-ipn');
643 643
 
644
-        if ( ! empty( $gateway ) ) {
644
+        if (!empty($gateway)) {
645 645
 
646
-			$gateway = sanitize_text_field( $gateway );
646
+			$gateway = sanitize_text_field($gateway);
647 647
 			nocache_headers();
648
-			do_action( 'wpinv_verify_payment_ipn', $gateway );
649
-			do_action( "wpinv_verify_{$gateway}_ipn" );
648
+			do_action('wpinv_verify_payment_ipn', $gateway);
649
+			do_action("wpinv_verify_{$gateway}_ipn");
650 650
 			exit;
651 651
 
652 652
         }
Please login to merge, or discard this patch.
includes/wpinv-payment-functions.php 2 patches
Indentation   +286 added lines, -286 removed lines patch added patch discarded remove patch
@@ -1,196 +1,196 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 function wpinv_is_subscription_payment( $invoice = '' ) {
3
-	if ( empty( $invoice ) ) {
4
-		return false;
5
-	}
3
+    if ( empty( $invoice ) ) {
4
+        return false;
5
+    }
6 6
 
7
-	if ( ! is_object( $invoice ) && is_scalar( $invoice ) ) {
8
-		$invoice = wpinv_get_invoice( $invoice );
9
-	}
7
+    if ( ! is_object( $invoice ) && is_scalar( $invoice ) ) {
8
+        $invoice = wpinv_get_invoice( $invoice );
9
+    }
10 10
 
11
-	if ( empty( $invoice ) ) {
12
-		return false;
13
-	}
11
+    if ( empty( $invoice ) ) {
12
+        return false;
13
+    }
14 14
 
15
-	if ( $invoice->is_renewal() ) {
16
-		return true;
17
-	}
15
+    if ( $invoice->is_renewal() ) {
16
+        return true;
17
+    }
18 18
 
19
-	return false;
19
+    return false;
20 20
 }
21 21
 
22 22
 function wpinv_payment_link_transaction_id( $invoice = '' ) {
23
-	if ( empty( $invoice ) ) {
24
-		return false;
25
-	}
23
+    if ( empty( $invoice ) ) {
24
+        return false;
25
+    }
26 26
 
27
-	if ( ! is_object( $invoice ) && is_scalar( $invoice ) ) {
28
-		$invoice = wpinv_get_invoice( $invoice );
29
-	}
27
+    if ( ! is_object( $invoice ) && is_scalar( $invoice ) ) {
28
+        $invoice = wpinv_get_invoice( $invoice );
29
+    }
30 30
 
31
-	if ( empty( $invoice ) ) {
32
-		return false;
33
-	}
31
+    if ( empty( $invoice ) ) {
32
+        return false;
33
+    }
34 34
 
35
-	return apply_filters( 'wpinv_payment_details_transaction_id-' . $invoice->gateway, $invoice->get_transaction_id(), $invoice->ID, $invoice );
35
+    return apply_filters( 'wpinv_payment_details_transaction_id-' . $invoice->gateway, $invoice->get_transaction_id(), $invoice->ID, $invoice );
36 36
 }
37 37
 
38 38
 function wpinv_subscription_initial_payment_desc( $amount, $period, $interval, $trial_period = '', $trial_interval = 0 ) {
39
-	$interval   = (int)$interval > 0 ? (int)$interval : 1;
40
-
41
-	if ( $trial_interval > 0 && ! empty( $trial_period ) ) {
42
-		$amount = __( 'Free', 'invoicing' );
43
-		$interval = $trial_interval;
44
-		$period = $trial_period;
45
-	}
46
-
47
-	$description = '';
48
-	switch ( $period ) {
49
-		case 'D':
50
-		case 'day':
51
-			$description = wp_sprintf( _n( '%s for the first day.', '%1$s for the first %2$d days.', $interval, 'invoicing' ), $amount, $interval );
52
-			break;
53
-		case 'W':
54
-		case 'week':
55
-			$description = wp_sprintf( _n( '%s for the first week.', '%1$s for the first %2$d weeks.', $interval, 'invoicing' ), $amount, $interval );
56
-			break;
57
-		case 'M':
58
-		case 'month':
59
-			$description = wp_sprintf( _n( '%s for the first month.', '%1$s for the first %2$d months.', $interval, 'invoicing' ), $amount, $interval );
60
-			break;
61
-		case 'Y':
62
-		case 'year':
63
-			$description = wp_sprintf( _n( '%s for the first year.', '%1$s for the first %2$d years.', $interval, 'invoicing' ), $amount, $interval );
64
-			break;
65
-	}
66
-
67
-	return apply_filters( 'wpinv_subscription_initial_payment_desc', $description, $amount, $period, $interval, $trial_period, $trial_interval );
39
+    $interval   = (int)$interval > 0 ? (int)$interval : 1;
40
+
41
+    if ( $trial_interval > 0 && ! empty( $trial_period ) ) {
42
+        $amount = __( 'Free', 'invoicing' );
43
+        $interval = $trial_interval;
44
+        $period = $trial_period;
45
+    }
46
+
47
+    $description = '';
48
+    switch ( $period ) {
49
+        case 'D':
50
+        case 'day':
51
+            $description = wp_sprintf( _n( '%s for the first day.', '%1$s for the first %2$d days.', $interval, 'invoicing' ), $amount, $interval );
52
+            break;
53
+        case 'W':
54
+        case 'week':
55
+            $description = wp_sprintf( _n( '%s for the first week.', '%1$s for the first %2$d weeks.', $interval, 'invoicing' ), $amount, $interval );
56
+            break;
57
+        case 'M':
58
+        case 'month':
59
+            $description = wp_sprintf( _n( '%s for the first month.', '%1$s for the first %2$d months.', $interval, 'invoicing' ), $amount, $interval );
60
+            break;
61
+        case 'Y':
62
+        case 'year':
63
+            $description = wp_sprintf( _n( '%s for the first year.', '%1$s for the first %2$d years.', $interval, 'invoicing' ), $amount, $interval );
64
+            break;
65
+    }
66
+
67
+    return apply_filters( 'wpinv_subscription_initial_payment_desc', $description, $amount, $period, $interval, $trial_period, $trial_interval );
68 68
 }
69 69
 
70 70
 function wpinv_subscription_recurring_payment_desc( $amount, $period, $interval, $bill_times = 0, $trial_period = '', $trial_interval = 0 ) {
71
-	$interval   = (int)$interval > 0 ? (int)$interval : 1;
72
-	$bill_times = (int)$bill_times > 0 ? (int)$bill_times : 0;
73
-
74
-	$description = '';
75
-	switch ( $period ) {
76
-		case 'D':
77
-		case 'day':
78
-			if ( (int)$bill_times > 0 ) {
79
-				if ( $interval > 1 ) {
80
-					if ( $bill_times > 1 ) {
81
-						$description = wp_sprintf( __( '%1$s for each %2$d days, for %3$d installments.', 'invoicing' ), $amount, $interval, $bill_times );
82
-					} else {
83
-						$description = wp_sprintf( __( '%1$s for %2$d days.', 'invoicing' ), $amount, $interval );
84
-					}
85
-				} else {
86
-					$description = wp_sprintf( _n( '%s for one day.', '%1$s for each day, for %2$d installments.', $bill_times, 'invoicing' ), $amount, $bill_times );
87
-				}
88
-			} else {
89
-				$description = wp_sprintf( _n( '%s for each day.', '%1$s for each %2$d days.', $interval, 'invoicing' ), $amount, $interval );
90
-			}
91
-			break;
92
-		case 'W':
93
-		case 'week':
94
-			if ( (int)$bill_times > 0 ) {
95
-				if ( $interval > 1 ) {
96
-					if ( $bill_times > 1 ) {
97
-						$description = wp_sprintf( __( '%1$s for each %2$d weeks, for %3$d installments.', 'invoicing' ), $amount, $interval, $bill_times );
98
-					} else {
99
-						$description = wp_sprintf( __( '%1$s for %2$d weeks.', 'invoicing' ), $amount, $interval );
100
-					}
101
-				} else {
102
-					$description = wp_sprintf( _n( '%s for one week.', '%1$s for each week, for %2$d installments.', $bill_times, 'invoicing' ), $amount, $bill_times );
103
-				}
104
-			} else {
105
-				$description = wp_sprintf( _n( '%s for each week.', '%1$s for each %2$d weeks.', $interval, 'invoicing' ), $amount, $interval );
106
-			}
107
-			break;
108
-		case 'M':
109
-		case 'month':
110
-			if ( (int)$bill_times > 0 ) {
111
-				if ( $interval > 1 ) {
112
-					if ( $bill_times > 1 ) {
113
-						$description = wp_sprintf( __( '%1$s for each %2$d months, for %3$d installments.', 'invoicing' ), $amount, $interval, $bill_times );
114
-					} else {
115
-						$description = wp_sprintf( __( '%1$s for %2$d months.', 'invoicing' ), $amount, $interval );
116
-					}
117
-				} else {
118
-					$description = wp_sprintf( _n( '%s for one month.', '%1$s for each month, for %2$d installments.', $bill_times, 'invoicing' ), $amount, $bill_times );
119
-				}
120
-			} else {
121
-				$description = wp_sprintf( _n( '%s for each month.', '%1$s for each %2$d months.', $interval, 'invoicing' ), $amount, $interval );
122
-			}
123
-			break;
124
-		case 'Y':
125
-		case 'year':
126
-			if ( (int)$bill_times > 0 ) {
127
-				if ( $interval > 1 ) {
128
-					if ( $bill_times > 1 ) {
129
-						$description = wp_sprintf( __( '%1$s for each %2$d years, for %3$d installments.', 'invoicing' ), $amount, $interval, $bill_times );
130
-					} else {
131
-						$description = wp_sprintf( __( '%1$s for %2$d years.', 'invoicing' ), $amount, $interval );
132
-					}
133
-				} else {
134
-					$description = wp_sprintf( _n( '%s for one year.', '%1$s for each year, for %2$d installments.', $bill_times, 'invoicing' ), $amount, $bill_times );
135
-				}
136
-			} else {
137
-				$description = wp_sprintf( _n( '%s for each year.', '%1$s for each %2$d years.', $interval, 'invoicing' ), $amount, $interval );
138
-			}
139
-			break;
140
-	}
141
-
142
-	return apply_filters( 'wpinv_subscription_recurring_payment_desc', $description, $amount, $period, $interval, $bill_times, $trial_period, $trial_interval );
71
+    $interval   = (int)$interval > 0 ? (int)$interval : 1;
72
+    $bill_times = (int)$bill_times > 0 ? (int)$bill_times : 0;
73
+
74
+    $description = '';
75
+    switch ( $period ) {
76
+        case 'D':
77
+        case 'day':
78
+            if ( (int)$bill_times > 0 ) {
79
+                if ( $interval > 1 ) {
80
+                    if ( $bill_times > 1 ) {
81
+                        $description = wp_sprintf( __( '%1$s for each %2$d days, for %3$d installments.', 'invoicing' ), $amount, $interval, $bill_times );
82
+                    } else {
83
+                        $description = wp_sprintf( __( '%1$s for %2$d days.', 'invoicing' ), $amount, $interval );
84
+                    }
85
+                } else {
86
+                    $description = wp_sprintf( _n( '%s for one day.', '%1$s for each day, for %2$d installments.', $bill_times, 'invoicing' ), $amount, $bill_times );
87
+                }
88
+            } else {
89
+                $description = wp_sprintf( _n( '%s for each day.', '%1$s for each %2$d days.', $interval, 'invoicing' ), $amount, $interval );
90
+            }
91
+            break;
92
+        case 'W':
93
+        case 'week':
94
+            if ( (int)$bill_times > 0 ) {
95
+                if ( $interval > 1 ) {
96
+                    if ( $bill_times > 1 ) {
97
+                        $description = wp_sprintf( __( '%1$s for each %2$d weeks, for %3$d installments.', 'invoicing' ), $amount, $interval, $bill_times );
98
+                    } else {
99
+                        $description = wp_sprintf( __( '%1$s for %2$d weeks.', 'invoicing' ), $amount, $interval );
100
+                    }
101
+                } else {
102
+                    $description = wp_sprintf( _n( '%s for one week.', '%1$s for each week, for %2$d installments.', $bill_times, 'invoicing' ), $amount, $bill_times );
103
+                }
104
+            } else {
105
+                $description = wp_sprintf( _n( '%s for each week.', '%1$s for each %2$d weeks.', $interval, 'invoicing' ), $amount, $interval );
106
+            }
107
+            break;
108
+        case 'M':
109
+        case 'month':
110
+            if ( (int)$bill_times > 0 ) {
111
+                if ( $interval > 1 ) {
112
+                    if ( $bill_times > 1 ) {
113
+                        $description = wp_sprintf( __( '%1$s for each %2$d months, for %3$d installments.', 'invoicing' ), $amount, $interval, $bill_times );
114
+                    } else {
115
+                        $description = wp_sprintf( __( '%1$s for %2$d months.', 'invoicing' ), $amount, $interval );
116
+                    }
117
+                } else {
118
+                    $description = wp_sprintf( _n( '%s for one month.', '%1$s for each month, for %2$d installments.', $bill_times, 'invoicing' ), $amount, $bill_times );
119
+                }
120
+            } else {
121
+                $description = wp_sprintf( _n( '%s for each month.', '%1$s for each %2$d months.', $interval, 'invoicing' ), $amount, $interval );
122
+            }
123
+            break;
124
+        case 'Y':
125
+        case 'year':
126
+            if ( (int)$bill_times > 0 ) {
127
+                if ( $interval > 1 ) {
128
+                    if ( $bill_times > 1 ) {
129
+                        $description = wp_sprintf( __( '%1$s for each %2$d years, for %3$d installments.', 'invoicing' ), $amount, $interval, $bill_times );
130
+                    } else {
131
+                        $description = wp_sprintf( __( '%1$s for %2$d years.', 'invoicing' ), $amount, $interval );
132
+                    }
133
+                } else {
134
+                    $description = wp_sprintf( _n( '%s for one year.', '%1$s for each year, for %2$d installments.', $bill_times, 'invoicing' ), $amount, $bill_times );
135
+                }
136
+            } else {
137
+                $description = wp_sprintf( _n( '%s for each year.', '%1$s for each %2$d years.', $interval, 'invoicing' ), $amount, $interval );
138
+            }
139
+            break;
140
+    }
141
+
142
+    return apply_filters( 'wpinv_subscription_recurring_payment_desc', $description, $amount, $period, $interval, $bill_times, $trial_period, $trial_interval );
143 143
 }
144 144
 
145 145
 function wpinv_subscription_payment_desc( $invoice ) {
146
-	if ( empty( $invoice ) ) {
147
-		return null;
148
-	}
149
-
150
-	$description = '';
151
-	if ( $invoice->is_parent() && $item = $invoice->get_recurring( true ) ) {
152
-		if ( $item->has_free_trial() ) {
153
-			$trial_period = $item->get_trial_period();
154
-			$trial_interval = $item->get_trial_interval();
155
-		} else {
156
-			$trial_period = '';
157
-			$trial_interval = 0;
158
-		}
159
-
160
-		$description = wpinv_get_billing_cycle( $invoice->get_total(), $invoice->get_recurring_details( 'total' ), $item->get_recurring_period(), $item->get_recurring_interval(), $item->get_recurring_limit(), $trial_period, $trial_interval, $invoice->get_currency() );
161
-	}
162
-
163
-	return apply_filters( 'wpinv_subscription_payment_desc', $description, $invoice );
146
+    if ( empty( $invoice ) ) {
147
+        return null;
148
+    }
149
+
150
+    $description = '';
151
+    if ( $invoice->is_parent() && $item = $invoice->get_recurring( true ) ) {
152
+        if ( $item->has_free_trial() ) {
153
+            $trial_period = $item->get_trial_period();
154
+            $trial_interval = $item->get_trial_interval();
155
+        } else {
156
+            $trial_period = '';
157
+            $trial_interval = 0;
158
+        }
159
+
160
+        $description = wpinv_get_billing_cycle( $invoice->get_total(), $invoice->get_recurring_details( 'total' ), $item->get_recurring_period(), $item->get_recurring_interval(), $item->get_recurring_limit(), $trial_period, $trial_interval, $invoice->get_currency() );
161
+    }
162
+
163
+    return apply_filters( 'wpinv_subscription_payment_desc', $description, $invoice );
164 164
 }
165 165
 
166 166
 function wpinv_get_billing_cycle( $initial, $recurring, $period, $interval, $bill_times, $trial_period = '', $trial_interval = 0, $currency = '' ) {
167
-	$initial_total      = wpinv_round_amount( $initial );
168
-	$recurring_total    = wpinv_round_amount( $recurring );
167
+    $initial_total      = wpinv_round_amount( $initial );
168
+    $recurring_total    = wpinv_round_amount( $recurring );
169 169
 
170
-	if ( $trial_interval > 0 && ! empty( $trial_period ) ) {
171
-		// Free trial
172
-	} else {
173
-		if ( $bill_times == 1 ) {
174
-			$recurring_total = $initial_total;
175
-		} elseif ( $bill_times > 1 && $initial_total != $recurring_total ) {
176
-			$bill_times--;
177
-		}
178
-	}
170
+    if ( $trial_interval > 0 && ! empty( $trial_period ) ) {
171
+        // Free trial
172
+    } else {
173
+        if ( $bill_times == 1 ) {
174
+            $recurring_total = $initial_total;
175
+        } elseif ( $bill_times > 1 && $initial_total != $recurring_total ) {
176
+            $bill_times--;
177
+        }
178
+    }
179 179
 
180
-	$initial_amount     = wpinv_price( $initial_total, $currency );
181
-	$recurring_amount   = wpinv_price( $recurring_total, $currency );
180
+    $initial_amount     = wpinv_price( $initial_total, $currency );
181
+    $recurring_amount   = wpinv_price( $recurring_total, $currency );
182 182
 
183
-	$recurring          = wpinv_subscription_recurring_payment_desc( $recurring_amount, $period, $interval, $bill_times, $trial_period, $trial_interval );
183
+    $recurring          = wpinv_subscription_recurring_payment_desc( $recurring_amount, $period, $interval, $bill_times, $trial_period, $trial_interval );
184 184
 
185
-	if ( $initial_total != $recurring_total ) {
186
-		$initial        = wpinv_subscription_initial_payment_desc( $initial_amount, $period, $interval, $trial_period, $trial_interval );
185
+    if ( $initial_total != $recurring_total ) {
186
+        $initial        = wpinv_subscription_initial_payment_desc( $initial_amount, $period, $interval, $trial_period, $trial_interval );
187 187
 
188
-		$description    = wp_sprintf( __( '%1$s Then %2$s', 'invoicing' ), $initial, $recurring );
189
-	} else {
190
-		$description    = $recurring;
191
-	}
188
+        $description    = wp_sprintf( __( '%1$s Then %2$s', 'invoicing' ), $initial, $recurring );
189
+    } else {
190
+        $description    = $recurring;
191
+    }
192 192
 
193
-	return apply_filters( 'wpinv_get_billing_cycle', $description, $initial, $recurring, $period, $interval, $bill_times, $trial_period, $trial_interval, $currency );
193
+    return apply_filters( 'wpinv_get_billing_cycle', $description, $initial, $recurring, $period, $interval, $bill_times, $trial_period, $trial_interval, $currency );
194 194
 }
195 195
 
196 196
 /**
@@ -202,25 +202,25 @@  discard block
 block discarded – undo
202 202
  */
203 203
 function getpaid_get_card_name( $card_number ) {
204 204
 
205
-	// Known regexes.
206
-	$regexes = array(
207
-		'/^4/'                     => __( 'Visa', 'invoicing' ),
208
-		'/^5[1-5]/'                => __( 'Mastercard', 'invoicing' ),
209
-		'/^3[47]/'                 => __( 'Amex', 'invoicing' ),
210
-		'/^3(?:0[0-5]|[68])/'      => __( 'Diners Club', 'invoicing' ),
211
-		'/^6(?:011|5)/'            => __( 'Discover', 'invoicing' ),
212
-		'/^(?:2131|1800|35\d{3})/' => __( 'JCB', 'invoicing' ),
213
-	);
214
-
215
-	// Confirm if one matches.
216
-	foreach ( $regexes as $regex => $card ) {
217
-		if ( preg_match( $regex, $card_number ) >= 1 ) {
218
-			return $card;
219
-		}
220
-	}
221
-
222
-	// None matched.
223
-	return __( 'Card', 'invoicing' );
205
+    // Known regexes.
206
+    $regexes = array(
207
+        '/^4/'                     => __( 'Visa', 'invoicing' ),
208
+        '/^5[1-5]/'                => __( 'Mastercard', 'invoicing' ),
209
+        '/^3[47]/'                 => __( 'Amex', 'invoicing' ),
210
+        '/^3(?:0[0-5]|[68])/'      => __( 'Diners Club', 'invoicing' ),
211
+        '/^6(?:011|5)/'            => __( 'Discover', 'invoicing' ),
212
+        '/^(?:2131|1800|35\d{3})/' => __( 'JCB', 'invoicing' ),
213
+    );
214
+
215
+    // Confirm if one matches.
216
+    foreach ( $regexes as $regex => $card ) {
217
+        if ( preg_match( $regex, $card_number ) >= 1 ) {
218
+            return $card;
219
+        }
220
+    }
221
+
222
+    // None matched.
223
+    return __( 'Card', 'invoicing' );
224 224
 
225 225
 }
226 226
 
@@ -230,24 +230,24 @@  discard block
 block discarded – undo
230 230
  * @param WPInv_Invoice|int|null $invoice
231 231
  */
232 232
 function wpinv_send_back_to_checkout( $invoice = null ) {
233
-	$response = array( 'success' => false );
234
-	$invoice  = wpinv_get_invoice( $invoice );
235
-
236
-	// Was an invoice created?
237
-	if ( ! empty( $invoice ) ) {
238
-		$invoice             = is_scalar( $invoice ) ? new WPInv_Invoice( $invoice ) : $invoice;
239
-		$response['invoice'] = $invoice->get_id();
240
-		do_action( 'getpaid_checkout_invoice_exception', $invoice );
241
-	}
242
-
243
-	// Do we have any errors?
244
-	if ( wpinv_get_errors() ) {
245
-		$response['data'] = getpaid_get_errors_html( true, false );
246
-	} else {
247
-		$response['data'] = __( 'An error occured while processing your payment. Please try again.', 'invoicing' );
248
-	}
249
-
250
-	wp_send_json( $response );
233
+    $response = array( 'success' => false );
234
+    $invoice  = wpinv_get_invoice( $invoice );
235
+
236
+    // Was an invoice created?
237
+    if ( ! empty( $invoice ) ) {
238
+        $invoice             = is_scalar( $invoice ) ? new WPInv_Invoice( $invoice ) : $invoice;
239
+        $response['invoice'] = $invoice->get_id();
240
+        do_action( 'getpaid_checkout_invoice_exception', $invoice );
241
+    }
242
+
243
+    // Do we have any errors?
244
+    if ( wpinv_get_errors() ) {
245
+        $response['data'] = getpaid_get_errors_html( true, false );
246
+    } else {
247
+        $response['data'] = __( 'An error occured while processing your payment. Please try again.', 'invoicing' );
248
+    }
249
+
250
+    wp_send_json( $response );
251 251
 }
252 252
 
253 253
 /**
@@ -256,7 +256,7 @@  discard block
 block discarded – undo
256 256
  * @return string
257 257
  */
258 258
 function getpaid_get_recaptcha_site_key() {
259
-	return apply_filters( 'getpaid_recaptcha_site_key', wpinv_get_option( 'recaptcha_site_key', '' ) );
259
+    return apply_filters( 'getpaid_recaptcha_site_key', wpinv_get_option( 'recaptcha_site_key', '' ) );
260 260
 }
261 261
 
262 262
 /**
@@ -265,7 +265,7 @@  discard block
 block discarded – undo
265 265
  * @return string
266 266
  */
267 267
 function getpaid_get_recaptcha_secret_key() {
268
-	return apply_filters( 'getpaid_recaptcha_secret_key', wpinv_get_option( 'recaptcha_secret_key', '' ) );
268
+    return apply_filters( 'getpaid_recaptcha_secret_key', wpinv_get_option( 'recaptcha_secret_key', '' ) );
269 269
 }
270 270
 
271 271
 /**
@@ -274,7 +274,7 @@  discard block
 block discarded – undo
274 274
  * @return bool
275 275
  */
276 276
 function getpaid_is_recaptcha_enabled() {
277
-	return wpinv_get_option( 'enable_recaptcha', false ) && getpaid_get_recaptcha_site_key() && getpaid_get_recaptcha_secret_key();
277
+    return wpinv_get_option( 'enable_recaptcha', false ) && getpaid_get_recaptcha_site_key() && getpaid_get_recaptcha_secret_key();
278 278
 }
279 279
 
280 280
 /**
@@ -283,27 +283,27 @@  discard block
 block discarded – undo
283 283
  * @return string
284 284
  */
285 285
 function getpaid_get_recaptcha_version() {
286
-	return apply_filters( 'getpaid_recaptcha_version', wpinv_get_option( 'recaptcha_version', 'v2' ) );
286
+    return apply_filters( 'getpaid_recaptcha_version', wpinv_get_option( 'recaptcha_version', 'v2' ) );
287 287
 }
288 288
 
289 289
 function getpaid_recaptcha_api_url() {
290
-	// Prevent conflicts with Ninja Forms recaptcha.
291
-	if ( ! empty( $_REQUEST['action'] ) && $_REQUEST['action'] == 'geodir_ninja_forms' ) {
292
-		$url = '';
293
-	} else {
294
-		$url = getpaid_recaptcha_get_api_url();
295
-	}
296
-
297
-	return apply_filters( 'getpaid_recaptcha_api_url', $url );
290
+    // Prevent conflicts with Ninja Forms recaptcha.
291
+    if ( ! empty( $_REQUEST['action'] ) && $_REQUEST['action'] == 'geodir_ninja_forms' ) {
292
+        $url = '';
293
+    } else {
294
+        $url = getpaid_recaptcha_get_api_url();
295
+    }
296
+
297
+    return apply_filters( 'getpaid_recaptcha_api_url', $url );
298 298
 }
299 299
 
300 300
 function getpaid_recaptcha_get_api_url() {
301
-	return add_query_arg(
302
-		array(
303
-			'render' => 'v2' === getpaid_get_recaptcha_version() ? 'explicit' : getpaid_get_recaptcha_site_key(),
304
-		),
305
-		'https://www.google.com/recaptcha/api.js'
306
-	);
301
+    return add_query_arg(
302
+        array(
303
+            'render' => 'v2' === getpaid_get_recaptcha_version() ? 'explicit' : getpaid_get_recaptcha_site_key(),
304
+        ),
305
+        'https://www.google.com/recaptcha/api.js'
306
+    );
307 307
 }
308 308
 
309 309
 /**
@@ -312,42 +312,42 @@  discard block
 block discarded – undo
312 312
  * @return array
313 313
  */
314 314
 function getpaid_get_recaptcha_settings() {
315
-	$settings = array(
316
-		'enabled' => getpaid_is_recaptcha_enabled(),
317
-		'version' => getpaid_get_recaptcha_version(),
318
-	);
319
-
320
-	if ( ! getpaid_is_recaptcha_enabled() ) {
321
-		return $settings;
322
-	}
323
-
324
-	$settings['sitekey'] = getpaid_get_recaptcha_site_key();
325
-
326
-	// Version 2 render params.
327
-	if ( 'v2' === getpaid_get_recaptcha_version() ) {
328
-		$settings['render_params'] = array(
329
-			'sitekey'  => getpaid_get_recaptcha_site_key(),
330
-			'theme'    => 'light',
331
-			'size'     => 'normal',
332
-			'tabindex' => 0,
333
-		);
334
-	}
335
-
336
-	return apply_filters( 'getpaid_recaptcha_settings', $settings );
315
+    $settings = array(
316
+        'enabled' => getpaid_is_recaptcha_enabled(),
317
+        'version' => getpaid_get_recaptcha_version(),
318
+    );
319
+
320
+    if ( ! getpaid_is_recaptcha_enabled() ) {
321
+        return $settings;
322
+    }
323
+
324
+    $settings['sitekey'] = getpaid_get_recaptcha_site_key();
325
+
326
+    // Version 2 render params.
327
+    if ( 'v2' === getpaid_get_recaptcha_version() ) {
328
+        $settings['render_params'] = array(
329
+            'sitekey'  => getpaid_get_recaptcha_site_key(),
330
+            'theme'    => 'light',
331
+            'size'     => 'normal',
332
+            'tabindex' => 0,
333
+        );
334
+    }
335
+
336
+    return apply_filters( 'getpaid_recaptcha_settings', $settings );
337 337
 }
338 338
 
339 339
 /**
340 340
  * Displays reCAPTCHA before payment button.
341 341
  */
342 342
 function getpaid_display_recaptcha_before_payment_button() {
343
-	if ( ! getpaid_is_recaptcha_enabled() || 'v2' !== getpaid_get_recaptcha_version() ) {
344
-		return;
345
-	}
346
-
347
-	printf(
348
-		'<div class="getpaid-recaptcha-wrapper"><div class="g-recaptcha mw-100 overflow-hidden my-2" id="getpaid-recaptcha-%s"></div></div>',
349
-		esc_attr( wp_unique_id() )
350
-	);
343
+    if ( ! getpaid_is_recaptcha_enabled() || 'v2' !== getpaid_get_recaptcha_version() ) {
344
+        return;
345
+    }
346
+
347
+    printf(
348
+        '<div class="getpaid-recaptcha-wrapper"><div class="g-recaptcha mw-100 overflow-hidden my-2" id="getpaid-recaptcha-%s"></div></div>',
349
+        esc_attr( wp_unique_id() )
350
+    );
351 351
 }
352 352
 add_action( 'getpaid_before_payment_form_pay_button', 'getpaid_display_recaptcha_before_payment_button' );
353 353
 
@@ -358,43 +358,43 @@  discard block
 block discarded – undo
358 358
  */
359 359
 function getpaid_validate_recaptcha_response( $submission ) {
360 360
 
361
-	// Check if reCAPTCHA is enabled.
362
-	if ( ! getpaid_is_recaptcha_enabled() ) {
363
-		return;
364
-	}
365
-
366
-	$token = $submission->get_field( 'g-recaptcha-response' );
367
-
368
-	// Abort if no token was provided.
369
-	if ( empty( $token ) ) {
370
-		wp_send_json_error( 'v2' === getpaid_get_recaptcha_version() ? __( 'Please confirm that you are not a robot.', 'invoicing' ) : __( "Unable to verify that you're not a robot. Please try again.", 'invoicing' ) );
371
-	}
372
-
373
-	$result = wp_remote_post(
374
-		'https://www.google.com/recaptcha/api/siteverify',
375
-		array(
376
-			'body' => array(
377
-				'secret'   => getpaid_get_recaptcha_secret_key(),
378
-				'response' => $token,
379
-			),
380
-		)
381
-	);
382
-
383
-	// Site not reachable, give benefit of doubt.
384
-	if ( is_wp_error( $result ) ) {
385
-		return;
386
-	}
387
-
388
-	$result = json_decode( wp_remote_retrieve_body( $result ), true );
389
-
390
-	if ( empty( $result['success'] ) && ! in_array( 'missing-input-secret', $result['error-codes'], true ) && ! in_array( 'invalid-input-secret', $result['error-codes'], true ) ) {
391
-		wp_send_json_error( __( "Unable to verify that you're not a robot. Please try again.", 'invoicing' ) );
392
-	}
393
-
394
-	// For v3, check the score.
395
-	$minimum_score = apply_filters( 'getpaid_recaptcha_minimum_score', 0.4 );
396
-	if ( 'v3' === getpaid_get_recaptcha_version() && ( empty( $result['score'] ) || $result['score'] < $minimum_score ) ) {
397
-		wp_send_json_error( __( "Unable to verify that you're not a robot. Please try again.", 'invoicing' ) );
398
-	}
361
+    // Check if reCAPTCHA is enabled.
362
+    if ( ! getpaid_is_recaptcha_enabled() ) {
363
+        return;
364
+    }
365
+
366
+    $token = $submission->get_field( 'g-recaptcha-response' );
367
+
368
+    // Abort if no token was provided.
369
+    if ( empty( $token ) ) {
370
+        wp_send_json_error( 'v2' === getpaid_get_recaptcha_version() ? __( 'Please confirm that you are not a robot.', 'invoicing' ) : __( "Unable to verify that you're not a robot. Please try again.", 'invoicing' ) );
371
+    }
372
+
373
+    $result = wp_remote_post(
374
+        'https://www.google.com/recaptcha/api/siteverify',
375
+        array(
376
+            'body' => array(
377
+                'secret'   => getpaid_get_recaptcha_secret_key(),
378
+                'response' => $token,
379
+            ),
380
+        )
381
+    );
382
+
383
+    // Site not reachable, give benefit of doubt.
384
+    if ( is_wp_error( $result ) ) {
385
+        return;
386
+    }
387
+
388
+    $result = json_decode( wp_remote_retrieve_body( $result ), true );
389
+
390
+    if ( empty( $result['success'] ) && ! in_array( 'missing-input-secret', $result['error-codes'], true ) && ! in_array( 'invalid-input-secret', $result['error-codes'], true ) ) {
391
+        wp_send_json_error( __( "Unable to verify that you're not a robot. Please try again.", 'invoicing' ) );
392
+    }
393
+
394
+    // For v3, check the score.
395
+    $minimum_score = apply_filters( 'getpaid_recaptcha_minimum_score', 0.4 );
396
+    if ( 'v3' === getpaid_get_recaptcha_version() && ( empty( $result['score'] ) || $result['score'] < $minimum_score ) ) {
397
+        wp_send_json_error( __( "Unable to verify that you're not a robot. Please try again.", 'invoicing' ) );
398
+    }
399 399
 }
400 400
 add_action( 'getpaid_checkout_error_checks', 'getpaid_validate_recaptcha_response' );
Please login to merge, or discard this patch.
Spacing   +119 added lines, -119 removed lines patch added patch discarded remove patch
@@ -1,155 +1,155 @@  discard block
 block discarded – undo
1 1
 <?php
2
-function wpinv_is_subscription_payment( $invoice = '' ) {
3
-	if ( empty( $invoice ) ) {
2
+function wpinv_is_subscription_payment($invoice = '') {
3
+	if (empty($invoice)) {
4 4
 		return false;
5 5
 	}
6 6
 
7
-	if ( ! is_object( $invoice ) && is_scalar( $invoice ) ) {
8
-		$invoice = wpinv_get_invoice( $invoice );
7
+	if (!is_object($invoice) && is_scalar($invoice)) {
8
+		$invoice = wpinv_get_invoice($invoice);
9 9
 	}
10 10
 
11
-	if ( empty( $invoice ) ) {
11
+	if (empty($invoice)) {
12 12
 		return false;
13 13
 	}
14 14
 
15
-	if ( $invoice->is_renewal() ) {
15
+	if ($invoice->is_renewal()) {
16 16
 		return true;
17 17
 	}
18 18
 
19 19
 	return false;
20 20
 }
21 21
 
22
-function wpinv_payment_link_transaction_id( $invoice = '' ) {
23
-	if ( empty( $invoice ) ) {
22
+function wpinv_payment_link_transaction_id($invoice = '') {
23
+	if (empty($invoice)) {
24 24
 		return false;
25 25
 	}
26 26
 
27
-	if ( ! is_object( $invoice ) && is_scalar( $invoice ) ) {
28
-		$invoice = wpinv_get_invoice( $invoice );
27
+	if (!is_object($invoice) && is_scalar($invoice)) {
28
+		$invoice = wpinv_get_invoice($invoice);
29 29
 	}
30 30
 
31
-	if ( empty( $invoice ) ) {
31
+	if (empty($invoice)) {
32 32
 		return false;
33 33
 	}
34 34
 
35
-	return apply_filters( 'wpinv_payment_details_transaction_id-' . $invoice->gateway, $invoice->get_transaction_id(), $invoice->ID, $invoice );
35
+	return apply_filters('wpinv_payment_details_transaction_id-' . $invoice->gateway, $invoice->get_transaction_id(), $invoice->ID, $invoice);
36 36
 }
37 37
 
38
-function wpinv_subscription_initial_payment_desc( $amount, $period, $interval, $trial_period = '', $trial_interval = 0 ) {
39
-	$interval   = (int)$interval > 0 ? (int)$interval : 1;
38
+function wpinv_subscription_initial_payment_desc($amount, $period, $interval, $trial_period = '', $trial_interval = 0) {
39
+	$interval = (int) $interval > 0 ? (int) $interval : 1;
40 40
 
41
-	if ( $trial_interval > 0 && ! empty( $trial_period ) ) {
42
-		$amount = __( 'Free', 'invoicing' );
41
+	if ($trial_interval > 0 && !empty($trial_period)) {
42
+		$amount = __('Free', 'invoicing');
43 43
 		$interval = $trial_interval;
44 44
 		$period = $trial_period;
45 45
 	}
46 46
 
47 47
 	$description = '';
48
-	switch ( $period ) {
48
+	switch ($period) {
49 49
 		case 'D':
50 50
 		case 'day':
51
-			$description = wp_sprintf( _n( '%s for the first day.', '%1$s for the first %2$d days.', $interval, 'invoicing' ), $amount, $interval );
51
+			$description = wp_sprintf(_n('%s for the first day.', '%1$s for the first %2$d days.', $interval, 'invoicing'), $amount, $interval);
52 52
 			break;
53 53
 		case 'W':
54 54
 		case 'week':
55
-			$description = wp_sprintf( _n( '%s for the first week.', '%1$s for the first %2$d weeks.', $interval, 'invoicing' ), $amount, $interval );
55
+			$description = wp_sprintf(_n('%s for the first week.', '%1$s for the first %2$d weeks.', $interval, 'invoicing'), $amount, $interval);
56 56
 			break;
57 57
 		case 'M':
58 58
 		case 'month':
59
-			$description = wp_sprintf( _n( '%s for the first month.', '%1$s for the first %2$d months.', $interval, 'invoicing' ), $amount, $interval );
59
+			$description = wp_sprintf(_n('%s for the first month.', '%1$s for the first %2$d months.', $interval, 'invoicing'), $amount, $interval);
60 60
 			break;
61 61
 		case 'Y':
62 62
 		case 'year':
63
-			$description = wp_sprintf( _n( '%s for the first year.', '%1$s for the first %2$d years.', $interval, 'invoicing' ), $amount, $interval );
63
+			$description = wp_sprintf(_n('%s for the first year.', '%1$s for the first %2$d years.', $interval, 'invoicing'), $amount, $interval);
64 64
 			break;
65 65
 	}
66 66
 
67
-	return apply_filters( 'wpinv_subscription_initial_payment_desc', $description, $amount, $period, $interval, $trial_period, $trial_interval );
67
+	return apply_filters('wpinv_subscription_initial_payment_desc', $description, $amount, $period, $interval, $trial_period, $trial_interval);
68 68
 }
69 69
 
70
-function wpinv_subscription_recurring_payment_desc( $amount, $period, $interval, $bill_times = 0, $trial_period = '', $trial_interval = 0 ) {
71
-	$interval   = (int)$interval > 0 ? (int)$interval : 1;
72
-	$bill_times = (int)$bill_times > 0 ? (int)$bill_times : 0;
70
+function wpinv_subscription_recurring_payment_desc($amount, $period, $interval, $bill_times = 0, $trial_period = '', $trial_interval = 0) {
71
+	$interval   = (int) $interval > 0 ? (int) $interval : 1;
72
+	$bill_times = (int) $bill_times > 0 ? (int) $bill_times : 0;
73 73
 
74 74
 	$description = '';
75
-	switch ( $period ) {
75
+	switch ($period) {
76 76
 		case 'D':
77 77
 		case 'day':
78
-			if ( (int)$bill_times > 0 ) {
79
-				if ( $interval > 1 ) {
80
-					if ( $bill_times > 1 ) {
81
-						$description = wp_sprintf( __( '%1$s for each %2$d days, for %3$d installments.', 'invoicing' ), $amount, $interval, $bill_times );
78
+			if ((int) $bill_times > 0) {
79
+				if ($interval > 1) {
80
+					if ($bill_times > 1) {
81
+						$description = wp_sprintf(__('%1$s for each %2$d days, for %3$d installments.', 'invoicing'), $amount, $interval, $bill_times);
82 82
 					} else {
83
-						$description = wp_sprintf( __( '%1$s for %2$d days.', 'invoicing' ), $amount, $interval );
83
+						$description = wp_sprintf(__('%1$s for %2$d days.', 'invoicing'), $amount, $interval);
84 84
 					}
85 85
 				} else {
86
-					$description = wp_sprintf( _n( '%s for one day.', '%1$s for each day, for %2$d installments.', $bill_times, 'invoicing' ), $amount, $bill_times );
86
+					$description = wp_sprintf(_n('%s for one day.', '%1$s for each day, for %2$d installments.', $bill_times, 'invoicing'), $amount, $bill_times);
87 87
 				}
88 88
 			} else {
89
-				$description = wp_sprintf( _n( '%s for each day.', '%1$s for each %2$d days.', $interval, 'invoicing' ), $amount, $interval );
89
+				$description = wp_sprintf(_n('%s for each day.', '%1$s for each %2$d days.', $interval, 'invoicing'), $amount, $interval);
90 90
 			}
91 91
 			break;
92 92
 		case 'W':
93 93
 		case 'week':
94
-			if ( (int)$bill_times > 0 ) {
95
-				if ( $interval > 1 ) {
96
-					if ( $bill_times > 1 ) {
97
-						$description = wp_sprintf( __( '%1$s for each %2$d weeks, for %3$d installments.', 'invoicing' ), $amount, $interval, $bill_times );
94
+			if ((int) $bill_times > 0) {
95
+				if ($interval > 1) {
96
+					if ($bill_times > 1) {
97
+						$description = wp_sprintf(__('%1$s for each %2$d weeks, for %3$d installments.', 'invoicing'), $amount, $interval, $bill_times);
98 98
 					} else {
99
-						$description = wp_sprintf( __( '%1$s for %2$d weeks.', 'invoicing' ), $amount, $interval );
99
+						$description = wp_sprintf(__('%1$s for %2$d weeks.', 'invoicing'), $amount, $interval);
100 100
 					}
101 101
 				} else {
102
-					$description = wp_sprintf( _n( '%s for one week.', '%1$s for each week, for %2$d installments.', $bill_times, 'invoicing' ), $amount, $bill_times );
102
+					$description = wp_sprintf(_n('%s for one week.', '%1$s for each week, for %2$d installments.', $bill_times, 'invoicing'), $amount, $bill_times);
103 103
 				}
104 104
 			} else {
105
-				$description = wp_sprintf( _n( '%s for each week.', '%1$s for each %2$d weeks.', $interval, 'invoicing' ), $amount, $interval );
105
+				$description = wp_sprintf(_n('%s for each week.', '%1$s for each %2$d weeks.', $interval, 'invoicing'), $amount, $interval);
106 106
 			}
107 107
 			break;
108 108
 		case 'M':
109 109
 		case 'month':
110
-			if ( (int)$bill_times > 0 ) {
111
-				if ( $interval > 1 ) {
112
-					if ( $bill_times > 1 ) {
113
-						$description = wp_sprintf( __( '%1$s for each %2$d months, for %3$d installments.', 'invoicing' ), $amount, $interval, $bill_times );
110
+			if ((int) $bill_times > 0) {
111
+				if ($interval > 1) {
112
+					if ($bill_times > 1) {
113
+						$description = wp_sprintf(__('%1$s for each %2$d months, for %3$d installments.', 'invoicing'), $amount, $interval, $bill_times);
114 114
 					} else {
115
-						$description = wp_sprintf( __( '%1$s for %2$d months.', 'invoicing' ), $amount, $interval );
115
+						$description = wp_sprintf(__('%1$s for %2$d months.', 'invoicing'), $amount, $interval);
116 116
 					}
117 117
 				} else {
118
-					$description = wp_sprintf( _n( '%s for one month.', '%1$s for each month, for %2$d installments.', $bill_times, 'invoicing' ), $amount, $bill_times );
118
+					$description = wp_sprintf(_n('%s for one month.', '%1$s for each month, for %2$d installments.', $bill_times, 'invoicing'), $amount, $bill_times);
119 119
 				}
120 120
 			} else {
121
-				$description = wp_sprintf( _n( '%s for each month.', '%1$s for each %2$d months.', $interval, 'invoicing' ), $amount, $interval );
121
+				$description = wp_sprintf(_n('%s for each month.', '%1$s for each %2$d months.', $interval, 'invoicing'), $amount, $interval);
122 122
 			}
123 123
 			break;
124 124
 		case 'Y':
125 125
 		case 'year':
126
-			if ( (int)$bill_times > 0 ) {
127
-				if ( $interval > 1 ) {
128
-					if ( $bill_times > 1 ) {
129
-						$description = wp_sprintf( __( '%1$s for each %2$d years, for %3$d installments.', 'invoicing' ), $amount, $interval, $bill_times );
126
+			if ((int) $bill_times > 0) {
127
+				if ($interval > 1) {
128
+					if ($bill_times > 1) {
129
+						$description = wp_sprintf(__('%1$s for each %2$d years, for %3$d installments.', 'invoicing'), $amount, $interval, $bill_times);
130 130
 					} else {
131
-						$description = wp_sprintf( __( '%1$s for %2$d years.', 'invoicing' ), $amount, $interval );
131
+						$description = wp_sprintf(__('%1$s for %2$d years.', 'invoicing'), $amount, $interval);
132 132
 					}
133 133
 				} else {
134
-					$description = wp_sprintf( _n( '%s for one year.', '%1$s for each year, for %2$d installments.', $bill_times, 'invoicing' ), $amount, $bill_times );
134
+					$description = wp_sprintf(_n('%s for one year.', '%1$s for each year, for %2$d installments.', $bill_times, 'invoicing'), $amount, $bill_times);
135 135
 				}
136 136
 			} else {
137
-				$description = wp_sprintf( _n( '%s for each year.', '%1$s for each %2$d years.', $interval, 'invoicing' ), $amount, $interval );
137
+				$description = wp_sprintf(_n('%s for each year.', '%1$s for each %2$d years.', $interval, 'invoicing'), $amount, $interval);
138 138
 			}
139 139
 			break;
140 140
 	}
141 141
 
142
-	return apply_filters( 'wpinv_subscription_recurring_payment_desc', $description, $amount, $period, $interval, $bill_times, $trial_period, $trial_interval );
142
+	return apply_filters('wpinv_subscription_recurring_payment_desc', $description, $amount, $period, $interval, $bill_times, $trial_period, $trial_interval);
143 143
 }
144 144
 
145
-function wpinv_subscription_payment_desc( $invoice ) {
146
-	if ( empty( $invoice ) ) {
145
+function wpinv_subscription_payment_desc($invoice) {
146
+	if (empty($invoice)) {
147 147
 		return null;
148 148
 	}
149 149
 
150 150
 	$description = '';
151
-	if ( $invoice->is_parent() && $item = $invoice->get_recurring( true ) ) {
152
-		if ( $item->has_free_trial() ) {
151
+	if ($invoice->is_parent() && $item = $invoice->get_recurring(true)) {
152
+		if ($item->has_free_trial()) {
153 153
 			$trial_period = $item->get_trial_period();
154 154
 			$trial_interval = $item->get_trial_interval();
155 155
 		} else {
@@ -157,40 +157,40 @@  discard block
 block discarded – undo
157 157
 			$trial_interval = 0;
158 158
 		}
159 159
 
160
-		$description = wpinv_get_billing_cycle( $invoice->get_total(), $invoice->get_recurring_details( 'total' ), $item->get_recurring_period(), $item->get_recurring_interval(), $item->get_recurring_limit(), $trial_period, $trial_interval, $invoice->get_currency() );
160
+		$description = wpinv_get_billing_cycle($invoice->get_total(), $invoice->get_recurring_details('total'), $item->get_recurring_period(), $item->get_recurring_interval(), $item->get_recurring_limit(), $trial_period, $trial_interval, $invoice->get_currency());
161 161
 	}
162 162
 
163
-	return apply_filters( 'wpinv_subscription_payment_desc', $description, $invoice );
163
+	return apply_filters('wpinv_subscription_payment_desc', $description, $invoice);
164 164
 }
165 165
 
166
-function wpinv_get_billing_cycle( $initial, $recurring, $period, $interval, $bill_times, $trial_period = '', $trial_interval = 0, $currency = '' ) {
167
-	$initial_total      = wpinv_round_amount( $initial );
168
-	$recurring_total    = wpinv_round_amount( $recurring );
166
+function wpinv_get_billing_cycle($initial, $recurring, $period, $interval, $bill_times, $trial_period = '', $trial_interval = 0, $currency = '') {
167
+	$initial_total      = wpinv_round_amount($initial);
168
+	$recurring_total    = wpinv_round_amount($recurring);
169 169
 
170
-	if ( $trial_interval > 0 && ! empty( $trial_period ) ) {
170
+	if ($trial_interval > 0 && !empty($trial_period)) {
171 171
 		// Free trial
172 172
 	} else {
173
-		if ( $bill_times == 1 ) {
173
+		if ($bill_times == 1) {
174 174
 			$recurring_total = $initial_total;
175
-		} elseif ( $bill_times > 1 && $initial_total != $recurring_total ) {
175
+		} elseif ($bill_times > 1 && $initial_total != $recurring_total) {
176 176
 			$bill_times--;
177 177
 		}
178 178
 	}
179 179
 
180
-	$initial_amount     = wpinv_price( $initial_total, $currency );
181
-	$recurring_amount   = wpinv_price( $recurring_total, $currency );
180
+	$initial_amount     = wpinv_price($initial_total, $currency);
181
+	$recurring_amount   = wpinv_price($recurring_total, $currency);
182 182
 
183
-	$recurring          = wpinv_subscription_recurring_payment_desc( $recurring_amount, $period, $interval, $bill_times, $trial_period, $trial_interval );
183
+	$recurring          = wpinv_subscription_recurring_payment_desc($recurring_amount, $period, $interval, $bill_times, $trial_period, $trial_interval);
184 184
 
185
-	if ( $initial_total != $recurring_total ) {
186
-		$initial        = wpinv_subscription_initial_payment_desc( $initial_amount, $period, $interval, $trial_period, $trial_interval );
185
+	if ($initial_total != $recurring_total) {
186
+		$initial        = wpinv_subscription_initial_payment_desc($initial_amount, $period, $interval, $trial_period, $trial_interval);
187 187
 
188
-		$description    = wp_sprintf( __( '%1$s Then %2$s', 'invoicing' ), $initial, $recurring );
188
+		$description    = wp_sprintf(__('%1$s Then %2$s', 'invoicing'), $initial, $recurring);
189 189
 	} else {
190 190
 		$description    = $recurring;
191 191
 	}
192 192
 
193
-	return apply_filters( 'wpinv_get_billing_cycle', $description, $initial, $recurring, $period, $interval, $bill_times, $trial_period, $trial_interval, $currency );
193
+	return apply_filters('wpinv_get_billing_cycle', $description, $initial, $recurring, $period, $interval, $bill_times, $trial_period, $trial_interval, $currency);
194 194
 }
195 195
 
196 196
 /**
@@ -200,27 +200,27 @@  discard block
 block discarded – undo
200 200
  * @param string $card_number Card number.
201 201
  * @return string
202 202
  */
203
-function getpaid_get_card_name( $card_number ) {
203
+function getpaid_get_card_name($card_number) {
204 204
 
205 205
 	// Known regexes.
206 206
 	$regexes = array(
207
-		'/^4/'                     => __( 'Visa', 'invoicing' ),
208
-		'/^5[1-5]/'                => __( 'Mastercard', 'invoicing' ),
209
-		'/^3[47]/'                 => __( 'Amex', 'invoicing' ),
210
-		'/^3(?:0[0-5]|[68])/'      => __( 'Diners Club', 'invoicing' ),
211
-		'/^6(?:011|5)/'            => __( 'Discover', 'invoicing' ),
212
-		'/^(?:2131|1800|35\d{3})/' => __( 'JCB', 'invoicing' ),
207
+		'/^4/'                     => __('Visa', 'invoicing'),
208
+		'/^5[1-5]/'                => __('Mastercard', 'invoicing'),
209
+		'/^3[47]/'                 => __('Amex', 'invoicing'),
210
+		'/^3(?:0[0-5]|[68])/'      => __('Diners Club', 'invoicing'),
211
+		'/^6(?:011|5)/'            => __('Discover', 'invoicing'),
212
+		'/^(?:2131|1800|35\d{3})/' => __('JCB', 'invoicing'),
213 213
 	);
214 214
 
215 215
 	// Confirm if one matches.
216
-	foreach ( $regexes as $regex => $card ) {
217
-		if ( preg_match( $regex, $card_number ) >= 1 ) {
216
+	foreach ($regexes as $regex => $card) {
217
+		if (preg_match($regex, $card_number) >= 1) {
218 218
 			return $card;
219 219
 		}
220 220
 	}
221 221
 
222 222
 	// None matched.
223
-	return __( 'Card', 'invoicing' );
223
+	return __('Card', 'invoicing');
224 224
 
225 225
 }
226 226
 
@@ -229,25 +229,25 @@  discard block
 block discarded – undo
229 229
  *
230 230
  * @param WPInv_Invoice|int|null $invoice
231 231
  */
232
-function wpinv_send_back_to_checkout( $invoice = null ) {
233
-	$response = array( 'success' => false );
234
-	$invoice  = wpinv_get_invoice( $invoice );
232
+function wpinv_send_back_to_checkout($invoice = null) {
233
+	$response = array('success' => false);
234
+	$invoice  = wpinv_get_invoice($invoice);
235 235
 
236 236
 	// Was an invoice created?
237
-	if ( ! empty( $invoice ) ) {
238
-		$invoice             = is_scalar( $invoice ) ? new WPInv_Invoice( $invoice ) : $invoice;
237
+	if (!empty($invoice)) {
238
+		$invoice             = is_scalar($invoice) ? new WPInv_Invoice($invoice) : $invoice;
239 239
 		$response['invoice'] = $invoice->get_id();
240
-		do_action( 'getpaid_checkout_invoice_exception', $invoice );
240
+		do_action('getpaid_checkout_invoice_exception', $invoice);
241 241
 	}
242 242
 
243 243
 	// Do we have any errors?
244
-	if ( wpinv_get_errors() ) {
245
-		$response['data'] = getpaid_get_errors_html( true, false );
244
+	if (wpinv_get_errors()) {
245
+		$response['data'] = getpaid_get_errors_html(true, false);
246 246
 	} else {
247
-		$response['data'] = __( 'An error occured while processing your payment. Please try again.', 'invoicing' );
247
+		$response['data'] = __('An error occured while processing your payment. Please try again.', 'invoicing');
248 248
 	}
249 249
 
250
-	wp_send_json( $response );
250
+	wp_send_json($response);
251 251
 }
252 252
 
253 253
 /**
@@ -256,7 +256,7 @@  discard block
 block discarded – undo
256 256
  * @return string
257 257
  */
258 258
 function getpaid_get_recaptcha_site_key() {
259
-	return apply_filters( 'getpaid_recaptcha_site_key', wpinv_get_option( 'recaptcha_site_key', '' ) );
259
+	return apply_filters('getpaid_recaptcha_site_key', wpinv_get_option('recaptcha_site_key', ''));
260 260
 }
261 261
 
262 262
 /**
@@ -265,7 +265,7 @@  discard block
 block discarded – undo
265 265
  * @return string
266 266
  */
267 267
 function getpaid_get_recaptcha_secret_key() {
268
-	return apply_filters( 'getpaid_recaptcha_secret_key', wpinv_get_option( 'recaptcha_secret_key', '' ) );
268
+	return apply_filters('getpaid_recaptcha_secret_key', wpinv_get_option('recaptcha_secret_key', ''));
269 269
 }
270 270
 
271 271
 /**
@@ -274,7 +274,7 @@  discard block
 block discarded – undo
274 274
  * @return bool
275 275
  */
276 276
 function getpaid_is_recaptcha_enabled() {
277
-	return wpinv_get_option( 'enable_recaptcha', false ) && getpaid_get_recaptcha_site_key() && getpaid_get_recaptcha_secret_key();
277
+	return wpinv_get_option('enable_recaptcha', false) && getpaid_get_recaptcha_site_key() && getpaid_get_recaptcha_secret_key();
278 278
 }
279 279
 
280 280
 /**
@@ -283,18 +283,18 @@  discard block
 block discarded – undo
283 283
  * @return string
284 284
  */
285 285
 function getpaid_get_recaptcha_version() {
286
-	return apply_filters( 'getpaid_recaptcha_version', wpinv_get_option( 'recaptcha_version', 'v2' ) );
286
+	return apply_filters('getpaid_recaptcha_version', wpinv_get_option('recaptcha_version', 'v2'));
287 287
 }
288 288
 
289 289
 function getpaid_recaptcha_api_url() {
290 290
 	// Prevent conflicts with Ninja Forms recaptcha.
291
-	if ( ! empty( $_REQUEST['action'] ) && $_REQUEST['action'] == 'geodir_ninja_forms' ) {
291
+	if (!empty($_REQUEST['action']) && $_REQUEST['action'] == 'geodir_ninja_forms') {
292 292
 		$url = '';
293 293
 	} else {
294 294
 		$url = getpaid_recaptcha_get_api_url();
295 295
 	}
296 296
 
297
-	return apply_filters( 'getpaid_recaptcha_api_url', $url );
297
+	return apply_filters('getpaid_recaptcha_api_url', $url);
298 298
 }
299 299
 
300 300
 function getpaid_recaptcha_get_api_url() {
@@ -317,14 +317,14 @@  discard block
 block discarded – undo
317 317
 		'version' => getpaid_get_recaptcha_version(),
318 318
 	);
319 319
 
320
-	if ( ! getpaid_is_recaptcha_enabled() ) {
320
+	if (!getpaid_is_recaptcha_enabled()) {
321 321
 		return $settings;
322 322
 	}
323 323
 
324 324
 	$settings['sitekey'] = getpaid_get_recaptcha_site_key();
325 325
 
326 326
 	// Version 2 render params.
327
-	if ( 'v2' === getpaid_get_recaptcha_version() ) {
327
+	if ('v2' === getpaid_get_recaptcha_version()) {
328 328
 		$settings['render_params'] = array(
329 329
 			'sitekey'  => getpaid_get_recaptcha_site_key(),
330 330
 			'theme'    => 'light',
@@ -333,41 +333,41 @@  discard block
 block discarded – undo
333 333
 		);
334 334
 	}
335 335
 
336
-	return apply_filters( 'getpaid_recaptcha_settings', $settings );
336
+	return apply_filters('getpaid_recaptcha_settings', $settings);
337 337
 }
338 338
 
339 339
 /**
340 340
  * Displays reCAPTCHA before payment button.
341 341
  */
342 342
 function getpaid_display_recaptcha_before_payment_button() {
343
-	if ( ! getpaid_is_recaptcha_enabled() || 'v2' !== getpaid_get_recaptcha_version() ) {
343
+	if (!getpaid_is_recaptcha_enabled() || 'v2' !== getpaid_get_recaptcha_version()) {
344 344
 		return;
345 345
 	}
346 346
 
347 347
 	printf(
348 348
 		'<div class="getpaid-recaptcha-wrapper"><div class="g-recaptcha mw-100 overflow-hidden my-2" id="getpaid-recaptcha-%s"></div></div>',
349
-		esc_attr( wp_unique_id() )
349
+		esc_attr(wp_unique_id())
350 350
 	);
351 351
 }
352
-add_action( 'getpaid_before_payment_form_pay_button', 'getpaid_display_recaptcha_before_payment_button' );
352
+add_action('getpaid_before_payment_form_pay_button', 'getpaid_display_recaptcha_before_payment_button');
353 353
 
354 354
 /**
355 355
  * Validates the reCAPTCHA response.
356 356
  *
357 357
  * @param GetPaid_Payment_Form_Submission $submission
358 358
  */
359
-function getpaid_validate_recaptcha_response( $submission ) {
359
+function getpaid_validate_recaptcha_response($submission) {
360 360
 
361 361
 	// Check if reCAPTCHA is enabled.
362
-	if ( ! getpaid_is_recaptcha_enabled() ) {
362
+	if (!getpaid_is_recaptcha_enabled()) {
363 363
 		return;
364 364
 	}
365 365
 
366
-	$token = $submission->get_field( 'g-recaptcha-response' );
366
+	$token = $submission->get_field('g-recaptcha-response');
367 367
 
368 368
 	// Abort if no token was provided.
369
-	if ( empty( $token ) ) {
370
-		wp_send_json_error( 'v2' === getpaid_get_recaptcha_version() ? __( 'Please confirm that you are not a robot.', 'invoicing' ) : __( "Unable to verify that you're not a robot. Please try again.", 'invoicing' ) );
369
+	if (empty($token)) {
370
+		wp_send_json_error('v2' === getpaid_get_recaptcha_version() ? __('Please confirm that you are not a robot.', 'invoicing') : __("Unable to verify that you're not a robot. Please try again.", 'invoicing'));
371 371
 	}
372 372
 
373 373
 	$result = wp_remote_post(
@@ -381,20 +381,20 @@  discard block
 block discarded – undo
381 381
 	);
382 382
 
383 383
 	// Site not reachable, give benefit of doubt.
384
-	if ( is_wp_error( $result ) ) {
384
+	if (is_wp_error($result)) {
385 385
 		return;
386 386
 	}
387 387
 
388
-	$result = json_decode( wp_remote_retrieve_body( $result ), true );
388
+	$result = json_decode(wp_remote_retrieve_body($result), true);
389 389
 
390
-	if ( empty( $result['success'] ) && ! in_array( 'missing-input-secret', $result['error-codes'], true ) && ! in_array( 'invalid-input-secret', $result['error-codes'], true ) ) {
391
-		wp_send_json_error( __( "Unable to verify that you're not a robot. Please try again.", 'invoicing' ) );
390
+	if (empty($result['success']) && !in_array('missing-input-secret', $result['error-codes'], true) && !in_array('invalid-input-secret', $result['error-codes'], true)) {
391
+		wp_send_json_error(__("Unable to verify that you're not a robot. Please try again.", 'invoicing'));
392 392
 	}
393 393
 
394 394
 	// For v3, check the score.
395
-	$minimum_score = apply_filters( 'getpaid_recaptcha_minimum_score', 0.4 );
396
-	if ( 'v3' === getpaid_get_recaptcha_version() && ( empty( $result['score'] ) || $result['score'] < $minimum_score ) ) {
397
-		wp_send_json_error( __( "Unable to verify that you're not a robot. Please try again.", 'invoicing' ) );
395
+	$minimum_score = apply_filters('getpaid_recaptcha_minimum_score', 0.4);
396
+	if ('v3' === getpaid_get_recaptcha_version() && (empty($result['score']) || $result['score'] < $minimum_score)) {
397
+		wp_send_json_error(__("Unable to verify that you're not a robot. Please try again.", 'invoicing'));
398 398
 	}
399 399
 }
400
-add_action( 'getpaid_checkout_error_checks', 'getpaid_validate_recaptcha_response' );
400
+add_action('getpaid_checkout_error_checks', 'getpaid_validate_recaptcha_response');
Please login to merge, or discard this patch.
includes/gateways/class-getpaid-paypal-gateway-ipn-handler.php 2 patches
Indentation   +405 added lines, -405 removed lines patch added patch discarded remove patch
@@ -12,482 +12,482 @@
 block discarded – undo
12 12
  */
13 13
 class GetPaid_Paypal_Gateway_IPN_Handler {
14 14
 
15
-	/**
16
-	 * Payment method id.
17
-	 *
18
-	 * @var string
19
-	 */
20
-	protected $id = 'paypal';
21
-
22
-	/**
23
-	 * Payment method object.
24
-	 *
25
-	 * @var GetPaid_Paypal_Gateway
26
-	 */
27
-	protected $gateway;
28
-
29
-	/**
30
-	 * Class constructor.
31
-	 *
32
-	 * @param GetPaid_Paypal_Gateway $gateway
33
-	 */
34
-	public function __construct( $gateway ) {
35
-		$this->gateway = $gateway;
36
-		$this->verify_ipn();
37
-	}
38
-
39
-	/**
40
-	 * Processes ipns and marks payments as complete.
41
-	 *
42
-	 * @return void
43
-	 */
44
-	public function verify_ipn() {
45
-
46
-		wpinv_error_log( 'GetPaid PayPal IPN Handler', false );
47
-
48
-		// Validate the IPN.
49
-		if ( empty( $_POST ) || ! $this->validate_ipn() ) {
50
-			wp_die( 'PayPal IPN Request Failure', 500 );
51
-		}
52
-
53
-		// Process the IPN.
54
-		$posted  = wp_unslash( $_POST );
55
-		$invoice = $this->get_ipn_invoice( $posted );
56
-
57
-		// Abort if it was not paid by our gateway.
58
-		if ( $this->id != $invoice->get_gateway() ) {
59
-			wpinv_error_log( 'Aborting, Invoice was not paid via PayPal', false );
60
-			wp_die( 'Invoice not paid via PayPal', 200 );
61
-		}
62
-
63
-		$posted['payment_status'] = isset( $posted['payment_status'] ) ? sanitize_key( strtolower( $posted['payment_status'] ) ) : '';
64
-		$posted['txn_type']       = sanitize_key( strtolower( $posted['txn_type'] ) );
65
-
66
-		wpinv_error_log( 'Payment status:' . $posted['payment_status'], false );
67
-		wpinv_error_log( 'IPN Type:' . $posted['txn_type'], false );
68
-
69
-		if ( method_exists( $this, 'ipn_txn_' . $posted['txn_type'] ) ) {
70
-			call_user_func( array( $this, 'ipn_txn_' . $posted['txn_type'] ), $invoice, $posted );
71
-			wpinv_error_log( 'Done processing IPN', false );
72
-			wp_die( 'Processed', 200 );
73
-		}
74
-
75
-		wpinv_error_log( 'Aborting, Unsupported IPN type:' . $posted['txn_type'], false );
76
-		wp_die( 'Unsupported IPN type', 200 );
77
-
78
-	}
79
-
80
-	/**
81
-	 * Retrieves IPN Invoice.
82
-	 *
83
-	 * @param array $posted
84
-	 * @return WPInv_Invoice
85
-	 */
86
-	protected function get_ipn_invoice( $posted ) {
87
-
88
-		wpinv_error_log( 'Retrieving PayPal IPN Response Invoice', false );
89
-
90
-		if ( ! empty( $posted['custom'] ) ) {
91
-			$invoice = new WPInv_Invoice( $posted['custom'] );
92
-
93
-			if ( $invoice->exists() ) {
94
-				wpinv_error_log( 'Found invoice #' . $invoice->get_number(), false );
95
-				return $invoice;
96
-			}
97
-		}
98
-
99
-		wpinv_error_log( 'Could not retrieve the associated invoice.', false );
100
-		wp_die( 'Could not retrieve the associated invoice.', 200 );
101
-	}
102
-
103
-	/**
104
-	 * Check PayPal IPN validity.
105
-	 */
106
-	protected function validate_ipn() {
107
-
108
-		wpinv_error_log( 'Validating PayPal IPN response', false );
109
-
110
-		// Retrieve the associated invoice.
111
-		$posted  = wp_unslash( $_POST );
112
-		$invoice = $this->get_ipn_invoice( $posted );
113
-
114
-		if ( $this->gateway->is_sandbox( $invoice ) ) {
115
-			wpinv_error_log( $posted, 'Invoice was processed in sandbox hence logging the posted data', false );
116
-		}
117
-
118
-		// Validate the IPN.
119
-		$posted['cmd'] = '_notify-validate';
120
-
121
-		// Send back post vars to paypal.
122
-		$params = array(
123
-			'body'        => $posted,
124
-			'timeout'     => 60,
125
-			'httpversion' => '1.1',
126
-			'compress'    => false,
127
-			'decompress'  => false,
128
-			'user-agent'  => 'GetPaid/' . WPINV_VERSION,
129
-		);
130
-
131
-		// Post back to get a response.
132
-		$response = wp_safe_remote_post( $this->gateway->is_sandbox( $invoice ) ? 'https://www.sandbox.paypal.com/cgi-bin/webscr' : 'https://www.paypal.com/cgi-bin/webscr', $params );
133
-
134
-		// Check to see if the request was valid.
135
-		if ( ! is_wp_error( $response ) && $response['response']['code'] < 300 && strstr( $response['body'], 'VERIFIED' ) ) {
136
-			$invoice->add_note( 'Received valid response from PayPal IPN: ' . $response['body'], false, false, true );
137
-			wpinv_error_log( 'Received valid response from PayPal IPN: ' . $response['body'], false );
138
-			return true;
139
-		}
140
-
141
-		$invoice->add_note( 'IPN message:' . wp_json_encode( $posted ), false, false, true );
142
-
143
-		if ( is_wp_error( $response ) ) {
144
-			$invoice->add_note( 'Received invalid response from PayPal IPN: ' . $response->get_error_message(), false, false, true );
145
-			wpinv_error_log( $response->get_error_message(), 'Received invalid response from PayPal IPN' );
146
-			return false;
147
-		}
148
-
149
-		$invoice->add_note( 'Received invalid response from PayPal IPN: ' . $response['body'], false, false, true );
150
-		wpinv_error_log( $response['body'], 'Received invalid response from PayPal IPN' );
151
-		return false;
152
-
153
-	}
154
-
155
-	/**
156
-	 * Check currency from IPN matches the invoice.
157
-	 *
158
-	 * @param WPInv_Invoice $invoice          Invoice object.
159
-	 * @param string   $currency currency to validate.
160
-	 */
161
-	protected function validate_ipn_currency( $invoice, $currency ) {
15
+    /**
16
+     * Payment method id.
17
+     *
18
+     * @var string
19
+     */
20
+    protected $id = 'paypal';
21
+
22
+    /**
23
+     * Payment method object.
24
+     *
25
+     * @var GetPaid_Paypal_Gateway
26
+     */
27
+    protected $gateway;
28
+
29
+    /**
30
+     * Class constructor.
31
+     *
32
+     * @param GetPaid_Paypal_Gateway $gateway
33
+     */
34
+    public function __construct( $gateway ) {
35
+        $this->gateway = $gateway;
36
+        $this->verify_ipn();
37
+    }
38
+
39
+    /**
40
+     * Processes ipns and marks payments as complete.
41
+     *
42
+     * @return void
43
+     */
44
+    public function verify_ipn() {
45
+
46
+        wpinv_error_log( 'GetPaid PayPal IPN Handler', false );
47
+
48
+        // Validate the IPN.
49
+        if ( empty( $_POST ) || ! $this->validate_ipn() ) {
50
+            wp_die( 'PayPal IPN Request Failure', 500 );
51
+        }
52
+
53
+        // Process the IPN.
54
+        $posted  = wp_unslash( $_POST );
55
+        $invoice = $this->get_ipn_invoice( $posted );
56
+
57
+        // Abort if it was not paid by our gateway.
58
+        if ( $this->id != $invoice->get_gateway() ) {
59
+            wpinv_error_log( 'Aborting, Invoice was not paid via PayPal', false );
60
+            wp_die( 'Invoice not paid via PayPal', 200 );
61
+        }
62
+
63
+        $posted['payment_status'] = isset( $posted['payment_status'] ) ? sanitize_key( strtolower( $posted['payment_status'] ) ) : '';
64
+        $posted['txn_type']       = sanitize_key( strtolower( $posted['txn_type'] ) );
65
+
66
+        wpinv_error_log( 'Payment status:' . $posted['payment_status'], false );
67
+        wpinv_error_log( 'IPN Type:' . $posted['txn_type'], false );
68
+
69
+        if ( method_exists( $this, 'ipn_txn_' . $posted['txn_type'] ) ) {
70
+            call_user_func( array( $this, 'ipn_txn_' . $posted['txn_type'] ), $invoice, $posted );
71
+            wpinv_error_log( 'Done processing IPN', false );
72
+            wp_die( 'Processed', 200 );
73
+        }
74
+
75
+        wpinv_error_log( 'Aborting, Unsupported IPN type:' . $posted['txn_type'], false );
76
+        wp_die( 'Unsupported IPN type', 200 );
77
+
78
+    }
79
+
80
+    /**
81
+     * Retrieves IPN Invoice.
82
+     *
83
+     * @param array $posted
84
+     * @return WPInv_Invoice
85
+     */
86
+    protected function get_ipn_invoice( $posted ) {
87
+
88
+        wpinv_error_log( 'Retrieving PayPal IPN Response Invoice', false );
89
+
90
+        if ( ! empty( $posted['custom'] ) ) {
91
+            $invoice = new WPInv_Invoice( $posted['custom'] );
92
+
93
+            if ( $invoice->exists() ) {
94
+                wpinv_error_log( 'Found invoice #' . $invoice->get_number(), false );
95
+                return $invoice;
96
+            }
97
+        }
98
+
99
+        wpinv_error_log( 'Could not retrieve the associated invoice.', false );
100
+        wp_die( 'Could not retrieve the associated invoice.', 200 );
101
+    }
102
+
103
+    /**
104
+     * Check PayPal IPN validity.
105
+     */
106
+    protected function validate_ipn() {
107
+
108
+        wpinv_error_log( 'Validating PayPal IPN response', false );
109
+
110
+        // Retrieve the associated invoice.
111
+        $posted  = wp_unslash( $_POST );
112
+        $invoice = $this->get_ipn_invoice( $posted );
113
+
114
+        if ( $this->gateway->is_sandbox( $invoice ) ) {
115
+            wpinv_error_log( $posted, 'Invoice was processed in sandbox hence logging the posted data', false );
116
+        }
117
+
118
+        // Validate the IPN.
119
+        $posted['cmd'] = '_notify-validate';
120
+
121
+        // Send back post vars to paypal.
122
+        $params = array(
123
+            'body'        => $posted,
124
+            'timeout'     => 60,
125
+            'httpversion' => '1.1',
126
+            'compress'    => false,
127
+            'decompress'  => false,
128
+            'user-agent'  => 'GetPaid/' . WPINV_VERSION,
129
+        );
130
+
131
+        // Post back to get a response.
132
+        $response = wp_safe_remote_post( $this->gateway->is_sandbox( $invoice ) ? 'https://www.sandbox.paypal.com/cgi-bin/webscr' : 'https://www.paypal.com/cgi-bin/webscr', $params );
133
+
134
+        // Check to see if the request was valid.
135
+        if ( ! is_wp_error( $response ) && $response['response']['code'] < 300 && strstr( $response['body'], 'VERIFIED' ) ) {
136
+            $invoice->add_note( 'Received valid response from PayPal IPN: ' . $response['body'], false, false, true );
137
+            wpinv_error_log( 'Received valid response from PayPal IPN: ' . $response['body'], false );
138
+            return true;
139
+        }
140
+
141
+        $invoice->add_note( 'IPN message:' . wp_json_encode( $posted ), false, false, true );
142
+
143
+        if ( is_wp_error( $response ) ) {
144
+            $invoice->add_note( 'Received invalid response from PayPal IPN: ' . $response->get_error_message(), false, false, true );
145
+            wpinv_error_log( $response->get_error_message(), 'Received invalid response from PayPal IPN' );
146
+            return false;
147
+        }
148
+
149
+        $invoice->add_note( 'Received invalid response from PayPal IPN: ' . $response['body'], false, false, true );
150
+        wpinv_error_log( $response['body'], 'Received invalid response from PayPal IPN' );
151
+        return false;
152
+
153
+    }
154
+
155
+    /**
156
+     * Check currency from IPN matches the invoice.
157
+     *
158
+     * @param WPInv_Invoice $invoice          Invoice object.
159
+     * @param string   $currency currency to validate.
160
+     */
161
+    protected function validate_ipn_currency( $invoice, $currency ) {
162 162
 
163
-		if ( strtolower( $invoice->get_currency() ) !== strtolower( $currency ) ) {
164
-
165
-			/* translators: %s: currency code. */
166
-			$invoice->update_status( 'wpi-processing', wp_sprintf( __( 'Validation error: PayPal currencies do not match (code %s).', 'invoicing' ), $currency ) );
167
-			$invoice->add_note( wp_sprintf( __( 'Validation error: PayPal currencies do not match (code %s).', 'invoicing' ), $currency ), false, false, true );
168
-
169
-			wpinv_error_log( "Currencies do not match: {$currency} instead of {$invoice->get_currency()}", 'IPN Error', __FILE__, __LINE__, true );
170
-		}
171
-
172
-		wpinv_error_log( $currency, 'Validated IPN Currency', false );
173
-	}
163
+        if ( strtolower( $invoice->get_currency() ) !== strtolower( $currency ) ) {
164
+
165
+            /* translators: %s: currency code. */
166
+            $invoice->update_status( 'wpi-processing', wp_sprintf( __( 'Validation error: PayPal currencies do not match (code %s).', 'invoicing' ), $currency ) );
167
+            $invoice->add_note( wp_sprintf( __( 'Validation error: PayPal currencies do not match (code %s).', 'invoicing' ), $currency ), false, false, true );
168
+
169
+            wpinv_error_log( "Currencies do not match: {$currency} instead of {$invoice->get_currency()}", 'IPN Error', __FILE__, __LINE__, true );
170
+        }
171
+
172
+        wpinv_error_log( $currency, 'Validated IPN Currency', false );
173
+    }
174 174
 
175
-	/**
176
-	 * Check payment amount from IPN matches the invoice.
177
-	 *
178
-	 * @param WPInv_Invoice $invoice          Invoice object.
179
-	 * @param float   $amount amount to validate.
180
-	 */
181
-	protected function validate_ipn_amount( $invoice, $amount ) {
182
-		if ( number_format( $invoice->get_total(), 2, '.', '' ) !== number_format( $amount, 2, '.', '' ) ) {
175
+    /**
176
+     * Check payment amount from IPN matches the invoice.
177
+     *
178
+     * @param WPInv_Invoice $invoice          Invoice object.
179
+     * @param float   $amount amount to validate.
180
+     */
181
+    protected function validate_ipn_amount( $invoice, $amount ) {
182
+        if ( number_format( $invoice->get_total(), 2, '.', '' ) !== number_format( $amount, 2, '.', '' ) ) {
183 183
 
184
-			/* translators: %s: Amount. */
185
-			$invoice->update_status( 'wpi-processing', wp_sprintf( __( 'Validation error: PayPal amounts do not match (gross %s).', 'invoicing' ), $amount ) );
186
-			$invoice->add_note( wp_sprintf( __( 'Validation error: PayPal amounts do not match (gross %s).', 'invoicing' ), $amount ), false, false, true );
184
+            /* translators: %s: Amount. */
185
+            $invoice->update_status( 'wpi-processing', wp_sprintf( __( 'Validation error: PayPal amounts do not match (gross %s).', 'invoicing' ), $amount ) );
186
+            $invoice->add_note( wp_sprintf( __( 'Validation error: PayPal amounts do not match (gross %s).', 'invoicing' ), $amount ), false, false, true );
187 187
 
188
-			wpinv_error_log( "Amounts do not match: {$amount} instead of {$invoice->get_total()}", 'IPN Error', __FILE__, __LINE__, true );
189
-		}
188
+            wpinv_error_log( "Amounts do not match: {$amount} instead of {$invoice->get_total()}", 'IPN Error', __FILE__, __LINE__, true );
189
+        }
190 190
 
191
-		wpinv_error_log( $amount, 'Validated IPN Amount', false );
192
-	}
191
+        wpinv_error_log( $amount, 'Validated IPN Amount', false );
192
+    }
193 193
 
194
-	/**
195
-	 * Verify receiver email from PayPal.
196
-	 *
197
-	 * @param WPInv_Invoice $invoice          Invoice object.
198
-	 * @param string   $receiver_email Email to validate.
199
-	 */
200
-	protected function validate_ipn_receiver_email( $invoice, $receiver_email ) {
201
-		$paypal_email = $this->gateway->is_sandbox( $invoice ) ? wpinv_get_option( 'paypal_sandbox_email', wpinv_get_option( 'paypal_email', '' ) ) : wpinv_get_option( 'paypal_email', '' );
194
+    /**
195
+     * Verify receiver email from PayPal.
196
+     *
197
+     * @param WPInv_Invoice $invoice          Invoice object.
198
+     * @param string   $receiver_email Email to validate.
199
+     */
200
+    protected function validate_ipn_receiver_email( $invoice, $receiver_email ) {
201
+        $paypal_email = $this->gateway->is_sandbox( $invoice ) ? wpinv_get_option( 'paypal_sandbox_email', wpinv_get_option( 'paypal_email', '' ) ) : wpinv_get_option( 'paypal_email', '' );
202 202
 
203
-		if ( $receiver_email && strcasecmp( trim( $receiver_email ), trim( $paypal_email ) ) !== 0 ) {
204
-			wpinv_record_gateway_error( 'IPN Error', "IPN Response is for another account: {$receiver_email}. Your PayPal email is {$paypal_email}." );
205
-
206
-			/* translators: %s: email address . */
207
-			$invoice->update_status( 'wpi-processing', wp_sprintf( __( 'Validation error: PayPal IPN response from a different email address (%s). Your PayPal email is %s.', 'invoicing' ), $receiver_email, $paypal_email ) );
208
-			$invoice->add_note( wp_sprintf( __( 'Validation error: PayPal IPN response from a different email address (%s). Your PayPal email is %s.', 'invoicing' ), $receiver_email, $paypal_email ), false, false, true );
203
+        if ( $receiver_email && strcasecmp( trim( $receiver_email ), trim( $paypal_email ) ) !== 0 ) {
204
+            wpinv_record_gateway_error( 'IPN Error', "IPN Response is for another account: {$receiver_email}. Your PayPal email is {$paypal_email}." );
205
+
206
+            /* translators: %s: email address . */
207
+            $invoice->update_status( 'wpi-processing', wp_sprintf( __( 'Validation error: PayPal IPN response from a different email address (%s). Your PayPal email is %s.', 'invoicing' ), $receiver_email, $paypal_email ) );
208
+            $invoice->add_note( wp_sprintf( __( 'Validation error: PayPal IPN response from a different email address (%s). Your PayPal email is %s.', 'invoicing' ), $receiver_email, $paypal_email ), false, false, true );
209 209
 
210
-			return wpinv_error_log( "IPN Response is for another account: {$receiver_email}. Your email PayPal is {$paypal_email}.", 'IPN Error', __FILE__, __LINE__, true );
211
-		}
210
+            return wpinv_error_log( "IPN Response is for another account: {$receiver_email}. Your email PayPal is {$paypal_email}.", 'IPN Error', __FILE__, __LINE__, true );
211
+        }
212 212
 
213
-		wpinv_error_log( 'Validated PayPal Email', false );
214
-	}
215
-
216
-	/**
217
-	 * Handles one time payments.
218
-	 *
219
-	 * @param WPInv_Invoice $invoice  Invoice object.
220
-	 * @param array    $posted Posted data.
221
-	 */
222
-	protected function ipn_txn_web_accept( $invoice, $posted ) {
213
+        wpinv_error_log( 'Validated PayPal Email', false );
214
+    }
215
+
216
+    /**
217
+     * Handles one time payments.
218
+     *
219
+     * @param WPInv_Invoice $invoice  Invoice object.
220
+     * @param array    $posted Posted data.
221
+     */
222
+    protected function ipn_txn_web_accept( $invoice, $posted ) {
223 223
 
224
-		// Collect payment details
225
-		$payment_status = strtolower( $posted['payment_status'] );
226
-		$business_email = isset( $posted['business'] ) && is_email( $posted['business'] ) ? trim( $posted['business'] ) : trim( $posted['receiver_email'] );
224
+        // Collect payment details
225
+        $payment_status = strtolower( $posted['payment_status'] );
226
+        $business_email = isset( $posted['business'] ) && is_email( $posted['business'] ) ? trim( $posted['business'] ) : trim( $posted['receiver_email'] );
227 227
 
228
-		$this->validate_ipn_receiver_email( $invoice, $business_email );
229
-		$this->validate_ipn_currency( $invoice, $posted['mc_currency'] );
228
+        $this->validate_ipn_receiver_email( $invoice, $business_email );
229
+        $this->validate_ipn_currency( $invoice, $posted['mc_currency'] );
230 230
 
231
-		// Update the transaction id.
232
-		if ( ! empty( $posted['txn_id'] ) ) {
233
-			$invoice->set_transaction_id( wpinv_clean( $posted['txn_id'] ) );
234
-			$invoice->save();
235
-		}
231
+        // Update the transaction id.
232
+        if ( ! empty( $posted['txn_id'] ) ) {
233
+            $invoice->set_transaction_id( wpinv_clean( $posted['txn_id'] ) );
234
+            $invoice->save();
235
+        }
236 236
 
237
-		$invoice->add_system_note( __( 'Processing invoice IPN', 'invoicing' ) );
237
+        $invoice->add_system_note( __( 'Processing invoice IPN', 'invoicing' ) );
238 238
 
239
-		// Process a refund.
240
-		if ( 'refunded' === $payment_status || 'reversed' === $payment_status ) {
239
+        // Process a refund.
240
+        if ( 'refunded' === $payment_status || 'reversed' === $payment_status ) {
241 241
 
242
-			update_post_meta( $invoice->get_id(), 'refunded_remotely', 1 );
242
+            update_post_meta( $invoice->get_id(), 'refunded_remotely', 1 );
243 243
 
244
-			if ( ! $invoice->is_refunded() ) {
245
-				$invoice->update_status( 'wpi-refunded', $posted['reason_code'] );
246
-			}
244
+            if ( ! $invoice->is_refunded() ) {
245
+                $invoice->update_status( 'wpi-refunded', $posted['reason_code'] );
246
+            }
247 247
 
248
-			return wpinv_error_log( $posted['reason_code'], false );
249
-		}
248
+            return wpinv_error_log( $posted['reason_code'], false );
249
+        }
250 250
 
251
-		// Process payments.
252
-		if ( 'completed' === $payment_status ) {
251
+        // Process payments.
252
+        if ( 'completed' === $payment_status ) {
253 253
 
254
-			if ( $invoice->is_paid() && 'wpi_processing' != $invoice->get_status() ) {
255
-				return wpinv_error_log( 'Aborting, Invoice #' . $invoice->get_number() . ' is already paid.', false );
256
-			}
254
+            if ( $invoice->is_paid() && 'wpi_processing' != $invoice->get_status() ) {
255
+                return wpinv_error_log( 'Aborting, Invoice #' . $invoice->get_number() . ' is already paid.', false );
256
+            }
257 257
 
258
-			$this->validate_ipn_amount( $invoice, $posted['mc_gross'] );
258
+            $this->validate_ipn_amount( $invoice, $posted['mc_gross'] );
259 259
 
260
-			$note = '';
260
+            $note = '';
261 261
 
262
-			if ( ! empty( $posted['mc_fee'] ) ) {
263
-				$note = sprintf( __( 'PayPal Transaction Fee %s.', 'invoicing' ), sanitize_text_field( $posted['mc_fee'] ) );
264
-			}
262
+            if ( ! empty( $posted['mc_fee'] ) ) {
263
+                $note = sprintf( __( 'PayPal Transaction Fee %s.', 'invoicing' ), sanitize_text_field( $posted['mc_fee'] ) );
264
+            }
265 265
 
266
-			if ( ! empty( $posted['payer_status'] ) ) {
267
-				$note = ' ' . sprintf( __( 'Buyer status %s.', 'invoicing' ), sanitize_text_field( $posted['payer_status'] ) );
268
-			}
266
+            if ( ! empty( $posted['payer_status'] ) ) {
267
+                $note = ' ' . sprintf( __( 'Buyer status %s.', 'invoicing' ), sanitize_text_field( $posted['payer_status'] ) );
268
+            }
269 269
 
270
-			$invoice->mark_paid( ( ! empty( $posted['txn_id'] ) ? sanitize_text_field( $posted['txn_id'] ) : '' ), trim( $note ) );
271
-			return wpinv_error_log( 'Invoice marked as paid.', false );
270
+            $invoice->mark_paid( ( ! empty( $posted['txn_id'] ) ? sanitize_text_field( $posted['txn_id'] ) : '' ), trim( $note ) );
271
+            return wpinv_error_log( 'Invoice marked as paid.', false );
272 272
 
273
-		}
273
+        }
274 274
 
275
-		// Pending payments.
276
-		if ( 'pending' === $payment_status ) {
275
+        // Pending payments.
276
+        if ( 'pending' === $payment_status ) {
277 277
 
278
-			/* translators: %s: pending reason. */
279
-			$invoice->update_status( 'wpi-onhold', wp_sprintf( __( 'Payment pending (%s).', 'invoicing' ), $posted['pending_reason'] ) );
280
-			$invoice->add_note( wp_sprintf( __( 'Payment pending (%s).', 'invoicing' ), $posted['pending_reason'] ), false, false, true );
278
+            /* translators: %s: pending reason. */
279
+            $invoice->update_status( 'wpi-onhold', wp_sprintf( __( 'Payment pending (%s).', 'invoicing' ), $posted['pending_reason'] ) );
280
+            $invoice->add_note( wp_sprintf( __( 'Payment pending (%s).', 'invoicing' ), $posted['pending_reason'] ), false, false, true );
281 281
 
282
-			return wpinv_error_log( 'Invoice marked as "payment held".', false );
283
-		}
282
+            return wpinv_error_log( 'Invoice marked as "payment held".', false );
283
+        }
284 284
 
285
-		/* translators: %s: payment status. */
286
-		$invoice->update_status( 'wpi-failed', sprintf( __( 'Payment %s via IPN.', 'invoicing' ), sanitize_text_field( $posted['payment_status'] ) ) );
285
+        /* translators: %s: payment status. */
286
+        $invoice->update_status( 'wpi-failed', sprintf( __( 'Payment %s via IPN.', 'invoicing' ), sanitize_text_field( $posted['payment_status'] ) ) );
287 287
 
288
-	}
288
+    }
289 289
 
290
-	/**
291
-	 * Handles one time payments.
292
-	 *
293
-	 * @param WPInv_Invoice $invoice  Invoice object.
294
-	 * @param array    $posted Posted data.
295
-	 */
296
-	protected function ipn_txn_cart( $invoice, $posted ) {
297
-		$this->ipn_txn_web_accept( $invoice, $posted );
298
-	}
290
+    /**
291
+     * Handles one time payments.
292
+     *
293
+     * @param WPInv_Invoice $invoice  Invoice object.
294
+     * @param array    $posted Posted data.
295
+     */
296
+    protected function ipn_txn_cart( $invoice, $posted ) {
297
+        $this->ipn_txn_web_accept( $invoice, $posted );
298
+    }
299 299
 
300
-	/**
301
-	 * Handles subscription sign ups.
302
-	 *
303
-	 * @param WPInv_Invoice $invoice  Invoice object.
304
-	 * @param array    $posted Posted data.
305
-	 */
306
-	protected function ipn_txn_subscr_signup( $invoice, $posted ) {
300
+    /**
301
+     * Handles subscription sign ups.
302
+     *
303
+     * @param WPInv_Invoice $invoice  Invoice object.
304
+     * @param array    $posted Posted data.
305
+     */
306
+    protected function ipn_txn_subscr_signup( $invoice, $posted ) {
307 307
 
308
-		wpinv_error_log( 'Processing subscription signup', false );
308
+        wpinv_error_log( 'Processing subscription signup', false );
309 309
 
310
-		// Make sure the invoice has a subscription.
311
-		$subscription = getpaid_get_invoice_subscription( $invoice );
310
+        // Make sure the invoice has a subscription.
311
+        $subscription = getpaid_get_invoice_subscription( $invoice );
312 312
 
313
-		if ( empty( $subscription ) ) {
314
-			return wpinv_error_log( 'Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false );
315
-		}
313
+        if ( empty( $subscription ) ) {
314
+            return wpinv_error_log( 'Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false );
315
+        }
316 316
 
317
-		wpinv_error_log( 'Found subscription #' . $subscription->get_id(), false );
317
+        wpinv_error_log( 'Found subscription #' . $subscription->get_id(), false );
318 318
 
319
-		// Validate the IPN.
320
-		$business_email = isset( $posted['business'] ) && is_email( $posted['business'] ) ? trim( $posted['business'] ) : trim( $posted['receiver_email'] );
321
-		$this->validate_ipn_receiver_email( $invoice, $business_email );
322
-		$this->validate_ipn_currency( $invoice, $posted['mc_currency'] );
319
+        // Validate the IPN.
320
+        $business_email = isset( $posted['business'] ) && is_email( $posted['business'] ) ? trim( $posted['business'] ) : trim( $posted['receiver_email'] );
321
+        $this->validate_ipn_receiver_email( $invoice, $business_email );
322
+        $this->validate_ipn_currency( $invoice, $posted['mc_currency'] );
323 323
 
324
-		// Activate the subscription.
325
-		$duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() );
326
-		$subscription->set_date_created( current_time( 'mysql' ) );
327
-		$subscription->set_expiration( date( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) ) );
328
-		$subscription->set_profile_id( sanitize_text_field( $posted['subscr_id'] ) );
329
-		$subscription->activate();
324
+        // Activate the subscription.
325
+        $duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() );
326
+        $subscription->set_date_created( current_time( 'mysql' ) );
327
+        $subscription->set_expiration( date( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) ) );
328
+        $subscription->set_profile_id( sanitize_text_field( $posted['subscr_id'] ) );
329
+        $subscription->activate();
330 330
 
331
-		// Set the transaction id.
332
-		if ( ! empty( $posted['txn_id'] ) ) {
333
-			$invoice->add_note( sprintf( __( 'PayPal Transaction ID: %s', 'invoicing' ), $posted['txn_id'] ), false, false, true );
334
-			$invoice->set_transaction_id( $posted['txn_id'] );
335
-		}
331
+        // Set the transaction id.
332
+        if ( ! empty( $posted['txn_id'] ) ) {
333
+            $invoice->add_note( sprintf( __( 'PayPal Transaction ID: %s', 'invoicing' ), $posted['txn_id'] ), false, false, true );
334
+            $invoice->set_transaction_id( $posted['txn_id'] );
335
+        }
336 336
 
337
-		// Update the payment status.
338
-		$invoice->mark_paid();
337
+        // Update the payment status.
338
+        $invoice->mark_paid();
339 339
 
340
-		$invoice->add_note( sprintf( __( 'PayPal Subscription ID: %s', 'invoicing' ), $posted['subscr_id'] ), false, false, true );
340
+        $invoice->add_note( sprintf( __( 'PayPal Subscription ID: %s', 'invoicing' ), $posted['subscr_id'] ), false, false, true );
341 341
 
342
-		wpinv_error_log( 'Subscription started.', false );
343
-	}
342
+        wpinv_error_log( 'Subscription started.', false );
343
+    }
344 344
 
345
-	/**
346
-	 * Handles subscription renewals.
347
-	 *
348
-	 * @param WPInv_Invoice $invoice  Invoice object.
349
-	 * @param array    $posted Posted data.
350
-	 */
351
-	protected function ipn_txn_subscr_payment( $invoice, $posted ) {
345
+    /**
346
+     * Handles subscription renewals.
347
+     *
348
+     * @param WPInv_Invoice $invoice  Invoice object.
349
+     * @param array    $posted Posted data.
350
+     */
351
+    protected function ipn_txn_subscr_payment( $invoice, $posted ) {
352 352
 
353
-		// Make sure the invoice has a subscription.
354
-		$subscription = getpaid_subscriptions()->get_invoice_subscription( $invoice );
353
+        // Make sure the invoice has a subscription.
354
+        $subscription = getpaid_subscriptions()->get_invoice_subscription( $invoice );
355 355
 
356
-		if ( empty( $subscription ) ) {
357
-			return wpinv_error_log( 'Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false );
358
-		}
356
+        if ( empty( $subscription ) ) {
357
+            return wpinv_error_log( 'Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false );
358
+        }
359 359
 
360
-		wpinv_error_log( 'Found subscription #' . $subscription->get_id(), false );
360
+        wpinv_error_log( 'Found subscription #' . $subscription->get_id(), false );
361 361
 
362
-		// PayPal sends a subscr_payment for the first payment too.
363
-		$date_completed = getpaid_format_date( $invoice->get_date_completed() );
364
-		$date_created   = getpaid_format_date( $invoice->get_date_created() );
365
-		$today_date     = getpaid_format_date( current_time( 'mysql' ) );
366
-		$payment_date   = getpaid_format_date( $posted['payment_date'] );
367
-		$subscribe_date = getpaid_format_date( $subscription->get_date_created() );
368
-		$dates          = array_filter( compact( 'date_completed', 'date_created', 'subscribe_date' ) );
362
+        // PayPal sends a subscr_payment for the first payment too.
363
+        $date_completed = getpaid_format_date( $invoice->get_date_completed() );
364
+        $date_created   = getpaid_format_date( $invoice->get_date_created() );
365
+        $today_date     = getpaid_format_date( current_time( 'mysql' ) );
366
+        $payment_date   = getpaid_format_date( $posted['payment_date'] );
367
+        $subscribe_date = getpaid_format_date( $subscription->get_date_created() );
368
+        $dates          = array_filter( compact( 'date_completed', 'date_created', 'subscribe_date' ) );
369 369
 
370
-		foreach ( $dates as $date ) {
370
+        foreach ( $dates as $date ) {
371 371
 
372
-			if ( $date !== $today_date && $date !== $payment_date ) {
373
-				continue;
374
-			}
372
+            if ( $date !== $today_date && $date !== $payment_date ) {
373
+                continue;
374
+            }
375 375
 
376
-			if ( ! empty( $posted['txn_id'] ) ) {
377
-				$invoice->set_transaction_id( sanitize_text_field( $posted['txn_id'] ) );
378
-				$invoice->add_note( wp_sprintf( __( 'PayPal Transaction ID: %s', 'invoicing' ), sanitize_text_field( $posted['txn_id'] ) ), false, false, true );
379
-			}
376
+            if ( ! empty( $posted['txn_id'] ) ) {
377
+                $invoice->set_transaction_id( sanitize_text_field( $posted['txn_id'] ) );
378
+                $invoice->add_note( wp_sprintf( __( 'PayPal Transaction ID: %s', 'invoicing' ), sanitize_text_field( $posted['txn_id'] ) ), false, false, true );
379
+            }
380 380
 
381
-			return $invoice->mark_paid();
382
-
383
-		}
381
+            return $invoice->mark_paid();
382
+
383
+        }
384 384
 
385
-		wpinv_error_log( 'Processing subscription renewal payment for the invoice ' . $invoice->get_id(), false );
386
-
387
-		// Abort if the payment is already recorded.
388
-		if ( wpinv_get_id_by_transaction_id( $posted['txn_id'] ) ) {
389
-			return wpinv_error_log( 'Aborting, Transaction ' . $posted['txn_id'] . ' has already been processed', false );
390
-		}
391
-
392
-		$args = array(
393
-			'transaction_id' => $posted['txn_id'],
394
-			'gateway'        => $this->id,
395
-		);
396
-
397
-		$invoice = wpinv_get_invoice( $subscription->add_payment( $args ) );
385
+        wpinv_error_log( 'Processing subscription renewal payment for the invoice ' . $invoice->get_id(), false );
386
+
387
+        // Abort if the payment is already recorded.
388
+        if ( wpinv_get_id_by_transaction_id( $posted['txn_id'] ) ) {
389
+            return wpinv_error_log( 'Aborting, Transaction ' . $posted['txn_id'] . ' has already been processed', false );
390
+        }
391
+
392
+        $args = array(
393
+            'transaction_id' => $posted['txn_id'],
394
+            'gateway'        => $this->id,
395
+        );
396
+
397
+        $invoice = wpinv_get_invoice( $subscription->add_payment( $args ) );
398 398
 
399
-		if ( empty( $invoice ) ) {
400
-			return;
401
-		}
399
+        if ( empty( $invoice ) ) {
400
+            return;
401
+        }
402 402
 
403
-		$invoice->add_note( wp_sprintf( __( 'PayPal Transaction ID: %s', 'invoicing' ), $posted['txn_id'] ), false, false, true );
404
-		$invoice->add_note( wp_sprintf( __( 'PayPal Subscription ID: %s', 'invoicing' ), $posted['subscr_id'] ), false, false, true );
403
+        $invoice->add_note( wp_sprintf( __( 'PayPal Transaction ID: %s', 'invoicing' ), $posted['txn_id'] ), false, false, true );
404
+        $invoice->add_note( wp_sprintf( __( 'PayPal Subscription ID: %s', 'invoicing' ), $posted['subscr_id'] ), false, false, true );
405 405
 
406
-		$subscription->renew();
407
-		wpinv_error_log( 'Subscription renewed.', false );
406
+        $subscription->renew();
407
+        wpinv_error_log( 'Subscription renewed.', false );
408 408
 
409
-	}
409
+    }
410 410
 
411
-	/**
412
-	 * Handles subscription cancelations.
413
-	 *
414
-	 * @param WPInv_Invoice $invoice  Invoice object.
415
-	 */
416
-	protected function ipn_txn_subscr_cancel( $invoice ) {
411
+    /**
412
+     * Handles subscription cancelations.
413
+     *
414
+     * @param WPInv_Invoice $invoice  Invoice object.
415
+     */
416
+    protected function ipn_txn_subscr_cancel( $invoice ) {
417 417
 
418
-		// Make sure the invoice has a subscription.
419
-		$subscription = getpaid_subscriptions()->get_invoice_subscription( $invoice );
420
-
421
-		if ( empty( $subscription ) ) {
422
-			return wpinv_error_log( 'Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false );
423
-		}
424
-
425
-		wpinv_error_log( 'Processing subscription cancellation for the invoice ' . $invoice->get_id(), false );
426
-		$subscription->cancel();
427
-		wpinv_error_log( 'Subscription cancelled.', false );
418
+        // Make sure the invoice has a subscription.
419
+        $subscription = getpaid_subscriptions()->get_invoice_subscription( $invoice );
420
+
421
+        if ( empty( $subscription ) ) {
422
+            return wpinv_error_log( 'Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false );
423
+        }
424
+
425
+        wpinv_error_log( 'Processing subscription cancellation for the invoice ' . $invoice->get_id(), false );
426
+        $subscription->cancel();
427
+        wpinv_error_log( 'Subscription cancelled.', false );
428 428
 
429
-	}
429
+    }
430 430
 
431
-	/**
432
-	 * Handles subscription completions.
433
-	 *
434
-	 * @param WPInv_Invoice $invoice  Invoice object.
435
-	 * @param array    $posted Posted data.
436
-	 */
437
-	protected function ipn_txn_subscr_eot( $invoice ) {
431
+    /**
432
+     * Handles subscription completions.
433
+     *
434
+     * @param WPInv_Invoice $invoice  Invoice object.
435
+     * @param array    $posted Posted data.
436
+     */
437
+    protected function ipn_txn_subscr_eot( $invoice ) {
438 438
 
439
-		// Make sure the invoice has a subscription.
440
-		$subscription = getpaid_subscriptions()->get_invoice_subscription( $invoice );
439
+        // Make sure the invoice has a subscription.
440
+        $subscription = getpaid_subscriptions()->get_invoice_subscription( $invoice );
441 441
 
442
-		if ( empty( $subscription ) ) {
443
-			return wpinv_error_log( 'Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false );
444
-		}
442
+        if ( empty( $subscription ) ) {
443
+            return wpinv_error_log( 'Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false );
444
+        }
445 445
 
446
-		wpinv_error_log( 'Processing subscription end of life for the invoice ' . $invoice->get_id(), false );
447
-		$subscription->complete();
448
-		wpinv_error_log( 'Subscription completed.', false );
446
+        wpinv_error_log( 'Processing subscription end of life for the invoice ' . $invoice->get_id(), false );
447
+        $subscription->complete();
448
+        wpinv_error_log( 'Subscription completed.', false );
449 449
 
450
-	}
450
+    }
451 451
 
452
-	/**
453
-	 * Handles subscription fails.
454
-	 *
455
-	 * @param WPInv_Invoice $invoice  Invoice object.
456
-	 * @param array    $posted Posted data.
457
-	 */
458
-	protected function ipn_txn_subscr_failed( $invoice ) {
452
+    /**
453
+     * Handles subscription fails.
454
+     *
455
+     * @param WPInv_Invoice $invoice  Invoice object.
456
+     * @param array    $posted Posted data.
457
+     */
458
+    protected function ipn_txn_subscr_failed( $invoice ) {
459 459
 
460
-		// Make sure the invoice has a subscription.
461
-		$subscription = getpaid_subscriptions()->get_invoice_subscription( $invoice );
460
+        // Make sure the invoice has a subscription.
461
+        $subscription = getpaid_subscriptions()->get_invoice_subscription( $invoice );
462 462
 
463
-		if ( empty( $subscription ) ) {
464
-			return wpinv_error_log( 'Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false );
465
-		}
463
+        if ( empty( $subscription ) ) {
464
+            return wpinv_error_log( 'Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false );
465
+        }
466 466
 
467
-		wpinv_error_log( 'Processing subscription payment failure for the invoice ' . $invoice->get_id(), false );
468
-		$subscription->failing();
469
-		wpinv_error_log( 'Subscription marked as failing.', false );
467
+        wpinv_error_log( 'Processing subscription payment failure for the invoice ' . $invoice->get_id(), false );
468
+        $subscription->failing();
469
+        wpinv_error_log( 'Subscription marked as failing.', false );
470 470
 
471
-	}
471
+    }
472 472
 
473
-	/**
474
-	 * Handles subscription suspensions.
475
-	 *
476
-	 * @param WPInv_Invoice $invoice  Invoice object.
477
-	 * @param array    $posted Posted data.
478
-	 */
479
-	protected function ipn_txn_recurring_payment_suspended_due_to_max_failed_payment( $invoice ) {
473
+    /**
474
+     * Handles subscription suspensions.
475
+     *
476
+     * @param WPInv_Invoice $invoice  Invoice object.
477
+     * @param array    $posted Posted data.
478
+     */
479
+    protected function ipn_txn_recurring_payment_suspended_due_to_max_failed_payment( $invoice ) {
480 480
 
481
-		// Make sure the invoice has a subscription.
482
-		$subscription = getpaid_subscriptions()->get_invoice_subscription( $invoice );
481
+        // Make sure the invoice has a subscription.
482
+        $subscription = getpaid_subscriptions()->get_invoice_subscription( $invoice );
483 483
 
484
-		if ( empty( $subscription ) ) {
485
-			return wpinv_error_log( 'Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false );
486
-		}
487
-
488
-		wpinv_error_log( 'Processing subscription cancellation due to max failed payment for the invoice ' . $invoice->get_id(), false );
489
-		$subscription->cancel();
490
-		wpinv_error_log( 'Subscription cancelled.', false );
491
-	}
484
+        if ( empty( $subscription ) ) {
485
+            return wpinv_error_log( 'Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false );
486
+        }
487
+
488
+        wpinv_error_log( 'Processing subscription cancellation due to max failed payment for the invoice ' . $invoice->get_id(), false );
489
+        $subscription->cancel();
490
+        wpinv_error_log( 'Subscription cancelled.', false );
491
+    }
492 492
 
493 493
 }
Please login to merge, or discard this patch.
Spacing   +159 added lines, -159 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
  * Paypal Payment Gateway IPN handler class.
@@ -31,7 +31,7 @@  discard block
 block discarded – undo
31 31
 	 *
32 32
 	 * @param GetPaid_Paypal_Gateway $gateway
33 33
 	 */
34
-	public function __construct( $gateway ) {
34
+	public function __construct($gateway) {
35 35
 		$this->gateway = $gateway;
36 36
 		$this->verify_ipn();
37 37
 	}
@@ -43,37 +43,37 @@  discard block
 block discarded – undo
43 43
 	 */
44 44
 	public function verify_ipn() {
45 45
 
46
-		wpinv_error_log( 'GetPaid PayPal IPN Handler', false );
46
+		wpinv_error_log('GetPaid PayPal IPN Handler', false);
47 47
 
48 48
 		// Validate the IPN.
49
-		if ( empty( $_POST ) || ! $this->validate_ipn() ) {
50
-			wp_die( 'PayPal IPN Request Failure', 500 );
49
+		if (empty($_POST) || !$this->validate_ipn()) {
50
+			wp_die('PayPal IPN Request Failure', 500);
51 51
 		}
52 52
 
53 53
 		// Process the IPN.
54
-		$posted  = wp_unslash( $_POST );
55
-		$invoice = $this->get_ipn_invoice( $posted );
54
+		$posted  = wp_unslash($_POST);
55
+		$invoice = $this->get_ipn_invoice($posted);
56 56
 
57 57
 		// Abort if it was not paid by our gateway.
58
-		if ( $this->id != $invoice->get_gateway() ) {
59
-			wpinv_error_log( 'Aborting, Invoice was not paid via PayPal', false );
60
-			wp_die( 'Invoice not paid via PayPal', 200 );
58
+		if ($this->id != $invoice->get_gateway()) {
59
+			wpinv_error_log('Aborting, Invoice was not paid via PayPal', false);
60
+			wp_die('Invoice not paid via PayPal', 200);
61 61
 		}
62 62
 
63
-		$posted['payment_status'] = isset( $posted['payment_status'] ) ? sanitize_key( strtolower( $posted['payment_status'] ) ) : '';
64
-		$posted['txn_type']       = sanitize_key( strtolower( $posted['txn_type'] ) );
63
+		$posted['payment_status'] = isset($posted['payment_status']) ? sanitize_key(strtolower($posted['payment_status'])) : '';
64
+		$posted['txn_type']       = sanitize_key(strtolower($posted['txn_type']));
65 65
 
66
-		wpinv_error_log( 'Payment status:' . $posted['payment_status'], false );
67
-		wpinv_error_log( 'IPN Type:' . $posted['txn_type'], false );
66
+		wpinv_error_log('Payment status:' . $posted['payment_status'], false);
67
+		wpinv_error_log('IPN Type:' . $posted['txn_type'], false);
68 68
 
69
-		if ( method_exists( $this, 'ipn_txn_' . $posted['txn_type'] ) ) {
70
-			call_user_func( array( $this, 'ipn_txn_' . $posted['txn_type'] ), $invoice, $posted );
71
-			wpinv_error_log( 'Done processing IPN', false );
72
-			wp_die( 'Processed', 200 );
69
+		if (method_exists($this, 'ipn_txn_' . $posted['txn_type'])) {
70
+			call_user_func(array($this, 'ipn_txn_' . $posted['txn_type']), $invoice, $posted);
71
+			wpinv_error_log('Done processing IPN', false);
72
+			wp_die('Processed', 200);
73 73
 		}
74 74
 
75
-		wpinv_error_log( 'Aborting, Unsupported IPN type:' . $posted['txn_type'], false );
76
-		wp_die( 'Unsupported IPN type', 200 );
75
+		wpinv_error_log('Aborting, Unsupported IPN type:' . $posted['txn_type'], false);
76
+		wp_die('Unsupported IPN type', 200);
77 77
 
78 78
 	}
79 79
 
@@ -83,21 +83,21 @@  discard block
 block discarded – undo
83 83
 	 * @param array $posted
84 84
 	 * @return WPInv_Invoice
85 85
 	 */
86
-	protected function get_ipn_invoice( $posted ) {
86
+	protected function get_ipn_invoice($posted) {
87 87
 
88
-		wpinv_error_log( 'Retrieving PayPal IPN Response Invoice', false );
88
+		wpinv_error_log('Retrieving PayPal IPN Response Invoice', false);
89 89
 
90
-		if ( ! empty( $posted['custom'] ) ) {
91
-			$invoice = new WPInv_Invoice( $posted['custom'] );
90
+		if (!empty($posted['custom'])) {
91
+			$invoice = new WPInv_Invoice($posted['custom']);
92 92
 
93
-			if ( $invoice->exists() ) {
94
-				wpinv_error_log( 'Found invoice #' . $invoice->get_number(), false );
93
+			if ($invoice->exists()) {
94
+				wpinv_error_log('Found invoice #' . $invoice->get_number(), false);
95 95
 				return $invoice;
96 96
 			}
97 97
 		}
98 98
 
99
-		wpinv_error_log( 'Could not retrieve the associated invoice.', false );
100
-		wp_die( 'Could not retrieve the associated invoice.', 200 );
99
+		wpinv_error_log('Could not retrieve the associated invoice.', false);
100
+		wp_die('Could not retrieve the associated invoice.', 200);
101 101
 	}
102 102
 
103 103
 	/**
@@ -105,14 +105,14 @@  discard block
 block discarded – undo
105 105
 	 */
106 106
 	protected function validate_ipn() {
107 107
 
108
-		wpinv_error_log( 'Validating PayPal IPN response', false );
108
+		wpinv_error_log('Validating PayPal IPN response', false);
109 109
 
110 110
 		// Retrieve the associated invoice.
111
-		$posted  = wp_unslash( $_POST );
112
-		$invoice = $this->get_ipn_invoice( $posted );
111
+		$posted  = wp_unslash($_POST);
112
+		$invoice = $this->get_ipn_invoice($posted);
113 113
 
114
-		if ( $this->gateway->is_sandbox( $invoice ) ) {
115
-			wpinv_error_log( $posted, 'Invoice was processed in sandbox hence logging the posted data', false );
114
+		if ($this->gateway->is_sandbox($invoice)) {
115
+			wpinv_error_log($posted, 'Invoice was processed in sandbox hence logging the posted data', false);
116 116
 		}
117 117
 
118 118
 		// Validate the IPN.
@@ -129,25 +129,25 @@  discard block
 block discarded – undo
129 129
 		);
130 130
 
131 131
 		// Post back to get a response.
132
-		$response = wp_safe_remote_post( $this->gateway->is_sandbox( $invoice ) ? 'https://www.sandbox.paypal.com/cgi-bin/webscr' : 'https://www.paypal.com/cgi-bin/webscr', $params );
132
+		$response = wp_safe_remote_post($this->gateway->is_sandbox($invoice) ? 'https://www.sandbox.paypal.com/cgi-bin/webscr' : 'https://www.paypal.com/cgi-bin/webscr', $params);
133 133
 
134 134
 		// Check to see if the request was valid.
135
-		if ( ! is_wp_error( $response ) && $response['response']['code'] < 300 && strstr( $response['body'], 'VERIFIED' ) ) {
136
-			$invoice->add_note( 'Received valid response from PayPal IPN: ' . $response['body'], false, false, true );
137
-			wpinv_error_log( 'Received valid response from PayPal IPN: ' . $response['body'], false );
135
+		if (!is_wp_error($response) && $response['response']['code'] < 300 && strstr($response['body'], 'VERIFIED')) {
136
+			$invoice->add_note('Received valid response from PayPal IPN: ' . $response['body'], false, false, true);
137
+			wpinv_error_log('Received valid response from PayPal IPN: ' . $response['body'], false);
138 138
 			return true;
139 139
 		}
140 140
 
141
-		$invoice->add_note( 'IPN message:' . wp_json_encode( $posted ), false, false, true );
141
+		$invoice->add_note('IPN message:' . wp_json_encode($posted), false, false, true);
142 142
 
143
-		if ( is_wp_error( $response ) ) {
144
-			$invoice->add_note( 'Received invalid response from PayPal IPN: ' . $response->get_error_message(), false, false, true );
145
-			wpinv_error_log( $response->get_error_message(), 'Received invalid response from PayPal IPN' );
143
+		if (is_wp_error($response)) {
144
+			$invoice->add_note('Received invalid response from PayPal IPN: ' . $response->get_error_message(), false, false, true);
145
+			wpinv_error_log($response->get_error_message(), 'Received invalid response from PayPal IPN');
146 146
 			return false;
147 147
 		}
148 148
 
149
-		$invoice->add_note( 'Received invalid response from PayPal IPN: ' . $response['body'], false, false, true );
150
-		wpinv_error_log( $response['body'], 'Received invalid response from PayPal IPN' );
149
+		$invoice->add_note('Received invalid response from PayPal IPN: ' . $response['body'], false, false, true);
150
+		wpinv_error_log($response['body'], 'Received invalid response from PayPal IPN');
151 151
 		return false;
152 152
 
153 153
 	}
@@ -158,18 +158,18 @@  discard block
 block discarded – undo
158 158
 	 * @param WPInv_Invoice $invoice          Invoice object.
159 159
 	 * @param string   $currency currency to validate.
160 160
 	 */
161
-	protected function validate_ipn_currency( $invoice, $currency ) {
161
+	protected function validate_ipn_currency($invoice, $currency) {
162 162
 
163
-		if ( strtolower( $invoice->get_currency() ) !== strtolower( $currency ) ) {
163
+		if (strtolower($invoice->get_currency()) !== strtolower($currency)) {
164 164
 
165 165
 			/* translators: %s: currency code. */
166
-			$invoice->update_status( 'wpi-processing', wp_sprintf( __( 'Validation error: PayPal currencies do not match (code %s).', 'invoicing' ), $currency ) );
167
-			$invoice->add_note( wp_sprintf( __( 'Validation error: PayPal currencies do not match (code %s).', 'invoicing' ), $currency ), false, false, true );
166
+			$invoice->update_status('wpi-processing', wp_sprintf(__('Validation error: PayPal currencies do not match (code %s).', 'invoicing'), $currency));
167
+			$invoice->add_note(wp_sprintf(__('Validation error: PayPal currencies do not match (code %s).', 'invoicing'), $currency), false, false, true);
168 168
 
169
-			wpinv_error_log( "Currencies do not match: {$currency} instead of {$invoice->get_currency()}", 'IPN Error', __FILE__, __LINE__, true );
169
+			wpinv_error_log("Currencies do not match: {$currency} instead of {$invoice->get_currency()}", 'IPN Error', __FILE__, __LINE__, true);
170 170
 		}
171 171
 
172
-		wpinv_error_log( $currency, 'Validated IPN Currency', false );
172
+		wpinv_error_log($currency, 'Validated IPN Currency', false);
173 173
 	}
174 174
 
175 175
 	/**
@@ -178,17 +178,17 @@  discard block
 block discarded – undo
178 178
 	 * @param WPInv_Invoice $invoice          Invoice object.
179 179
 	 * @param float   $amount amount to validate.
180 180
 	 */
181
-	protected function validate_ipn_amount( $invoice, $amount ) {
182
-		if ( number_format( $invoice->get_total(), 2, '.', '' ) !== number_format( $amount, 2, '.', '' ) ) {
181
+	protected function validate_ipn_amount($invoice, $amount) {
182
+		if (number_format($invoice->get_total(), 2, '.', '') !== number_format($amount, 2, '.', '')) {
183 183
 
184 184
 			/* translators: %s: Amount. */
185
-			$invoice->update_status( 'wpi-processing', wp_sprintf( __( 'Validation error: PayPal amounts do not match (gross %s).', 'invoicing' ), $amount ) );
186
-			$invoice->add_note( wp_sprintf( __( 'Validation error: PayPal amounts do not match (gross %s).', 'invoicing' ), $amount ), false, false, true );
185
+			$invoice->update_status('wpi-processing', wp_sprintf(__('Validation error: PayPal amounts do not match (gross %s).', 'invoicing'), $amount));
186
+			$invoice->add_note(wp_sprintf(__('Validation error: PayPal amounts do not match (gross %s).', 'invoicing'), $amount), false, false, true);
187 187
 
188
-			wpinv_error_log( "Amounts do not match: {$amount} instead of {$invoice->get_total()}", 'IPN Error', __FILE__, __LINE__, true );
188
+			wpinv_error_log("Amounts do not match: {$amount} instead of {$invoice->get_total()}", 'IPN Error', __FILE__, __LINE__, true);
189 189
 		}
190 190
 
191
-		wpinv_error_log( $amount, 'Validated IPN Amount', false );
191
+		wpinv_error_log($amount, 'Validated IPN Amount', false);
192 192
 	}
193 193
 
194 194
 	/**
@@ -197,20 +197,20 @@  discard block
 block discarded – undo
197 197
 	 * @param WPInv_Invoice $invoice          Invoice object.
198 198
 	 * @param string   $receiver_email Email to validate.
199 199
 	 */
200
-	protected function validate_ipn_receiver_email( $invoice, $receiver_email ) {
201
-		$paypal_email = $this->gateway->is_sandbox( $invoice ) ? wpinv_get_option( 'paypal_sandbox_email', wpinv_get_option( 'paypal_email', '' ) ) : wpinv_get_option( 'paypal_email', '' );
200
+	protected function validate_ipn_receiver_email($invoice, $receiver_email) {
201
+		$paypal_email = $this->gateway->is_sandbox($invoice) ? wpinv_get_option('paypal_sandbox_email', wpinv_get_option('paypal_email', '')) : wpinv_get_option('paypal_email', '');
202 202
 
203
-		if ( $receiver_email && strcasecmp( trim( $receiver_email ), trim( $paypal_email ) ) !== 0 ) {
204
-			wpinv_record_gateway_error( 'IPN Error', "IPN Response is for another account: {$receiver_email}. Your PayPal email is {$paypal_email}." );
203
+		if ($receiver_email && strcasecmp(trim($receiver_email), trim($paypal_email)) !== 0) {
204
+			wpinv_record_gateway_error('IPN Error', "IPN Response is for another account: {$receiver_email}. Your PayPal email is {$paypal_email}.");
205 205
 
206 206
 			/* translators: %s: email address . */
207
-			$invoice->update_status( 'wpi-processing', wp_sprintf( __( 'Validation error: PayPal IPN response from a different email address (%s). Your PayPal email is %s.', 'invoicing' ), $receiver_email, $paypal_email ) );
208
-			$invoice->add_note( wp_sprintf( __( 'Validation error: PayPal IPN response from a different email address (%s). Your PayPal email is %s.', 'invoicing' ), $receiver_email, $paypal_email ), false, false, true );
207
+			$invoice->update_status('wpi-processing', wp_sprintf(__('Validation error: PayPal IPN response from a different email address (%s). Your PayPal email is %s.', 'invoicing'), $receiver_email, $paypal_email));
208
+			$invoice->add_note(wp_sprintf(__('Validation error: PayPal IPN response from a different email address (%s). Your PayPal email is %s.', 'invoicing'), $receiver_email, $paypal_email), false, false, true);
209 209
 
210
-			return wpinv_error_log( "IPN Response is for another account: {$receiver_email}. Your email PayPal is {$paypal_email}.", 'IPN Error', __FILE__, __LINE__, true );
210
+			return wpinv_error_log("IPN Response is for another account: {$receiver_email}. Your email PayPal is {$paypal_email}.", 'IPN Error', __FILE__, __LINE__, true);
211 211
 		}
212 212
 
213
-		wpinv_error_log( 'Validated PayPal Email', false );
213
+		wpinv_error_log('Validated PayPal Email', false);
214 214
 	}
215 215
 
216 216
 	/**
@@ -219,71 +219,71 @@  discard block
 block discarded – undo
219 219
 	 * @param WPInv_Invoice $invoice  Invoice object.
220 220
 	 * @param array    $posted Posted data.
221 221
 	 */
222
-	protected function ipn_txn_web_accept( $invoice, $posted ) {
222
+	protected function ipn_txn_web_accept($invoice, $posted) {
223 223
 
224 224
 		// Collect payment details
225
-		$payment_status = strtolower( $posted['payment_status'] );
226
-		$business_email = isset( $posted['business'] ) && is_email( $posted['business'] ) ? trim( $posted['business'] ) : trim( $posted['receiver_email'] );
225
+		$payment_status = strtolower($posted['payment_status']);
226
+		$business_email = isset($posted['business']) && is_email($posted['business']) ? trim($posted['business']) : trim($posted['receiver_email']);
227 227
 
228
-		$this->validate_ipn_receiver_email( $invoice, $business_email );
229
-		$this->validate_ipn_currency( $invoice, $posted['mc_currency'] );
228
+		$this->validate_ipn_receiver_email($invoice, $business_email);
229
+		$this->validate_ipn_currency($invoice, $posted['mc_currency']);
230 230
 
231 231
 		// Update the transaction id.
232
-		if ( ! empty( $posted['txn_id'] ) ) {
233
-			$invoice->set_transaction_id( wpinv_clean( $posted['txn_id'] ) );
232
+		if (!empty($posted['txn_id'])) {
233
+			$invoice->set_transaction_id(wpinv_clean($posted['txn_id']));
234 234
 			$invoice->save();
235 235
 		}
236 236
 
237
-		$invoice->add_system_note( __( 'Processing invoice IPN', 'invoicing' ) );
237
+		$invoice->add_system_note(__('Processing invoice IPN', 'invoicing'));
238 238
 
239 239
 		// Process a refund.
240
-		if ( 'refunded' === $payment_status || 'reversed' === $payment_status ) {
240
+		if ('refunded' === $payment_status || 'reversed' === $payment_status) {
241 241
 
242
-			update_post_meta( $invoice->get_id(), 'refunded_remotely', 1 );
242
+			update_post_meta($invoice->get_id(), 'refunded_remotely', 1);
243 243
 
244
-			if ( ! $invoice->is_refunded() ) {
245
-				$invoice->update_status( 'wpi-refunded', $posted['reason_code'] );
244
+			if (!$invoice->is_refunded()) {
245
+				$invoice->update_status('wpi-refunded', $posted['reason_code']);
246 246
 			}
247 247
 
248
-			return wpinv_error_log( $posted['reason_code'], false );
248
+			return wpinv_error_log($posted['reason_code'], false);
249 249
 		}
250 250
 
251 251
 		// Process payments.
252
-		if ( 'completed' === $payment_status ) {
252
+		if ('completed' === $payment_status) {
253 253
 
254
-			if ( $invoice->is_paid() && 'wpi_processing' != $invoice->get_status() ) {
255
-				return wpinv_error_log( 'Aborting, Invoice #' . $invoice->get_number() . ' is already paid.', false );
254
+			if ($invoice->is_paid() && 'wpi_processing' != $invoice->get_status()) {
255
+				return wpinv_error_log('Aborting, Invoice #' . $invoice->get_number() . ' is already paid.', false);
256 256
 			}
257 257
 
258
-			$this->validate_ipn_amount( $invoice, $posted['mc_gross'] );
258
+			$this->validate_ipn_amount($invoice, $posted['mc_gross']);
259 259
 
260 260
 			$note = '';
261 261
 
262
-			if ( ! empty( $posted['mc_fee'] ) ) {
263
-				$note = sprintf( __( 'PayPal Transaction Fee %s.', 'invoicing' ), sanitize_text_field( $posted['mc_fee'] ) );
262
+			if (!empty($posted['mc_fee'])) {
263
+				$note = sprintf(__('PayPal Transaction Fee %s.', 'invoicing'), sanitize_text_field($posted['mc_fee']));
264 264
 			}
265 265
 
266
-			if ( ! empty( $posted['payer_status'] ) ) {
267
-				$note = ' ' . sprintf( __( 'Buyer status %s.', 'invoicing' ), sanitize_text_field( $posted['payer_status'] ) );
266
+			if (!empty($posted['payer_status'])) {
267
+				$note = ' ' . sprintf(__('Buyer status %s.', 'invoicing'), sanitize_text_field($posted['payer_status']));
268 268
 			}
269 269
 
270
-			$invoice->mark_paid( ( ! empty( $posted['txn_id'] ) ? sanitize_text_field( $posted['txn_id'] ) : '' ), trim( $note ) );
271
-			return wpinv_error_log( 'Invoice marked as paid.', false );
270
+			$invoice->mark_paid((!empty($posted['txn_id']) ? sanitize_text_field($posted['txn_id']) : ''), trim($note));
271
+			return wpinv_error_log('Invoice marked as paid.', false);
272 272
 
273 273
 		}
274 274
 
275 275
 		// Pending payments.
276
-		if ( 'pending' === $payment_status ) {
276
+		if ('pending' === $payment_status) {
277 277
 
278 278
 			/* translators: %s: pending reason. */
279
-			$invoice->update_status( 'wpi-onhold', wp_sprintf( __( 'Payment pending (%s).', 'invoicing' ), $posted['pending_reason'] ) );
280
-			$invoice->add_note( wp_sprintf( __( 'Payment pending (%s).', 'invoicing' ), $posted['pending_reason'] ), false, false, true );
279
+			$invoice->update_status('wpi-onhold', wp_sprintf(__('Payment pending (%s).', 'invoicing'), $posted['pending_reason']));
280
+			$invoice->add_note(wp_sprintf(__('Payment pending (%s).', 'invoicing'), $posted['pending_reason']), false, false, true);
281 281
 
282
-			return wpinv_error_log( 'Invoice marked as "payment held".', false );
282
+			return wpinv_error_log('Invoice marked as "payment held".', false);
283 283
 		}
284 284
 
285 285
 		/* translators: %s: payment status. */
286
-		$invoice->update_status( 'wpi-failed', sprintf( __( 'Payment %s via IPN.', 'invoicing' ), sanitize_text_field( $posted['payment_status'] ) ) );
286
+		$invoice->update_status('wpi-failed', sprintf(__('Payment %s via IPN.', 'invoicing'), sanitize_text_field($posted['payment_status'])));
287 287
 
288 288
 	}
289 289
 
@@ -293,8 +293,8 @@  discard block
 block discarded – undo
293 293
 	 * @param WPInv_Invoice $invoice  Invoice object.
294 294
 	 * @param array    $posted Posted data.
295 295
 	 */
296
-	protected function ipn_txn_cart( $invoice, $posted ) {
297
-		$this->ipn_txn_web_accept( $invoice, $posted );
296
+	protected function ipn_txn_cart($invoice, $posted) {
297
+		$this->ipn_txn_web_accept($invoice, $posted);
298 298
 	}
299 299
 
300 300
 	/**
@@ -303,43 +303,43 @@  discard block
 block discarded – undo
303 303
 	 * @param WPInv_Invoice $invoice  Invoice object.
304 304
 	 * @param array    $posted Posted data.
305 305
 	 */
306
-	protected function ipn_txn_subscr_signup( $invoice, $posted ) {
306
+	protected function ipn_txn_subscr_signup($invoice, $posted) {
307 307
 
308
-		wpinv_error_log( 'Processing subscription signup', false );
308
+		wpinv_error_log('Processing subscription signup', false);
309 309
 
310 310
 		// Make sure the invoice has a subscription.
311
-		$subscription = getpaid_get_invoice_subscription( $invoice );
311
+		$subscription = getpaid_get_invoice_subscription($invoice);
312 312
 
313
-		if ( empty( $subscription ) ) {
314
-			return wpinv_error_log( 'Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false );
313
+		if (empty($subscription)) {
314
+			return wpinv_error_log('Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false);
315 315
 		}
316 316
 
317
-		wpinv_error_log( 'Found subscription #' . $subscription->get_id(), false );
317
+		wpinv_error_log('Found subscription #' . $subscription->get_id(), false);
318 318
 
319 319
 		// Validate the IPN.
320
-		$business_email = isset( $posted['business'] ) && is_email( $posted['business'] ) ? trim( $posted['business'] ) : trim( $posted['receiver_email'] );
321
-		$this->validate_ipn_receiver_email( $invoice, $business_email );
322
-		$this->validate_ipn_currency( $invoice, $posted['mc_currency'] );
320
+		$business_email = isset($posted['business']) && is_email($posted['business']) ? trim($posted['business']) : trim($posted['receiver_email']);
321
+		$this->validate_ipn_receiver_email($invoice, $business_email);
322
+		$this->validate_ipn_currency($invoice, $posted['mc_currency']);
323 323
 
324 324
 		// Activate the subscription.
325
-		$duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() );
326
-		$subscription->set_date_created( current_time( 'mysql' ) );
327
-		$subscription->set_expiration( date( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) ) );
328
-		$subscription->set_profile_id( sanitize_text_field( $posted['subscr_id'] ) );
325
+		$duration = strtotime($subscription->get_expiration()) - strtotime($subscription->get_date_created());
326
+		$subscription->set_date_created(current_time('mysql'));
327
+		$subscription->set_expiration(date('Y-m-d H:i:s', (current_time('timestamp') + $duration)));
328
+		$subscription->set_profile_id(sanitize_text_field($posted['subscr_id']));
329 329
 		$subscription->activate();
330 330
 
331 331
 		// Set the transaction id.
332
-		if ( ! empty( $posted['txn_id'] ) ) {
333
-			$invoice->add_note( sprintf( __( 'PayPal Transaction ID: %s', 'invoicing' ), $posted['txn_id'] ), false, false, true );
334
-			$invoice->set_transaction_id( $posted['txn_id'] );
332
+		if (!empty($posted['txn_id'])) {
333
+			$invoice->add_note(sprintf(__('PayPal Transaction ID: %s', 'invoicing'), $posted['txn_id']), false, false, true);
334
+			$invoice->set_transaction_id($posted['txn_id']);
335 335
 		}
336 336
 
337 337
 		// Update the payment status.
338 338
 		$invoice->mark_paid();
339 339
 
340
-		$invoice->add_note( sprintf( __( 'PayPal Subscription ID: %s', 'invoicing' ), $posted['subscr_id'] ), false, false, true );
340
+		$invoice->add_note(sprintf(__('PayPal Subscription ID: %s', 'invoicing'), $posted['subscr_id']), false, false, true);
341 341
 
342
-		wpinv_error_log( 'Subscription started.', false );
342
+		wpinv_error_log('Subscription started.', false);
343 343
 	}
344 344
 
345 345
 	/**
@@ -348,45 +348,45 @@  discard block
 block discarded – undo
348 348
 	 * @param WPInv_Invoice $invoice  Invoice object.
349 349
 	 * @param array    $posted Posted data.
350 350
 	 */
351
-	protected function ipn_txn_subscr_payment( $invoice, $posted ) {
351
+	protected function ipn_txn_subscr_payment($invoice, $posted) {
352 352
 
353 353
 		// Make sure the invoice has a subscription.
354
-		$subscription = getpaid_subscriptions()->get_invoice_subscription( $invoice );
354
+		$subscription = getpaid_subscriptions()->get_invoice_subscription($invoice);
355 355
 
356
-		if ( empty( $subscription ) ) {
357
-			return wpinv_error_log( 'Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false );
356
+		if (empty($subscription)) {
357
+			return wpinv_error_log('Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false);
358 358
 		}
359 359
 
360
-		wpinv_error_log( 'Found subscription #' . $subscription->get_id(), false );
360
+		wpinv_error_log('Found subscription #' . $subscription->get_id(), false);
361 361
 
362 362
 		// PayPal sends a subscr_payment for the first payment too.
363
-		$date_completed = getpaid_format_date( $invoice->get_date_completed() );
364
-		$date_created   = getpaid_format_date( $invoice->get_date_created() );
365
-		$today_date     = getpaid_format_date( current_time( 'mysql' ) );
366
-		$payment_date   = getpaid_format_date( $posted['payment_date'] );
367
-		$subscribe_date = getpaid_format_date( $subscription->get_date_created() );
368
-		$dates          = array_filter( compact( 'date_completed', 'date_created', 'subscribe_date' ) );
363
+		$date_completed = getpaid_format_date($invoice->get_date_completed());
364
+		$date_created   = getpaid_format_date($invoice->get_date_created());
365
+		$today_date     = getpaid_format_date(current_time('mysql'));
366
+		$payment_date   = getpaid_format_date($posted['payment_date']);
367
+		$subscribe_date = getpaid_format_date($subscription->get_date_created());
368
+		$dates          = array_filter(compact('date_completed', 'date_created', 'subscribe_date'));
369 369
 
370
-		foreach ( $dates as $date ) {
370
+		foreach ($dates as $date) {
371 371
 
372
-			if ( $date !== $today_date && $date !== $payment_date ) {
372
+			if ($date !== $today_date && $date !== $payment_date) {
373 373
 				continue;
374 374
 			}
375 375
 
376
-			if ( ! empty( $posted['txn_id'] ) ) {
377
-				$invoice->set_transaction_id( sanitize_text_field( $posted['txn_id'] ) );
378
-				$invoice->add_note( wp_sprintf( __( 'PayPal Transaction ID: %s', 'invoicing' ), sanitize_text_field( $posted['txn_id'] ) ), false, false, true );
376
+			if (!empty($posted['txn_id'])) {
377
+				$invoice->set_transaction_id(sanitize_text_field($posted['txn_id']));
378
+				$invoice->add_note(wp_sprintf(__('PayPal Transaction ID: %s', 'invoicing'), sanitize_text_field($posted['txn_id'])), false, false, true);
379 379
 			}
380 380
 
381 381
 			return $invoice->mark_paid();
382 382
 
383 383
 		}
384 384
 
385
-		wpinv_error_log( 'Processing subscription renewal payment for the invoice ' . $invoice->get_id(), false );
385
+		wpinv_error_log('Processing subscription renewal payment for the invoice ' . $invoice->get_id(), false);
386 386
 
387 387
 		// Abort if the payment is already recorded.
388
-		if ( wpinv_get_id_by_transaction_id( $posted['txn_id'] ) ) {
389
-			return wpinv_error_log( 'Aborting, Transaction ' . $posted['txn_id'] . ' has already been processed', false );
388
+		if (wpinv_get_id_by_transaction_id($posted['txn_id'])) {
389
+			return wpinv_error_log('Aborting, Transaction ' . $posted['txn_id'] . ' has already been processed', false);
390 390
 		}
391 391
 
392 392
 		$args = array(
@@ -394,17 +394,17 @@  discard block
 block discarded – undo
394 394
 			'gateway'        => $this->id,
395 395
 		);
396 396
 
397
-		$invoice = wpinv_get_invoice( $subscription->add_payment( $args ) );
397
+		$invoice = wpinv_get_invoice($subscription->add_payment($args));
398 398
 
399
-		if ( empty( $invoice ) ) {
399
+		if (empty($invoice)) {
400 400
 			return;
401 401
 		}
402 402
 
403
-		$invoice->add_note( wp_sprintf( __( 'PayPal Transaction ID: %s', 'invoicing' ), $posted['txn_id'] ), false, false, true );
404
-		$invoice->add_note( wp_sprintf( __( 'PayPal Subscription ID: %s', 'invoicing' ), $posted['subscr_id'] ), false, false, true );
403
+		$invoice->add_note(wp_sprintf(__('PayPal Transaction ID: %s', 'invoicing'), $posted['txn_id']), false, false, true);
404
+		$invoice->add_note(wp_sprintf(__('PayPal Subscription ID: %s', 'invoicing'), $posted['subscr_id']), false, false, true);
405 405
 
406 406
 		$subscription->renew();
407
-		wpinv_error_log( 'Subscription renewed.', false );
407
+		wpinv_error_log('Subscription renewed.', false);
408 408
 
409 409
 	}
410 410
 
@@ -413,18 +413,18 @@  discard block
 block discarded – undo
413 413
 	 *
414 414
 	 * @param WPInv_Invoice $invoice  Invoice object.
415 415
 	 */
416
-	protected function ipn_txn_subscr_cancel( $invoice ) {
416
+	protected function ipn_txn_subscr_cancel($invoice) {
417 417
 
418 418
 		// Make sure the invoice has a subscription.
419
-		$subscription = getpaid_subscriptions()->get_invoice_subscription( $invoice );
419
+		$subscription = getpaid_subscriptions()->get_invoice_subscription($invoice);
420 420
 
421
-		if ( empty( $subscription ) ) {
422
-			return wpinv_error_log( 'Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false );
421
+		if (empty($subscription)) {
422
+			return wpinv_error_log('Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false);
423 423
 		}
424 424
 
425
-		wpinv_error_log( 'Processing subscription cancellation for the invoice ' . $invoice->get_id(), false );
425
+		wpinv_error_log('Processing subscription cancellation for the invoice ' . $invoice->get_id(), false);
426 426
 		$subscription->cancel();
427
-		wpinv_error_log( 'Subscription cancelled.', false );
427
+		wpinv_error_log('Subscription cancelled.', false);
428 428
 
429 429
 	}
430 430
 
@@ -434,18 +434,18 @@  discard block
 block discarded – undo
434 434
 	 * @param WPInv_Invoice $invoice  Invoice object.
435 435
 	 * @param array    $posted Posted data.
436 436
 	 */
437
-	protected function ipn_txn_subscr_eot( $invoice ) {
437
+	protected function ipn_txn_subscr_eot($invoice) {
438 438
 
439 439
 		// Make sure the invoice has a subscription.
440
-		$subscription = getpaid_subscriptions()->get_invoice_subscription( $invoice );
440
+		$subscription = getpaid_subscriptions()->get_invoice_subscription($invoice);
441 441
 
442
-		if ( empty( $subscription ) ) {
443
-			return wpinv_error_log( 'Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false );
442
+		if (empty($subscription)) {
443
+			return wpinv_error_log('Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false);
444 444
 		}
445 445
 
446
-		wpinv_error_log( 'Processing subscription end of life for the invoice ' . $invoice->get_id(), false );
446
+		wpinv_error_log('Processing subscription end of life for the invoice ' . $invoice->get_id(), false);
447 447
 		$subscription->complete();
448
-		wpinv_error_log( 'Subscription completed.', false );
448
+		wpinv_error_log('Subscription completed.', false);
449 449
 
450 450
 	}
451 451
 
@@ -455,18 +455,18 @@  discard block
 block discarded – undo
455 455
 	 * @param WPInv_Invoice $invoice  Invoice object.
456 456
 	 * @param array    $posted Posted data.
457 457
 	 */
458
-	protected function ipn_txn_subscr_failed( $invoice ) {
458
+	protected function ipn_txn_subscr_failed($invoice) {
459 459
 
460 460
 		// Make sure the invoice has a subscription.
461
-		$subscription = getpaid_subscriptions()->get_invoice_subscription( $invoice );
461
+		$subscription = getpaid_subscriptions()->get_invoice_subscription($invoice);
462 462
 
463
-		if ( empty( $subscription ) ) {
464
-			return wpinv_error_log( 'Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false );
463
+		if (empty($subscription)) {
464
+			return wpinv_error_log('Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false);
465 465
 		}
466 466
 
467
-		wpinv_error_log( 'Processing subscription payment failure for the invoice ' . $invoice->get_id(), false );
467
+		wpinv_error_log('Processing subscription payment failure for the invoice ' . $invoice->get_id(), false);
468 468
 		$subscription->failing();
469
-		wpinv_error_log( 'Subscription marked as failing.', false );
469
+		wpinv_error_log('Subscription marked as failing.', false);
470 470
 
471 471
 	}
472 472
 
@@ -476,18 +476,18 @@  discard block
 block discarded – undo
476 476
 	 * @param WPInv_Invoice $invoice  Invoice object.
477 477
 	 * @param array    $posted Posted data.
478 478
 	 */
479
-	protected function ipn_txn_recurring_payment_suspended_due_to_max_failed_payment( $invoice ) {
479
+	protected function ipn_txn_recurring_payment_suspended_due_to_max_failed_payment($invoice) {
480 480
 
481 481
 		// Make sure the invoice has a subscription.
482
-		$subscription = getpaid_subscriptions()->get_invoice_subscription( $invoice );
482
+		$subscription = getpaid_subscriptions()->get_invoice_subscription($invoice);
483 483
 
484
-		if ( empty( $subscription ) ) {
485
-			return wpinv_error_log( 'Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false );
484
+		if (empty($subscription)) {
485
+			return wpinv_error_log('Aborting, Subscription for the invoice ' . $invoice->get_id() . ' not found', false);
486 486
 		}
487 487
 
488
-		wpinv_error_log( 'Processing subscription cancellation due to max failed payment for the invoice ' . $invoice->get_id(), false );
488
+		wpinv_error_log('Processing subscription cancellation due to max failed payment for the invoice ' . $invoice->get_id(), false);
489 489
 		$subscription->cancel();
490
-		wpinv_error_log( 'Subscription cancelled.', false );
490
+		wpinv_error_log('Subscription cancelled.', false);
491 491
 	}
492 492
 
493 493
 }
Please login to merge, or discard this patch.
includes/gateways/class-getpaid-paypal-gateway.php 2 patches
Indentation   +404 added lines, -404 removed lines patch added patch discarded remove patch
@@ -13,97 +13,97 @@  discard block
 block discarded – undo
13 13
 class GetPaid_Paypal_Gateway extends GetPaid_Payment_Gateway {
14 14
 
15 15
     /**
16
-	 * Payment method id.
17
-	 *
18
-	 * @var string
19
-	 */
16
+     * Payment method id.
17
+     *
18
+     * @var string
19
+     */
20 20
     public $id = 'paypal';
21 21
 
22 22
     /**
23
-	 * An array of features that this gateway supports.
24
-	 *
25
-	 * @var array
26
-	 */
23
+     * An array of features that this gateway supports.
24
+     *
25
+     * @var array
26
+     */
27 27
     protected $supports = array( 'subscription', 'sandbox', 'single_subscription_group' );
28 28
 
29 29
     /**
30
-	 * Payment method order.
31
-	 *
32
-	 * @var int
33
-	 */
30
+     * Payment method order.
31
+     *
32
+     * @var int
33
+     */
34 34
     public $order = 1;
35 35
 
36 36
     /**
37
-	 * Stores line items to send to PayPal.
38
-	 *
39
-	 * @var array
40
-	 */
37
+     * Stores line items to send to PayPal.
38
+     *
39
+     * @var array
40
+     */
41 41
     protected $line_items = array();
42 42
 
43 43
     /**
44
-	 * Endpoint for requests from PayPal.
45
-	 *
46
-	 * @var string
47
-	 */
48
-	protected $notify_url;
49
-
50
-	/**
51
-	 * Endpoint for requests to PayPal.
52
-	 *
53
-	 * @var string
54
-	 */
44
+     * Endpoint for requests from PayPal.
45
+     *
46
+     * @var string
47
+     */
48
+    protected $notify_url;
49
+
50
+    /**
51
+     * Endpoint for requests to PayPal.
52
+     *
53
+     * @var string
54
+     */
55 55
     protected $endpoint;
56 56
 
57 57
     /**
58
-	 * Currencies this gateway is allowed for.
59
-	 *
60
-	 * @var array
61
-	 */
62
-	public $currencies = array( 'AUD', 'BRL', 'CAD', 'MXN', 'NZD', 'HKD', 'SGD', 'USD', 'EUR', 'JPY', 'TRY', 'NOK', 'CZK', 'DKK', 'HUF', 'ILS', 'MYR', 'PHP', 'PLN', 'SEK', 'CHF', 'TWD', 'THB', 'GBP', 'RMB', 'RUB', 'INR' );
58
+     * Currencies this gateway is allowed for.
59
+     *
60
+     * @var array
61
+     */
62
+    public $currencies = array( 'AUD', 'BRL', 'CAD', 'MXN', 'NZD', 'HKD', 'SGD', 'USD', 'EUR', 'JPY', 'TRY', 'NOK', 'CZK', 'DKK', 'HUF', 'ILS', 'MYR', 'PHP', 'PLN', 'SEK', 'CHF', 'TWD', 'THB', 'GBP', 'RMB', 'RUB', 'INR' );
63 63
 
64 64
     /**
65
-	 * URL to view a transaction.
66
-	 *
67
-	 * @var string
68
-	 */
65
+     * URL to view a transaction.
66
+     *
67
+     * @var string
68
+     */
69 69
     public $view_transaction_url = 'https://www.{sandbox}paypal.com/activity/payment/%s';
70 70
 
71 71
     /**
72
-	 * URL to view a subscription.
73
-	 *
74
-	 * @var string
75
-	 */
76
-	public $view_subscription_url = 'https://www.{sandbox}paypal.com/cgi-bin/webscr?cmd=_profile-recurring-payments&encrypted_profile_id=%s';
72
+     * URL to view a subscription.
73
+     *
74
+     * @var string
75
+     */
76
+    public $view_subscription_url = 'https://www.{sandbox}paypal.com/cgi-bin/webscr?cmd=_profile-recurring-payments&encrypted_profile_id=%s';
77 77
 
78 78
     /**
79
-	 * Class constructor.
80
-	 */
81
-	public function __construct() {
79
+     * Class constructor.
80
+     */
81
+    public function __construct() {
82 82
 
83 83
         $this->title                = __( 'PayPal Standard', 'invoicing' );
84 84
         $this->method_title         = __( 'PayPal Standard', 'invoicing' );
85 85
         $this->checkout_button_text = __( 'Proceed to PayPal', 'invoicing' );
86 86
         $this->notify_url           = wpinv_get_ipn_url( $this->id );
87 87
 
88
-		add_filter( 'wpinv_subscription_cancel_url', array( $this, 'filter_cancel_subscription_url' ), 10, 2 );
89
-		add_filter( 'getpaid_paypal_args', array( $this, 'process_subscription' ), 10, 2 );
88
+        add_filter( 'wpinv_subscription_cancel_url', array( $this, 'filter_cancel_subscription_url' ), 10, 2 );
89
+        add_filter( 'getpaid_paypal_args', array( $this, 'process_subscription' ), 10, 2 );
90 90
         add_filter( 'getpaid_paypal_sandbox_notice', array( $this, 'sandbox_notice' ) );
91
-		add_filter( 'getpaid_get_paypal_connect_url', array( $this, 'maybe_get_connect_url' ), 10, 2 );
92
-		add_action( 'getpaid_authenticated_admin_action_connect_paypal', array( $this, 'connect_paypal' ) );
93
-		add_action( 'wpinv_paypal_connect', array( $this, 'display_connect_buttons' ) );
94
-		parent::__construct();
91
+        add_filter( 'getpaid_get_paypal_connect_url', array( $this, 'maybe_get_connect_url' ), 10, 2 );
92
+        add_action( 'getpaid_authenticated_admin_action_connect_paypal', array( $this, 'connect_paypal' ) );
93
+        add_action( 'wpinv_paypal_connect', array( $this, 'display_connect_buttons' ) );
94
+        parent::__construct();
95 95
     }
96 96
 
97 97
     /**
98
-	 * Process Payment.
99
-	 *
100
-	 *
101
-	 * @param WPInv_Invoice $invoice Invoice.
102
-	 * @param array $submission_data Posted checkout fields.
103
-	 * @param GetPaid_Payment_Form_Submission $submission Checkout submission.
104
-	 * @return array
105
-	 */
106
-	public function process_payment( $invoice, $submission_data, $submission ) {
98
+     * Process Payment.
99
+     *
100
+     *
101
+     * @param WPInv_Invoice $invoice Invoice.
102
+     * @param array $submission_data Posted checkout fields.
103
+     * @param GetPaid_Payment_Form_Submission $submission Checkout submission.
104
+     * @return array
105
+     */
106
+    public function process_payment( $invoice, $submission_data, $submission ) {
107 107
 
108 108
         // Get redirect url.
109 109
         $paypal_redirect = $this->get_request_url( $invoice );
@@ -126,15 +126,15 @@  discard block
 block discarded – undo
126 126
     }
127 127
 
128 128
     /**
129
-	 * Get the PayPal request URL for an invoice.
130
-	 *
131
-	 * @param  WPInv_Invoice $invoice Invoice object.
132
-	 * @return string
133
-	 */
134
-	public function get_request_url( $invoice ) {
129
+     * Get the PayPal request URL for an invoice.
130
+     *
131
+     * @param  WPInv_Invoice $invoice Invoice object.
132
+     * @return string
133
+     */
134
+    public function get_request_url( $invoice ) {
135 135
 
136 136
         // Endpoint for this request
137
-		$this->endpoint    = $this->is_sandbox( $invoice ) ? 'https://www.sandbox.paypal.com/cgi-bin/webscr?test_ipn=1&' : 'https://www.paypal.com/cgi-bin/webscr?';
137
+        $this->endpoint    = $this->is_sandbox( $invoice ) ? 'https://www.sandbox.paypal.com/cgi-bin/webscr?test_ipn=1&' : 'https://www.paypal.com/cgi-bin/webscr?';
138 138
 
139 139
         // Retrieve paypal args.
140 140
         $paypal_args       = map_deep( $this->get_paypal_args( $invoice ), 'urlencode' );
@@ -147,45 +147,45 @@  discard block
 block discarded – undo
147 147
 
148 148
         return add_query_arg( $paypal_args, $this->endpoint );
149 149
 
150
-	}
150
+    }
151 151
 
152 152
     /**
153
-	 * Get PayPal Args for passing to PP.
154
-	 *
155
-	 * @param  WPInv_Invoice $invoice Invoice object.
156
-	 * @return array
157
-	 */
158
-	protected function get_paypal_args( $invoice ) {
153
+     * Get PayPal Args for passing to PP.
154
+     *
155
+     * @param  WPInv_Invoice $invoice Invoice object.
156
+     * @return array
157
+     */
158
+    protected function get_paypal_args( $invoice ) {
159 159
 
160 160
         // Whether or not to send the line items as one item.
161
-		$force_one_line_item = apply_filters( 'getpaid_paypal_force_one_line_item', true, $invoice );
162
-
163
-		if ( $invoice->is_recurring() || ( wpinv_use_taxes() && wpinv_prices_include_tax() ) ) {
164
-			$force_one_line_item = true;
165
-		}
166
-
167
-		$paypal_args = apply_filters(
168
-			'getpaid_paypal_args',
169
-			array_merge(
170
-				$this->get_transaction_args( $invoice ),
171
-				$this->get_line_item_args( $invoice, $force_one_line_item )
172
-			),
173
-			$invoice
174
-		);
175
-
176
-		return $this->fix_request_length( $invoice, $paypal_args );
161
+        $force_one_line_item = apply_filters( 'getpaid_paypal_force_one_line_item', true, $invoice );
162
+
163
+        if ( $invoice->is_recurring() || ( wpinv_use_taxes() && wpinv_prices_include_tax() ) ) {
164
+            $force_one_line_item = true;
165
+        }
166
+
167
+        $paypal_args = apply_filters(
168
+            'getpaid_paypal_args',
169
+            array_merge(
170
+                $this->get_transaction_args( $invoice ),
171
+                $this->get_line_item_args( $invoice, $force_one_line_item )
172
+            ),
173
+            $invoice
174
+        );
175
+
176
+        return $this->fix_request_length( $invoice, $paypal_args );
177 177
     }
178 178
 
179 179
     /**
180
-	 * Get transaction args for paypal request.
181
-	 *
182
-	 * @param WPInv_Invoice $invoice Invoice object.
183
-	 * @return array
184
-	 */
185
-	protected function get_transaction_args( $invoice ) {
186
-
187
-		$email = $this->is_sandbox( $invoice ) ? wpinv_get_option( 'paypal_sandbox_email', wpinv_get_option( 'paypal_email', '' ) ) : wpinv_get_option( 'paypal_email', '' );
188
-		return array(
180
+     * Get transaction args for paypal request.
181
+     *
182
+     * @param WPInv_Invoice $invoice Invoice object.
183
+     * @return array
184
+     */
185
+    protected function get_transaction_args( $invoice ) {
186
+
187
+        $email = $this->is_sandbox( $invoice ) ? wpinv_get_option( 'paypal_sandbox_email', wpinv_get_option( 'paypal_email', '' ) ) : wpinv_get_option( 'paypal_email', '' );
188
+        return array(
189 189
             'cmd'           => '_cart',
190 190
             'business'      => $email,
191 191
             'no_shipping'   => '1',
@@ -210,16 +210,16 @@  discard block
 block discarded – undo
210 210
     }
211 211
 
212 212
     /**
213
-	 * Get line item args for paypal request.
214
-	 *
215
-	 * @param  WPInv_Invoice $invoice Invoice object.
216
-	 * @param  bool     $force_one_line_item Create only one item for this invoice.
217
-	 * @return array
218
-	 */
219
-	protected function get_line_item_args( $invoice, $force_one_line_item = false ) {
213
+     * Get line item args for paypal request.
214
+     *
215
+     * @param  WPInv_Invoice $invoice Invoice object.
216
+     * @param  bool     $force_one_line_item Create only one item for this invoice.
217
+     * @return array
218
+     */
219
+    protected function get_line_item_args( $invoice, $force_one_line_item = false ) {
220 220
 
221 221
         // Maybe send invoice as a single item.
222
-		if ( $force_one_line_item ) {
222
+        if ( $force_one_line_item ) {
223 223
             return $this->get_line_item_args_single_item( $invoice );
224 224
         }
225 225
 
@@ -239,134 +239,134 @@  discard block
 block discarded – undo
239 239
             $line_item_args['discount_amount_cart'] = wpinv_sanitize_amount( (float) $invoice->get_total_discount(), 2 );
240 240
         }
241 241
 
242
-		return array_merge( $line_item_args, $this->get_line_items() );
242
+        return array_merge( $line_item_args, $this->get_line_items() );
243 243
 
244 244
     }
245 245
 
246 246
     /**
247
-	 * Get line item args for paypal request as a single line item.
248
-	 *
249
-	 * @param  WPInv_Invoice $invoice Invoice object.
250
-	 * @return array
251
-	 */
252
-	protected function get_line_item_args_single_item( $invoice ) {
253
-		$this->delete_line_items();
247
+     * Get line item args for paypal request as a single line item.
248
+     *
249
+     * @param  WPInv_Invoice $invoice Invoice object.
250
+     * @return array
251
+     */
252
+    protected function get_line_item_args_single_item( $invoice ) {
253
+        $this->delete_line_items();
254 254
 
255 255
         $item_name = wp_sprintf( __( 'Invoice %s', 'invoicing' ), $invoice->get_number() );
256
-		$this->add_line_item( $item_name, 1, wpinv_round_amount( (float) $invoice->get_total(), 2, true ), $invoice->get_id() );
256
+        $this->add_line_item( $item_name, 1, wpinv_round_amount( (float) $invoice->get_total(), 2, true ), $invoice->get_id() );
257 257
 
258
-		return $this->get_line_items();
258
+        return $this->get_line_items();
259 259
     }
260 260
 
261 261
     /**
262
-	 * Return all line items.
263
-	 */
264
-	protected function get_line_items() {
265
-		return $this->line_items;
266
-	}
262
+     * Return all line items.
263
+     */
264
+    protected function get_line_items() {
265
+        return $this->line_items;
266
+    }
267 267
 
268 268
     /**
269
-	 * Remove all line items.
270
-	 */
271
-	protected function delete_line_items() {
272
-		$this->line_items = array();
269
+     * Remove all line items.
270
+     */
271
+    protected function delete_line_items() {
272
+        $this->line_items = array();
273 273
     }
274 274
 
275 275
     /**
276
-	 * Prepare line items to send to paypal.
277
-	 *
278
-	 * @param  WPInv_Invoice $invoice Invoice object.
279
-	 */
280
-	protected function prepare_line_items( $invoice ) {
281
-		$this->delete_line_items();
282
-
283
-		// Items.
284
-		foreach ( $invoice->get_items() as $item ) {
285
-			$amount   = $item->get_price();
286
-			$quantity = $invoice->get_template() == 'amount' ? 1 : $item->get_quantity();
287
-			$this->add_line_item( $item->get_raw_name(), $quantity, $amount, $item->get_id() );
276
+     * Prepare line items to send to paypal.
277
+     *
278
+     * @param  WPInv_Invoice $invoice Invoice object.
279
+     */
280
+    protected function prepare_line_items( $invoice ) {
281
+        $this->delete_line_items();
282
+
283
+        // Items.
284
+        foreach ( $invoice->get_items() as $item ) {
285
+            $amount   = $item->get_price();
286
+            $quantity = $invoice->get_template() == 'amount' ? 1 : $item->get_quantity();
287
+            $this->add_line_item( $item->get_raw_name(), $quantity, $amount, $item->get_id() );
288 288
         }
289 289
 
290 290
         // Fees.
291
-		foreach ( $invoice->get_fees() as $fee => $data ) {
291
+        foreach ( $invoice->get_fees() as $fee => $data ) {
292 292
             $this->add_line_item( $fee, 1, wpinv_sanitize_amount( $data['initial_fee'] ) );
293 293
         }
294 294
 
295 295
     }
296 296
 
297 297
     /**
298
-	 * Add PayPal Line Item.
299
-	 *
300
-	 * @param  string $item_name Item name.
301
-	 * @param  float    $quantity Item quantity.
302
-	 * @param  float  $amount Amount.
303
-	 * @param  string $item_number Item number.
304
-	 */
305
-	protected function add_line_item( $item_name, $quantity = 1, $amount = 0.0, $item_number = '' ) {
306
-		$index = ( count( $this->line_items ) / 4 ) + 1;
307
-
308
-		/**
309
-		 * Prevent error "Things don't appear to be working at the moment. (https://www.sandbox.paypal.com/webapps/hermes/error)"
310
-		 */
311
-		$item_name = str_replace( "#", "", $item_name );
312
-
313
-		$item = apply_filters(
314
-			'getpaid_paypal_line_item',
315
-			array(
316
-				'item_name'   => html_entity_decode( getpaid_limit_length( $item_name ? wp_strip_all_tags( $item_name ) : __( 'Item', 'invoicing' ), 127 ), ENT_NOQUOTES, 'UTF-8' ),
317
-				'quantity'    => (float) $quantity,
318
-				'amount'      => wpinv_sanitize_amount( (float) $amount, 2 ),
319
-				'item_number' => $item_number,
320
-			),
321
-			$item_name,
322
-			$quantity,
323
-			$amount,
324
-			$item_number
325
-		);
326
-
327
-		$this->line_items[ 'item_name_' . $index ]   = getpaid_limit_length( $item['item_name'], 127 );
298
+     * Add PayPal Line Item.
299
+     *
300
+     * @param  string $item_name Item name.
301
+     * @param  float    $quantity Item quantity.
302
+     * @param  float  $amount Amount.
303
+     * @param  string $item_number Item number.
304
+     */
305
+    protected function add_line_item( $item_name, $quantity = 1, $amount = 0.0, $item_number = '' ) {
306
+        $index = ( count( $this->line_items ) / 4 ) + 1;
307
+
308
+        /**
309
+         * Prevent error "Things don't appear to be working at the moment. (https://www.sandbox.paypal.com/webapps/hermes/error)"
310
+         */
311
+        $item_name = str_replace( "#", "", $item_name );
312
+
313
+        $item = apply_filters(
314
+            'getpaid_paypal_line_item',
315
+            array(
316
+                'item_name'   => html_entity_decode( getpaid_limit_length( $item_name ? wp_strip_all_tags( $item_name ) : __( 'Item', 'invoicing' ), 127 ), ENT_NOQUOTES, 'UTF-8' ),
317
+                'quantity'    => (float) $quantity,
318
+                'amount'      => wpinv_sanitize_amount( (float) $amount, 2 ),
319
+                'item_number' => $item_number,
320
+            ),
321
+            $item_name,
322
+            $quantity,
323
+            $amount,
324
+            $item_number
325
+        );
326
+
327
+        $this->line_items[ 'item_name_' . $index ]   = getpaid_limit_length( $item['item_name'], 127 );
328 328
         $this->line_items[ 'quantity_' . $index ]    = $item['quantity'];
329 329
 
330 330
         // The price or amount of the product, service, or contribution, not including shipping, handling, or tax.
331
-		$this->line_items[ 'amount_' . $index ]      = $item['amount'] * $item['quantity'];
332
-		$this->line_items[ 'item_number_' . $index ] = getpaid_limit_length( $item['item_number'], 127 );
331
+        $this->line_items[ 'amount_' . $index ]      = $item['amount'] * $item['quantity'];
332
+        $this->line_items[ 'item_number_' . $index ] = getpaid_limit_length( $item['item_number'], 127 );
333 333
     }
334 334
 
335 335
     /**
336
-	 * If the default request with line items is too long, generate a new one with only one line item.
337
-	 *
338
-	 * https://support.microsoft.com/en-us/help/208427/maximum-url-length-is-2-083-characters-in-internet-explorer.
339
-	 *
340
-	 * @param WPInv_Invoice $invoice Invoice to be sent to Paypal.
341
-	 * @param array    $paypal_args Arguments sent to Paypal in the request.
342
-	 * @return array
343
-	 */
344
-	protected function fix_request_length( $invoice, $paypal_args ) {
345
-		$max_paypal_length = 2083;
346
-		$query_candidate   = http_build_query( $paypal_args, '', '&' );
347
-
348
-		if ( strlen( $this->endpoint . $query_candidate ) <= $max_paypal_length ) {
349
-			return $paypal_args;
350
-		}
351
-
352
-		return apply_filters(
353
-			'getpaid_paypal_args',
354
-			array_merge(
355
-				$this->get_transaction_args( $invoice ),
356
-				$this->get_line_item_args( $invoice, true )
357
-			),
358
-			$invoice
359
-		);
336
+     * If the default request with line items is too long, generate a new one with only one line item.
337
+     *
338
+     * https://support.microsoft.com/en-us/help/208427/maximum-url-length-is-2-083-characters-in-internet-explorer.
339
+     *
340
+     * @param WPInv_Invoice $invoice Invoice to be sent to Paypal.
341
+     * @param array    $paypal_args Arguments sent to Paypal in the request.
342
+     * @return array
343
+     */
344
+    protected function fix_request_length( $invoice, $paypal_args ) {
345
+        $max_paypal_length = 2083;
346
+        $query_candidate   = http_build_query( $paypal_args, '', '&' );
347
+
348
+        if ( strlen( $this->endpoint . $query_candidate ) <= $max_paypal_length ) {
349
+            return $paypal_args;
350
+        }
351
+
352
+        return apply_filters(
353
+            'getpaid_paypal_args',
354
+            array_merge(
355
+                $this->get_transaction_args( $invoice ),
356
+                $this->get_line_item_args( $invoice, true )
357
+            ),
358
+            $invoice
359
+        );
360 360
 
361 361
     }
362 362
 
363 363
     /**
364
-	 * Processes recurring invoices.
365
-	 *
366
-	 * @param  array $paypal_args PayPal args.
367
-	 * @param  WPInv_Invoice    $invoice Invoice object.
368
-	 */
369
-	public function process_subscription( $paypal_args, $invoice ) {
364
+     * Processes recurring invoices.
365
+     *
366
+     * @param  array $paypal_args PayPal args.
367
+     * @param  WPInv_Invoice    $invoice Invoice object.
368
+     */
369
+    public function process_subscription( $paypal_args, $invoice ) {
370 370
 
371 371
         // Make sure this is a subscription.
372 372
         if ( ! $invoice->is_recurring() || ! $subscription = getpaid_get_invoice_subscription( $invoice ) ) {
@@ -387,21 +387,21 @@  discard block
 block discarded – undo
387 387
         $recurring_amount       = (float) wpinv_sanitize_amount( $invoice->get_recurring_total(), 2 );
388 388
         $subscription_item      = $invoice->get_recurring( true );
389 389
 
390
-		// Convert 365 days to 1 year.
391
-		if ( 'D' == $period && 365 == $interval ) {
392
-			$period = 'Y';
393
-			$interval = 1;
394
-		}
390
+        // Convert 365 days to 1 year.
391
+        if ( 'D' == $period && 365 == $interval ) {
392
+            $period = 'Y';
393
+            $interval = 1;
394
+        }
395 395
 
396 396
         if ( $subscription_item->has_free_trial() ) {
397 397
 
398 398
             $paypal_args['a1'] = 0 == $initial_amount ? 0 : $initial_amount;
399 399
 
400
-			// Trial period length.
401
-			$paypal_args['p1'] = $subscription_item->get_trial_interval();
400
+            // Trial period length.
401
+            $paypal_args['p1'] = $subscription_item->get_trial_interval();
402 402
 
403
-			// Trial period.
404
-			$paypal_args['t1'] = $subscription_item->get_trial_period();
403
+            // Trial period.
404
+            $paypal_args['t1'] = $subscription_item->get_trial_period();
405 405
 
406 406
         } elseif ( $initial_amount != $recurring_amount ) {
407 407
 
@@ -424,40 +424,40 @@  discard block
 block discarded – undo
424 424
         }
425 425
 
426 426
         // We have a recurring payment
427
-		if ( ! isset( $param_number ) || 1 == $param_number ) {
427
+        if ( ! isset( $param_number ) || 1 == $param_number ) {
428 428
 
429
-			// Subscription price
430
-			$paypal_args['a3'] = $recurring_amount;
429
+            // Subscription price
430
+            $paypal_args['a3'] = $recurring_amount;
431 431
 
432
-			// Subscription duration
433
-			$paypal_args['p3'] = $interval;
432
+            // Subscription duration
433
+            $paypal_args['p3'] = $interval;
434 434
 
435
-			// Subscription period
436
-			$paypal_args['t3'] = $period;
435
+            // Subscription period
436
+            $paypal_args['t3'] = $period;
437 437
 
438 438
         }
439 439
 
440 440
         // Recurring payments
441
-		if ( 1 == $bill_times || ( $initial_amount != $recurring_amount && ! $subscription_item->has_free_trial() && 2 == $bill_times ) ) {
441
+        if ( 1 == $bill_times || ( $initial_amount != $recurring_amount && ! $subscription_item->has_free_trial() && 2 == $bill_times ) ) {
442 442
 
443
-			// Non-recurring payments
444
-			$paypal_args['src'] = 0;
443
+            // Non-recurring payments
444
+            $paypal_args['src'] = 0;
445 445
 
446
-		} else {
446
+        } else {
447 447
 
448
-			$paypal_args['src'] = 1;
448
+            $paypal_args['src'] = 1;
449 449
 
450
-			if ( $bill_times > 0 ) {
450
+            if ( $bill_times > 0 ) {
451 451
 
452
-				// An initial period is being used to charge a sign-up fee
453
-				if ( $initial_amount != $recurring_amount && ! $subscription_item->has_free_trial() ) {
454
-					$bill_times--;
455
-				}
452
+                // An initial period is being used to charge a sign-up fee
453
+                if ( $initial_amount != $recurring_amount && ! $subscription_item->has_free_trial() ) {
454
+                    $bill_times--;
455
+                }
456 456
 
457 457
                 // Make sure it's not over the max of 52
458 458
                 $paypal_args['srt'] = ( $bill_times <= 52 ? absint( $bill_times ) : 52 );
459 459
 
460
-			}
460
+            }
461 461
         }
462 462
 
463 463
         // Force return URL so that order description & instructions display
@@ -472,19 +472,19 @@  discard block
 block discarded – undo
472 472
 }
473 473
 
474 474
         return apply_filters(
475
-			'getpaid_paypal_subscription_args',
476
-			$paypal_args,
477
-			$invoice
475
+            'getpaid_paypal_subscription_args',
476
+            $paypal_args,
477
+            $invoice
478 478
         );
479 479
 
480 480
     }
481 481
 
482 482
     /**
483
-	 * Processes ipns and marks payments as complete.
484
-	 *
485
-	 * @return void
486
-	 */
487
-	public function verify_ipn() {
483
+     * Processes ipns and marks payments as complete.
484
+     *
485
+     * @return void
486
+     */
487
+    public function verify_ipn() {
488 488
         new GetPaid_Paypal_Gateway_IPN_Handler( $this );
489 489
     }
490 490
 
@@ -494,19 +494,19 @@  discard block
 block discarded – undo
494 494
     public function sandbox_notice() {
495 495
 
496 496
         return sprintf(
497
-			__( 'SANDBOX ENABLED. You can use sandbox testing accounts only. See the %1$sPayPal Sandbox Testing Guide%2$s for more details.', 'invoicing' ),
498
-			'<a href="https://developer.paypal.com/docs/classic/lifecycle/ug_sandbox/">',
499
-			'</a>'
500
-		);
497
+            __( 'SANDBOX ENABLED. You can use sandbox testing accounts only. See the %1$sPayPal Sandbox Testing Guide%2$s for more details.', 'invoicing' ),
498
+            '<a href="https://developer.paypal.com/docs/classic/lifecycle/ug_sandbox/">',
499
+            '</a>'
500
+        );
501 501
 
502 502
     }
503 503
 
504
-	/**
505
-	 * Filters the gateway settings.
506
-	 *
507
-	 * @param array $admin_settings
508
-	 */
509
-	public function admin_settings( $admin_settings ) {
504
+    /**
505
+     * Filters the gateway settings.
506
+     *
507
+     * @param array $admin_settings
508
+     */
509
+    public function admin_settings( $admin_settings ) {
510 510
 
511 511
         $currencies = sprintf(
512 512
             __( 'Supported Currencies: %s', 'invoicing' ),
@@ -516,66 +516,66 @@  discard block
 block discarded – undo
516 516
         $admin_settings['paypal_active']['desc'] .= " ($currencies)";
517 517
         $admin_settings['paypal_desc']['std']     = __( 'Pay via PayPal: you can pay with your credit card if you don\'t have a PayPal account.', 'invoicing' );
518 518
 
519
-		// Access tokens.
520
-		$live_email      = wpinv_get_option( 'paypal_email' );
521
-		$sandbox_email   = wpinv_get_option( 'paypal_sandbox_email' );
519
+        // Access tokens.
520
+        $live_email      = wpinv_get_option( 'paypal_email' );
521
+        $sandbox_email   = wpinv_get_option( 'paypal_sandbox_email' );
522 522
 
523
-		$admin_settings['paypal_connect'] = array(
524
-			'type' => 'hook',
525
-			'id'   => 'paypal_connect',
526
-			'name' => __( 'Connect to PayPal', 'invoicing' ),
527
-		);
523
+        $admin_settings['paypal_connect'] = array(
524
+            'type' => 'hook',
525
+            'id'   => 'paypal_connect',
526
+            'name' => __( 'Connect to PayPal', 'invoicing' ),
527
+        );
528 528
 
529 529
         $admin_settings['paypal_email'] = array(
530 530
             'type'  => 'text',
531
-			'class' => 'live-auth-data',
531
+            'class' => 'live-auth-data',
532 532
             'id'    => 'paypal_email',
533 533
             'name'  => __( 'Live Email Address', 'invoicing' ),
534 534
             'desc'  => __( 'The email address of your PayPal account.', 'invoicing' ),
535 535
         );
536 536
 
537
-		$admin_settings['paypal_sandbox_email'] = array(
537
+        $admin_settings['paypal_sandbox_email'] = array(
538 538
             'type'  => 'text',
539
-			'class' => 'sandbox-auth-data',
539
+            'class' => 'sandbox-auth-data',
540 540
             'id'    => 'paypal_sandbox_email',
541 541
             'name'  => __( 'Sandbox Email Address', 'invoicing' ),
542 542
             'desc'  => __( 'The email address of your sandbox PayPal account.', 'invoicing' ),
543
-			'std'   => wpinv_get_option( 'paypal_email', '' ),
543
+            'std'   => wpinv_get_option( 'paypal_email', '' ),
544
+        );
545
+
546
+        // Client ID and secret.
547
+        $admin_settings['paypal_client_id'] = array(
548
+            'type'  => 'text',
549
+            'class' => 'live-auth-data',
550
+            'id'    => 'paypal_client_id',
551
+            'name'  => __( 'Live Client ID', 'invoicing' ),
552
+            'desc'  => __( 'The client ID of your PayPal account. You can retrieve this from your PayPal developer account.', 'invoicing' ),
553
+        );
554
+
555
+        $admin_settings['paypal_sandbox_client_id'] = array(
556
+            'type'  => 'text',
557
+            'class' => 'sandbox-auth-data',
558
+            'id'    => 'paypal_sandbox_client_id',
559
+            'name'  => __( 'Sandbox Client ID', 'invoicing' ),
560
+            'desc'  => __( 'The client ID of your sandbox PayPal account. You can retrieve this from your PayPal developer account.', 'invoicing' ),
561
+            'std'   => wpinv_get_option( 'paypal_client_id', '' ),
544 562
         );
545 563
 
546
-		// Client ID and secret.
547
-		$admin_settings['paypal_client_id'] = array(
548
-			'type'  => 'text',
549
-			'class' => 'live-auth-data',
550
-			'id'    => 'paypal_client_id',
551
-			'name'  => __( 'Live Client ID', 'invoicing' ),
552
-			'desc'  => __( 'The client ID of your PayPal account. You can retrieve this from your PayPal developer account.', 'invoicing' ),
553
-		);
554
-
555
-		$admin_settings['paypal_sandbox_client_id'] = array(
556
-			'type'  => 'text',
557
-			'class' => 'sandbox-auth-data',
558
-			'id'    => 'paypal_sandbox_client_id',
559
-			'name'  => __( 'Sandbox Client ID', 'invoicing' ),
560
-			'desc'  => __( 'The client ID of your sandbox PayPal account. You can retrieve this from your PayPal developer account.', 'invoicing' ),
561
-			'std'   => wpinv_get_option( 'paypal_client_id', '' ),
562
-		);
563
-
564
-		$admin_settings['paypal_secret'] = array(
565
-			'type'  => 'text',
566
-			'class' => 'live-auth-data',
567
-			'id'    => 'paypal_secret',
568
-			'name'  => __( 'Live Secret', 'invoicing' ),
569
-			'desc'  => __( 'The secret of your PayPal account. You can retrieve this from your PayPal developer account.', 'invoicing' ),
570
-		);
571
-
572
-		$admin_settings['paypal_sandbox_secret'] = array(
573
-			'type'  => 'text',
574
-			'class' => 'sandbox-auth-data',
575
-			'id'    => 'paypal_sandbox_secret',
576
-			'name'  => __( 'Sandbox Secret', 'invoicing' ),
577
-			'desc'  => __( 'The secret of your sandbox PayPal account. You can retrieve this from your PayPal developer account.', 'invoicing' ),
578
-		);
564
+        $admin_settings['paypal_secret'] = array(
565
+            'type'  => 'text',
566
+            'class' => 'live-auth-data',
567
+            'id'    => 'paypal_secret',
568
+            'name'  => __( 'Live Secret', 'invoicing' ),
569
+            'desc'  => __( 'The secret of your PayPal account. You can retrieve this from your PayPal developer account.', 'invoicing' ),
570
+        );
571
+
572
+        $admin_settings['paypal_sandbox_secret'] = array(
573
+            'type'  => 'text',
574
+            'class' => 'sandbox-auth-data',
575
+            'id'    => 'paypal_sandbox_secret',
576
+            'name'  => __( 'Sandbox Secret', 'invoicing' ),
577
+            'desc'  => __( 'The secret of your sandbox PayPal account. You can retrieve this from your PayPal developer account.', 'invoicing' ),
578
+        );
579 579
 
580 580
         $admin_settings['paypal_ipn_url'] = array(
581 581
             'type'     => 'ipn_url',
@@ -586,57 +586,57 @@  discard block
 block discarded – undo
586 586
             'readonly' => true,
587 587
         );
588 588
 
589
-		return $admin_settings;
590
-	}
591
-
592
-	/**
593
-	 * Retrieves the URL to cancel a subscription.
594
-	 *
595
-	 * @param string $url
596
-	 * @param WPInv_Subscription $subscription
597
-	 */
598
-	public function filter_cancel_subscription_url( $url, $subscription ) {
599
-
600
-		if ( $this->id !== $subscription->get_gateway() ) {
601
-			return $url;
602
-		}
603
-
604
-		// Get the PayPal profile ID.
605
-		$profile_id = $subscription->get_profile_id();
606
-
607
-		// Bail if no profile ID.
608
-		if ( empty( $profile_id ) ) {
609
-			return $url;
610
-		}
611
-
612
-		$cancel_url = 'https://www.paypal.com/myaccount/autopay/connect/%s/cancel';
613
-		if ( $this->is_sandbox( $subscription->get_parent_payment() ) ) {
614
-			$cancel_url = 'https://www.sandbox.paypal.com/myaccount/autopay/connect/%s/cancel';
615
-		}
616
-
617
-		return sprintf( $cancel_url, $profile_id );
618
-	}
619
-
620
-	/**
621
-	 * Retrieves the PayPal connect URL when using the setup wizzard.
622
-	 *
623
-	 *
589
+        return $admin_settings;
590
+    }
591
+
592
+    /**
593
+     * Retrieves the URL to cancel a subscription.
594
+     *
595
+     * @param string $url
596
+     * @param WPInv_Subscription $subscription
597
+     */
598
+    public function filter_cancel_subscription_url( $url, $subscription ) {
599
+
600
+        if ( $this->id !== $subscription->get_gateway() ) {
601
+            return $url;
602
+        }
603
+
604
+        // Get the PayPal profile ID.
605
+        $profile_id = $subscription->get_profile_id();
606
+
607
+        // Bail if no profile ID.
608
+        if ( empty( $profile_id ) ) {
609
+            return $url;
610
+        }
611
+
612
+        $cancel_url = 'https://www.paypal.com/myaccount/autopay/connect/%s/cancel';
613
+        if ( $this->is_sandbox( $subscription->get_parent_payment() ) ) {
614
+            $cancel_url = 'https://www.sandbox.paypal.com/myaccount/autopay/connect/%s/cancel';
615
+        }
616
+
617
+        return sprintf( $cancel_url, $profile_id );
618
+    }
619
+
620
+    /**
621
+     * Retrieves the PayPal connect URL when using the setup wizzard.
622
+     *
623
+     *
624 624
      * @param array $data
625 625
      * @return string
626
-	 */
627
-	public static function maybe_get_connect_url( $url = '', $data = array() ) {
628
-		return self::get_connect_url( false, urldecode( $data['redirect'] ) );
629
-	}
630
-
631
-	/**
632
-	 * Retrieves the PayPal connect URL.
633
-	 *
634
-	 *
626
+     */
627
+    public static function maybe_get_connect_url( $url = '', $data = array() ) {
628
+        return self::get_connect_url( false, urldecode( $data['redirect'] ) );
629
+    }
630
+
631
+    /**
632
+     * Retrieves the PayPal connect URL.
633
+     *
634
+     *
635 635
      * @param bool $is_sandbox
636
-	 * @param string $redirect
636
+     * @param string $redirect
637 637
      * @return string
638
-	 */
639
-	public static function get_connect_url( $is_sandbox, $redirect = '' ) {
638
+     */
639
+    public static function get_connect_url( $is_sandbox, $redirect = '' ) {
640 640
 
641 641
         $redirect_url = add_query_arg(
642 642
             array(
@@ -646,7 +646,7 @@  discard block
 block discarded – undo
646 646
                 'tab'                  => 'gateways',
647 647
                 'section'              => 'paypal',
648 648
                 'getpaid-nonce'        => wp_create_nonce( 'getpaid-nonce' ),
649
-				'redirect'             => urlencode( $redirect ),
649
+                'redirect'             => urlencode( $redirect ),
650 650
             ),
651 651
             admin_url( 'admin.php' )
652 652
         );
@@ -661,12 +661,12 @@  discard block
 block discarded – undo
661 661
 
662 662
     }
663 663
 
664
-	/**
665
-	 * Generates settings page js.
666
-	 *
664
+    /**
665
+     * Generates settings page js.
666
+     *
667 667
      * @return void
668
-	 */
669
-	public static function display_connect_buttons() {
668
+     */
669
+    public static function display_connect_buttons() {
670 670
 
671 671
         ?>
672 672
 			<div class="wpinv-paypal-connect-live">
@@ -708,70 +708,70 @@  discard block
 block discarded – undo
708 708
         <?php
709 709
     }
710 710
 
711
-	/**
712
-	 * Connects to PayPal.
713
-	 *
714
-	 * @param array $data Connection data.
715
-	 * @return void
716
-	 */
717
-	public function connect_paypal( $data ) {
718
-
719
-		$sandbox      = $this->is_sandbox();
720
-		$data         = wp_unslash( $data );
721
-		$access_token = empty( $data['access_token'] ) ? '' : sanitize_text_field( $data['access_token'] );
722
-
723
-		if ( isset( $data['live_mode'] ) ) {
724
-			$sandbox = empty( $data['live_mode'] );
725
-		}
726
-
727
-		wpinv_update_option( 'paypal_sandbox', (int) $sandbox );
728
-		wpinv_update_option( 'paypal_active', 1 );
729
-
730
-		if ( ! empty( $data['error_description'] ) ) {
731
-			getpaid_admin()->show_error( wp_kses_post( urldecode( $data['error_description'] ) ) );
732
-		} else {
733
-
734
-			// Retrieve the user info.
735
-			$user_info = wp_remote_get(
736
-				! $sandbox ? 'https://api-m.paypal.com/v1/identity/oauth2/userinfo?schema=paypalv1.1' : 'https://api-m.sandbox.paypal.com/v1/identity/oauth2/userinfo?schema=paypalv1.1',
737
-				array(
738
-
739
-					'headers' => array(
740
-						'Authorization' => 'Bearer ' . $access_token,
741
-						'Content-type'  => 'application/json',
742
-					),
743
-
744
-				)
745
-			);
746
-
747
-			if ( is_wp_error( $user_info ) ) {
748
-				getpaid_admin()->show_error( wp_kses_post( $user_info->get_error_message() ) );
749
-			} else {
750
-
751
-				// Create application.
752
-				$user_info = json_decode( wp_remote_retrieve_body( $user_info ) );
753
-
754
-				if ( $sandbox ) {
755
-					wpinv_update_option( 'paypal_sandbox_email', sanitize_email( $user_info->emails[0]->value ) );
756
-					wpinv_update_option( 'paypal_sandbox_refresh_token', sanitize_text_field( urldecode( $data['refresh_token'] ) ) );
757
-					set_transient( 'getpaid_paypal_sandbox_access_token', sanitize_text_field( urldecode( $data['access_token'] ) ), (int) $data['expires_in'] );
758
-					getpaid_admin()->show_success( __( 'Successfully connected your PayPal sandbox account', 'invoicing' ) );
759
-				} else {
760
-					wpinv_update_option( 'paypal_email', sanitize_email( $user_info->emails[0]->value ) );
761
-					wpinv_update_option( 'paypal_refresh_token', sanitize_text_field( urldecode( $data['refresh_token'] ) ) );
762
-					set_transient( 'getpaid_paypal_access_token', sanitize_text_field( urldecode( $data['access_token'] ) ), (int) $data['expires_in'] );
763
-					getpaid_admin()->show_success( __( 'Successfully connected your PayPal account', 'invoicing' ) );
764
-				}
711
+    /**
712
+     * Connects to PayPal.
713
+     *
714
+     * @param array $data Connection data.
715
+     * @return void
716
+     */
717
+    public function connect_paypal( $data ) {
718
+
719
+        $sandbox      = $this->is_sandbox();
720
+        $data         = wp_unslash( $data );
721
+        $access_token = empty( $data['access_token'] ) ? '' : sanitize_text_field( $data['access_token'] );
722
+
723
+        if ( isset( $data['live_mode'] ) ) {
724
+            $sandbox = empty( $data['live_mode'] );
725
+        }
726
+
727
+        wpinv_update_option( 'paypal_sandbox', (int) $sandbox );
728
+        wpinv_update_option( 'paypal_active', 1 );
729
+
730
+        if ( ! empty( $data['error_description'] ) ) {
731
+            getpaid_admin()->show_error( wp_kses_post( urldecode( $data['error_description'] ) ) );
732
+        } else {
733
+
734
+            // Retrieve the user info.
735
+            $user_info = wp_remote_get(
736
+                ! $sandbox ? 'https://api-m.paypal.com/v1/identity/oauth2/userinfo?schema=paypalv1.1' : 'https://api-m.sandbox.paypal.com/v1/identity/oauth2/userinfo?schema=paypalv1.1',
737
+                array(
738
+
739
+                    'headers' => array(
740
+                        'Authorization' => 'Bearer ' . $access_token,
741
+                        'Content-type'  => 'application/json',
742
+                    ),
743
+
744
+                )
745
+            );
746
+
747
+            if ( is_wp_error( $user_info ) ) {
748
+                getpaid_admin()->show_error( wp_kses_post( $user_info->get_error_message() ) );
749
+            } else {
750
+
751
+                // Create application.
752
+                $user_info = json_decode( wp_remote_retrieve_body( $user_info ) );
753
+
754
+                if ( $sandbox ) {
755
+                    wpinv_update_option( 'paypal_sandbox_email', sanitize_email( $user_info->emails[0]->value ) );
756
+                    wpinv_update_option( 'paypal_sandbox_refresh_token', sanitize_text_field( urldecode( $data['refresh_token'] ) ) );
757
+                    set_transient( 'getpaid_paypal_sandbox_access_token', sanitize_text_field( urldecode( $data['access_token'] ) ), (int) $data['expires_in'] );
758
+                    getpaid_admin()->show_success( __( 'Successfully connected your PayPal sandbox account', 'invoicing' ) );
759
+                } else {
760
+                    wpinv_update_option( 'paypal_email', sanitize_email( $user_info->emails[0]->value ) );
761
+                    wpinv_update_option( 'paypal_refresh_token', sanitize_text_field( urldecode( $data['refresh_token'] ) ) );
762
+                    set_transient( 'getpaid_paypal_access_token', sanitize_text_field( urldecode( $data['access_token'] ) ), (int) $data['expires_in'] );
763
+                    getpaid_admin()->show_success( __( 'Successfully connected your PayPal account', 'invoicing' ) );
764
+                }
765 765
 }
766 766
 }
767 767
 
768
-		$redirect = empty( $data['redirect'] ) ? admin_url( 'admin.php?page=wpinv-settings&tab=gateways&section=paypal' ) : urldecode( $data['redirect'] );
768
+        $redirect = empty( $data['redirect'] ) ? admin_url( 'admin.php?page=wpinv-settings&tab=gateways&section=paypal' ) : urldecode( $data['redirect'] );
769 769
 
770
-		if ( isset( $data['step'] ) ) {
771
-			$redirect = add_query_arg( 'step', $data['step'], $redirect );
772
-		}
773
-		wp_redirect( $redirect );
774
-		exit;
775
-	}
770
+        if ( isset( $data['step'] ) ) {
771
+            $redirect = add_query_arg( 'step', $data['step'], $redirect );
772
+        }
773
+        wp_redirect( $redirect );
774
+        exit;
775
+    }
776 776
 
777 777
 }
Please login to merge, or discard this patch.
Spacing   +161 added lines, -161 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
  * Paypal Payment Gateway class.
@@ -24,7 +24,7 @@  discard block
 block discarded – undo
24 24
 	 *
25 25
 	 * @var array
26 26
 	 */
27
-    protected $supports = array( 'subscription', 'sandbox', 'single_subscription_group' );
27
+    protected $supports = array('subscription', 'sandbox', 'single_subscription_group');
28 28
 
29 29
     /**
30 30
 	 * Payment method order.
@@ -59,7 +59,7 @@  discard block
 block discarded – undo
59 59
 	 *
60 60
 	 * @var array
61 61
 	 */
62
-	public $currencies = array( 'AUD', 'BRL', 'CAD', 'MXN', 'NZD', 'HKD', 'SGD', 'USD', 'EUR', 'JPY', 'TRY', 'NOK', 'CZK', 'DKK', 'HUF', 'ILS', 'MYR', 'PHP', 'PLN', 'SEK', 'CHF', 'TWD', 'THB', 'GBP', 'RMB', 'RUB', 'INR' );
62
+	public $currencies = array('AUD', 'BRL', 'CAD', 'MXN', 'NZD', 'HKD', 'SGD', 'USD', 'EUR', 'JPY', 'TRY', 'NOK', 'CZK', 'DKK', 'HUF', 'ILS', 'MYR', 'PHP', 'PLN', 'SEK', 'CHF', 'TWD', 'THB', 'GBP', 'RMB', 'RUB', 'INR');
63 63
 
64 64
     /**
65 65
 	 * URL to view a transaction.
@@ -80,17 +80,17 @@  discard block
 block discarded – undo
80 80
 	 */
81 81
 	public function __construct() {
82 82
 
83
-        $this->title                = __( 'PayPal Standard', 'invoicing' );
84
-        $this->method_title         = __( 'PayPal Standard', 'invoicing' );
85
-        $this->checkout_button_text = __( 'Proceed to PayPal', 'invoicing' );
86
-        $this->notify_url           = wpinv_get_ipn_url( $this->id );
87
-
88
-		add_filter( 'wpinv_subscription_cancel_url', array( $this, 'filter_cancel_subscription_url' ), 10, 2 );
89
-		add_filter( 'getpaid_paypal_args', array( $this, 'process_subscription' ), 10, 2 );
90
-        add_filter( 'getpaid_paypal_sandbox_notice', array( $this, 'sandbox_notice' ) );
91
-		add_filter( 'getpaid_get_paypal_connect_url', array( $this, 'maybe_get_connect_url' ), 10, 2 );
92
-		add_action( 'getpaid_authenticated_admin_action_connect_paypal', array( $this, 'connect_paypal' ) );
93
-		add_action( 'wpinv_paypal_connect', array( $this, 'display_connect_buttons' ) );
83
+        $this->title                = __('PayPal Standard', 'invoicing');
84
+        $this->method_title         = __('PayPal Standard', 'invoicing');
85
+        $this->checkout_button_text = __('Proceed to PayPal', 'invoicing');
86
+        $this->notify_url           = wpinv_get_ipn_url($this->id);
87
+
88
+		add_filter('wpinv_subscription_cancel_url', array($this, 'filter_cancel_subscription_url'), 10, 2);
89
+		add_filter('getpaid_paypal_args', array($this, 'process_subscription'), 10, 2);
90
+        add_filter('getpaid_paypal_sandbox_notice', array($this, 'sandbox_notice'));
91
+		add_filter('getpaid_get_paypal_connect_url', array($this, 'maybe_get_connect_url'), 10, 2);
92
+		add_action('getpaid_authenticated_admin_action_connect_paypal', array($this, 'connect_paypal'));
93
+		add_action('wpinv_paypal_connect', array($this, 'display_connect_buttons'));
94 94
 		parent::__construct();
95 95
     }
96 96
 
@@ -103,16 +103,16 @@  discard block
 block discarded – undo
103 103
 	 * @param GetPaid_Payment_Form_Submission $submission Checkout submission.
104 104
 	 * @return array
105 105
 	 */
106
-	public function process_payment( $invoice, $submission_data, $submission ) {
106
+	public function process_payment($invoice, $submission_data, $submission) {
107 107
 
108 108
         // Get redirect url.
109
-        $paypal_redirect = $this->get_request_url( $invoice );
109
+        $paypal_redirect = $this->get_request_url($invoice);
110 110
 
111 111
         // Add a note about the request url.
112 112
         $invoice->add_note(
113 113
             sprintf(
114
-                __( 'Redirecting to PayPal: %s', 'invoicing' ),
115
-                esc_url( $paypal_redirect )
114
+                __('Redirecting to PayPal: %s', 'invoicing'),
115
+                esc_url($paypal_redirect)
116 116
             ),
117 117
             false,
118 118
             false,
@@ -120,7 +120,7 @@  discard block
 block discarded – undo
120 120
         );
121 121
 
122 122
         // Redirect to PayPal
123
-        wp_redirect( $paypal_redirect );
123
+        wp_redirect($paypal_redirect);
124 124
         exit;
125 125
 
126 126
     }
@@ -131,21 +131,21 @@  discard block
 block discarded – undo
131 131
 	 * @param  WPInv_Invoice $invoice Invoice object.
132 132
 	 * @return string
133 133
 	 */
134
-	public function get_request_url( $invoice ) {
134
+	public function get_request_url($invoice) {
135 135
 
136 136
         // Endpoint for this request
137
-		$this->endpoint    = $this->is_sandbox( $invoice ) ? 'https://www.sandbox.paypal.com/cgi-bin/webscr?test_ipn=1&' : 'https://www.paypal.com/cgi-bin/webscr?';
137
+		$this->endpoint = $this->is_sandbox($invoice) ? 'https://www.sandbox.paypal.com/cgi-bin/webscr?test_ipn=1&' : 'https://www.paypal.com/cgi-bin/webscr?';
138 138
 
139 139
         // Retrieve paypal args.
140
-        $paypal_args       = map_deep( $this->get_paypal_args( $invoice ), 'urlencode' );
140
+        $paypal_args = map_deep($this->get_paypal_args($invoice), 'urlencode');
141 141
 
142
-        if ( $invoice->is_recurring() ) {
142
+        if ($invoice->is_recurring()) {
143 143
             $paypal_args['bn'] = 'GetPaid_Subscribe_WPS_US';
144 144
         } else {
145 145
             $paypal_args['bn'] = 'GetPaid_ShoppingCart_WPS_US';
146 146
         }
147 147
 
148
-        return add_query_arg( $paypal_args, $this->endpoint );
148
+        return add_query_arg($paypal_args, $this->endpoint);
149 149
 
150 150
 	}
151 151
 
@@ -155,25 +155,25 @@  discard block
 block discarded – undo
155 155
 	 * @param  WPInv_Invoice $invoice Invoice object.
156 156
 	 * @return array
157 157
 	 */
158
-	protected function get_paypal_args( $invoice ) {
158
+	protected function get_paypal_args($invoice) {
159 159
 
160 160
         // Whether or not to send the line items as one item.
161
-		$force_one_line_item = apply_filters( 'getpaid_paypal_force_one_line_item', true, $invoice );
161
+		$force_one_line_item = apply_filters('getpaid_paypal_force_one_line_item', true, $invoice);
162 162
 
163
-		if ( $invoice->is_recurring() || ( wpinv_use_taxes() && wpinv_prices_include_tax() ) ) {
163
+		if ($invoice->is_recurring() || (wpinv_use_taxes() && wpinv_prices_include_tax())) {
164 164
 			$force_one_line_item = true;
165 165
 		}
166 166
 
167 167
 		$paypal_args = apply_filters(
168 168
 			'getpaid_paypal_args',
169 169
 			array_merge(
170
-				$this->get_transaction_args( $invoice ),
171
-				$this->get_line_item_args( $invoice, $force_one_line_item )
170
+				$this->get_transaction_args($invoice),
171
+				$this->get_line_item_args($invoice, $force_one_line_item)
172 172
 			),
173 173
 			$invoice
174 174
 		);
175 175
 
176
-		return $this->fix_request_length( $invoice, $paypal_args );
176
+		return $this->fix_request_length($invoice, $paypal_args);
177 177
     }
178 178
 
179 179
     /**
@@ -182,9 +182,9 @@  discard block
 block discarded – undo
182 182
 	 * @param WPInv_Invoice $invoice Invoice object.
183 183
 	 * @return array
184 184
 	 */
185
-	protected function get_transaction_args( $invoice ) {
185
+	protected function get_transaction_args($invoice) {
186 186
 
187
-		$email = $this->is_sandbox( $invoice ) ? wpinv_get_option( 'paypal_sandbox_email', wpinv_get_option( 'paypal_email', '' ) ) : wpinv_get_option( 'paypal_email', '' );
187
+		$email = $this->is_sandbox($invoice) ? wpinv_get_option('paypal_sandbox_email', wpinv_get_option('paypal_email', '')) : wpinv_get_option('paypal_email', '');
188 188
 		return array(
189 189
             'cmd'           => '_cart',
190 190
             'business'      => $email,
@@ -195,16 +195,16 @@  discard block
 block discarded – undo
195 195
             'rm'            => is_ssl() ? 2 : 1,
196 196
             'upload'        => 1,
197 197
             'currency_code' => $invoice->get_currency(), // https://developer.paypal.com/docs/nvp-soap-api/currency-codes/#paypal
198
-            'return'        => esc_url_raw( $this->get_return_url( $invoice ) ),
199
-            'cancel_return' => esc_url_raw( $invoice->get_checkout_payment_url() ),
200
-            'notify_url'    => getpaid_limit_length( $this->notify_url, 255 ),
201
-            'invoice'       => getpaid_limit_length( $invoice->get_number(), 127 ),
198
+            'return'        => esc_url_raw($this->get_return_url($invoice)),
199
+            'cancel_return' => esc_url_raw($invoice->get_checkout_payment_url()),
200
+            'notify_url'    => getpaid_limit_length($this->notify_url, 255),
201
+            'invoice'       => getpaid_limit_length($invoice->get_number(), 127),
202 202
             'custom'        => $invoice->get_id(),
203
-            'first_name'    => getpaid_limit_length( $invoice->get_first_name(), 32 ),
204
-            'last_name'     => getpaid_limit_length( $invoice->get_last_name(), 64 ),
205
-            'country'       => getpaid_limit_length( $invoice->get_country(), 2 ),
206
-            'email'         => getpaid_limit_length( $invoice->get_email(), 127 ),
207
-            'cbt'           => get_bloginfo( 'name' ),
203
+            'first_name'    => getpaid_limit_length($invoice->get_first_name(), 32),
204
+            'last_name'     => getpaid_limit_length($invoice->get_last_name(), 64),
205
+            'country'       => getpaid_limit_length($invoice->get_country(), 2),
206
+            'email'         => getpaid_limit_length($invoice->get_email(), 127),
207
+            'cbt'           => get_bloginfo('name'),
208 208
         );
209 209
 
210 210
     }
@@ -216,30 +216,30 @@  discard block
 block discarded – undo
216 216
 	 * @param  bool     $force_one_line_item Create only one item for this invoice.
217 217
 	 * @return array
218 218
 	 */
219
-	protected function get_line_item_args( $invoice, $force_one_line_item = false ) {
219
+	protected function get_line_item_args($invoice, $force_one_line_item = false) {
220 220
 
221 221
         // Maybe send invoice as a single item.
222
-		if ( $force_one_line_item ) {
223
-            return $this->get_line_item_args_single_item( $invoice );
222
+		if ($force_one_line_item) {
223
+            return $this->get_line_item_args_single_item($invoice);
224 224
         }
225 225
 
226 226
         // Send each line item individually.
227 227
         $line_item_args = array();
228 228
 
229 229
         // Prepare line items.
230
-        $this->prepare_line_items( $invoice );
230
+        $this->prepare_line_items($invoice);
231 231
 
232 232
         // Add taxes to the cart
233
-        if ( wpinv_use_taxes() && $invoice->is_taxable() ) {
234
-            $line_item_args['tax_cart'] = wpinv_sanitize_amount( (float) $invoice->get_total_tax(), 2 );
233
+        if (wpinv_use_taxes() && $invoice->is_taxable()) {
234
+            $line_item_args['tax_cart'] = wpinv_sanitize_amount((float) $invoice->get_total_tax(), 2);
235 235
         }
236 236
 
237 237
         // Add discount.
238
-        if ( $invoice->get_total_discount() > 0 ) {
239
-            $line_item_args['discount_amount_cart'] = wpinv_sanitize_amount( (float) $invoice->get_total_discount(), 2 );
238
+        if ($invoice->get_total_discount() > 0) {
239
+            $line_item_args['discount_amount_cart'] = wpinv_sanitize_amount((float) $invoice->get_total_discount(), 2);
240 240
         }
241 241
 
242
-		return array_merge( $line_item_args, $this->get_line_items() );
242
+		return array_merge($line_item_args, $this->get_line_items());
243 243
 
244 244
     }
245 245
 
@@ -249,11 +249,11 @@  discard block
 block discarded – undo
249 249
 	 * @param  WPInv_Invoice $invoice Invoice object.
250 250
 	 * @return array
251 251
 	 */
252
-	protected function get_line_item_args_single_item( $invoice ) {
252
+	protected function get_line_item_args_single_item($invoice) {
253 253
 		$this->delete_line_items();
254 254
 
255
-        $item_name = wp_sprintf( __( 'Invoice %s', 'invoicing' ), $invoice->get_number() );
256
-		$this->add_line_item( $item_name, 1, wpinv_round_amount( (float) $invoice->get_total(), 2, true ), $invoice->get_id() );
255
+        $item_name = wp_sprintf(__('Invoice %s', 'invoicing'), $invoice->get_number());
256
+		$this->add_line_item($item_name, 1, wpinv_round_amount((float) $invoice->get_total(), 2, true), $invoice->get_id());
257 257
 
258 258
 		return $this->get_line_items();
259 259
     }
@@ -277,19 +277,19 @@  discard block
 block discarded – undo
277 277
 	 *
278 278
 	 * @param  WPInv_Invoice $invoice Invoice object.
279 279
 	 */
280
-	protected function prepare_line_items( $invoice ) {
280
+	protected function prepare_line_items($invoice) {
281 281
 		$this->delete_line_items();
282 282
 
283 283
 		// Items.
284
-		foreach ( $invoice->get_items() as $item ) {
284
+		foreach ($invoice->get_items() as $item) {
285 285
 			$amount   = $item->get_price();
286 286
 			$quantity = $invoice->get_template() == 'amount' ? 1 : $item->get_quantity();
287
-			$this->add_line_item( $item->get_raw_name(), $quantity, $amount, $item->get_id() );
287
+			$this->add_line_item($item->get_raw_name(), $quantity, $amount, $item->get_id());
288 288
         }
289 289
 
290 290
         // Fees.
291
-		foreach ( $invoice->get_fees() as $fee => $data ) {
292
-            $this->add_line_item( $fee, 1, wpinv_sanitize_amount( $data['initial_fee'] ) );
291
+		foreach ($invoice->get_fees() as $fee => $data) {
292
+            $this->add_line_item($fee, 1, wpinv_sanitize_amount($data['initial_fee']));
293 293
         }
294 294
 
295 295
     }
@@ -302,20 +302,20 @@  discard block
 block discarded – undo
302 302
 	 * @param  float  $amount Amount.
303 303
 	 * @param  string $item_number Item number.
304 304
 	 */
305
-	protected function add_line_item( $item_name, $quantity = 1, $amount = 0.0, $item_number = '' ) {
306
-		$index = ( count( $this->line_items ) / 4 ) + 1;
305
+	protected function add_line_item($item_name, $quantity = 1, $amount = 0.0, $item_number = '') {
306
+		$index = (count($this->line_items) / 4) + 1;
307 307
 
308 308
 		/**
309 309
 		 * Prevent error "Things don't appear to be working at the moment. (https://www.sandbox.paypal.com/webapps/hermes/error)"
310 310
 		 */
311
-		$item_name = str_replace( "#", "", $item_name );
311
+		$item_name = str_replace("#", "", $item_name);
312 312
 
313 313
 		$item = apply_filters(
314 314
 			'getpaid_paypal_line_item',
315 315
 			array(
316
-				'item_name'   => html_entity_decode( getpaid_limit_length( $item_name ? wp_strip_all_tags( $item_name ) : __( 'Item', 'invoicing' ), 127 ), ENT_NOQUOTES, 'UTF-8' ),
316
+				'item_name'   => html_entity_decode(getpaid_limit_length($item_name ? wp_strip_all_tags($item_name) : __('Item', 'invoicing'), 127), ENT_NOQUOTES, 'UTF-8'),
317 317
 				'quantity'    => (float) $quantity,
318
-				'amount'      => wpinv_sanitize_amount( (float) $amount, 2 ),
318
+				'amount'      => wpinv_sanitize_amount((float) $amount, 2),
319 319
 				'item_number' => $item_number,
320 320
 			),
321 321
 			$item_name,
@@ -324,12 +324,12 @@  discard block
 block discarded – undo
324 324
 			$item_number
325 325
 		);
326 326
 
327
-		$this->line_items[ 'item_name_' . $index ]   = getpaid_limit_length( $item['item_name'], 127 );
328
-        $this->line_items[ 'quantity_' . $index ]    = $item['quantity'];
327
+		$this->line_items['item_name_' . $index] = getpaid_limit_length($item['item_name'], 127);
328
+        $this->line_items['quantity_' . $index] = $item['quantity'];
329 329
 
330 330
         // The price or amount of the product, service, or contribution, not including shipping, handling, or tax.
331
-		$this->line_items[ 'amount_' . $index ]      = $item['amount'] * $item['quantity'];
332
-		$this->line_items[ 'item_number_' . $index ] = getpaid_limit_length( $item['item_number'], 127 );
331
+		$this->line_items['amount_' . $index]      = $item['amount'] * $item['quantity'];
332
+		$this->line_items['item_number_' . $index] = getpaid_limit_length($item['item_number'], 127);
333 333
     }
334 334
 
335 335
     /**
@@ -341,19 +341,19 @@  discard block
 block discarded – undo
341 341
 	 * @param array    $paypal_args Arguments sent to Paypal in the request.
342 342
 	 * @return array
343 343
 	 */
344
-	protected function fix_request_length( $invoice, $paypal_args ) {
344
+	protected function fix_request_length($invoice, $paypal_args) {
345 345
 		$max_paypal_length = 2083;
346
-		$query_candidate   = http_build_query( $paypal_args, '', '&' );
346
+		$query_candidate   = http_build_query($paypal_args, '', '&');
347 347
 
348
-		if ( strlen( $this->endpoint . $query_candidate ) <= $max_paypal_length ) {
348
+		if (strlen($this->endpoint . $query_candidate) <= $max_paypal_length) {
349 349
 			return $paypal_args;
350 350
 		}
351 351
 
352 352
 		return apply_filters(
353 353
 			'getpaid_paypal_args',
354 354
 			array_merge(
355
-				$this->get_transaction_args( $invoice ),
356
-				$this->get_line_item_args( $invoice, true )
355
+				$this->get_transaction_args($invoice),
356
+				$this->get_line_item_args($invoice, true)
357 357
 			),
358 358
 			$invoice
359 359
 		);
@@ -366,10 +366,10 @@  discard block
 block discarded – undo
366 366
 	 * @param  array $paypal_args PayPal args.
367 367
 	 * @param  WPInv_Invoice    $invoice Invoice object.
368 368
 	 */
369
-	public function process_subscription( $paypal_args, $invoice ) {
369
+	public function process_subscription($paypal_args, $invoice) {
370 370
 
371 371
         // Make sure this is a subscription.
372
-        if ( ! $invoice->is_recurring() || ! $subscription = getpaid_get_invoice_subscription( $invoice ) ) {
372
+        if (!$invoice->is_recurring() || !$subscription = getpaid_get_invoice_subscription($invoice)) {
373 373
             return $paypal_args;
374 374
         }
375 375
 
@@ -377,23 +377,23 @@  discard block
 block discarded – undo
377 377
         $paypal_args['cmd'] = '_xclick-subscriptions';
378 378
 
379 379
         // Subscription name.
380
-        $paypal_args['item_name'] = wp_sprintf( __( 'Invoice %s', 'invoicing' ), $invoice->get_number() );
380
+        $paypal_args['item_name'] = wp_sprintf(__('Invoice %s', 'invoicing'), $invoice->get_number());
381 381
 
382 382
         // Get subscription args.
383
-        $period                 = strtoupper( substr( $subscription->get_period(), 0, 1 ) );
383
+        $period                 = strtoupper(substr($subscription->get_period(), 0, 1));
384 384
         $interval               = (int) $subscription->get_frequency();
385 385
         $bill_times             = (int) $subscription->get_bill_times();
386
-        $initial_amount         = (float) wpinv_sanitize_amount( $invoice->get_initial_total(), 2 );
387
-        $recurring_amount       = (float) wpinv_sanitize_amount( $invoice->get_recurring_total(), 2 );
388
-        $subscription_item      = $invoice->get_recurring( true );
386
+        $initial_amount         = (float) wpinv_sanitize_amount($invoice->get_initial_total(), 2);
387
+        $recurring_amount       = (float) wpinv_sanitize_amount($invoice->get_recurring_total(), 2);
388
+        $subscription_item      = $invoice->get_recurring(true);
389 389
 
390 390
 		// Convert 365 days to 1 year.
391
-		if ( 'D' == $period && 365 == $interval ) {
391
+		if ('D' == $period && 365 == $interval) {
392 392
 			$period = 'Y';
393 393
 			$interval = 1;
394 394
 		}
395 395
 
396
-        if ( $subscription_item->has_free_trial() ) {
396
+        if ($subscription_item->has_free_trial()) {
397 397
 
398 398
             $paypal_args['a1'] = 0 == $initial_amount ? 0 : $initial_amount;
399 399
 
@@ -403,28 +403,28 @@  discard block
 block discarded – undo
403 403
 			// Trial period.
404 404
 			$paypal_args['t1'] = $subscription_item->get_trial_period();
405 405
 
406
-        } elseif ( $initial_amount != $recurring_amount ) {
406
+        } elseif ($initial_amount != $recurring_amount) {
407 407
 
408 408
             // No trial period, but initial amount includes a sign-up fee and/or other items, so charge it as a separate period.
409 409
 
410
-            if ( 1 == $bill_times ) {
410
+            if (1 == $bill_times) {
411 411
                 $param_number = 3;
412 412
             } else {
413 413
                 $param_number = 1;
414 414
             }
415 415
 
416
-            $paypal_args[ 'a' . $param_number ] = $initial_amount ? $initial_amount : 0;
416
+            $paypal_args['a' . $param_number] = $initial_amount ? $initial_amount : 0;
417 417
 
418 418
             // Sign Up interval
419
-            $paypal_args[ 'p' . $param_number ] = $interval;
419
+            $paypal_args['p' . $param_number] = $interval;
420 420
 
421 421
             // Sign Up unit of duration
422
-            $paypal_args[ 't' . $param_number ] = $period;
422
+            $paypal_args['t' . $param_number] = $period;
423 423
 
424 424
         }
425 425
 
426 426
         // We have a recurring payment
427
-		if ( ! isset( $param_number ) || 1 == $param_number ) {
427
+		if (!isset($param_number) || 1 == $param_number) {
428 428
 
429 429
 			// Subscription price
430 430
 			$paypal_args['a3'] = $recurring_amount;
@@ -438,7 +438,7 @@  discard block
 block discarded – undo
438 438
         }
439 439
 
440 440
         // Recurring payments
441
-		if ( 1 == $bill_times || ( $initial_amount != $recurring_amount && ! $subscription_item->has_free_trial() && 2 == $bill_times ) ) {
441
+		if (1 == $bill_times || ($initial_amount != $recurring_amount && !$subscription_item->has_free_trial() && 2 == $bill_times)) {
442 442
 
443 443
 			// Non-recurring payments
444 444
 			$paypal_args['src'] = 0;
@@ -447,15 +447,15 @@  discard block
 block discarded – undo
447 447
 
448 448
 			$paypal_args['src'] = 1;
449 449
 
450
-			if ( $bill_times > 0 ) {
450
+			if ($bill_times > 0) {
451 451
 
452 452
 				// An initial period is being used to charge a sign-up fee
453
-				if ( $initial_amount != $recurring_amount && ! $subscription_item->has_free_trial() ) {
453
+				if ($initial_amount != $recurring_amount && !$subscription_item->has_free_trial()) {
454 454
 					$bill_times--;
455 455
 				}
456 456
 
457 457
                 // Make sure it's not over the max of 52
458
-                $paypal_args['srt'] = ( $bill_times <= 52 ? absint( $bill_times ) : 52 );
458
+                $paypal_args['srt'] = ($bill_times <= 52 ? absint($bill_times) : 52);
459 459
 
460 460
 			}
461 461
         }
@@ -464,10 +464,10 @@  discard block
 block discarded – undo
464 464
         $paypal_args['rm'] = 2;
465 465
 
466 466
         // Get rid of redudant items.
467
-        foreach ( array( 'item_name_1', 'quantity_1', 'amount_1', 'item_number_1' ) as $arg ) {
467
+        foreach (array('item_name_1', 'quantity_1', 'amount_1', 'item_number_1') as $arg) {
468 468
 
469
-            if ( isset( $paypal_args[ $arg ] ) ) {
470
-                unset( $paypal_args[ $arg ] );
469
+            if (isset($paypal_args[$arg])) {
470
+                unset($paypal_args[$arg]);
471 471
             }
472 472
 }
473 473
 
@@ -485,7 +485,7 @@  discard block
 block discarded – undo
485 485
 	 * @return void
486 486
 	 */
487 487
 	public function verify_ipn() {
488
-        new GetPaid_Paypal_Gateway_IPN_Handler( $this );
488
+        new GetPaid_Paypal_Gateway_IPN_Handler($this);
489 489
     }
490 490
 
491 491
     /**
@@ -494,7 +494,7 @@  discard block
 block discarded – undo
494 494
     public function sandbox_notice() {
495 495
 
496 496
         return sprintf(
497
-			__( 'SANDBOX ENABLED. You can use sandbox testing accounts only. See the %1$sPayPal Sandbox Testing Guide%2$s for more details.', 'invoicing' ),
497
+			__('SANDBOX ENABLED. You can use sandbox testing accounts only. See the %1$sPayPal Sandbox Testing Guide%2$s for more details.', 'invoicing'),
498 498
 			'<a href="https://developer.paypal.com/docs/classic/lifecycle/ug_sandbox/">',
499 499
 			'</a>'
500 500
 		);
@@ -506,41 +506,41 @@  discard block
 block discarded – undo
506 506
 	 *
507 507
 	 * @param array $admin_settings
508 508
 	 */
509
-	public function admin_settings( $admin_settings ) {
509
+	public function admin_settings($admin_settings) {
510 510
 
511 511
         $currencies = sprintf(
512
-            __( 'Supported Currencies: %s', 'invoicing' ),
513
-            implode( ', ', $this->currencies )
512
+            __('Supported Currencies: %s', 'invoicing'),
513
+            implode(', ', $this->currencies)
514 514
         );
515 515
 
516 516
         $admin_settings['paypal_active']['desc'] .= " ($currencies)";
517
-        $admin_settings['paypal_desc']['std']     = __( 'Pay via PayPal: you can pay with your credit card if you don\'t have a PayPal account.', 'invoicing' );
517
+        $admin_settings['paypal_desc']['std']     = __('Pay via PayPal: you can pay with your credit card if you don\'t have a PayPal account.', 'invoicing');
518 518
 
519 519
 		// Access tokens.
520
-		$live_email      = wpinv_get_option( 'paypal_email' );
521
-		$sandbox_email   = wpinv_get_option( 'paypal_sandbox_email' );
520
+		$live_email      = wpinv_get_option('paypal_email');
521
+		$sandbox_email   = wpinv_get_option('paypal_sandbox_email');
522 522
 
523 523
 		$admin_settings['paypal_connect'] = array(
524 524
 			'type' => 'hook',
525 525
 			'id'   => 'paypal_connect',
526
-			'name' => __( 'Connect to PayPal', 'invoicing' ),
526
+			'name' => __('Connect to PayPal', 'invoicing'),
527 527
 		);
528 528
 
529 529
         $admin_settings['paypal_email'] = array(
530 530
             'type'  => 'text',
531 531
 			'class' => 'live-auth-data',
532 532
             'id'    => 'paypal_email',
533
-            'name'  => __( 'Live Email Address', 'invoicing' ),
534
-            'desc'  => __( 'The email address of your PayPal account.', 'invoicing' ),
533
+            'name'  => __('Live Email Address', 'invoicing'),
534
+            'desc'  => __('The email address of your PayPal account.', 'invoicing'),
535 535
         );
536 536
 
537 537
 		$admin_settings['paypal_sandbox_email'] = array(
538 538
             'type'  => 'text',
539 539
 			'class' => 'sandbox-auth-data',
540 540
             'id'    => 'paypal_sandbox_email',
541
-            'name'  => __( 'Sandbox Email Address', 'invoicing' ),
542
-            'desc'  => __( 'The email address of your sandbox PayPal account.', 'invoicing' ),
543
-			'std'   => wpinv_get_option( 'paypal_email', '' ),
541
+            'name'  => __('Sandbox Email Address', 'invoicing'),
542
+            'desc'  => __('The email address of your sandbox PayPal account.', 'invoicing'),
543
+			'std'   => wpinv_get_option('paypal_email', ''),
544 544
         );
545 545
 
546 546
 		// Client ID and secret.
@@ -548,41 +548,41 @@  discard block
 block discarded – undo
548 548
 			'type'  => 'text',
549 549
 			'class' => 'live-auth-data',
550 550
 			'id'    => 'paypal_client_id',
551
-			'name'  => __( 'Live Client ID', 'invoicing' ),
552
-			'desc'  => __( 'The client ID of your PayPal account. You can retrieve this from your PayPal developer account.', 'invoicing' ),
551
+			'name'  => __('Live Client ID', 'invoicing'),
552
+			'desc'  => __('The client ID of your PayPal account. You can retrieve this from your PayPal developer account.', 'invoicing'),
553 553
 		);
554 554
 
555 555
 		$admin_settings['paypal_sandbox_client_id'] = array(
556 556
 			'type'  => 'text',
557 557
 			'class' => 'sandbox-auth-data',
558 558
 			'id'    => 'paypal_sandbox_client_id',
559
-			'name'  => __( 'Sandbox Client ID', 'invoicing' ),
560
-			'desc'  => __( 'The client ID of your sandbox PayPal account. You can retrieve this from your PayPal developer account.', 'invoicing' ),
561
-			'std'   => wpinv_get_option( 'paypal_client_id', '' ),
559
+			'name'  => __('Sandbox Client ID', 'invoicing'),
560
+			'desc'  => __('The client ID of your sandbox PayPal account. You can retrieve this from your PayPal developer account.', 'invoicing'),
561
+			'std'   => wpinv_get_option('paypal_client_id', ''),
562 562
 		);
563 563
 
564 564
 		$admin_settings['paypal_secret'] = array(
565 565
 			'type'  => 'text',
566 566
 			'class' => 'live-auth-data',
567 567
 			'id'    => 'paypal_secret',
568
-			'name'  => __( 'Live Secret', 'invoicing' ),
569
-			'desc'  => __( 'The secret of your PayPal account. You can retrieve this from your PayPal developer account.', 'invoicing' ),
568
+			'name'  => __('Live Secret', 'invoicing'),
569
+			'desc'  => __('The secret of your PayPal account. You can retrieve this from your PayPal developer account.', 'invoicing'),
570 570
 		);
571 571
 
572 572
 		$admin_settings['paypal_sandbox_secret'] = array(
573 573
 			'type'  => 'text',
574 574
 			'class' => 'sandbox-auth-data',
575 575
 			'id'    => 'paypal_sandbox_secret',
576
-			'name'  => __( 'Sandbox Secret', 'invoicing' ),
577
-			'desc'  => __( 'The secret of your sandbox PayPal account. You can retrieve this from your PayPal developer account.', 'invoicing' ),
576
+			'name'  => __('Sandbox Secret', 'invoicing'),
577
+			'desc'  => __('The secret of your sandbox PayPal account. You can retrieve this from your PayPal developer account.', 'invoicing'),
578 578
 		);
579 579
 
580 580
         $admin_settings['paypal_ipn_url'] = array(
581 581
             'type'     => 'ipn_url',
582 582
             'id'       => 'paypal_ipn_url',
583
-            'name'     => __( 'IPN Url', 'invoicing' ),
583
+            'name'     => __('IPN Url', 'invoicing'),
584 584
             'std'      => $this->notify_url,
585
-            'desc'     => __( "If you've not enabled IPNs in your paypal account, use the above URL to enable them.", 'invoicing' ) . ' <a href="https://developer.paypal.com/docs/api-basics/notifications/ipn/"><em>' . __( 'Learn more.', 'invoicing' ) . '</em></a>',
585
+            'desc'     => __("If you've not enabled IPNs in your paypal account, use the above URL to enable them.", 'invoicing') . ' <a href="https://developer.paypal.com/docs/api-basics/notifications/ipn/"><em>' . __('Learn more.', 'invoicing') . '</em></a>',
586 586
             'readonly' => true,
587 587
         );
588 588
 
@@ -595,9 +595,9 @@  discard block
 block discarded – undo
595 595
 	 * @param string $url
596 596
 	 * @param WPInv_Subscription $subscription
597 597
 	 */
598
-	public function filter_cancel_subscription_url( $url, $subscription ) {
598
+	public function filter_cancel_subscription_url($url, $subscription) {
599 599
 
600
-		if ( $this->id !== $subscription->get_gateway() ) {
600
+		if ($this->id !== $subscription->get_gateway()) {
601 601
 			return $url;
602 602
 		}
603 603
 
@@ -605,16 +605,16 @@  discard block
 block discarded – undo
605 605
 		$profile_id = $subscription->get_profile_id();
606 606
 
607 607
 		// Bail if no profile ID.
608
-		if ( empty( $profile_id ) ) {
608
+		if (empty($profile_id)) {
609 609
 			return $url;
610 610
 		}
611 611
 
612 612
 		$cancel_url = 'https://www.paypal.com/myaccount/autopay/connect/%s/cancel';
613
-		if ( $this->is_sandbox( $subscription->get_parent_payment() ) ) {
613
+		if ($this->is_sandbox($subscription->get_parent_payment())) {
614 614
 			$cancel_url = 'https://www.sandbox.paypal.com/myaccount/autopay/connect/%s/cancel';
615 615
 		}
616 616
 
617
-		return sprintf( $cancel_url, $profile_id );
617
+		return sprintf($cancel_url, $profile_id);
618 618
 	}
619 619
 
620 620
 	/**
@@ -624,8 +624,8 @@  discard block
 block discarded – undo
624 624
      * @param array $data
625 625
      * @return string
626 626
 	 */
627
-	public static function maybe_get_connect_url( $url = '', $data = array() ) {
628
-		return self::get_connect_url( false, urldecode( $data['redirect'] ) );
627
+	public static function maybe_get_connect_url($url = '', $data = array()) {
628
+		return self::get_connect_url(false, urldecode($data['redirect']));
629 629
 	}
630 630
 
631 631
 	/**
@@ -636,25 +636,25 @@  discard block
 block discarded – undo
636 636
 	 * @param string $redirect
637 637
      * @return string
638 638
 	 */
639
-	public static function get_connect_url( $is_sandbox, $redirect = '' ) {
639
+	public static function get_connect_url($is_sandbox, $redirect = '') {
640 640
 
641 641
         $redirect_url = add_query_arg(
642 642
             array(
643 643
                 'getpaid-admin-action' => 'connect_paypal',
644 644
                 'page'                 => 'wpinv-settings',
645
-                'live_mode'            => (int) empty( $is_sandbox ),
645
+                'live_mode'            => (int) empty($is_sandbox),
646 646
                 'tab'                  => 'gateways',
647 647
                 'section'              => 'paypal',
648
-                'getpaid-nonce'        => wp_create_nonce( 'getpaid-nonce' ),
649
-				'redirect'             => urlencode( $redirect ),
648
+                'getpaid-nonce'        => wp_create_nonce('getpaid-nonce'),
649
+				'redirect'             => urlencode($redirect),
650 650
             ),
651
-            admin_url( 'admin.php' )
651
+            admin_url('admin.php')
652 652
         );
653 653
 
654 654
         return add_query_arg(
655 655
             array(
656
-                'live_mode'    => (int) empty( $is_sandbox ),
657
-                'redirect_url' => urlencode( str_replace( '&amp;', '&', $redirect_url ) ),
656
+                'live_mode'    => (int) empty($is_sandbox),
657
+                'redirect_url' => urlencode(str_replace('&amp;', '&', $redirect_url)),
658 658
             ),
659 659
             'https://ayecode.io/oauth/paypal'
660 660
         );
@@ -670,10 +670,10 @@  discard block
 block discarded – undo
670 670
 
671 671
         ?>
672 672
 			<div class="wpinv-paypal-connect-live">
673
-				<a class="button button-primary" href="<?php echo esc_url( self::get_connect_url( false ) ); ?>"><?php esc_html_e( 'Connect to PayPal', 'invoicing' ); ?></a>
673
+				<a class="button button-primary" href="<?php echo esc_url(self::get_connect_url(false)); ?>"><?php esc_html_e('Connect to PayPal', 'invoicing'); ?></a>
674 674
 			</div>
675 675
 			<div class="wpinv-paypal-connect-sandbox">
676
-				<a class="button button-primary" href="<?php echo esc_url( self::get_connect_url( true ) ); ?>"><?php esc_html_e( 'Connect to PayPal Sandbox', 'invoicing' ); ?></a>
676
+				<a class="button button-primary" href="<?php echo esc_url(self::get_connect_url(true)); ?>"><?php esc_html_e('Connect to PayPal Sandbox', 'invoicing'); ?></a>
677 677
 			</div>
678 678
 
679 679
             <script>
@@ -714,26 +714,26 @@  discard block
 block discarded – undo
714 714
 	 * @param array $data Connection data.
715 715
 	 * @return void
716 716
 	 */
717
-	public function connect_paypal( $data ) {
717
+	public function connect_paypal($data) {
718 718
 
719 719
 		$sandbox      = $this->is_sandbox();
720
-		$data         = wp_unslash( $data );
721
-		$access_token = empty( $data['access_token'] ) ? '' : sanitize_text_field( $data['access_token'] );
720
+		$data         = wp_unslash($data);
721
+		$access_token = empty($data['access_token']) ? '' : sanitize_text_field($data['access_token']);
722 722
 
723
-		if ( isset( $data['live_mode'] ) ) {
724
-			$sandbox = empty( $data['live_mode'] );
723
+		if (isset($data['live_mode'])) {
724
+			$sandbox = empty($data['live_mode']);
725 725
 		}
726 726
 
727
-		wpinv_update_option( 'paypal_sandbox', (int) $sandbox );
728
-		wpinv_update_option( 'paypal_active', 1 );
727
+		wpinv_update_option('paypal_sandbox', (int) $sandbox);
728
+		wpinv_update_option('paypal_active', 1);
729 729
 
730
-		if ( ! empty( $data['error_description'] ) ) {
731
-			getpaid_admin()->show_error( wp_kses_post( urldecode( $data['error_description'] ) ) );
730
+		if (!empty($data['error_description'])) {
731
+			getpaid_admin()->show_error(wp_kses_post(urldecode($data['error_description'])));
732 732
 		} else {
733 733
 
734 734
 			// Retrieve the user info.
735 735
 			$user_info = wp_remote_get(
736
-				! $sandbox ? 'https://api-m.paypal.com/v1/identity/oauth2/userinfo?schema=paypalv1.1' : 'https://api-m.sandbox.paypal.com/v1/identity/oauth2/userinfo?schema=paypalv1.1',
736
+				!$sandbox ? 'https://api-m.paypal.com/v1/identity/oauth2/userinfo?schema=paypalv1.1' : 'https://api-m.sandbox.paypal.com/v1/identity/oauth2/userinfo?schema=paypalv1.1',
737 737
 				array(
738 738
 
739 739
 					'headers' => array(
@@ -744,33 +744,33 @@  discard block
 block discarded – undo
744 744
 				)
745 745
 			);
746 746
 
747
-			if ( is_wp_error( $user_info ) ) {
748
-				getpaid_admin()->show_error( wp_kses_post( $user_info->get_error_message() ) );
747
+			if (is_wp_error($user_info)) {
748
+				getpaid_admin()->show_error(wp_kses_post($user_info->get_error_message()));
749 749
 			} else {
750 750
 
751 751
 				// Create application.
752
-				$user_info = json_decode( wp_remote_retrieve_body( $user_info ) );
752
+				$user_info = json_decode(wp_remote_retrieve_body($user_info));
753 753
 
754
-				if ( $sandbox ) {
755
-					wpinv_update_option( 'paypal_sandbox_email', sanitize_email( $user_info->emails[0]->value ) );
756
-					wpinv_update_option( 'paypal_sandbox_refresh_token', sanitize_text_field( urldecode( $data['refresh_token'] ) ) );
757
-					set_transient( 'getpaid_paypal_sandbox_access_token', sanitize_text_field( urldecode( $data['access_token'] ) ), (int) $data['expires_in'] );
758
-					getpaid_admin()->show_success( __( 'Successfully connected your PayPal sandbox account', 'invoicing' ) );
754
+				if ($sandbox) {
755
+					wpinv_update_option('paypal_sandbox_email', sanitize_email($user_info->emails[0]->value));
756
+					wpinv_update_option('paypal_sandbox_refresh_token', sanitize_text_field(urldecode($data['refresh_token'])));
757
+					set_transient('getpaid_paypal_sandbox_access_token', sanitize_text_field(urldecode($data['access_token'])), (int) $data['expires_in']);
758
+					getpaid_admin()->show_success(__('Successfully connected your PayPal sandbox account', 'invoicing'));
759 759
 				} else {
760
-					wpinv_update_option( 'paypal_email', sanitize_email( $user_info->emails[0]->value ) );
761
-					wpinv_update_option( 'paypal_refresh_token', sanitize_text_field( urldecode( $data['refresh_token'] ) ) );
762
-					set_transient( 'getpaid_paypal_access_token', sanitize_text_field( urldecode( $data['access_token'] ) ), (int) $data['expires_in'] );
763
-					getpaid_admin()->show_success( __( 'Successfully connected your PayPal account', 'invoicing' ) );
760
+					wpinv_update_option('paypal_email', sanitize_email($user_info->emails[0]->value));
761
+					wpinv_update_option('paypal_refresh_token', sanitize_text_field(urldecode($data['refresh_token'])));
762
+					set_transient('getpaid_paypal_access_token', sanitize_text_field(urldecode($data['access_token'])), (int) $data['expires_in']);
763
+					getpaid_admin()->show_success(__('Successfully connected your PayPal account', 'invoicing'));
764 764
 				}
765 765
 }
766 766
 }
767 767
 
768
-		$redirect = empty( $data['redirect'] ) ? admin_url( 'admin.php?page=wpinv-settings&tab=gateways&section=paypal' ) : urldecode( $data['redirect'] );
768
+		$redirect = empty($data['redirect']) ? admin_url('admin.php?page=wpinv-settings&tab=gateways&section=paypal') : urldecode($data['redirect']);
769 769
 
770
-		if ( isset( $data['step'] ) ) {
771
-			$redirect = add_query_arg( 'step', $data['step'], $redirect );
770
+		if (isset($data['step'])) {
771
+			$redirect = add_query_arg('step', $data['step'], $redirect);
772 772
 		}
773
-		wp_redirect( $redirect );
773
+		wp_redirect($redirect);
774 774
 		exit;
775 775
 	}
776 776
 
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.7' );
26
+    define( 'WPINV_VERSION', '2.8.7' );
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.7' );
25
+if (!defined('WPINV_VERSION')) {
26
+	define('WPINV_VERSION', '2.8.7');
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', -100 );
67
+add_action('plugins_loaded', 'getpaid', -100);
Please login to merge, or discard this patch.