PluginProbe ʕ •ᴥ•ʔ
ShopPress – Shop Builder for Elementor and WooCommerce / trunk
ShopPress – Shop Builder for Elementor and WooCommerce vtrunk
shop-press / Admin / DefaultOptions / Options.php
shop-press / Admin / DefaultOptions Last commit date
Options.php 2 years ago
Options.php
128 lines
1 <?php
2 /**
3 * Default Options.
4 *
5 * @package ShopPress
6 */
7
8 namespace ShopPress\Admin\DefaultOptions;
9
10 defined( 'ABSPATH' ) || exit;
11
12 class Options {
13
14 public static function get_field_values( $fields ) {
15 if ( ! is_array( $fields ) ) {
16 return array();
17 }
18
19 $exclude_components = array(
20 'heading',
21 'pages',
22 'builder',
23 'divider',
24 'link',
25 'terms',
26 );
27 $values = array();
28 foreach ( $fields as $key => $field ) {
29
30 $component = $field['component'] ?? false;
31 if ( in_array( $component, $exclude_components ) ) {
32
33 continue;
34 } elseif ( 'tabs' == $component ) {
35
36 foreach ( $field['tabs'] as $tab_fields ) {
37 $values = array_merge(
38 $values,
39 static::get_field_values( $tab_fields['fields'] ?? array() )
40 );
41 }
42 $values[ $key ] = $field['default'] ?? '';
43 } elseif ( 'group_fields' == $component ) {
44
45 $values = array_merge(
46 $values,
47 static::get_field_values( $field['fields'] ?? array() )
48 );
49 } else {
50 $name = $field['name'] ?? false;
51 $values[ $name ] = $field['default'] ?? '';
52 }
53 }
54
55 return $values;
56 }
57
58 public static function get_default_template_settings() {
59 $SettingsFieldsClasses = array(
60 \ShopPressPro\Admin\SettingsFields\Templates::class,
61 \ShopPress\Admin\SettingsFields\Templates::class,
62 );
63
64 $default_options = array();
65 foreach ( $SettingsFieldsClasses as $SettingsFieldsClass ) {
66
67 if ( ! class_exists( $SettingsFieldsClass ) ) {
68 continue;
69 }
70
71 $SettingsFieldsClassMethods = get_class_methods( $SettingsFieldsClass );
72 foreach ( $SettingsFieldsClassMethods as $method ) {
73
74 $options = $SettingsFieldsClass::{$method}();
75 $default_options[ $method ] = static::get_field_values( $options );
76 $default_options[ $method ]['status'] = false;
77 }
78 }
79
80 return $default_options;
81 }
82
83 public static function get_default_module_settings() {
84 $SettingsFieldsClasses = array(
85 \ShopPress\Admin\SettingsFields\Modules::class,
86 \ShopPressPro\Admin\SettingsFields\Modules::class,
87 );
88
89 $default_options = array();
90 foreach ( $SettingsFieldsClasses as $SettingsFieldsClass ) {
91
92 if ( ! class_exists( $SettingsFieldsClass ) ) {
93 continue;
94 }
95
96 $SettingsFieldsClassMethods = get_class_methods( $SettingsFieldsClass );
97 foreach ( $SettingsFieldsClassMethods as $method ) {
98
99 $options = $SettingsFieldsClass::{$method}();
100 $default_options[ $method ] = static::get_field_values( $options );
101 $default_options[ $method ]['status'] = false;
102 }
103 }
104
105 return $default_options;
106 }
107
108 /**
109 * Returns the default options for sp_admin.
110 *
111 * @since 1.2.0
112 *
113 * @return array $default_options
114 */
115 public static function get_default_options() {
116 $default_options = array(
117 'templates' => static::get_default_template_settings(),
118 'modules' => static::get_default_module_settings(),
119 'addons' => array(),
120 'general' => array(),
121 );
122
123 $default_options = apply_filters( 'shoppress/default_options', $default_options );
124
125 return $default_options;
126 }
127 }
128