PluginProbe ʕ •ᴥ•ʔ
Shortcodes and extra features for Phlox theme / 2.8.7
Shortcodes and extra features for Phlox theme v2.8.7
2.17.21 2.17.20 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.6 1.0.9 1.1.0 1.3.0 1.3.1 1.3.10 1.3.14 1.3.2 1.3.3 1.3.6 1.4.0 1.4.1 1.4.2 1.5.0 1.5.2 1.6.0 1.6.2 1.6.4 1.7.0 1.7.2 2.10.0 2.10.1 2.10.3 2.10.5 2.10.7 2.10.8 2.10.9 2.11.0 2.11.1 2.11.2 2.12.0 2.14.0 2.15.0 2.15.2 2.15.4 2.15.5 2.15.6 2.15.7 2.15.8 2.15.9 2.16.0 2.16.1 2.16.2 2.16.3 2.16.4 2.17.0 2.17.1 2.17.12 2.17.13 2.17.14 2.17.15 2.17.16 2.17.2 2.17.3 2.17.4 2.17.5 2.17.6 2.17.8 2.17.9 2.4.12 2.4.13 2.4.14 2.4.16 2.4.18 2.4.19 2.4.9 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.14 2.5.15 2.5.16 2.5.17 2.5.19 2.5.2 2.5.20 2.5.3 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.10 2.6.12 2.6.13 2.6.14 2.6.15 2.6.16 2.6.17 2.6.19 2.6.2 2.6.20 2.6.4 2.6.5 2.6.7 2.7.0 2.7.1 2.7.10 2.7.11 2.7.12 2.7.13 2.7.14 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.9 2.9.0 2.9.12 2.9.14 2.9.15 2.9.16 2.9.17 2.9.18 2.9.19 2.9.2 2.9.20 2.9.21 2.9.22 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 2.9.8
auxin-elements / includes / elementor / modules / settings / base / manager.php
auxin-elements / includes / elementor / modules / settings / base Last commit date
manager.php 4 years ago
manager.php
210 lines
1 <?php
2 namespace Auxin\Plugin\CoreElements\Elementor\Settings\Base;
3
4 use Elementor\Core\Base\Document;
5 use Elementor\Widget_Base;
6 use Elementor\Controls_Manager;
7 use Elementor\Group_Control_Image_Size;
8 use Elementor\Group_Control_Typography;
9 use Elementor\Core\Schemes\Color;
10 use Elementor\Core\Schemes\Typography;
11 use Elementor\Control_Media;
12 use Elementor\Group_Control_Border;
13 use Elementor\Group_Control_Box_Shadow;
14 use Elementor\Group_Control_Background;
15 use Elementor\Core\Kits\Controls\Repeater as Global_Style_Repeater;
16 use Elementor\Repeater;
17
18
19 abstract class Manager {
20
21 function __construct(){
22 $this->register_hooks();
23 }
24
25 protected function register_hooks(){
26 add_action( 'elementor/documents/register_controls', [ $this, 'register_controls' ] );
27 add_action( 'elementor/document/after_save', [ $this, 'on_save_settings' ], 10, 2 );
28 add_action( 'elementor/document/after_save', [ $this, 'elementor_after_save' ], 10, 2 );
29 add_action( 'customize_save_after', [ $this, 'sync_customizer_with_elementor'] );
30 add_action( 'auxin_demo_import_finish', [ $this, 'after_demo_import'] );
31 }
32
33 /**
34 * Register Document Controls
35 *
36 * Add New Controls to Elementor Page Options
37 * @param $document
38 */
39 abstract public function register_controls ( $document );
40
41 /**
42 * Stores the changed controllers
43 *
44 * @param array $settings list of settings for changes controllers
45 * @param Document $document Elementor base Document class
46 * @param array|null $data All document info passed for saving
47 * @return mixed
48 */
49 abstract protected function save_settings( array $settings, $document, $data = null );
50
51 /**
52 * Parsing custom control settings
53 *
54 * @param $document
55 * @param $data
56 */
57 public function on_save_settings( $document, $data ){
58 if( empty( $data['settings'] ) ){
59 return;
60 }
61 $settings_to_save = $this->get_settings_to_save( $data['settings'] );
62 $this->save_settings( $settings_to_save, $document, $data );
63 }
64
65 /**
66 * Default special page settings in Elementor document
67 *
68 * @return array
69 */
70 protected function get_special_settings_names(){
71 return [
72 'id',
73 'post_title',
74 'post_status',
75 'template',
76 'post_excerpt',
77 'post_featured_image',
78 ];
79 }
80
81 /**
82 * Get custom control settings which are changed
83 *
84 * @param array $settings
85 * @return array
86 */
87 private function get_settings_to_save( array $settings ){
88 $special_settings = $this->get_special_settings_names();
89
90 $settings_to_save = $settings;
91
92 foreach ( $special_settings as $special_setting ) {
93 if ( isset( $settings_to_save[ $special_setting ] ) ) {
94 unset( $settings_to_save[ $special_setting ] );
95 }
96 }
97
98 return $settings_to_save;
99 }
100
101 /**
102 * Save auxin colors
103 *
104 * @param object $object
105 * @param array $data
106 * @return void
107 */
108 public function elementor_after_save( $object, $data ) {
109 if ( $data && isset( $data['settings'] ) && is_array( $data['settings'] ) ) {
110 foreach ( $data['settings']['system_colors'] as $key => $value ) {
111
112 if ( !empty( $value['color'] ) ) {
113 auxin_update_option( 'elementor_color_' . $value['_id'], $value['color'] );
114 }
115 }
116
117 }
118 }
119
120 /**
121 * update elementor global colors in customizer
122 *
123 * @return void
124 */
125 public function after_demo_import() {
126
127 // get and update system colors in customizer
128 $current_settings = \Elementor\Plugin::$instance->kits_manager->get_current_settings();
129 foreach ( $current_settings['system_colors'] as $color ) {
130 auxin_update_option( 'elementor_color_' . $color['_id'], $color['color'] );
131 }
132 }
133
134 /**
135 * Sync Customizer with elementor for elementor global colors
136 *
137 * @return void
138 */
139 public function sync_customizer_with_elementor() {
140
141 // get elementor settings
142 $active_kit = get_option( 'elementor_active_kit', '' );
143 if ( empty( $active_kit ) ) {
144 return;
145 }
146
147 $settings = get_post_meta( $active_kit, '_elementor_page_settings', true );
148
149 // get elementor global custom colors from customizer
150 $added_custom_colors = auxin_get_option( 'elementor_global_custom_colors_repeater', '');
151 $colors = json_decode( $added_custom_colors, true );
152 $custom_colors = [];
153 if ( !empty( $colors ) ) {
154 foreach( $colors as $key => $color ) {
155 if( empty( $color['color'] ) ) {
156 continue;
157 }
158 $custom_colors[] = [
159 '_id' => !empty( $color['_id'] ) ? sanitize_text_field( $color['_id'] ) : \Elementor\Utils::generate_random_string(),
160 'title' => !empty( $color['title'] ) ? sanitize_text_field( $color['title'] ) : __('New Color', 'auxin-elements') . ' #' . $key,
161 'color' => $color['color']
162 ];
163 }
164 }
165
166 if ( empty( $settings ) ) {
167
168 // get elementor system colors form customizer
169 $system_colors_key = ['primary', 'secondary', 'text', 'accent' ];
170 foreach( $system_colors_key as $key ) {
171 $system_colors[] = [
172 '_id' => $key,
173 'title' => ucfirst( $key ),
174 'color' => auxin_get_option( 'elementor_color_' . $key, '' )
175 ];
176 }
177
178 // udpate system colors
179 \Elementor\Plugin::$instance->kits_manager->update_kit_settings_based_on_option( 'system_colors', $system_colors );
180
181 // update custom colors
182 if ( !empty( $custom_colors ) ) {
183 \Elementor\Plugin::$instance->kits_manager->update_kit_settings_based_on_option( 'custom_colors', $custom_colors );
184 }
185
186 } else {
187 // get and update system colors => executing these codes to remain title of system colors from elementor settings unchanged
188 $current_settings = \Elementor\Plugin::$instance->kits_manager->get_current_settings();
189 foreach ( $current_settings['system_colors'] as $color ) {
190 $system_colors[] = [
191 '_id' => $color['_id'],
192 'title' => $color['title'],
193 'color' => auxin_get_option( 'elementor_color_' . $color['_id'], $color['color'] )
194 ];
195 }
196 \Elementor\Plugin::$instance->kits_manager->update_kit_settings_based_on_option( 'system_colors', $system_colors );
197
198 // update custom colors -> updating via post meta because we have to replace all custom colors from customizer with the one in elemnetor settings
199 if ( ! empty( $custom_colors ) ) {
200 $settings['custom_colors'] = $custom_colors;
201 update_post_meta( $active_kit, '_elementor_page_settings', $settings );
202 }
203 }
204
205 auxin_update_option( 'elementor_global_custom_colors_repeater', '' );
206 \Elementor\Plugin::instance()->files_manager->clear_cache();
207
208 }
209 }
210