Completed
Push — master ( e2a4d2...ed335c )
by
unknown
55s
created
color_scheme/color_scheme/inc/class-redux-color-scheme-functions.php 2 patches
Spacing   +32 added lines, -32 removed lines patch added patch discarded remove patch
@@ -42,7 +42,7 @@  discard block
 block discarded – undo
42 42
 		 *
43 43
 		 * @var array|null
44 44
 		 */
45
-		public static ?array $field;
45
+		public static ? array $field;
46 46
 
47 47
 		/**
48 48
 		 * WP Upload directory.
@@ -63,7 +63,7 @@  discard block
 block discarded – undo
63 63
 		 *
64 64
 		 * @var array|null
65 65
 		 */
66
-		public static ?array $select;
66
+		public static ? array $select;
67 67
 
68 68
 		/**
69 69
 		 * Class init.
@@ -399,8 +399,8 @@  discard block
 block discarded – undo
399 399
 				$html .= '<select name="' . self::$parent->args['opt_name'] . '[' . self::$field_id . '][' . $id . ']" id="redux-color-scheme-opt-select-' . $id . '"' . $width . ' class="redux-color-scheme-opt-select">';
400 400
 
401 401
 				foreach ( $v['options'] as $opt_id => $opt_val ) {
402
-					$data[ $id ]['value'] = $data[ $id ]['value'] ?? '';
403
-					$html                .= '<option value="' . $opt_id . '" ' . selected( $opt_id, $data[ $id ]['value'], false ) . '>' . $opt_val . '</option>';
402
+					$data[$id]['value'] = $data[$id]['value'] ?? '';
403
+					$html                .= '<option value="' . $opt_id . '" ' . selected( $opt_id, $data[$id]['value'], false ) . '>' . $opt_val . '</option>';
404 404
 				}
405 405
 
406 406
 				$html .= '</select>';
@@ -545,7 +545,7 @@  discard block
 block discarded – undo
545 545
 						$val['rgba']  = $val['rgba'] ?? $res;
546 546
 						$val['group'] = $val['group'] ?? '';
547 547
 
548
-						$scheme[ $val['id'] ] = $val;
548
+						$scheme[$val['id']] = $val;
549 549
 					}
550 550
 				}
551 551
 
@@ -579,9 +579,9 @@  discard block
 block discarded – undo
579 579
 					foreach ( self::$select as $sel_arr ) {
580 580
 						$sel_grp = $sel_arr['group'];
581 581
 						if ( ! array_key_exists( $sel_grp, $sel_grps ) ) {
582
-							$sel_grps[ $sel_grp ] = array();
582
+							$sel_grps[$sel_grp] = array();
583 583
 						}
584
-						$sel_grps[ $sel_grp ][] = $sel_arr;
584
+						$sel_grps[$sel_grp][] = $sel_arr;
585 585
 					}
586 586
 				}
587 587
 
@@ -589,19 +589,19 @@  discard block
 block discarded – undo
589 589
 				$group_arr = self::get_group_names();
590 590
 
591 591
 				foreach ( $group_arr as $group_name => $description ) {
592
-					$groups[ $group_name ] = array();
592
+					$groups[$group_name] = array();
593 593
 
594 594
 					if ( is_array( $description ) ) {
595
-						$grp_desc[ $group_name ]           = $description['desc'] ?? '';
596
-						$grp_grpdesc[ $group_name ]        = $description['group_desc'] ?? '';
597
-						$grp_hidden[ $group_name ]         = $description['hidden'] ?? false;
598
-						$grp_accordion_open[ $group_name ] = $description['accordion_open'] ?? false;
595
+						$grp_desc[$group_name]           = $description['desc'] ?? '';
596
+						$grp_grpdesc[$group_name]        = $description['group_desc'] ?? '';
597
+						$grp_hidden[$group_name]         = $description['hidden'] ?? false;
598
+						$grp_accordion_open[$group_name] = $description['accordion_open'] ?? false;
599 599
 
600 600
 					} else {
601
-						$grp_desc[ $group_name ]           = $description;
602
-						$grp_hidden[ $group_name ]         = false;
603
-						$grp_accordion_open[ $group_name ] = false;
604
-						$grp_grpdesc[ $group_name ]        = false;
601
+						$grp_desc[$group_name]           = $description;
602
+						$grp_hidden[$group_name]         = false;
603
+						$grp_accordion_open[$group_name] = false;
604
+						$grp_grpdesc[$group_name]        = false;
605 605
 					}
606 606
 				}
607 607
 
@@ -610,7 +610,7 @@  discard block
 block discarded – undo
610 610
 					if ( is_array( $arr ) ) {
611 611
 						if ( ! empty( $arr['group'] ) ) {
612 612
 							if ( array_key_exists( $arr['group'], $group_arr ) ) {
613
-								$groups[ $arr['group'] ][] = $arr;
613
+								$groups[$arr['group']][] = $arr;
614 614
 							} else {
615 615
 								$groups[''][] = $arr;
616 616
 							}
@@ -656,10 +656,10 @@  discard block
 block discarded – undo
656 656
 					$class_hide = '';
657 657
 					$is_open    = '';
658 658
 
659
-					if ( isset( $grp_hidden[ $title ] ) && '' !== $grp_hidden[ $title ] ) {
660
-						$is_hidden  = $grp_hidden[ $title ];
659
+					if ( isset( $grp_hidden[$title] ) && '' !== $grp_hidden[$title] ) {
660
+						$is_hidden  = $grp_hidden[$title];
661 661
 						$class_hide = ( true === $is_hidden ) ? ' hidden ' : '';
662
-						$is_open    = $grp_accordion_open[ $title ];
662
+						$is_open    = $grp_accordion_open[$title];
663 663
 					}
664 664
 
665 665
 					$add_class = '';
@@ -689,8 +689,8 @@  discard block
 block discarded – undo
689 689
 						}
690 690
 
691 691
 						// apply group description, if any.
692
-						if ( isset( $grp_desc[ $title ] ) && '' !== $grp_desc[ $title ] ) {
693
-							$html  .= '<span class="redux-label redux-layout-group-desc-label' . $icon_class . '">' . esc_attr( $grp_desc[ $title ] ) . '</label>';
692
+						if ( isset( $grp_desc[$title] ) && '' !== $grp_desc[$title] ) {
693
+							$html  .= '<span class="redux-label redux-layout-group-desc-label' . $icon_class . '">' . esc_attr( $grp_desc[$title] ) . '</label>';
694 694
 							$add_hr = true;
695 695
 
696 696
 							if ( $is_accordion ) {
@@ -716,14 +716,14 @@  discard block
 block discarded – undo
716 716
 							$html .= '<div class="redux-color-scheme-accordion-section" data-state="' . esc_attr( $is_open ) . '">';
717 717
 							if ( false !== $grp_grpdesc ) {
718 718
 								$html .= '<div class="redux-color-scheme-group-desc">';
719
-								$html .= esc_attr( $grp_grpdesc[ $title ] );
719
+								$html .= esc_attr( $grp_grpdesc[$title] );
720 720
 								$html .= '</div>';
721 721
 							}
722 722
 						}
723 723
 
724 724
 						// Select box render.
725 725
 						if ( array_key_exists( $title, $sel_grps ) ) {
726
-							$html .= self::render_selects( $sel_grps[ $title ], $scheme );
726
+							$html .= self::render_selects( $sel_grps[$title], $scheme );
727 727
 						}
728 728
 					} elseif ( $is_accordion ) {
729 729
 						$html .= '<div class="redux-color-scheme-accordion-section">';
@@ -798,7 +798,7 @@  discard block
 block discarded – undo
798 798
 								return '';
799 799
 							}
800 800
 
801
-							$picker_data = $scheme_data[ $v['id'] ];
801
+							$picker_data = $scheme_data[$v['id']];
802 802
 
803 803
 							// Hidden input for data string.
804 804
 							$html .= '<input
@@ -962,7 +962,7 @@  discard block
 block discarded – undo
962 962
 				return false;
963 963
 			}
964 964
 
965
-			return $data[ $scheme_name ];
965
+			return $data[$scheme_name];
966 966
 		}
967 967
 
968 968
 		/**
@@ -989,7 +989,7 @@  discard block
 block discarded – undo
989 989
 				// Enum through values and assign them to new array.
990 990
 				foreach ( $arr as $val ) {
991 991
 					if ( isset( $val['id'] ) ) {
992
-						$new_scheme[ $val['id'] ] = $val;
992
+						$new_scheme[$val['id']] = $val;
993 993
 					}
994 994
 				}
995 995
 
@@ -1001,12 +1001,12 @@  discard block
 block discarded – undo
1001 1001
 					$schemes = array();
1002 1002
 				}
1003 1003
 
1004
-				$scheme_data = $schemes[ $name ] ?? '';
1004
+				$scheme_data = $schemes[$name] ?? '';
1005 1005
 
1006 1006
 				if ( $scheme_data !== $new_scheme ) {
1007 1007
 
1008 1008
 					// Add new scheme to array that will be saved.
1009
-					$schemes[ $name ] = $new_scheme;
1009
+					$schemes[$name] = $new_scheme;
1010 1010
 
1011 1011
 					// Write the data to the JSON file.
1012 1012
 					return self::write_scheme_file( $schemes );
@@ -1076,9 +1076,9 @@  discard block
 block discarded – undo
1076 1076
 					if ( isset( $v['type'] ) ) {
1077 1077
 						$val = $v['value'];
1078 1078
 
1079
-						unset( $data[ $k ] );
1079
+						unset( $data[$k] );
1080 1080
 
1081
-						$data[ $k ] = $val;
1081
+						$data[$k] = $val;
1082 1082
 					}
1083 1083
 				}
1084 1084
 			}
@@ -1111,7 +1111,7 @@  discard block
 block discarded – undo
1111 1111
 			}
1112 1112
 
1113 1113
 			// Append ID to variable that holds the current scheme ID data.
1114
-			$redux_options[ self::$field_id ] = $data;
1114
+			$redux_options[self::$field_id] = $data;
1115 1115
 
1116 1116
 			// Save the modified settings.
1117 1117
 			update_option( $opt_name, $redux_options );
Please login to merge, or discard this patch.
Indentation   +1082 added lines, -1082 removed lines patch added patch discarded remove patch
@@ -11,773 +11,773 @@  discard block
 block discarded – undo
11 11
 defined( 'ABSPATH' ) || exit;
12 12
 
13 13
 if ( ! class_exists( 'Redux_Color_Scheme_Functions' ) ) {
14
-	/**
15
-	 * Class Redux_Color_Scheme_Functions
16
-	 */
17
-	class Redux_Color_Scheme_Functions {
18
-
19
-		/**
20
-		 * ReduxFramework object.
21
-		 *
22
-		 * @var null|ReduxFramework
23
-		 */
24
-		public static ?ReduxFramework $parent;
25
-
26
-		/**
27
-		 * Field ID
28
-		 *
29
-		 * @var string|null
30
-		 */
31
-		public static ?string $field_id;
32
-
33
-		/**
34
-		 * Field class.
35
-		 *
36
-		 * @var string|null
37
-		 */
38
-		public static ?string $field_class;
39
-
40
-		/**
41
-		 * Field array.
42
-		 *
43
-		 * @var array|null
44
-		 */
45
-		public static ?array $field;
46
-
47
-		/**
48
-		 * WP Upload directory.
49
-		 *
50
-		 * @var string|null
51
-		 */
52
-		public static ?string $upload_dir = '';
53
-
54
-		/**
55
-		 * WP Upload URI
56
-		 *
57
-		 * @var string|null
58
-		 */
59
-		public static ?string $upload_url = '';
60
-
61
-		/**
62
-		 * Select fields.
63
-		 *
64
-		 * @var array|null
65
-		 */
66
-		public static ?array $select;
67
-
68
-		/**
69
-		 * Class init.
70
-		 *
71
-		 * @param ReduxFramework $redux ReduxFramework object.
72
-		 */
73
-		public static function init( ReduxFramework $redux ) {
74
-			self::$parent = $redux;
75
-
76
-			if ( empty( self::$field_id ) ) {
77
-				self::$field = self::get_field( $redux );
78
-
79
-				if ( ! is_array( self::$field ) ) {
80
-					return;
81
-				}
82
-
83
-				self::$field_id = self::$field['id'];
84
-			}
85
-
86
-			// Make sanitized upload dir DIR.
87
-			self::$upload_dir = Redux_Functions_Ex::wp_normalize_path( ReduxFramework::$_upload_dir . 'color-schemes/' );
88
-
89
-			// Make sanitized upload dir URL.
90
-			self::$upload_url = Redux_Functions_Ex::wp_normalize_path( ReduxFramework::$_upload_url . 'color-schemes/' );
91
-
92
-			Redux_Functions::init_wp_filesystem();
93
-		}
94
-
95
-		/**
96
-		 * Checks if tooltips are in use.
97
-		 *
98
-		 * @param array $field Field array.
99
-		 *
100
-		 * @return bool
101
-		 */
102
-		public static function tooltips_in_use( array $field ): bool {
103
-			$blocks = $field['default'];
104
-
105
-			foreach ( $blocks as $arr ) {
106
-				if ( isset( $arr['tooltip'] ) ) {
107
-					return true;
108
-				}
109
-			}
110
-
111
-			return false;
112
-		}
113
-
114
-		/**
115
-		 * Convert DB values.
116
-		 */
117
-		public static function convert_to_db() {
118
-			$upload_dir = Redux_Functions_Ex::wp_normalize_path( ReduxFramework::$_upload_dir . 'color-schemes/' );
119
-
120
-			$cur_scheme_file = Redux_Functions_Ex::wp_normalize_path( $upload_dir . '/' . self::$parent->args['opt_name'] . '_' . self::$field_id . '.json' );
121
-
122
-			if ( is_dir( $upload_dir ) ) {
123
-				if ( file_exists( $cur_scheme_file ) ) {
124
-					$data = Redux_Core::$filesystem->execute( 'get_contents', $cur_scheme_file );
125
-					if ( ! empty( $data ) ) {
126
-						$data = json_decode( $data, true );
127
-
128
-						update_option( self::get_scheme_key(), $data );
129
-
130
-						Redux_Core::$filesystem->execute( 'delete', $cur_scheme_file );
131
-					}
132
-				}
133
-			}
134
-		}
135
-
136
-		/**
137
-		 * Get scheme key.
138
-		 *
139
-		 * @return string
140
-		 */
141
-		public static function get_scheme_key(): string {
142
-			return 'redux_cs_' . self::$parent->args['opt_name'] . '_' . self::$field_id;
143
-		}
144
-
145
-		/**
146
-		 * Get the list of groups names for the color scheme table.
147
-		 *
148
-		 * @since       2.0.0
149
-		 * @access      public static
150
-		 * @return      array Array of group names.
151
-		 */
152
-		public static function get_group_names(): array {
153
-			if ( empty( self::$field ) ) {
154
-				self::$field = self::get_field();
155
-			}
156
-
157
-			if ( isset( self::$field['groups'] ) ) {
158
-				if ( is_array( self::$field['groups'] ) && ! empty( self::$field['groups'] ) ) {
159
-					return self::$field['groups'];
160
-				}
161
-			}
162
-
163
-			return array();
164
-		}
165
-
166
-		/**
167
-		 * Get output transparent value.
168
-		 *
169
-		 * @return mixed
170
-		 */
171
-		public static function get_output_transparent_val() {
172
-			if ( empty( self::$field ) ) {
173
-				self::$field = self::get_field();
174
-			}
175
-
176
-			if ( isset( self::$field['output_transparent'] ) ) {
177
-				if ( ! empty( self::$field['output_transparent'] ) ) {
178
-					return self::$field['output_transparent'];
179
-				}
180
-			}
181
-
182
-			return false;
183
-		}
184
-
185
-		/**
186
-		 * Get select field name.
187
-		 *
188
-		 * @return array
189
-		 */
190
-		private static function get_select_names(): array {
191
-			if ( empty( self::$field ) ) {
192
-				self::$field = self::get_field();
193
-			}
194
-
195
-			if ( isset( self::$field['select'] ) ) {
196
-				if ( is_array( self::$field['select'] ) && ! empty( self::$field['select'] ) ) {
197
-					return self::$field['select'];
198
-				}
199
-			}
200
-
201
-			return array();
202
-		}
203
-
204
-		/**
205
-		 * Get color scheme field.
206
-		 *
207
-		 * @param ReduxFramework|null $redux pointer.
208
-		 *
209
-		 * @return mixed
210
-		 */
211
-		public static function get_field( ?ReduxFramework $redux = null ) {
212
-			if ( ! is_null( $redux ) ) {
213
-				self::$parent = $redux;
214
-			}
215
-
216
-			if ( isset( $redux->field_sections['color_scheme'] ) ) {
217
-				return reset( $redux->field_sections['color_scheme'] );
218
-			}
219
-
220
-			$arr = self::$parent;
221
-
222
-			foreach ( $arr as $part => $bla ) {
223
-				if ( 'sections' === $part ) {
224
-					foreach ( $bla as $field ) {
225
-						foreach ( $field as $arg => $val ) {
226
-							if ( 'fields' === $arg ) {
227
-								foreach ( $val as $v ) {
228
-									if ( ! empty( $v ) ) {
229
-										foreach ( $v as $id => $x ) {
230
-											if ( 'type' === $id ) {
231
-												if ( 'color_scheme' === $x ) {
232
-													return $v;
233
-												}
234
-											}
235
-										}
236
-									}
237
-								}
238
-							}
239
-						}
240
-					}
241
-				}
242
-			}
243
-
244
-			return null;
245
-		}
246
-
247
-		/**
248
-		 * Output scheme dropdown selector.
249
-		 *
250
-		 * @param       string $selected Selected scheme name.
251
-		 *
252
-		 * @return      string HTML of dropdown selector.
253
-		 * @since       1.0.0
254
-		 * @access      public static
255
-		 */
256
-		public static function get_scheme_select_html( string $selected ): string {
257
-
258
-			$html  = '<select name="' . esc_attr( self::$parent->args['opt_name'] ) . '[redux-scheme-select]" id="redux-scheme-select-' . esc_attr( self::$field_id ) . '" class="redux-scheme-select">';
259
-			$html .= self::get_scheme_list_html( $selected );
260
-			$html .= '</select>';
261
-
262
-			return $html;
263
-		}
264
-
265
-		/**
266
-		 * Set current scheme ID, if one isn't specified.
267
-		 *
268
-		 * @param       string $id Scheme name to set.
269
-		 *
270
-		 * @return      void
271
-		 * @since       1.0.0
272
-		 * @access      public static
273
-		 */
274
-		public static function set_current_scheme_id( string $id ) {
275
-
276
-			// Get opt name, for database.
277
-			$opt_name = self::$parent->args['opt_name'];
278
-
279
-			// Get all options from database.
280
-			$redux_options = get_option( $opt_name, array() );
281
-			if ( ! is_array( $redux_options ) ) {
282
-				$redux_options = array();
283
-			}
284
-			// Append ID to variable that holds the current scheme ID data.
285
-			$redux_options['redux-scheme-select'] = $id;
286
-
287
-			// Save the modified settings.
288
-			update_option( $opt_name, $redux_options );
289
-		}
290
-
291
-		/**
292
-		 * Get tooltip toggle state.
293
-		 *
294
-		 * @return bool
295
-		 */
296
-		public static function get_tooltip_toggle_state(): bool {
297
-
298
-			// Retrieve the opt_name, needed for database.
299
-			$opt_name = self::$parent->args['opt_name'];
300
-
301
-			// Get the entire options array.
302
-			$redux_options = get_option( $opt_name );
303
-
304
-			return $redux_options['redux-color-scheme-tooltip-toggle'] ?? true;
305
-		}
306
-
307
-		/**
308
-		 * Gets the current schem ID from the database.
309
-		 *
310
-		 * @since       1.0.0
311
-		 * @access      public static
312
-		 *
313
-		 * @return      string Current scheme ID.
314
-		 */
315
-		public static function get_current_scheme_id(): string {
316
-
317
-			// Retrieve the opt_name, needed for databasae.
318
-			$opt_name = self::$parent->args['opt_name'];
319
-
320
-			// Get the entire options array.
321
-			$redux_options = get_option( $opt_name );
322
-
323
-			// If the current scheme key exists...
324
-			return $redux_options['redux-scheme-select'] ?? 'Default';
325
-		}
326
-
327
-		/**
328
-		 * Get the list of schemes for the selector.
329
-		 *
330
-		 * @param       string $sel Scheme name to select.
331
-		 *
332
-		 * @return      string HTML option values.
333
-		 * @since       1.0.0
334
-		 * @access      static private
335
-		 */
336
-		private static function get_scheme_list_html( string $sel = '' ): string {
337
-			// no errors, please.
338
-			$html = '';
339
-
340
-			// Retrieves the list of saved schemes into an array variable.
341
-			$dropdown_values = self::get_scheme_names();
342
-
343
-			// If the dropdown array has items...
344
-			if ( ! empty( $dropdown_values ) ) {
345
-
346
-				// Sort them alphbetically.
347
-				asort( $dropdown_values );
348
-			}
349
-
350
-			// trim the selected item.
351
-			$sel = trim( $sel );
352
-
353
-			// If it's empty.
354
-			if ( '' === $sel ) {
355
-
356
-				// Make the current scheme id the selected value.
357
-				$selected = self::get_current_scheme_id();
358
-			} else {
359
-
360
-				// Otherwise, set it to the value passed to this function.
361
-				$selected = $sel;
362
-			}
363
-
364
-			// Enum through the dropdown array and append the necessary HTML for the selector.
365
-			foreach ( $dropdown_values as $k ) {
366
-				$html .= '<option value="' . $k . '" ' . selected( $k, $selected, false ) . '>' . $k . '</option>';
367
-			}
368
-
369
-			// Send it all packin'.
370
-			return $html;
371
-		}
372
-
373
-		/**
374
-		 * Returns select HTML.
375
-		 *
376
-		 * @param array $arr  Array of select fields to render.
377
-		 * @param array $data Array of scheme data.
378
-		 *
379
-		 * @return      string HTML of select fields.
380
-		 * @since       1.0.4
381
-		 * @access      static private
382
-		 */
383
-		private static function render_selects( array $arr, array $data ): string {
384
-
385
-			$html = '';
386
-			foreach ( $arr as $v ) {
387
-				$id = $v['id'];
388
-
389
-				if ( isset( $v['width'] ) && ! empty( $v['width'] ) ) {
390
-					$size = $v['width'];
391
-				} else {
392
-					$size = '40%';
393
-				}
394
-
395
-				$width = ' style="width: ' . $size . ';"';
396
-
397
-				$html .= '<span class="redux-label redux-color-scheme-opt-select-title">' . $v['title'] . '</span>';
398
-
399
-				$html .= '<select name="' . self::$parent->args['opt_name'] . '[' . self::$field_id . '][' . $id . ']" id="redux-color-scheme-opt-select-' . $id . '"' . $width . ' class="redux-color-scheme-opt-select">';
400
-
401
-				foreach ( $v['options'] as $opt_id => $opt_val ) {
402
-					$data[ $id ]['value'] = $data[ $id ]['value'] ?? '';
403
-					$html                .= '<option value="' . $opt_id . '" ' . selected( $opt_id, $data[ $id ]['value'], false ) . '>' . $opt_val . '</option>';
404
-				}
405
-
406
-				$html .= '</select>';
407
-				$html .= '<span class="redux-label redux-color-scheme-opt-select-desc">' . $v['desc'] . '</span>';
408
-				$html .= '<hr class="redux-color-scheme-select-close-hr">';
409
-				$html .= '<br/>';
410
-			}
411
-
412
-			return $html;
413
-		}
414
-
415
-		/**
416
-		 * Do diff.
417
-		 *
418
-		 * @param array $first_array  Array one.
419
-		 * @param array $second_array Array two.
420
-		 *
421
-		 * @return array
422
-		 */
423
-		private static function do_diff( array $first_array, array $second_array ): array {
424
-
425
-			/**
426
-			 * Serialize callback.
427
-			 *
428
-			 * @param array $arr Array.
429
-			 */
430
-			function redux_my_serialize( array &$arr ) {
431
-				$arr = maybe_serialize( $arr );
432
-			}
433
-
434
-			/**
435
-			 * Unserialize callback.
436
-			 *
437
-			 * @param array $arr Array.
438
-			 */
439
-			function redux_my_unserialize( &$arr ) {
440
-				$arr = maybe_unserialize( $arr );
441
-			}
442
-
443
-			// make a copy.
444
-			$first_array_s  = $first_array;
445
-			$second_array_s = $second_array;
446
-
447
-			// serialize all sub-arrays.
448
-			array_walk( $first_array_s, 'redux_my_serialize' );
449
-			array_walk( $second_array_s, 'redux_my_serialize' );
450
-
451
-			// array_diff the serialized versions.
452
-			$diff = array_diff( $first_array_s, $second_array_s );
453
-
454
-			// unserialize the result.
455
-			array_walk( $diff, 'redux_my_unserialize' );
456
-
457
-			// you've got it!
458
-			return $diff;
459
-		}
460
-
461
-		/**
462
-		 * Returns colour pickers HTML table.
463
-		 *
464
-		 * @since       1.0.0
465
-		 * @access      public static
466
-		 *
467
-		 * @param       string $scheme_id Scheme name of HTML to return.
468
-		 *
469
-		 * @return      string HTML of colour picker table.
470
-		 */
471
-		public static function get_current_color_scheme_html( $scheme_id = false ): string {
472
-
473
-			// If scheme_id is false.
474
-			if ( ! $scheme_id ) {
475
-
476
-				// Attempt to get the current scheme.
477
-				$scheme_id = self::get_current_scheme_id();
478
-
479
-				// dummy check, because this shit happens!
480
-				$arr_schemes = self::get_scheme_names();
481
-
482
-				if ( ! in_array( $scheme_id, $arr_schemes, true ) ) {
483
-					$scheme_id = 'Default';
484
-					self::set_current_scheme_id( 'Default' );
485
-				}
486
-			}
487
-
488
-			// Set oft used variables.
489
-			$opt_name    = esc_attr( self::$parent->args['opt_name'] );
490
-			$field_id    = esc_attr( self::$field_id );
491
-			$field_class = esc_attr( self::$field_class );
492
-
493
-			// Get the default options.
494
-			$field = self::get_field();
495
-
496
-			$field['output_transparent'] = $field['output_transparent'] ?? '';
497
-			$is_accordion                = $field['accordion'] ?? true;
498
-
499
-			$def_opts = $field['default'];
500
-
501
-			// Create array of element ids from default options.
502
-			if ( ! empty( $def_opts ) ) {
503
-				$id_arr = array();
504
-
505
-				foreach ( $def_opts as $vv ) {
506
-					$id_arr[] = $vv['id'];
507
-				}
508
-			}
509
-
510
-			// Get last saved default.
511
-			$saved_def = get_option( 'redux_' . $opt_name . '_' . $field_id . '_color_scheme' );
512
-
513
-			// Compare key counts between saved and current defaults to check
514
-			// for changes in color scheme.
515
-			if ( false !== $saved_def && is_array( $saved_def ) ) {
516
-
517
-				// Get the new color inputs.
518
-				$arr_diff = self::do_diff( $def_opts, $saved_def );
519
-
520
-				if ( ! empty( $arr_diff ) ) {
521
-					update_option( 'redux_' . $opt_name . '_' . $field_id . '_color_scheme', $def_opts );
522
-				}                //}
523
-			} else {
524
-				update_option( 'redux_' . $opt_name . '_' . $field_id . '_color_scheme', $def_opts );
525
-			}
526
-
527
-			// get current scheme data.
528
-			$scheme = self::get_scheme_data( $scheme_id );
529
-
530
-			if ( false === $scheme ) {
531
-				return '';
532
-			}
533
-
534
-			// If new color inputs exist...
535
-			if ( ! empty( $arr_diff ) ) {
536
-				foreach ( $arr_diff as $val ) {
537
-					if ( ! empty( $val ) && isset( $val['id'] ) ) {
538
-
539
-						$val['title'] = $val['title'] ?? $val['id'];
540
-						$val['color'] = $val['color'] ?? '';
541
-						$val['alpha'] = $val['alpha'] ?? 1;
542
-
543
-						$trans        = $field['output_transparent'];
544
-						$res          = ( '' === $val['color'] || 'transparent' === $val['color'] ) ? $trans : Redux_Helpers::hex2rgba( $val['color'], $val['alpha'] );
545
-						$val['rgba']  = $val['rgba'] ?? $res;
546
-						$val['group'] = $val['group'] ?? '';
547
-
548
-						$scheme[ $val['id'] ] = $val;
549
-					}
550
-				}
551
-
552
-				// Get list of scheme names.
553
-				$scheme_names = self::get_scheme_names();
554
-
555
-				// Update is saved scheme with new picker data.
556
-				foreach ( $scheme_names as $name ) {
557
-					self::set_scheme_data( $name, $scheme );
558
-				}
559
-
560
-				// update the database.
561
-				self::set_database_data( $scheme_id );
562
-			}
563
-
564
-			// If it's not empty then...
565
-			if ( ! empty( $scheme ) ) {
566
-
567
-				// init arrays.
568
-				$groups     = array();
569
-				$grp_desc   = array();
570
-				$groups[''] = array();
571
-				$sel_grps   = array();
572
-
573
-				if ( ! isset( self::$select ) ) {
574
-					self::$select = self::get_select_names();
575
-				}
576
-
577
-				// Enum select fields into groups array for later render.
578
-				if ( isset( self::$select ) ) {
579
-					foreach ( self::$select as $sel_arr ) {
580
-						$sel_grp = $sel_arr['group'];
581
-						if ( ! array_key_exists( $sel_grp, $sel_grps ) ) {
582
-							$sel_grps[ $sel_grp ] = array();
583
-						}
584
-						$sel_grps[ $sel_grp ][] = $sel_arr;
585
-					}
586
-				}
587
-
588
-				// Enum groups names.
589
-				$group_arr = self::get_group_names();
590
-
591
-				foreach ( $group_arr as $group_name => $description ) {
592
-					$groups[ $group_name ] = array();
593
-
594
-					if ( is_array( $description ) ) {
595
-						$grp_desc[ $group_name ]           = $description['desc'] ?? '';
596
-						$grp_grpdesc[ $group_name ]        = $description['group_desc'] ?? '';
597
-						$grp_hidden[ $group_name ]         = $description['hidden'] ?? false;
598
-						$grp_accordion_open[ $group_name ] = $description['accordion_open'] ?? false;
599
-
600
-					} else {
601
-						$grp_desc[ $group_name ]           = $description;
602
-						$grp_hidden[ $group_name ]         = false;
603
-						$grp_accordion_open[ $group_name ] = false;
604
-						$grp_grpdesc[ $group_name ]        = false;
605
-					}
606
-				}
607
-
608
-				// Assign color pickers to their specified group.
609
-				foreach ( $scheme as $arr ) {
610
-					if ( is_array( $arr ) ) {
611
-						if ( ! empty( $arr['group'] ) ) {
612
-							if ( array_key_exists( $arr['group'], $group_arr ) ) {
613
-								$groups[ $arr['group'] ][] = $arr;
614
-							} else {
615
-								$groups[''][] = $arr;
616
-							}
617
-						} else {
618
-							$groups[''][] = $arr;
619
-						}
620
-					}
621
-				}
622
-
623
-				$open_icon  = '';
624
-				$close_icon = '';
625
-
626
-				if ( $is_accordion ) {
627
-					$open_icon  = apply_filters( 'redux/extension/color_scheme/' . self::$parent->args['opt_name'] . '/icon/open', 'dashicons dashicons-arrow-down' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName
628
-					$close_icon = apply_filters( 'redux/extension/color_scheme/' . self::$parent->args['opt_name'] . '/icon/close', 'dashicons dashicons-arrow-up' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName
629
-				}
630
-
631
-				// open the list.
632
-				$html = '<ul class="redux-scheme-layout" data-open-icon="' . $open_icon . '" data-close-icon="' . $close_icon . '">';
633
-
634
-				// Enumerate groups.
635
-				foreach ( $groups as $title => $scheme_arr ) {
636
-
637
-					if ( '' === $title ) {
638
-						if ( empty( $scheme_arr ) ) {
639
-							continue;
640
-						}
641
-
642
-						$kill_me = false;
643
-						foreach ( $scheme_arr as $data ) {
644
-							if ( ! array_key_exists( 'color', $data ) ) {
645
-								$kill_me = true;
646
-								break;
647
-							}
648
-						}
649
-						if ( $kill_me ) {
650
-							continue;
651
-						}
652
-					}
653
-
654
-					$add_hr     = false;
655
-					$is_hidden  = false;
656
-					$class_hide = '';
657
-					$is_open    = '';
658
-
659
-					if ( isset( $grp_hidden[ $title ] ) && '' !== $grp_hidden[ $title ] ) {
660
-						$is_hidden  = $grp_hidden[ $title ];
661
-						$class_hide = ( true === $is_hidden ) ? ' hidden ' : '';
662
-						$is_open    = $grp_accordion_open[ $title ];
663
-					}
664
-
665
-					$add_class = '';
666
-					if ( $is_accordion ) {
667
-						$add_class = ' accordion ';
668
-					}
669
-
670
-					$html .= '<div class="redux-color-scheme-group' . $add_class . $class_hide . '">';
671
-
672
-					if ( ! $is_hidden ) {
673
-
674
-						if ( $is_accordion ) {
675
-							$html .= '<div class="redux-color-scheme-accordion">';
676
-						}
677
-						$icon_class = '';
678
-
679
-						// apply group title, if any.
680
-						if ( '' !== $title ) {
681
-							$html .= '<br><span class="redux-label redux-layout-group-label">' . esc_attr( $title ) . '</span>';
682
-
683
-							if ( $is_accordion ) {
684
-								$icon_class = ' titled';
685
-							}
686
-							$add_hr = true;
687
-						} elseif ( $is_accordion ) {
688
-							$icon_class = ' not-titled';
689
-						}
690
-
691
-						// apply group description, if any.
692
-						if ( isset( $grp_desc[ $title ] ) && '' !== $grp_desc[ $title ] ) {
693
-							$html  .= '<span class="redux-label redux-layout-group-desc-label' . $icon_class . '">' . esc_attr( $grp_desc[ $title ] ) . '</label>';
694
-							$add_hr = true;
695
-
696
-							if ( $is_accordion ) {
697
-								$icon_class .= ' subtitled';
698
-							}
699
-						} else {
700
-							$icon_class .= ' not-subtitled';
701
-						}
702
-
703
-						if ( $is_accordion ) {
704
-							$html .= '<span class="' . esc_attr( $open_icon ) . $icon_class . '"></span>';
705
-						}
706
-
707
-						// Add HR, if needed.
708
-						if ( true === $add_hr ) {
709
-							if ( ! $is_accordion ) {
710
-								$html .= '<hr>';
711
-							}
712
-						}
713
-
714
-						if ( $is_accordion ) {
715
-							$html .= '</div>';
716
-							$html .= '<div class="redux-color-scheme-accordion-section" data-state="' . esc_attr( $is_open ) . '">';
717
-							if ( false !== $grp_grpdesc ) {
718
-								$html .= '<div class="redux-color-scheme-group-desc">';
719
-								$html .= esc_attr( $grp_grpdesc[ $title ] );
720
-								$html .= '</div>';
721
-							}
722
-						}
723
-
724
-						// Select box render.
725
-						if ( array_key_exists( $title, $sel_grps ) ) {
726
-							$html .= self::render_selects( $sel_grps[ $title ], $scheme );
727
-						}
728
-					} elseif ( $is_accordion ) {
729
-						$html .= '<div class="redux-color-scheme-accordion-section">';
730
-					}
731
-
732
-					$html .= "<ul class='redux-scheme-layout'>";
733
-
734
-					// Enum through each element/id.
735
-					foreach ( $scheme_arr as $v ) {
736
-						if ( in_array( $v['id'], $id_arr, true ) ) {
737
-
738
-							// If no title, use ID.
739
-							$v['title'] = $v['title'] ?? $v['id'];
740
-
741
-							// If no alpha, use 1 (solid).
742
-							$v['alpha'] = $v['alpha'] ?? 1;
743
-
744
-							// Fuck forbid no colour, set to white.
745
-							$v['color'] = $v['color'] ?? '';
746
-
747
-							// RGBA..
748
-							$trans     = $field['output_transparent'];
749
-							$res       = ( '' === $v['color'] || 'transparent' === $v['color'] ) ? $trans : Redux_Helpers::hex2rgba( $v['color'], $v['alpha'] );
750
-							$v['rgba'] = $v['rgba'] ?? $res;
751
-
752
-							// group name.
753
-							$v['group'] = $v['group'] ?? '';
754
-
755
-							$v['class'] = self::get_color_block_class( $field, $v['id'] );
756
-
757
-							$block_hide = self::get_block_hidden( $field, $v['id'] ) ? 'hidden' : '';
758
-
759
-							// tooltips.
760
-							$tip_title = '';
761
-							$tip_text  = '';
762
-
763
-							$tooltip_data = self::get_tooltip_data( $field, $v['id'] );
764
-							if ( false !== $tooltip_data ) {
765
-								$tip_title = $tooltip_data['title'] ?? '';
766
-								$tip_text  = $tooltip_data['text'] ?? '';
767
-							}
768
-
769
-							// Begin the layout.
770
-							$html .= '<li class="redux-scheme-layout ' . $class_hide . ' redux-cs-qtip ' . $block_hide . '" qtip-title="' . esc_attr( $tip_title ) . '" qtip-content="' . esc_attr( $tip_text ) . '">';
771
-							$html .= '<div class="redux-scheme-layout-container" data-id="' . $field_id . '-' . $v['id'] . '">';
772
-
773
-							if ( '' === $v['color'] || 'transparent' === $v['color'] ) {
774
-								$color = '';
775
-							} else {
776
-								$color = 'rgba(' . $v['rgba'] . ')';
777
-							}
778
-
779
-							// colour picker dropdown.
780
-							$html .= '<input
14
+    /**
15
+     * Class Redux_Color_Scheme_Functions
16
+     */
17
+    class Redux_Color_Scheme_Functions {
18
+
19
+        /**
20
+         * ReduxFramework object.
21
+         *
22
+         * @var null|ReduxFramework
23
+         */
24
+        public static ?ReduxFramework $parent;
25
+
26
+        /**
27
+         * Field ID
28
+         *
29
+         * @var string|null
30
+         */
31
+        public static ?string $field_id;
32
+
33
+        /**
34
+         * Field class.
35
+         *
36
+         * @var string|null
37
+         */
38
+        public static ?string $field_class;
39
+
40
+        /**
41
+         * Field array.
42
+         *
43
+         * @var array|null
44
+         */
45
+        public static ?array $field;
46
+
47
+        /**
48
+         * WP Upload directory.
49
+         *
50
+         * @var string|null
51
+         */
52
+        public static ?string $upload_dir = '';
53
+
54
+        /**
55
+         * WP Upload URI
56
+         *
57
+         * @var string|null
58
+         */
59
+        public static ?string $upload_url = '';
60
+
61
+        /**
62
+         * Select fields.
63
+         *
64
+         * @var array|null
65
+         */
66
+        public static ?array $select;
67
+
68
+        /**
69
+         * Class init.
70
+         *
71
+         * @param ReduxFramework $redux ReduxFramework object.
72
+         */
73
+        public static function init( ReduxFramework $redux ) {
74
+            self::$parent = $redux;
75
+
76
+            if ( empty( self::$field_id ) ) {
77
+                self::$field = self::get_field( $redux );
78
+
79
+                if ( ! is_array( self::$field ) ) {
80
+                    return;
81
+                }
82
+
83
+                self::$field_id = self::$field['id'];
84
+            }
85
+
86
+            // Make sanitized upload dir DIR.
87
+            self::$upload_dir = Redux_Functions_Ex::wp_normalize_path( ReduxFramework::$_upload_dir . 'color-schemes/' );
88
+
89
+            // Make sanitized upload dir URL.
90
+            self::$upload_url = Redux_Functions_Ex::wp_normalize_path( ReduxFramework::$_upload_url . 'color-schemes/' );
91
+
92
+            Redux_Functions::init_wp_filesystem();
93
+        }
94
+
95
+        /**
96
+         * Checks if tooltips are in use.
97
+         *
98
+         * @param array $field Field array.
99
+         *
100
+         * @return bool
101
+         */
102
+        public static function tooltips_in_use( array $field ): bool {
103
+            $blocks = $field['default'];
104
+
105
+            foreach ( $blocks as $arr ) {
106
+                if ( isset( $arr['tooltip'] ) ) {
107
+                    return true;
108
+                }
109
+            }
110
+
111
+            return false;
112
+        }
113
+
114
+        /**
115
+         * Convert DB values.
116
+         */
117
+        public static function convert_to_db() {
118
+            $upload_dir = Redux_Functions_Ex::wp_normalize_path( ReduxFramework::$_upload_dir . 'color-schemes/' );
119
+
120
+            $cur_scheme_file = Redux_Functions_Ex::wp_normalize_path( $upload_dir . '/' . self::$parent->args['opt_name'] . '_' . self::$field_id . '.json' );
121
+
122
+            if ( is_dir( $upload_dir ) ) {
123
+                if ( file_exists( $cur_scheme_file ) ) {
124
+                    $data = Redux_Core::$filesystem->execute( 'get_contents', $cur_scheme_file );
125
+                    if ( ! empty( $data ) ) {
126
+                        $data = json_decode( $data, true );
127
+
128
+                        update_option( self::get_scheme_key(), $data );
129
+
130
+                        Redux_Core::$filesystem->execute( 'delete', $cur_scheme_file );
131
+                    }
132
+                }
133
+            }
134
+        }
135
+
136
+        /**
137
+         * Get scheme key.
138
+         *
139
+         * @return string
140
+         */
141
+        public static function get_scheme_key(): string {
142
+            return 'redux_cs_' . self::$parent->args['opt_name'] . '_' . self::$field_id;
143
+        }
144
+
145
+        /**
146
+         * Get the list of groups names for the color scheme table.
147
+         *
148
+         * @since       2.0.0
149
+         * @access      public static
150
+         * @return      array Array of group names.
151
+         */
152
+        public static function get_group_names(): array {
153
+            if ( empty( self::$field ) ) {
154
+                self::$field = self::get_field();
155
+            }
156
+
157
+            if ( isset( self::$field['groups'] ) ) {
158
+                if ( is_array( self::$field['groups'] ) && ! empty( self::$field['groups'] ) ) {
159
+                    return self::$field['groups'];
160
+                }
161
+            }
162
+
163
+            return array();
164
+        }
165
+
166
+        /**
167
+         * Get output transparent value.
168
+         *
169
+         * @return mixed
170
+         */
171
+        public static function get_output_transparent_val() {
172
+            if ( empty( self::$field ) ) {
173
+                self::$field = self::get_field();
174
+            }
175
+
176
+            if ( isset( self::$field['output_transparent'] ) ) {
177
+                if ( ! empty( self::$field['output_transparent'] ) ) {
178
+                    return self::$field['output_transparent'];
179
+                }
180
+            }
181
+
182
+            return false;
183
+        }
184
+
185
+        /**
186
+         * Get select field name.
187
+         *
188
+         * @return array
189
+         */
190
+        private static function get_select_names(): array {
191
+            if ( empty( self::$field ) ) {
192
+                self::$field = self::get_field();
193
+            }
194
+
195
+            if ( isset( self::$field['select'] ) ) {
196
+                if ( is_array( self::$field['select'] ) && ! empty( self::$field['select'] ) ) {
197
+                    return self::$field['select'];
198
+                }
199
+            }
200
+
201
+            return array();
202
+        }
203
+
204
+        /**
205
+         * Get color scheme field.
206
+         *
207
+         * @param ReduxFramework|null $redux pointer.
208
+         *
209
+         * @return mixed
210
+         */
211
+        public static function get_field( ?ReduxFramework $redux = null ) {
212
+            if ( ! is_null( $redux ) ) {
213
+                self::$parent = $redux;
214
+            }
215
+
216
+            if ( isset( $redux->field_sections['color_scheme'] ) ) {
217
+                return reset( $redux->field_sections['color_scheme'] );
218
+            }
219
+
220
+            $arr = self::$parent;
221
+
222
+            foreach ( $arr as $part => $bla ) {
223
+                if ( 'sections' === $part ) {
224
+                    foreach ( $bla as $field ) {
225
+                        foreach ( $field as $arg => $val ) {
226
+                            if ( 'fields' === $arg ) {
227
+                                foreach ( $val as $v ) {
228
+                                    if ( ! empty( $v ) ) {
229
+                                        foreach ( $v as $id => $x ) {
230
+                                            if ( 'type' === $id ) {
231
+                                                if ( 'color_scheme' === $x ) {
232
+                                                    return $v;
233
+                                                }
234
+                                            }
235
+                                        }
236
+                                    }
237
+                                }
238
+                            }
239
+                        }
240
+                    }
241
+                }
242
+            }
243
+
244
+            return null;
245
+        }
246
+
247
+        /**
248
+         * Output scheme dropdown selector.
249
+         *
250
+         * @param       string $selected Selected scheme name.
251
+         *
252
+         * @return      string HTML of dropdown selector.
253
+         * @since       1.0.0
254
+         * @access      public static
255
+         */
256
+        public static function get_scheme_select_html( string $selected ): string {
257
+
258
+            $html  = '<select name="' . esc_attr( self::$parent->args['opt_name'] ) . '[redux-scheme-select]" id="redux-scheme-select-' . esc_attr( self::$field_id ) . '" class="redux-scheme-select">';
259
+            $html .= self::get_scheme_list_html( $selected );
260
+            $html .= '</select>';
261
+
262
+            return $html;
263
+        }
264
+
265
+        /**
266
+         * Set current scheme ID, if one isn't specified.
267
+         *
268
+         * @param       string $id Scheme name to set.
269
+         *
270
+         * @return      void
271
+         * @since       1.0.0
272
+         * @access      public static
273
+         */
274
+        public static function set_current_scheme_id( string $id ) {
275
+
276
+            // Get opt name, for database.
277
+            $opt_name = self::$parent->args['opt_name'];
278
+
279
+            // Get all options from database.
280
+            $redux_options = get_option( $opt_name, array() );
281
+            if ( ! is_array( $redux_options ) ) {
282
+                $redux_options = array();
283
+            }
284
+            // Append ID to variable that holds the current scheme ID data.
285
+            $redux_options['redux-scheme-select'] = $id;
286
+
287
+            // Save the modified settings.
288
+            update_option( $opt_name, $redux_options );
289
+        }
290
+
291
+        /**
292
+         * Get tooltip toggle state.
293
+         *
294
+         * @return bool
295
+         */
296
+        public static function get_tooltip_toggle_state(): bool {
297
+
298
+            // Retrieve the opt_name, needed for database.
299
+            $opt_name = self::$parent->args['opt_name'];
300
+
301
+            // Get the entire options array.
302
+            $redux_options = get_option( $opt_name );
303
+
304
+            return $redux_options['redux-color-scheme-tooltip-toggle'] ?? true;
305
+        }
306
+
307
+        /**
308
+         * Gets the current schem ID from the database.
309
+         *
310
+         * @since       1.0.0
311
+         * @access      public static
312
+         *
313
+         * @return      string Current scheme ID.
314
+         */
315
+        public static function get_current_scheme_id(): string {
316
+
317
+            // Retrieve the opt_name, needed for databasae.
318
+            $opt_name = self::$parent->args['opt_name'];
319
+
320
+            // Get the entire options array.
321
+            $redux_options = get_option( $opt_name );
322
+
323
+            // If the current scheme key exists...
324
+            return $redux_options['redux-scheme-select'] ?? 'Default';
325
+        }
326
+
327
+        /**
328
+         * Get the list of schemes for the selector.
329
+         *
330
+         * @param       string $sel Scheme name to select.
331
+         *
332
+         * @return      string HTML option values.
333
+         * @since       1.0.0
334
+         * @access      static private
335
+         */
336
+        private static function get_scheme_list_html( string $sel = '' ): string {
337
+            // no errors, please.
338
+            $html = '';
339
+
340
+            // Retrieves the list of saved schemes into an array variable.
341
+            $dropdown_values = self::get_scheme_names();
342
+
343
+            // If the dropdown array has items...
344
+            if ( ! empty( $dropdown_values ) ) {
345
+
346
+                // Sort them alphbetically.
347
+                asort( $dropdown_values );
348
+            }
349
+
350
+            // trim the selected item.
351
+            $sel = trim( $sel );
352
+
353
+            // If it's empty.
354
+            if ( '' === $sel ) {
355
+
356
+                // Make the current scheme id the selected value.
357
+                $selected = self::get_current_scheme_id();
358
+            } else {
359
+
360
+                // Otherwise, set it to the value passed to this function.
361
+                $selected = $sel;
362
+            }
363
+
364
+            // Enum through the dropdown array and append the necessary HTML for the selector.
365
+            foreach ( $dropdown_values as $k ) {
366
+                $html .= '<option value="' . $k . '" ' . selected( $k, $selected, false ) . '>' . $k . '</option>';
367
+            }
368
+
369
+            // Send it all packin'.
370
+            return $html;
371
+        }
372
+
373
+        /**
374
+         * Returns select HTML.
375
+         *
376
+         * @param array $arr  Array of select fields to render.
377
+         * @param array $data Array of scheme data.
378
+         *
379
+         * @return      string HTML of select fields.
380
+         * @since       1.0.4
381
+         * @access      static private
382
+         */
383
+        private static function render_selects( array $arr, array $data ): string {
384
+
385
+            $html = '';
386
+            foreach ( $arr as $v ) {
387
+                $id = $v['id'];
388
+
389
+                if ( isset( $v['width'] ) && ! empty( $v['width'] ) ) {
390
+                    $size = $v['width'];
391
+                } else {
392
+                    $size = '40%';
393
+                }
394
+
395
+                $width = ' style="width: ' . $size . ';"';
396
+
397
+                $html .= '<span class="redux-label redux-color-scheme-opt-select-title">' . $v['title'] . '</span>';
398
+
399
+                $html .= '<select name="' . self::$parent->args['opt_name'] . '[' . self::$field_id . '][' . $id . ']" id="redux-color-scheme-opt-select-' . $id . '"' . $width . ' class="redux-color-scheme-opt-select">';
400
+
401
+                foreach ( $v['options'] as $opt_id => $opt_val ) {
402
+                    $data[ $id ]['value'] = $data[ $id ]['value'] ?? '';
403
+                    $html                .= '<option value="' . $opt_id . '" ' . selected( $opt_id, $data[ $id ]['value'], false ) . '>' . $opt_val . '</option>';
404
+                }
405
+
406
+                $html .= '</select>';
407
+                $html .= '<span class="redux-label redux-color-scheme-opt-select-desc">' . $v['desc'] . '</span>';
408
+                $html .= '<hr class="redux-color-scheme-select-close-hr">';
409
+                $html .= '<br/>';
410
+            }
411
+
412
+            return $html;
413
+        }
414
+
415
+        /**
416
+         * Do diff.
417
+         *
418
+         * @param array $first_array  Array one.
419
+         * @param array $second_array Array two.
420
+         *
421
+         * @return array
422
+         */
423
+        private static function do_diff( array $first_array, array $second_array ): array {
424
+
425
+            /**
426
+             * Serialize callback.
427
+             *
428
+             * @param array $arr Array.
429
+             */
430
+            function redux_my_serialize( array &$arr ) {
431
+                $arr = maybe_serialize( $arr );
432
+            }
433
+
434
+            /**
435
+             * Unserialize callback.
436
+             *
437
+             * @param array $arr Array.
438
+             */
439
+            function redux_my_unserialize( &$arr ) {
440
+                $arr = maybe_unserialize( $arr );
441
+            }
442
+
443
+            // make a copy.
444
+            $first_array_s  = $first_array;
445
+            $second_array_s = $second_array;
446
+
447
+            // serialize all sub-arrays.
448
+            array_walk( $first_array_s, 'redux_my_serialize' );
449
+            array_walk( $second_array_s, 'redux_my_serialize' );
450
+
451
+            // array_diff the serialized versions.
452
+            $diff = array_diff( $first_array_s, $second_array_s );
453
+
454
+            // unserialize the result.
455
+            array_walk( $diff, 'redux_my_unserialize' );
456
+
457
+            // you've got it!
458
+            return $diff;
459
+        }
460
+
461
+        /**
462
+         * Returns colour pickers HTML table.
463
+         *
464
+         * @since       1.0.0
465
+         * @access      public static
466
+         *
467
+         * @param       string $scheme_id Scheme name of HTML to return.
468
+         *
469
+         * @return      string HTML of colour picker table.
470
+         */
471
+        public static function get_current_color_scheme_html( $scheme_id = false ): string {
472
+
473
+            // If scheme_id is false.
474
+            if ( ! $scheme_id ) {
475
+
476
+                // Attempt to get the current scheme.
477
+                $scheme_id = self::get_current_scheme_id();
478
+
479
+                // dummy check, because this shit happens!
480
+                $arr_schemes = self::get_scheme_names();
481
+
482
+                if ( ! in_array( $scheme_id, $arr_schemes, true ) ) {
483
+                    $scheme_id = 'Default';
484
+                    self::set_current_scheme_id( 'Default' );
485
+                }
486
+            }
487
+
488
+            // Set oft used variables.
489
+            $opt_name    = esc_attr( self::$parent->args['opt_name'] );
490
+            $field_id    = esc_attr( self::$field_id );
491
+            $field_class = esc_attr( self::$field_class );
492
+
493
+            // Get the default options.
494
+            $field = self::get_field();
495
+
496
+            $field['output_transparent'] = $field['output_transparent'] ?? '';
497
+            $is_accordion                = $field['accordion'] ?? true;
498
+
499
+            $def_opts = $field['default'];
500
+
501
+            // Create array of element ids from default options.
502
+            if ( ! empty( $def_opts ) ) {
503
+                $id_arr = array();
504
+
505
+                foreach ( $def_opts as $vv ) {
506
+                    $id_arr[] = $vv['id'];
507
+                }
508
+            }
509
+
510
+            // Get last saved default.
511
+            $saved_def = get_option( 'redux_' . $opt_name . '_' . $field_id . '_color_scheme' );
512
+
513
+            // Compare key counts between saved and current defaults to check
514
+            // for changes in color scheme.
515
+            if ( false !== $saved_def && is_array( $saved_def ) ) {
516
+
517
+                // Get the new color inputs.
518
+                $arr_diff = self::do_diff( $def_opts, $saved_def );
519
+
520
+                if ( ! empty( $arr_diff ) ) {
521
+                    update_option( 'redux_' . $opt_name . '_' . $field_id . '_color_scheme', $def_opts );
522
+                }                //}
523
+            } else {
524
+                update_option( 'redux_' . $opt_name . '_' . $field_id . '_color_scheme', $def_opts );
525
+            }
526
+
527
+            // get current scheme data.
528
+            $scheme = self::get_scheme_data( $scheme_id );
529
+
530
+            if ( false === $scheme ) {
531
+                return '';
532
+            }
533
+
534
+            // If new color inputs exist...
535
+            if ( ! empty( $arr_diff ) ) {
536
+                foreach ( $arr_diff as $val ) {
537
+                    if ( ! empty( $val ) && isset( $val['id'] ) ) {
538
+
539
+                        $val['title'] = $val['title'] ?? $val['id'];
540
+                        $val['color'] = $val['color'] ?? '';
541
+                        $val['alpha'] = $val['alpha'] ?? 1;
542
+
543
+                        $trans        = $field['output_transparent'];
544
+                        $res          = ( '' === $val['color'] || 'transparent' === $val['color'] ) ? $trans : Redux_Helpers::hex2rgba( $val['color'], $val['alpha'] );
545
+                        $val['rgba']  = $val['rgba'] ?? $res;
546
+                        $val['group'] = $val['group'] ?? '';
547
+
548
+                        $scheme[ $val['id'] ] = $val;
549
+                    }
550
+                }
551
+
552
+                // Get list of scheme names.
553
+                $scheme_names = self::get_scheme_names();
554
+
555
+                // Update is saved scheme with new picker data.
556
+                foreach ( $scheme_names as $name ) {
557
+                    self::set_scheme_data( $name, $scheme );
558
+                }
559
+
560
+                // update the database.
561
+                self::set_database_data( $scheme_id );
562
+            }
563
+
564
+            // If it's not empty then...
565
+            if ( ! empty( $scheme ) ) {
566
+
567
+                // init arrays.
568
+                $groups     = array();
569
+                $grp_desc   = array();
570
+                $groups[''] = array();
571
+                $sel_grps   = array();
572
+
573
+                if ( ! isset( self::$select ) ) {
574
+                    self::$select = self::get_select_names();
575
+                }
576
+
577
+                // Enum select fields into groups array for later render.
578
+                if ( isset( self::$select ) ) {
579
+                    foreach ( self::$select as $sel_arr ) {
580
+                        $sel_grp = $sel_arr['group'];
581
+                        if ( ! array_key_exists( $sel_grp, $sel_grps ) ) {
582
+                            $sel_grps[ $sel_grp ] = array();
583
+                        }
584
+                        $sel_grps[ $sel_grp ][] = $sel_arr;
585
+                    }
586
+                }
587
+
588
+                // Enum groups names.
589
+                $group_arr = self::get_group_names();
590
+
591
+                foreach ( $group_arr as $group_name => $description ) {
592
+                    $groups[ $group_name ] = array();
593
+
594
+                    if ( is_array( $description ) ) {
595
+                        $grp_desc[ $group_name ]           = $description['desc'] ?? '';
596
+                        $grp_grpdesc[ $group_name ]        = $description['group_desc'] ?? '';
597
+                        $grp_hidden[ $group_name ]         = $description['hidden'] ?? false;
598
+                        $grp_accordion_open[ $group_name ] = $description['accordion_open'] ?? false;
599
+
600
+                    } else {
601
+                        $grp_desc[ $group_name ]           = $description;
602
+                        $grp_hidden[ $group_name ]         = false;
603
+                        $grp_accordion_open[ $group_name ] = false;
604
+                        $grp_grpdesc[ $group_name ]        = false;
605
+                    }
606
+                }
607
+
608
+                // Assign color pickers to their specified group.
609
+                foreach ( $scheme as $arr ) {
610
+                    if ( is_array( $arr ) ) {
611
+                        if ( ! empty( $arr['group'] ) ) {
612
+                            if ( array_key_exists( $arr['group'], $group_arr ) ) {
613
+                                $groups[ $arr['group'] ][] = $arr;
614
+                            } else {
615
+                                $groups[''][] = $arr;
616
+                            }
617
+                        } else {
618
+                            $groups[''][] = $arr;
619
+                        }
620
+                    }
621
+                }
622
+
623
+                $open_icon  = '';
624
+                $close_icon = '';
625
+
626
+                if ( $is_accordion ) {
627
+                    $open_icon  = apply_filters( 'redux/extension/color_scheme/' . self::$parent->args['opt_name'] . '/icon/open', 'dashicons dashicons-arrow-down' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName
628
+                    $close_icon = apply_filters( 'redux/extension/color_scheme/' . self::$parent->args['opt_name'] . '/icon/close', 'dashicons dashicons-arrow-up' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName
629
+                }
630
+
631
+                // open the list.
632
+                $html = '<ul class="redux-scheme-layout" data-open-icon="' . $open_icon . '" data-close-icon="' . $close_icon . '">';
633
+
634
+                // Enumerate groups.
635
+                foreach ( $groups as $title => $scheme_arr ) {
636
+
637
+                    if ( '' === $title ) {
638
+                        if ( empty( $scheme_arr ) ) {
639
+                            continue;
640
+                        }
641
+
642
+                        $kill_me = false;
643
+                        foreach ( $scheme_arr as $data ) {
644
+                            if ( ! array_key_exists( 'color', $data ) ) {
645
+                                $kill_me = true;
646
+                                break;
647
+                            }
648
+                        }
649
+                        if ( $kill_me ) {
650
+                            continue;
651
+                        }
652
+                    }
653
+
654
+                    $add_hr     = false;
655
+                    $is_hidden  = false;
656
+                    $class_hide = '';
657
+                    $is_open    = '';
658
+
659
+                    if ( isset( $grp_hidden[ $title ] ) && '' !== $grp_hidden[ $title ] ) {
660
+                        $is_hidden  = $grp_hidden[ $title ];
661
+                        $class_hide = ( true === $is_hidden ) ? ' hidden ' : '';
662
+                        $is_open    = $grp_accordion_open[ $title ];
663
+                    }
664
+
665
+                    $add_class = '';
666
+                    if ( $is_accordion ) {
667
+                        $add_class = ' accordion ';
668
+                    }
669
+
670
+                    $html .= '<div class="redux-color-scheme-group' . $add_class . $class_hide . '">';
671
+
672
+                    if ( ! $is_hidden ) {
673
+
674
+                        if ( $is_accordion ) {
675
+                            $html .= '<div class="redux-color-scheme-accordion">';
676
+                        }
677
+                        $icon_class = '';
678
+
679
+                        // apply group title, if any.
680
+                        if ( '' !== $title ) {
681
+                            $html .= '<br><span class="redux-label redux-layout-group-label">' . esc_attr( $title ) . '</span>';
682
+
683
+                            if ( $is_accordion ) {
684
+                                $icon_class = ' titled';
685
+                            }
686
+                            $add_hr = true;
687
+                        } elseif ( $is_accordion ) {
688
+                            $icon_class = ' not-titled';
689
+                        }
690
+
691
+                        // apply group description, if any.
692
+                        if ( isset( $grp_desc[ $title ] ) && '' !== $grp_desc[ $title ] ) {
693
+                            $html  .= '<span class="redux-label redux-layout-group-desc-label' . $icon_class . '">' . esc_attr( $grp_desc[ $title ] ) . '</label>';
694
+                            $add_hr = true;
695
+
696
+                            if ( $is_accordion ) {
697
+                                $icon_class .= ' subtitled';
698
+                            }
699
+                        } else {
700
+                            $icon_class .= ' not-subtitled';
701
+                        }
702
+
703
+                        if ( $is_accordion ) {
704
+                            $html .= '<span class="' . esc_attr( $open_icon ) . $icon_class . '"></span>';
705
+                        }
706
+
707
+                        // Add HR, if needed.
708
+                        if ( true === $add_hr ) {
709
+                            if ( ! $is_accordion ) {
710
+                                $html .= '<hr>';
711
+                            }
712
+                        }
713
+
714
+                        if ( $is_accordion ) {
715
+                            $html .= '</div>';
716
+                            $html .= '<div class="redux-color-scheme-accordion-section" data-state="' . esc_attr( $is_open ) . '">';
717
+                            if ( false !== $grp_grpdesc ) {
718
+                                $html .= '<div class="redux-color-scheme-group-desc">';
719
+                                $html .= esc_attr( $grp_grpdesc[ $title ] );
720
+                                $html .= '</div>';
721
+                            }
722
+                        }
723
+
724
+                        // Select box render.
725
+                        if ( array_key_exists( $title, $sel_grps ) ) {
726
+                            $html .= self::render_selects( $sel_grps[ $title ], $scheme );
727
+                        }
728
+                    } elseif ( $is_accordion ) {
729
+                        $html .= '<div class="redux-color-scheme-accordion-section">';
730
+                    }
731
+
732
+                    $html .= "<ul class='redux-scheme-layout'>";
733
+
734
+                    // Enum through each element/id.
735
+                    foreach ( $scheme_arr as $v ) {
736
+                        if ( in_array( $v['id'], $id_arr, true ) ) {
737
+
738
+                            // If no title, use ID.
739
+                            $v['title'] = $v['title'] ?? $v['id'];
740
+
741
+                            // If no alpha, use 1 (solid).
742
+                            $v['alpha'] = $v['alpha'] ?? 1;
743
+
744
+                            // Fuck forbid no colour, set to white.
745
+                            $v['color'] = $v['color'] ?? '';
746
+
747
+                            // RGBA..
748
+                            $trans     = $field['output_transparent'];
749
+                            $res       = ( '' === $v['color'] || 'transparent' === $v['color'] ) ? $trans : Redux_Helpers::hex2rgba( $v['color'], $v['alpha'] );
750
+                            $v['rgba'] = $v['rgba'] ?? $res;
751
+
752
+                            // group name.
753
+                            $v['group'] = $v['group'] ?? '';
754
+
755
+                            $v['class'] = self::get_color_block_class( $field, $v['id'] );
756
+
757
+                            $block_hide = self::get_block_hidden( $field, $v['id'] ) ? 'hidden' : '';
758
+
759
+                            // tooltips.
760
+                            $tip_title = '';
761
+                            $tip_text  = '';
762
+
763
+                            $tooltip_data = self::get_tooltip_data( $field, $v['id'] );
764
+                            if ( false !== $tooltip_data ) {
765
+                                $tip_title = $tooltip_data['title'] ?? '';
766
+                                $tip_text  = $tooltip_data['text'] ?? '';
767
+                            }
768
+
769
+                            // Begin the layout.
770
+                            $html .= '<li class="redux-scheme-layout ' . $class_hide . ' redux-cs-qtip ' . $block_hide . '" qtip-title="' . esc_attr( $tip_title ) . '" qtip-content="' . esc_attr( $tip_text ) . '">';
771
+                            $html .= '<div class="redux-scheme-layout-container" data-id="' . $field_id . '-' . $v['id'] . '">';
772
+
773
+                            if ( '' === $v['color'] || 'transparent' === $v['color'] ) {
774
+                                $color = '';
775
+                            } else {
776
+                                $color = 'rgba(' . $v['rgba'] . ')';
777
+                            }
778
+
779
+                            // colour picker dropdown.
780
+                            $html .= '<input
781 781
                                         id="' . $field_id . '-' . esc_attr( $v['id'] ) . '-color"
782 782
                                         class="' . $field_class . ' ' . esc_attr( $v['class'] ) . '"
783 783
                                         type="text"
@@ -793,15 +793,15 @@  discard block
 block discarded – undo
793 793
                                         data-output-transparent="' . esc_attr( $field['output_transparent'] ) . '"
794 794
                                       />';
795 795
 
796
-							$scheme_data = self::get_scheme_data( $scheme_id );
797
-							if ( false === $scheme_data ) {
798
-								return '';
799
-							}
796
+                            $scheme_data = self::get_scheme_data( $scheme_id );
797
+                            if ( false === $scheme_data ) {
798
+                                return '';
799
+                            }
800 800
 
801
-							$picker_data = $scheme_data[ $v['id'] ];
801
+                            $picker_data = $scheme_data[ $v['id'] ];
802 802
 
803
-							// Hidden input for data string.
804
-							$html .= '<input
803
+                            // Hidden input for data string.
804
+                            $html .= '<input
805 805
                                         type="hidden"
806 806
                                         class="redux-hidden-data"
807 807
                                         name="' . esc_attr( $opt_name ) . '[' . esc_attr( $field_id ) . '][' . esc_attr( $v['id'] ) . '][data]"
@@ -809,312 +809,312 @@  discard block
 block discarded – undo
809 809
                                         value="' . rawurlencode( wp_json_encode( $picker_data ) ) . '"
810 810
                                       />';
811 811
 
812
-							// closing html tags.
813
-							$html .= '</div>';
814
-							$html .= '<span class="redux-label redux-layout-label">' . esc_attr( $v['title'] ) . '</span>';
815
-							$html .= '</li>';
816
-						}
817
-					}
818
-					$html .= '</ul>';
819
-
820
-					$html .= '<hr class="redux-color-scheme-blank-hr">';
821
-
822
-					if ( $is_accordion ) {
823
-						$html .= '</div>';
824
-					}
825
-
826
-					$html .= '</div>';
827
-				}
828
-
829
-				// Close list.
830
-				$html .= '</ul>';
831
-			}
832
-
833
-			// html var not empty, return it.
834
-			if ( ! empty( $html ) ) {
835
-				return $html;
836
-			}
837
-
838
-			return '';
839
-		}
840
-
841
-		/**
842
-		 * Get color block class.
843
-		 *
844
-		 * @param array  $field Field array.
845
-		 * @param string $id    Field ID.
846
-		 *
847
-		 * @return string
848
-		 */
849
-		private static function get_color_block_class( array $field, string $id ): string {
850
-			$def = $field['default'];
851
-
852
-			if ( ! empty( $def ) ) {
853
-				foreach ( $def as $arr ) {
854
-					if ( $arr['id'] === $id ) {
855
-						if ( isset( $arr['class'] ) ) {
856
-							return $arr['class'];
857
-						}
858
-					}
859
-				}
860
-			}
861
-
862
-			return '';
863
-		}
864
-
865
-		/**
866
-		 * Get tooltip data.
867
-		 *
868
-		 * @param array  $field Field array.
869
-		 * @param string $id    Field ID.
870
-		 *
871
-		 * @return mixed
872
-		 */
873
-		private static function get_tooltip_data( array $field, string $id ) {
874
-			$def = $field['default'];
875
-
876
-			if ( ! empty( $def ) ) {
877
-				foreach ( $def as $arr ) {
878
-					if ( $arr['id'] === $id ) {
879
-						if ( isset( $arr['tooltip'] ) ) {
880
-							return $arr['tooltip'];
881
-						}
882
-					}
883
-				}
884
-			}
885
-
886
-			return false;
887
-		}
888
-
889
-		/**
890
-		 * Get hidden blocks.
891
-		 *
892
-		 * @param array  $field Field ID.
893
-		 * @param string $id    Field ID.
894
-		 *
895
-		 * @return bool
896
-		 */
897
-		private static function get_block_hidden( array $field, string $id ): bool {
898
-			$def = $field['default'];
899
-
900
-			if ( ! empty( $def ) ) {
901
-				foreach ( $def as $arr ) {
902
-					if ( $arr['id'] === $id ) {
903
-						if ( isset( $arr['hidden'] ) ) {
904
-							return $arr['hidden'];
905
-						}
906
-					}
907
-				}
908
-			}
909
-
910
-			return false;
911
-		}
912
-
913
-		/**
914
-		 * Returns scheme file contents.
915
-		 *
916
-		 * @since       1.0.0
917
-		 * @access      public static
918
-		 *
919
-		 * @return      array Array of scheme data.
920
-		 */
921
-		public static function read_scheme_file() {
922
-			$key  = self::get_scheme_key();
923
-			$data = get_option( $key );
924
-
925
-			if ( empty( $data ) ) {
926
-				$arr_data = false;
927
-			} else {
928
-				$arr_data = $data;
929
-			}
930
-
931
-			return $arr_data;
932
-		}
933
-
934
-		/**
935
-		 * Sets scheme file contents.
936
-		 *
937
-		 * @param       array $arr_data PHP array of data to encode.
938
-		 *
939
-		 * @return      bool Result of write function.
940
-		 * @since       1.0.0
941
-		 * @access      public static
942
-		 */
943
-		public static function write_scheme_file( array $arr_data ): bool {
944
-			$key = self::get_scheme_key();
945
-
946
-			return update_option( $key, $arr_data );
947
-		}
948
-
949
-		/**
950
-		 * Gets individual scheme data from scheme JSON file.
951
-		 *
952
-		 * @param       string $scheme_name Name of scheme.
953
-		 *
954
-		 * @return      mixed PHP array of scheme data.
955
-		 * @since       1.0.0
956
-		 * @access      public static
957
-		 */
958
-		public static function get_scheme_data( string $scheme_name ) {
959
-			$data = self::read_scheme_file();
960
-
961
-			if ( false === $data ) {
962
-				return false;
963
-			}
964
-
965
-			return $data[ $scheme_name ];
966
-		}
967
-
968
-		/**
969
-		 * Sets individual scheme data to scheme JSON file.
970
-		 *
971
-		 * @param string $name  Name of a scheme to save.
972
-		 * @param array  $arr   Scheme data to encode.
973
-		 *
974
-		 * @return      bool Result of file written.
975
-		 * @since       1.0.0
976
-		 * @access      public static
977
-		 */
978
-		public static function set_scheme_data( string $name, array $arr ): bool {
979
-
980
-			// Create blank array.
981
-			$new_scheme = array();
982
-
983
-			// If name is present.
984
-			if ( $name ) {
985
-
986
-				// then add the name at the new array's key.
987
-				$new_scheme['color_scheme_name'] = $name;
988
-
989
-				// Enum through values and assign them to new array.
990
-				foreach ( $arr as $val ) {
991
-					if ( isset( $val['id'] ) ) {
992
-						$new_scheme[ $val['id'] ] = $val;
993
-					}
994
-				}
995
-
996
-				// read the contents of the current scheme file.
997
-				$schemes = self::read_scheme_file();
998
-
999
-				// If returned false (not there) then create a new array.
1000
-				if ( false === $schemes ) {
1001
-					$schemes = array();
1002
-				}
1003
-
1004
-				$scheme_data = $schemes[ $name ] ?? '';
1005
-
1006
-				if ( $scheme_data !== $new_scheme ) {
1007
-
1008
-					// Add new scheme to array that will be saved.
1009
-					$schemes[ $name ] = $new_scheme;
1010
-
1011
-					// Write the data to the JSON file.
1012
-					return self::write_scheme_file( $schemes );
1013
-				}
1014
-			}
1015
-
1016
-			// !success
1017
-			return false;
1018
-		}
1019
-
1020
-		/**
1021
-		 * Enumerate the scheme names from the JSON store file.
1022
-		 *
1023
-		 * @since       1.0.0
1024
-		 * @access      public static
1025
-		 * @return      array Array of stored scheme names.
1026
-		 */
1027
-		public static function get_scheme_names(): array {
1028
-
1029
-			// Read the JSON file, which returns a PHP array.
1030
-			$schemes = self::read_scheme_file();
1031
-
1032
-			// Create a new array.
1033
-			$output = array();
1034
-
1035
-			if ( false !== $schemes ) {
1036
-
1037
-				// If the schemes array IS an array (versus false), then...
1038
-				if ( is_array( $schemes ) ) {
1039
-
1040
-					// Enum them.
1041
-					foreach ( $schemes as $scheme ) {
1042
-
1043
-						// If the color_scheme_name key is set...
1044
-						if ( isset( $scheme['color_scheme_name'] ) ) {
1045
-
1046
-							// Push it onto the array stack.
1047
-							$output[] = $scheme['color_scheme_name'];
1048
-						}
1049
-					}
1050
-				}
1051
-			}
1052
-
1053
-			// Kick the full array out the door.
1054
-			return $output;
1055
-		}
1056
-
1057
-		/**
1058
-		 * Get data array from scheme.
1059
-		 *
1060
-		 * @param string $scheme Scheme name.
1061
-		 *
1062
-		 * @return array
1063
-		 */
1064
-		public static function data_array_from_scheme( string $scheme ): array {
1065
-
1066
-			// Get scheme data from JSON file.
1067
-			$data = self::get_scheme_data( $scheme );
1068
-			if ( false === $data ) {
1069
-				return array();
1070
-			}
1071
-
1072
-			// Don't need to save select arrays to database,
1073
-			// just the id => value.
1074
-			if ( ! empty( $data ) ) {
1075
-				foreach ( $data as $k => $v ) {
1076
-					if ( isset( $v['type'] ) ) {
1077
-						$val = $v['value'];
1078
-
1079
-						unset( $data[ $k ] );
1080
-
1081
-						$data[ $k ] = $val;
1082
-					}
1083
-				}
1084
-			}
1085
-
1086
-			return $data;
1087
-		}
1088
-
1089
-		/**
1090
-		 * Sets current scheme to database.
1091
-		 *
1092
-		 * @param       string $scheme Current scheme name.
1093
-		 *
1094
-		 * @return      void
1095
-		 * @since       1.0.0
1096
-		 * @access      private
1097
-		 */
1098
-		public static function set_database_data( string $scheme = 'Default' ) {
1099
-
1100
-			$data = self::data_array_from_scheme( $scheme );
1101
-
1102
-			// Get opt name, for database.
1103
-			$opt_name = self::$parent->args['opt_name'];
1104
-
1105
-			// Get all options from database.
1106
-			$redux_options = get_option( $opt_name );
1107
-
1108
-			if ( empty( self::$field_id ) ) {
1109
-				self::$field    = self::get_field();
1110
-				self::$field_id = self::$field['id'];
1111
-			}
1112
-
1113
-			// Append ID to variable that holds the current scheme ID data.
1114
-			$redux_options[ self::$field_id ] = $data;
1115
-
1116
-			// Save the modified settings.
1117
-			update_option( $opt_name, $redux_options );
1118
-		}
1119
-	}
812
+                            // closing html tags.
813
+                            $html .= '</div>';
814
+                            $html .= '<span class="redux-label redux-layout-label">' . esc_attr( $v['title'] ) . '</span>';
815
+                            $html .= '</li>';
816
+                        }
817
+                    }
818
+                    $html .= '</ul>';
819
+
820
+                    $html .= '<hr class="redux-color-scheme-blank-hr">';
821
+
822
+                    if ( $is_accordion ) {
823
+                        $html .= '</div>';
824
+                    }
825
+
826
+                    $html .= '</div>';
827
+                }
828
+
829
+                // Close list.
830
+                $html .= '</ul>';
831
+            }
832
+
833
+            // html var not empty, return it.
834
+            if ( ! empty( $html ) ) {
835
+                return $html;
836
+            }
837
+
838
+            return '';
839
+        }
840
+
841
+        /**
842
+         * Get color block class.
843
+         *
844
+         * @param array  $field Field array.
845
+         * @param string $id    Field ID.
846
+         *
847
+         * @return string
848
+         */
849
+        private static function get_color_block_class( array $field, string $id ): string {
850
+            $def = $field['default'];
851
+
852
+            if ( ! empty( $def ) ) {
853
+                foreach ( $def as $arr ) {
854
+                    if ( $arr['id'] === $id ) {
855
+                        if ( isset( $arr['class'] ) ) {
856
+                            return $arr['class'];
857
+                        }
858
+                    }
859
+                }
860
+            }
861
+
862
+            return '';
863
+        }
864
+
865
+        /**
866
+         * Get tooltip data.
867
+         *
868
+         * @param array  $field Field array.
869
+         * @param string $id    Field ID.
870
+         *
871
+         * @return mixed
872
+         */
873
+        private static function get_tooltip_data( array $field, string $id ) {
874
+            $def = $field['default'];
875
+
876
+            if ( ! empty( $def ) ) {
877
+                foreach ( $def as $arr ) {
878
+                    if ( $arr['id'] === $id ) {
879
+                        if ( isset( $arr['tooltip'] ) ) {
880
+                            return $arr['tooltip'];
881
+                        }
882
+                    }
883
+                }
884
+            }
885
+
886
+            return false;
887
+        }
888
+
889
+        /**
890
+         * Get hidden blocks.
891
+         *
892
+         * @param array  $field Field ID.
893
+         * @param string $id    Field ID.
894
+         *
895
+         * @return bool
896
+         */
897
+        private static function get_block_hidden( array $field, string $id ): bool {
898
+            $def = $field['default'];
899
+
900
+            if ( ! empty( $def ) ) {
901
+                foreach ( $def as $arr ) {
902
+                    if ( $arr['id'] === $id ) {
903
+                        if ( isset( $arr['hidden'] ) ) {
904
+                            return $arr['hidden'];
905
+                        }
906
+                    }
907
+                }
908
+            }
909
+
910
+            return false;
911
+        }
912
+
913
+        /**
914
+         * Returns scheme file contents.
915
+         *
916
+         * @since       1.0.0
917
+         * @access      public static
918
+         *
919
+         * @return      array Array of scheme data.
920
+         */
921
+        public static function read_scheme_file() {
922
+            $key  = self::get_scheme_key();
923
+            $data = get_option( $key );
924
+
925
+            if ( empty( $data ) ) {
926
+                $arr_data = false;
927
+            } else {
928
+                $arr_data = $data;
929
+            }
930
+
931
+            return $arr_data;
932
+        }
933
+
934
+        /**
935
+         * Sets scheme file contents.
936
+         *
937
+         * @param       array $arr_data PHP array of data to encode.
938
+         *
939
+         * @return      bool Result of write function.
940
+         * @since       1.0.0
941
+         * @access      public static
942
+         */
943
+        public static function write_scheme_file( array $arr_data ): bool {
944
+            $key = self::get_scheme_key();
945
+
946
+            return update_option( $key, $arr_data );
947
+        }
948
+
949
+        /**
950
+         * Gets individual scheme data from scheme JSON file.
951
+         *
952
+         * @param       string $scheme_name Name of scheme.
953
+         *
954
+         * @return      mixed PHP array of scheme data.
955
+         * @since       1.0.0
956
+         * @access      public static
957
+         */
958
+        public static function get_scheme_data( string $scheme_name ) {
959
+            $data = self::read_scheme_file();
960
+
961
+            if ( false === $data ) {
962
+                return false;
963
+            }
964
+
965
+            return $data[ $scheme_name ];
966
+        }
967
+
968
+        /**
969
+         * Sets individual scheme data to scheme JSON file.
970
+         *
971
+         * @param string $name  Name of a scheme to save.
972
+         * @param array  $arr   Scheme data to encode.
973
+         *
974
+         * @return      bool Result of file written.
975
+         * @since       1.0.0
976
+         * @access      public static
977
+         */
978
+        public static function set_scheme_data( string $name, array $arr ): bool {
979
+
980
+            // Create blank array.
981
+            $new_scheme = array();
982
+
983
+            // If name is present.
984
+            if ( $name ) {
985
+
986
+                // then add the name at the new array's key.
987
+                $new_scheme['color_scheme_name'] = $name;
988
+
989
+                // Enum through values and assign them to new array.
990
+                foreach ( $arr as $val ) {
991
+                    if ( isset( $val['id'] ) ) {
992
+                        $new_scheme[ $val['id'] ] = $val;
993
+                    }
994
+                }
995
+
996
+                // read the contents of the current scheme file.
997
+                $schemes = self::read_scheme_file();
998
+
999
+                // If returned false (not there) then create a new array.
1000
+                if ( false === $schemes ) {
1001
+                    $schemes = array();
1002
+                }
1003
+
1004
+                $scheme_data = $schemes[ $name ] ?? '';
1005
+
1006
+                if ( $scheme_data !== $new_scheme ) {
1007
+
1008
+                    // Add new scheme to array that will be saved.
1009
+                    $schemes[ $name ] = $new_scheme;
1010
+
1011
+                    // Write the data to the JSON file.
1012
+                    return self::write_scheme_file( $schemes );
1013
+                }
1014
+            }
1015
+
1016
+            // !success
1017
+            return false;
1018
+        }
1019
+
1020
+        /**
1021
+         * Enumerate the scheme names from the JSON store file.
1022
+         *
1023
+         * @since       1.0.0
1024
+         * @access      public static
1025
+         * @return      array Array of stored scheme names.
1026
+         */
1027
+        public static function get_scheme_names(): array {
1028
+
1029
+            // Read the JSON file, which returns a PHP array.
1030
+            $schemes = self::read_scheme_file();
1031
+
1032
+            // Create a new array.
1033
+            $output = array();
1034
+
1035
+            if ( false !== $schemes ) {
1036
+
1037
+                // If the schemes array IS an array (versus false), then...
1038
+                if ( is_array( $schemes ) ) {
1039
+
1040
+                    // Enum them.
1041
+                    foreach ( $schemes as $scheme ) {
1042
+
1043
+                        // If the color_scheme_name key is set...
1044
+                        if ( isset( $scheme['color_scheme_name'] ) ) {
1045
+
1046
+                            // Push it onto the array stack.
1047
+                            $output[] = $scheme['color_scheme_name'];
1048
+                        }
1049
+                    }
1050
+                }
1051
+            }
1052
+
1053
+            // Kick the full array out the door.
1054
+            return $output;
1055
+        }
1056
+
1057
+        /**
1058
+         * Get data array from scheme.
1059
+         *
1060
+         * @param string $scheme Scheme name.
1061
+         *
1062
+         * @return array
1063
+         */
1064
+        public static function data_array_from_scheme( string $scheme ): array {
1065
+
1066
+            // Get scheme data from JSON file.
1067
+            $data = self::get_scheme_data( $scheme );
1068
+            if ( false === $data ) {
1069
+                return array();
1070
+            }
1071
+
1072
+            // Don't need to save select arrays to database,
1073
+            // just the id => value.
1074
+            if ( ! empty( $data ) ) {
1075
+                foreach ( $data as $k => $v ) {
1076
+                    if ( isset( $v['type'] ) ) {
1077
+                        $val = $v['value'];
1078
+
1079
+                        unset( $data[ $k ] );
1080
+
1081
+                        $data[ $k ] = $val;
1082
+                    }
1083
+                }
1084
+            }
1085
+
1086
+            return $data;
1087
+        }
1088
+
1089
+        /**
1090
+         * Sets current scheme to database.
1091
+         *
1092
+         * @param       string $scheme Current scheme name.
1093
+         *
1094
+         * @return      void
1095
+         * @since       1.0.0
1096
+         * @access      private
1097
+         */
1098
+        public static function set_database_data( string $scheme = 'Default' ) {
1099
+
1100
+            $data = self::data_array_from_scheme( $scheme );
1101
+
1102
+            // Get opt name, for database.
1103
+            $opt_name = self::$parent->args['opt_name'];
1104
+
1105
+            // Get all options from database.
1106
+            $redux_options = get_option( $opt_name );
1107
+
1108
+            if ( empty( self::$field_id ) ) {
1109
+                self::$field    = self::get_field();
1110
+                self::$field_id = self::$field['id'];
1111
+            }
1112
+
1113
+            // Append ID to variable that holds the current scheme ID data.
1114
+            $redux_options[ self::$field_id ] = $data;
1115
+
1116
+            // Save the modified settings.
1117
+            update_option( $opt_name, $redux_options );
1118
+        }
1119
+    }
1120 1120
 }
Please login to merge, or discard this patch.
redux-core/inc/classes/class-redux-thirdparty-fixes.php 1 patch
Indentation   +113 added lines, -113 removed lines patch added patch discarded remove patch
@@ -11,117 +11,117 @@
 block discarded – undo
11 11
 
12 12
 if ( ! class_exists( 'Redux_ThirdParty_Fixes', false ) ) {
13 13
 
14
-	/**
15
-	 * Class Redux_ThirdParty_Fixes
16
-	 */
17
-	class Redux_ThirdParty_Fixes extends Redux_Class {
18
-
19
-		/**
20
-		 * Redux_ThirdParty_Fixes constructor.
21
-		 *
22
-		 * @param object $redux ReduxFramework pointer.
23
-		 */
24
-		public function __construct( $redux ) {
25
-			parent::__construct( $redux );
26
-
27
-			$this->gt3_page_builder();
28
-
29
-			// These are necessary to override an outdated extension embedded in themes
30
-			// that are loaded via the antiquated 'loader.php' method.
31
-			add_filter( 'redux/extension/' . $this->parent->args['opt_name'] . '/repeater', array( $this, 'repeater_extension_override' ) );
32
-			add_filter( 'redux/extension/' . $this->parent->args['opt_name'] . '/metaboxes', array( $this, 'metaboxes_extension_override' ) );
33
-			add_filter( 'redux/extension/' . $this->parent->args['opt_name'] . '/social_profiles', array( $this, 'social_profiles_extension_override' ) );
34
-			add_filter( 'redux/extension/' . $this->parent->args['opt_name'] . '/widget_areas', array( $this, 'widget_areas_extension_override' ) );
35
-			add_filter( 'redux/extension/' . $this->parent->args['opt_name'] . '/custom_fonts', array( $this, 'custom_fonts_extension_override' ) );
36
-			add_filter( 'redux/extension/' . $this->parent->args['opt_name'] . '/icon_select', array( $this, 'icon_select_extension_override' ) );
37
-			add_filter( 'redux/extension/' . $this->parent->args['opt_name'] . '/color_scheme', array( $this, 'color_scheme_extension_override' ) );
38
-			add_filter( 'redux/extension/' . $this->parent->args['opt_name'] . '/accordion', array( $this, 'accordion_extension_override' ) );
39
-		}
40
-
41
-		/**
42
-		 * Search extension override.
43
-		 *
44
-		 * @return string
45
-		 */
46
-		public function accordion_extension_override(): string {
47
-			return Redux_Core::$dir . 'inc/extensions/accordion/class-redux-extension-accordion.php';
48
-		}
49
-
50
-		/**
51
-		 * Color Scheme extension override.
52
-		 *
53
-		 * @return string
54
-		 */
55
-		public function color_scheme_extension_override(): string {
56
-			return Redux_core::$dir . 'inc/extensions/color_scheme/class-redux-extension-color-scheme.php';
57
-		}
58
-
59
-		/**
60
-		 * Icon Select extension override.
61
-		 *
62
-		 * @return string
63
-		 */
64
-		public function icon_select_extension_override(): string {
65
-			return Redux_core::$dir . 'inc/extensions/icon_select/class-redux-extension-icon-select.php';
66
-		}
67
-
68
-		/**
69
-		 * Widget Area extension override.
70
-		 *
71
-		 * @return string
72
-		 */
73
-		public function custom_fonts_extension_override(): string {
74
-			return Redux_core::$dir . 'inc/extensions/custom_fonts/class-redux-extension-custom-fonts.php';
75
-		}
76
-
77
-		/**
78
-		 * Widget Area extension override.
79
-		 *
80
-		 * @return string
81
-		 */
82
-		public function widget_areas_extension_override(): string {
83
-			return Redux_core::$dir . 'inc/extensions/widget_areas/class-redux-extension-widget-areas.php';
84
-		}
85
-
86
-		/**
87
-		 * Repeater extension override.
88
-		 *
89
-		 * @return string
90
-		 */
91
-		public function repeater_extension_override(): string {
92
-			return Redux_core::$dir . 'inc/extensions/repeater/class-redux-extension-repeater.php';
93
-		}
94
-
95
-		/**
96
-		 * Metaboxes extension override.
97
-		 *
98
-		 * @return string
99
-		 */
100
-		public function metaboxes_extension_override(): string {
101
-			return Redux_core::$dir . 'inc/extensions/metaboxes/class-redux-extension-metaboxes.php';
102
-		}
103
-
104
-		/**
105
-		 * Social Profiles extension override.
106
-		 *
107
-		 * @return string
108
-		 */
109
-		public function social_profiles_extension_override(): string {
110
-			return Redux_core::$dir . 'inc/extensions/social_profiles/class-redux-extension-social-profiles.php';
111
-		}
112
-
113
-		/**
114
-		 * GT3 Page Builder fix.
115
-		 */
116
-		private function gt3_page_builder() {
117
-			// Fix for the GT3 page builder: http://www.gt3themes.com/wordpress-gt3-page-builder-plugin/.
118
-			if ( has_action( 'ecpt_field_options_' ) ) {
119
-				global $pagenow;
120
-
121
-				if ( 'admin.php' === $pagenow ) {
122
-					remove_action( 'admin_init', 'pb_admin_init' );
123
-				}
124
-			}
125
-		}
126
-	}
14
+    /**
15
+     * Class Redux_ThirdParty_Fixes
16
+     */
17
+    class Redux_ThirdParty_Fixes extends Redux_Class {
18
+
19
+        /**
20
+         * Redux_ThirdParty_Fixes constructor.
21
+         *
22
+         * @param object $redux ReduxFramework pointer.
23
+         */
24
+        public function __construct( $redux ) {
25
+            parent::__construct( $redux );
26
+
27
+            $this->gt3_page_builder();
28
+
29
+            // These are necessary to override an outdated extension embedded in themes
30
+            // that are loaded via the antiquated 'loader.php' method.
31
+            add_filter( 'redux/extension/' . $this->parent->args['opt_name'] . '/repeater', array( $this, 'repeater_extension_override' ) );
32
+            add_filter( 'redux/extension/' . $this->parent->args['opt_name'] . '/metaboxes', array( $this, 'metaboxes_extension_override' ) );
33
+            add_filter( 'redux/extension/' . $this->parent->args['opt_name'] . '/social_profiles', array( $this, 'social_profiles_extension_override' ) );
34
+            add_filter( 'redux/extension/' . $this->parent->args['opt_name'] . '/widget_areas', array( $this, 'widget_areas_extension_override' ) );
35
+            add_filter( 'redux/extension/' . $this->parent->args['opt_name'] . '/custom_fonts', array( $this, 'custom_fonts_extension_override' ) );
36
+            add_filter( 'redux/extension/' . $this->parent->args['opt_name'] . '/icon_select', array( $this, 'icon_select_extension_override' ) );
37
+            add_filter( 'redux/extension/' . $this->parent->args['opt_name'] . '/color_scheme', array( $this, 'color_scheme_extension_override' ) );
38
+            add_filter( 'redux/extension/' . $this->parent->args['opt_name'] . '/accordion', array( $this, 'accordion_extension_override' ) );
39
+        }
40
+
41
+        /**
42
+         * Search extension override.
43
+         *
44
+         * @return string
45
+         */
46
+        public function accordion_extension_override(): string {
47
+            return Redux_Core::$dir . 'inc/extensions/accordion/class-redux-extension-accordion.php';
48
+        }
49
+
50
+        /**
51
+         * Color Scheme extension override.
52
+         *
53
+         * @return string
54
+         */
55
+        public function color_scheme_extension_override(): string {
56
+            return Redux_core::$dir . 'inc/extensions/color_scheme/class-redux-extension-color-scheme.php';
57
+        }
58
+
59
+        /**
60
+         * Icon Select extension override.
61
+         *
62
+         * @return string
63
+         */
64
+        public function icon_select_extension_override(): string {
65
+            return Redux_core::$dir . 'inc/extensions/icon_select/class-redux-extension-icon-select.php';
66
+        }
67
+
68
+        /**
69
+         * Widget Area extension override.
70
+         *
71
+         * @return string
72
+         */
73
+        public function custom_fonts_extension_override(): string {
74
+            return Redux_core::$dir . 'inc/extensions/custom_fonts/class-redux-extension-custom-fonts.php';
75
+        }
76
+
77
+        /**
78
+         * Widget Area extension override.
79
+         *
80
+         * @return string
81
+         */
82
+        public function widget_areas_extension_override(): string {
83
+            return Redux_core::$dir . 'inc/extensions/widget_areas/class-redux-extension-widget-areas.php';
84
+        }
85
+
86
+        /**
87
+         * Repeater extension override.
88
+         *
89
+         * @return string
90
+         */
91
+        public function repeater_extension_override(): string {
92
+            return Redux_core::$dir . 'inc/extensions/repeater/class-redux-extension-repeater.php';
93
+        }
94
+
95
+        /**
96
+         * Metaboxes extension override.
97
+         *
98
+         * @return string
99
+         */
100
+        public function metaboxes_extension_override(): string {
101
+            return Redux_core::$dir . 'inc/extensions/metaboxes/class-redux-extension-metaboxes.php';
102
+        }
103
+
104
+        /**
105
+         * Social Profiles extension override.
106
+         *
107
+         * @return string
108
+         */
109
+        public function social_profiles_extension_override(): string {
110
+            return Redux_core::$dir . 'inc/extensions/social_profiles/class-redux-extension-social-profiles.php';
111
+        }
112
+
113
+        /**
114
+         * GT3 Page Builder fix.
115
+         */
116
+        private function gt3_page_builder() {
117
+            // Fix for the GT3 page builder: http://www.gt3themes.com/wordpress-gt3-page-builder-plugin/.
118
+            if ( has_action( 'ecpt_field_options_' ) ) {
119
+                global $pagenow;
120
+
121
+                if ( 'admin.php' === $pagenow ) {
122
+                    remove_action( 'admin_init', 'pb_admin_init' );
123
+                }
124
+            }
125
+        }
126
+    }
127 127
 }
Please login to merge, or discard this patch.
redux-core/inc/extensions/search/class-redux-extension-search.php 1 patch
Indentation   +21 added lines, -21 removed lines patch added patch discarded remove patch
@@ -15,29 +15,29 @@
 block discarded – undo
15 15
 // Don't duplicate me!
16 16
 if ( ! class_exists( 'Redux_Extension_Search' ) ) {
17 17
 
18
-	/**
19
-	 * Class Redux_Extension_Search
20
-	 */
21
-	class Redux_Extension_Search extends Redux_Extension_Abstract {
18
+    /**
19
+     * Class Redux_Extension_Search
20
+     */
21
+    class Redux_Extension_Search extends Redux_Extension_Abstract {
22 22
 
23
-		/**
24
-		 * Extension Friendly Name.
25
-		 *
26
-		 * @var string
27
-		 */
28
-		public string $extension_name = 'Search (Inactive Placeholder)';
23
+        /**
24
+         * Extension Friendly Name.
25
+         *
26
+         * @var string
27
+         */
28
+        public string $extension_name = 'Search (Inactive Placeholder)';
29 29
 
30
-		/**
31
-		 * Redux_Extension_Search constructor.
32
-		 *
33
-		 * @param object $redux ReduxFramework Object pointer.
34
-		 */
35
-		public function __construct( $redux ) {
36
-			parent::__construct( $redux, __FILE__ );
30
+        /**
31
+         * Redux_Extension_Search constructor.
32
+         *
33
+         * @param object $redux ReduxFramework Object pointer.
34
+         */
35
+        public function __construct( $redux ) {
36
+            parent::__construct( $redux, __FILE__ );
37 37
 
38
-			// Nothing here.
39
-		}
40
-	}
38
+            // Nothing here.
39
+        }
40
+    }
41 41
 
42
-	class_alias( Redux_Extension_Search::class, 'ReduxFramework_Extension_search' );
42
+    class_alias( Redux_Extension_Search::class, 'ReduxFramework_Extension_search' );
43 43
 }
Please login to merge, or discard this patch.
redux-core/inc/extensions/datetime/class-redux-extension-datetime.php 1 patch
Indentation   +26 added lines, -26 removed lines patch added patch discarded remove patch
@@ -17,34 +17,34 @@
 block discarded – undo
17 17
 // Don't duplicate me!
18 18
 if ( ! class_exists( 'Redux_Extension_Datetime', false ) ) {
19 19
 
20
-	/**
21
-	 * Class Redux_Extension_Datetime
22
-	 */
23
-	class Redux_Extension_Datetime extends Redux_Extension_Abstract {
20
+    /**
21
+     * Class Redux_Extension_Datetime
22
+     */
23
+    class Redux_Extension_Datetime extends Redux_Extension_Abstract {
24 24
 
25
-		/**
26
-		 * Extension version.
27
-		 *
28
-		 * @var string
29
-		 */
30
-		public static $version = '4.3.15';
25
+        /**
26
+         * Extension version.
27
+         *
28
+         * @var string
29
+         */
30
+        public static $version = '4.3.15';
31 31
 
32
-		/**
33
-		 * Extension friendly name.
34
-		 *
35
-		 * @var string
36
-		 */
37
-		public string $extension_name = 'Date/Time';
32
+        /**
33
+         * Extension friendly name.
34
+         *
35
+         * @var string
36
+         */
37
+        public string $extension_name = 'Date/Time';
38 38
 
39
-		/**
40
-		 * Redux_Extension_Datetime constructor.
41
-		 *
42
-		 * @param ReduxFramework $redux ReduxFramework pointer.
43
-		 */
44
-		public function __construct( $redux ) {
45
-			parent::__construct( $redux, __FILE__ );
39
+        /**
40
+         * Redux_Extension_Datetime constructor.
41
+         *
42
+         * @param ReduxFramework $redux ReduxFramework pointer.
43
+         */
44
+        public function __construct( $redux ) {
45
+            parent::__construct( $redux, __FILE__ );
46 46
 
47
-			$this->add_field( 'datetime' );
48
-		}
49
-	}
47
+            $this->add_field( 'datetime' );
48
+        }
49
+    }
50 50
 }
Please login to merge, or discard this patch.
redux-core/inc/extensions/accordion/class-redux-extension-accordion.php 1 patch
Indentation   +39 added lines, -39 removed lines patch added patch discarded remove patch
@@ -16,43 +16,43 @@
 block discarded – undo
16 16
 // Don't duplicate me!
17 17
 if ( ! class_exists( 'Redux_Extension_Accordion' ) ) {
18 18
 
19
-	/**
20
-	 * Main ReduxFramework_Extension_Accordion extension class
21
-	 *
22
-	 * @since       1.0.0
23
-	 */
24
-	class Redux_Extension_Accordion extends Redux_Extension_Abstract {
25
-
26
-		/**
27
-		 * Extension version.
28
-		 *
29
-		 * @var string
30
-		 */
31
-		public static $version = '4.3.16';
32
-
33
-		/**
34
-		 * Extension friendly name.
35
-		 *
36
-		 * @var string
37
-		 */
38
-		public string $extension_name = 'Accordion';
39
-
40
-		/**
41
-		 * Class Constructor. Defines the args for the extension class
42
-		 *
43
-		 * @since       1.0.0
44
-		 * @access      public
45
-		 *
46
-		 * @param       ReduxFramework $redux Parent settings.
47
-		 *
48
-		 * @return      void
49
-		 */
50
-		public function __construct( $redux ) {
51
-			parent::__construct( $redux, __FILE__ );
52
-
53
-			$this->add_field( 'accordion' );
54
-		}
55
-	}
56
-
57
-	class_alias( Redux_Extension_Accordion::class, 'ReduxFramework_Extension_Accordion' );
19
+    /**
20
+     * Main ReduxFramework_Extension_Accordion extension class
21
+     *
22
+     * @since       1.0.0
23
+     */
24
+    class Redux_Extension_Accordion extends Redux_Extension_Abstract {
25
+
26
+        /**
27
+         * Extension version.
28
+         *
29
+         * @var string
30
+         */
31
+        public static $version = '4.3.16';
32
+
33
+        /**
34
+         * Extension friendly name.
35
+         *
36
+         * @var string
37
+         */
38
+        public string $extension_name = 'Accordion';
39
+
40
+        /**
41
+         * Class Constructor. Defines the args for the extension class
42
+         *
43
+         * @since       1.0.0
44
+         * @access      public
45
+         *
46
+         * @param       ReduxFramework $redux Parent settings.
47
+         *
48
+         * @return      void
49
+         */
50
+        public function __construct( $redux ) {
51
+            parent::__construct( $redux, __FILE__ );
52
+
53
+            $this->add_field( 'accordion' );
54
+        }
55
+    }
56
+
57
+    class_alias( Redux_Extension_Accordion::class, 'ReduxFramework_Extension_Accordion' );
58 58
 }
Please login to merge, or discard this patch.
redux-core/inc/extensions/shortcodes/class-redux-extension-shortcodes.php 1 patch
Indentation   +39 added lines, -39 removed lines patch added patch discarded remove patch
@@ -13,43 +13,43 @@
 block discarded – undo
13 13
 // Don't duplicate me!
14 14
 if ( ! class_exists( 'Redux_Extension_Shortcodes' ) ) {
15 15
 
16
-	/**
17
-	 * Class Redux_Extension_Shortcodes
18
-	 */
19
-	class Redux_Extension_Shortcodes extends Redux_Extension_Abstract {
20
-
21
-		/**
22
-		 * Extension Version.
23
-		 *
24
-		 * @var string
25
-		 */
26
-		public static $version = '4.3.6';
27
-
28
-		/**
29
-		 * Extension Friendly Name.
30
-		 *
31
-		 * @var string
32
-		 */
33
-		public string $extension_name = 'Shortcodes';
34
-
35
-		/**
36
-		 * Redux_Extension_Shortcodes constructor.
37
-		 *
38
-		 * @param object $redux ReduxFramework Object pointer.
39
-		 */
40
-		public function __construct( $redux ) {
41
-			parent::__construct( $redux, __FILE__ );
42
-
43
-			$this->add_field( 'shortcodes' );
44
-
45
-			if ( ! class_exists( 'Redux_Shortcodes' ) ) {
46
-				require_once __DIR__ . '/class-redux-shortcodes.php';
47
-				new Redux_Shortcodes();
48
-			}
49
-
50
-			// Allow users to extend if they want.
51
-			// phpcs:ignore WordPress.NamingConventions.ValidHookName
52
-			do_action( 'redux/shortcodes/' . $redux->args['opt_name'] . '/construct' );
53
-		}
54
-	}
16
+    /**
17
+     * Class Redux_Extension_Shortcodes
18
+     */
19
+    class Redux_Extension_Shortcodes extends Redux_Extension_Abstract {
20
+
21
+        /**
22
+         * Extension Version.
23
+         *
24
+         * @var string
25
+         */
26
+        public static $version = '4.3.6';
27
+
28
+        /**
29
+         * Extension Friendly Name.
30
+         *
31
+         * @var string
32
+         */
33
+        public string $extension_name = 'Shortcodes';
34
+
35
+        /**
36
+         * Redux_Extension_Shortcodes constructor.
37
+         *
38
+         * @param object $redux ReduxFramework Object pointer.
39
+         */
40
+        public function __construct( $redux ) {
41
+            parent::__construct( $redux, __FILE__ );
42
+
43
+            $this->add_field( 'shortcodes' );
44
+
45
+            if ( ! class_exists( 'Redux_Shortcodes' ) ) {
46
+                require_once __DIR__ . '/class-redux-shortcodes.php';
47
+                new Redux_Shortcodes();
48
+            }
49
+
50
+            // Allow users to extend if they want.
51
+            // phpcs:ignore WordPress.NamingConventions.ValidHookName
52
+            do_action( 'redux/shortcodes/' . $redux->args['opt_name'] . '/construct' );
53
+        }
54
+    }
55 55
 }
Please login to merge, or discard this patch.
redux-core/inc/extensions/js_button/class-redux-extension-js-button.php 1 patch
Indentation   +33 added lines, -33 removed lines patch added patch discarded remove patch
@@ -12,41 +12,41 @@
 block discarded – undo
12 12
 
13 13
 if ( ! class_exists( 'Redux_Extension_Js_Button' ) ) {
14 14
 
15
-	/**
16
-	 * Main Redux_Extension_Js_Button extension class
17
-	 *
18
-	 * @since       1.0.0
19
-	 */
20
-	class Redux_Extension_Js_Button extends Redux_Extension_Abstract {
15
+    /**
16
+     * Main Redux_Extension_Js_Button extension class
17
+     *
18
+     * @since       1.0.0
19
+     */
20
+    class Redux_Extension_Js_Button extends Redux_Extension_Abstract {
21 21
 
22
-		/**
23
-		 * Extension version.
24
-		 *
25
-		 * @var string
26
-		 */
27
-		public static $version = '4.3.16';
22
+        /**
23
+         * Extension version.
24
+         *
25
+         * @var string
26
+         */
27
+        public static $version = '4.3.16';
28 28
 
29
-		/**
30
-		 * Extension friendly name.
31
-		 *
32
-		 * @var string
33
-		 */
34
-		public string $extension_name = 'JS Button';
29
+        /**
30
+         * Extension friendly name.
31
+         *
32
+         * @var string
33
+         */
34
+        public string $extension_name = 'JS Button';
35 35
 
36
-		/**
37
-		 * Class Constructor. Defines the args for the extensions class
38
-		 *
39
-		 * @since       1.0.0
40
-		 * @access      public
41
-		 *
42
-		 * @param       ReduxFramework $redux Parent settings.
43
-		 *
44
-		 * @return      void
45
-		 */
46
-		public function __construct( $redux ) {
47
-			parent::__construct( $redux, __FILE__ );
36
+        /**
37
+         * Class Constructor. Defines the args for the extensions class
38
+         *
39
+         * @since       1.0.0
40
+         * @access      public
41
+         *
42
+         * @param       ReduxFramework $redux Parent settings.
43
+         *
44
+         * @return      void
45
+         */
46
+        public function __construct( $redux ) {
47
+            parent::__construct( $redux, __FILE__ );
48 48
 
49
-			$this->add_field( 'js_button' );
50
-		}
51
-	}
49
+            $this->add_field( 'js_button' );
50
+        }
51
+    }
52 52
 }
Please login to merge, or discard this patch.
redux-core/inc/extensions/google_maps/class-redux-extension-google-maps.php 1 patch
Indentation   +26 added lines, -26 removed lines patch added patch discarded remove patch
@@ -12,34 +12,34 @@
 block discarded – undo
12 12
 
13 13
 if ( ! class_exists( 'Redux_Extension_Google_Maps' ) ) {
14 14
 
15
-	/**
16
-	 * Class ReduxFramework_extension_google_maps
17
-	 */
18
-	class Redux_Extension_Google_Maps extends Redux_Extension_Abstract {
15
+    /**
16
+     * Class ReduxFramework_extension_google_maps
17
+     */
18
+    class Redux_Extension_Google_Maps extends Redux_Extension_Abstract {
19 19
 
20
-		/**
21
-		 * Extension version.
22
-		 *
23
-		 * @var string
24
-		 */
25
-		public static $version = '4.4.19';
20
+        /**
21
+         * Extension version.
22
+         *
23
+         * @var string
24
+         */
25
+        public static $version = '4.4.19';
26 26
 
27
-		/**
28
-		 * Extension friendly name.
29
-		 *
30
-		 * @var string
31
-		 */
32
-		public string $extension_name = 'Google Maps';
27
+        /**
28
+         * Extension friendly name.
29
+         *
30
+         * @var string
31
+         */
32
+        public string $extension_name = 'Google Maps';
33 33
 
34
-		/**
35
-		 * ReduxFramework_extension_google_maps constructor.
36
-		 *
37
-		 * @param ReduxFramework $redux ReduxFramework object.
38
-		 */
39
-		public function __construct( $redux ) {
40
-			parent::__construct( $redux, __FILE__ );
34
+        /**
35
+         * ReduxFramework_extension_google_maps constructor.
36
+         *
37
+         * @param ReduxFramework $redux ReduxFramework object.
38
+         */
39
+        public function __construct( $redux ) {
40
+            parent::__construct( $redux, __FILE__ );
41 41
 
42
-			$this->add_field( 'google_maps' );
43
-		}
44
-	}
42
+            $this->add_field( 'google_maps' );
43
+        }
44
+    }
45 45
 }
Please login to merge, or discard this patch.
redux-core/inc/extensions/multi_media/class-redux-extension-multi-media.php 1 patch
Indentation   +58 added lines, -58 removed lines patch added patch discarded remove patch
@@ -14,70 +14,70 @@
 block discarded – undo
14 14
 // Don't duplicate me!
15 15
 if ( ! class_exists( 'Redux_Extension_Multi_Media' ) ) {
16 16
 
17
-	/**
18
-	 * Main Redux_Extension_multi_media extension class
19
-	 *
20
-	 * @since       1.0.0
21
-	 */
22
-	class Redux_Extension_Multi_Media extends Redux_Extension_Abstract {
17
+    /**
18
+     * Main Redux_Extension_multi_media extension class
19
+     *
20
+     * @since       1.0.0
21
+     */
22
+    class Redux_Extension_Multi_Media extends Redux_Extension_Abstract {
23 23
 
24
-		/**
25
-		 * Extension version.
26
-		 *
27
-		 * @var string
28
-		 */
29
-		public static $version = '4.4.1';
24
+        /**
25
+         * Extension version.
26
+         *
27
+         * @var string
28
+         */
29
+        public static $version = '4.4.1';
30 30
 
31
-		/**
32
-		 * Extension name.
33
-		 *
34
-		 * @var string
35
-		 */
36
-		public string $extension_name = 'Multi Media';
31
+        /**
32
+         * Extension name.
33
+         *
34
+         * @var string
35
+         */
36
+        public string $extension_name = 'Multi Media';
37 37
 
38
-		/**
39
-		 * Class Constructor. Defines the args for the extensions class
40
-		 *
41
-		 * @since       1.0.0
42
-		 * @access      public
43
-		 *
44
-		 * @param       ReduxFramework $redux Parent settings.
45
-		 *
46
-		 * @return      void
47
-		 */
48
-		public function __construct( $redux ) {
49
-			parent::__construct( $redux, __FILE__ );
38
+        /**
39
+         * Class Constructor. Defines the args for the extensions class
40
+         *
41
+         * @since       1.0.0
42
+         * @access      public
43
+         *
44
+         * @param       ReduxFramework $redux Parent settings.
45
+         *
46
+         * @return      void
47
+         */
48
+        public function __construct( $redux ) {
49
+            parent::__construct( $redux, __FILE__ );
50 50
 
51
-			$this->add_field( 'multi_media' );
52
-		}
51
+            $this->add_field( 'multi_media' );
52
+        }
53 53
 
54
-		/**
55
-		 * Get extended image data.
56
-		 *
57
-		 * @param int|string $id image ID.
58
-		 *
59
-		 * @return array|null
60
-		 * @depreacted Remove camelCase function name.
61
-		 */
62
-		public static function getExtendedData( $id ): ?array {
63
-			_deprecated_function( 'getExtendedData', '4.3.15', 'Redux_Extension_Multi_Media::get_extended_data( $id )' );
54
+        /**
55
+         * Get extended image data.
56
+         *
57
+         * @param int|string $id image ID.
58
+         *
59
+         * @return array|null
60
+         * @depreacted Remove camelCase function name.
61
+         */
62
+        public static function getExtendedData( $id ): ?array {
63
+            _deprecated_function( 'getExtendedData', '4.3.15', 'Redux_Extension_Multi_Media::get_extended_data( $id )' );
64 64
 
65
-			return self::get_extended_data( $id );
66
-		}
65
+            return self::get_extended_data( $id );
66
+        }
67 67
 
68
-		/**
69
-		 * Get extended image data.
70
-		 *
71
-		 * @param int|string $id image ID.
72
-		 *
73
-		 * @return array|null
74
-		 */
75
-		public static function get_extended_data( $id ): ?array {
76
-			if ( '' !== $id && is_numeric( $id ) ) {
77
-				return wp_prepare_attachment_for_js( $id );
78
-			}
68
+        /**
69
+         * Get extended image data.
70
+         *
71
+         * @param int|string $id image ID.
72
+         *
73
+         * @return array|null
74
+         */
75
+        public static function get_extended_data( $id ): ?array {
76
+            if ( '' !== $id && is_numeric( $id ) ) {
77
+                return wp_prepare_attachment_for_js( $id );
78
+            }
79 79
 
80
-			return null;
81
-		}
82
-	}
80
+            return null;
81
+        }
82
+    }
83 83
 }
Please login to merge, or discard this patch.