PluginProbe
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! / 3.4.2
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! v3.4.2
3.7.5 3.7.4 3.7.3 3.7.2 1-final 3.7.1 3.7.0 3.6.8 3.6.7 3.6.6 3.6.5 3.6.4 3.6.3 3.6.2 3.6.1 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.10 All 111 releases
templately / includes / Core / Importer / Utils / ElementorHelper.php

ElementorHelper.php in Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! 3.4.2, at includes/Core/Importer/Utils/ElementorHelper.php

249 lines 7.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Templately\Core\Importer\Utils;
4
5 use Templately\Builder\Types\BaseTemplate;
6 use Templately\Utils\Helper;
7
8 class ElementorHelper extends ImportHelper {
9 protected $content;
10
11 protected $post_id;
12
13 private $nav_menus = [];
14
15 private $ea_post_widgets = [
16 "eael-post-grid",
17 "eael-post-list",
18 "eael-post-timeline",
19 "eael-content-timeline",
20 "eael-dynamic-filterable-gallery",
21 "eael-post-carousel",
22 "eael-post-block",
23 "eael-woo-product-carousel",
24 "eael-woo-product-slider"
25 ];
26
27 private $el_post_widgets = [
28 'posts',
29 'portfolio',
30 'archive-posts',
31 'woocommerce-products'
32 ];
33
34 /**
35 * @param $template_json
36 * @param $template_settings
37 * @param $extra_content
38 *
39 * @return ElementorHelper
40 */
41 public function prepare( $template_json, $template_settings, $extra_content = [], $request_params = []) {
42
43 $extraContent = $extra_content;
44 $_data = [];
45 $template_settings['data'] = $template_settings['data'] ?? [];
46 foreach ( $template_settings['data'] as $type => $type_data ) {
47 if ( empty( $type_data ) ) {
48 continue;
49 }
50
51 if ( $type == 'nav_menus' ) {
52 $this->nav_menus = $type_data;
53 }
54
55 if ( $type == 'form' || $type == 'post_type' ) {
56 foreach ( $type_data as $plugin => $plugin_data ) {
57 if ( $type == 'post_type' ) {
58 $_data[ $plugin_data['id'] ] = [
59 'type' => $type,
60 'query' => $plugin_data['query']
61 ];
62 } else {
63 foreach ( $plugin_data as $value ) {
64 if ( empty( $value['settings'] ) ) {
65 continue;
66 }
67
68 foreach ( $value['settings'] as $key => $v ) {
69 if ( ! isset( $extraContent[ $plugin ] ) ) {
70 continue;
71 }
72 $_data[ $value['id'] ][ $key ] = $extraContent[ $plugin ][ $value['id'] ];
73 }
74 }
75 }
76 // $this->sse_log('prepare', 'Preparing output for finalize, just a moment...' . $plugin, 1, 'eventLog');
77 }
78 }
79 // $this->sse_log('prepare', 'Preparing output for finalize, just a moment...' . $type, 1, 'eventLog');
80 }
81
82 // $content = $template_json;
83 $this->json_prepare( $template_json['content'], $_data, $request_params );
84 $this->post_id = $this->map_post_ids[ $template_settings['post_id'] ];
85 $this->content = $template_json;
86 unset($template_settings['conditions']);
87 $this->content['import_settings'] = $template_settings;
88
89 return $this;
90 }
91
92 public function update() {
93 /**
94 * @var BaseTemplate $template
95 */
96 if(!empty($this->post_id)){
97 $template = templately()->theme_builder::$templates_manager->get( $this->post_id );
98 // $this->sse_log('update', 'Updating prepared data, just a moment...', 1, 'eventLog');
99 $template->import( $this->content );
100 }
101 else{
102 Helper::log(__("Templately Error code: T001", "templately"));
103 }
104
105 $this->nav_menus = [];
106 $this->content = [];
107 }
108
109 private function json_prepare( &$elements, $data, $request_params = []) {
110 foreach ( $elements as &$element ) {
111 if ( ! empty( $data ) ) {
112 foreach ( $data as $id => $settings ) {
113 if ( $element['id'] == $id ) {
114 if ( isset( $settings['type'] ) && $settings['type'] == 'post_type' ) {
115 $this->replace_query_data( $element, $settings['query'] );
116 } else {
117 foreach ( $settings as $key => $value ) {
118 $element['settings'][ $key ] = $value;
119 }
120 }
121 unset( $data[ $id ] );
122 }
123 }
124 }
125
126 /**
127 * Menu Update if needed.
128 */
129 if ( ! empty( $this->nav_menus ) ) {
130 $this->nav_menu_update( $element );
131 }
132
133 if ( ! empty( $element['elements'] ) ) {
134 $this->json_prepare( $element['elements'], $data, $request_params );
135 }
136 else if(!empty($request_params['logo']['id']) && isset($request_params['logo_size']) && $request_params['logo_size'] && $element['elType'] === "widget" && $element['widgetType'] === "tl-site-logo"){
137 $element['settings']['width'] = [
138 'size' => $request_params['logo_size'],
139 'unit' => 'px'
140 ];
141 $element['settings']['max-width'] = [
142 'size' => '100',
143 'unit' => '%'
144 ];
145 $this->sse_log('prepare', 'Site Logo', 1, 'eventLog');
146 }
147
148 // $this->sse_log('prepare', 'Preparing output for finalize, just a moment..Preparing output for finalize.', 1, 'eventLog');
149 }
150 }
151
152 private function nav_menu_update( &$element ) {
153 // $this->sse_log('nav-menu', 'Updating nav menus, just a moment...', 1, 'eventLog');
154 if ( ! isset( $element['widgetType'] ) ) {
155 return;
156 }
157
158 switch ( $element['widgetType'] ) {
159 case 'eael-simple-menu':
160 if(!empty($element['settings']['eael_simple_menu_menu']) && isset($this->map_term_ids[ $element['settings']['eael_simple_menu_menu'] ])){
161 $element['settings']['eael_simple_menu_menu'] = $this->map_term_ids[ $element['settings']['eael_simple_menu_menu'] ];
162 }
163 break;
164 case 'eael-advanced-menu':
165 if(!empty($element['settings']['eael_advanced_menu_menu']) && isset($this->map_term_ids[ $element['settings']['eael_advanced_menu_menu'] ])){
166 $element['settings']['eael_advanced_menu_menu'] = $this->map_term_ids[ $element['settings']['eael_advanced_menu_menu'] ];
167 }
168 break;
169 }
170 }
171
172 private function replace_query_data( &$element, $data ) {
173 // $this->sse_log('query', 'Finalizing query data, just a moment...', 1, 'eventLog');
174 if ( ! empty( $element['widgetType'] ) ) {
175 if ( in_array( $element['widgetType'], $this->ea_post_widgets ) ) {
176 if ( ! empty( $data['tax_query'] ) ) {
177 foreach ( $data['tax_query'] as $key => $tax_query ) {
178 if ( $key === 'relation' ) {
179 continue;
180 }
181 if ( isset( $element['settings'][ $tax_query['taxonomy'] . '_ids' ] ) ) {
182 $new_ids = [];
183 foreach ( $element['settings'][ $tax_query['taxonomy'] . '_ids' ] as $id ) {
184 if ( isset( $this->map_term_ids[ $id ] ) ) {
185 $new_ids[] = $this->map_term_ids[ $id ];
186 }
187 }
188 $element['settings'][ $tax_query['taxonomy'] . '_ids' ] = $new_ids;
189 }
190 }
191 }
192 if ( ! empty( $element['settings']['authors'] ) ) {
193 $element['settings']['authors'] = [ get_current_user_id() ];
194 }
195 }
196 if ( in_array( $element['widgetType'], $this->el_post_widgets ) ) {
197 if ( ! empty( $data['tax_query'] ) ) {
198 $this->replace_term_ids( $element, [
199 'posts_include_term_ids',
200 'posts_exclude_term_ids',
201 'query_include_term_ids',
202 'query_exclude_term_ids',
203 ] );
204
205 }
206 if ( ! empty( $data['author__in'] ) ) {
207 $keys = [ 'posts_include_authors', 'query_include_authors' ];
208 foreach ( $keys as $key ) {
209 if ( isset( $element['settings'][ $key ] ) ) {
210 $element['settings'][ $key ] = [ get_current_user_id() ];
211 }
212 }
213 }
214 }
215 if ( $element['widgetType'] == 'eael-woo-product-gallery' ) {
216 $this->replace_term_ids( $element, [ 'eael_product_gallery_categories', 'eael_product_gallery_tags' ] );
217
218 }
219 if ( $element['widgetType'] == 'eicon-woocommerce' ) {
220 $this->replace_term_ids( $element, [ 'eael_product_grid_categories' ] );
221 }
222 }
223 }
224
225 private function replace_term_ids( &$element, $keys ) {
226 foreach ( $keys as $key ) {
227 // $this->sse_log('terms', 'Finalizing term ids, just a moment...', 1, 'eventLog');
228 if ( ! empty( $element['settings'][ $key ] ) ) {
229 $new_ids = [];
230 foreach ( $element['settings'][ $key ] as $id ) {
231 if ( isset( $this->map_term_ids[ $id ] ) ) {
232 $new_ids[] = $this->map_term_ids[ $id ];
233 }
234 }
235 if(!empty($new_ids)){
236 $element['settings'][ $key ] = $new_ids;
237 }
238 }
239
240 }
241 }
242
243 public function parse_images($post_content) {
244 $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 3);
245 error_log('parse_images is getting called from ElementorHelper for unknown reasons' . print_r($backtrace, true));
246
247 return [];
248 }
249 }