PluginProbe
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! / 3.2.4
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! v3.2.4
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.2.4, at includes/Core/Importer/Utils/ElementorHelper.php

241 lines 7.3 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 foreach ( $template_settings['data'] as $type => $type_data ) {
46 if ( empty( $type_data ) ) {
47 continue;
48 }
49
50 if ( $type == 'nav_menus' ) {
51 $this->nav_menus = $type_data;
52 }
53
54 if ( $type == 'form' || $type == 'post_type' ) {
55 foreach ( $type_data as $plugin => $plugin_data ) {
56 if ( $type == 'post_type' ) {
57 $_data[ $plugin_data['id'] ] = [
58 'type' => $type,
59 'query' => $plugin_data['query']
60 ];
61 } else {
62 foreach ( $plugin_data as $value ) {
63 if ( empty( $value['settings'] ) ) {
64 continue;
65 }
66
67 foreach ( $value['settings'] as $key => $v ) {
68 if ( ! isset( $extraContent[ $plugin ] ) ) {
69 continue;
70 }
71 $_data[ $value['id'] ][ $key ] = $extraContent[ $plugin ][ $value['id'] ];
72 }
73 }
74 }
75 // $this->sse_log('prepare', 'Preparing output for finalize, just a moment...' . $plugin, 1, 'eventLog');
76 }
77 }
78 // $this->sse_log('prepare', 'Preparing output for finalize, just a moment...' . $type, 1, 'eventLog');
79 }
80
81 // $content = $template_json;
82 $this->json_prepare( $template_json['content'], $_data, $request_params );
83 $this->post_id = $this->map_post_ids[ $template_settings['post_id'] ];
84 $this->content = $template_json;
85 unset($template_settings['conditions']);
86 $this->content['import_settings'] = $template_settings;
87
88 return $this;
89 }
90
91 public function update() {
92 /**
93 * @var BaseTemplate $template
94 */
95 if(!empty($this->post_id)){
96 $template = templately()->theme_builder::$templates_manager->get( $this->post_id );
97 // $this->sse_log('update', 'Updating prepared data, just a moment...', 1, 'eventLog');
98 $template->import( $this->content );
99 }
100 else{
101 Helper::log(__("Templately Error code: T001", "templately"));
102 }
103
104 $this->nav_menus = [];
105 $this->content = [];
106 }
107
108 private function json_prepare( &$elements, $data, $request_params = []) {
109 foreach ( $elements as &$element ) {
110 if ( ! empty( $data ) ) {
111 foreach ( $data as $id => $settings ) {
112 if ( $element['id'] == $id ) {
113 if ( isset( $settings['type'] ) && $settings['type'] == 'post_type' ) {
114 $this->replace_query_data( $element, $settings['query'] );
115 } else {
116 foreach ( $settings as $key => $value ) {
117 $element['settings'][ $key ] = $value;
118 }
119 }
120 unset( $data[ $id ] );
121 }
122 }
123 }
124
125 /**
126 * Menu Update if needed.
127 */
128 if ( ! empty( $this->nav_menus ) ) {
129 $this->nav_menu_update( $element );
130 }
131
132 if ( ! empty( $element['elements'] ) ) {
133 $this->json_prepare( $element['elements'], $data, $request_params );
134 }
135 else if(!empty($request_params['logo']['id']) && isset($request_params['logo_size']) && $request_params['logo_size'] && $element['elType'] === "widget" && $element['widgetType'] === "tl-site-logo"){
136 $element['settings']['width'] = [
137 'size' => $request_params['logo_size'],
138 'unit' => 'px'
139 ];
140 $element['settings']['max-width'] = [
141 'size' => '100',
142 'unit' => '%'
143 ];
144 $this->sse_log('prepare', 'Site Logo', 1, 'eventLog');
145 }
146
147 // $this->sse_log('prepare', 'Preparing output for finalize, just a moment..Preparing output for finalize.', 1, 'eventLog');
148 }
149 }
150
151 private function nav_menu_update( &$element ) {
152 // $this->sse_log('nav-menu', 'Updating nav menus, just a moment...', 1, 'eventLog');
153 if ( ! isset( $element['widgetType'] ) ) {
154 return;
155 }
156
157 switch ( $element['widgetType'] ) {
158 case 'eael-simple-menu':
159 if(!empty($element['settings']['eael_simple_menu_menu']) && isset($this->map_term_ids[ $element['settings']['eael_simple_menu_menu'] ])){
160 $element['settings']['eael_simple_menu_menu'] = $this->map_term_ids[ $element['settings']['eael_simple_menu_menu'] ];
161 }
162 break;
163 case 'eael-advanced-menu':
164 if(!empty($element['settings']['eael_advanced_menu_menu']) && isset($this->map_term_ids[ $element['settings']['eael_advanced_menu_menu'] ])){
165 $element['settings']['eael_advanced_menu_menu'] = $this->map_term_ids[ $element['settings']['eael_advanced_menu_menu'] ];
166 }
167 break;
168 }
169 }
170
171 private function replace_query_data( &$element, $data ) {
172 // $this->sse_log('query', 'Finalizing query data, just a moment...', 1, 'eventLog');
173 if ( ! empty( $element['widgetType'] ) ) {
174 if ( in_array( $element['widgetType'], $this->ea_post_widgets ) ) {
175 if ( ! empty( $data['tax_query'] ) ) {
176 foreach ( $data['tax_query'] as $key => $tax_query ) {
177 if ( $key === 'relation' ) {
178 continue;
179 }
180 if ( isset( $element['settings'][ $tax_query['taxonomy'] . '_ids' ] ) ) {
181 $new_ids = [];
182 foreach ( $element['settings'][ $tax_query['taxonomy'] . '_ids' ] as $id ) {
183 if ( isset( $this->map_term_ids[ $id ] ) ) {
184 $new_ids[] = $this->map_term_ids[ $id ];
185 }
186 }
187 $element['settings'][ $tax_query['taxonomy'] . '_ids' ] = $new_ids;
188 }
189 }
190 }
191 if ( ! empty( $element['settings']['authors'] ) ) {
192 $element['settings']['authors'] = [ get_current_user_id() ];
193 }
194 }
195 if ( in_array( $element['widgetType'], $this->el_post_widgets ) ) {
196 if ( ! empty( $data['tax_query'] ) ) {
197 $this->replace_term_ids( $element, [
198 'posts_include_term_ids',
199 'posts_exclude_term_ids',
200 'query_include_term_ids',
201 'query_exclude_term_ids',
202 ] );
203
204 }
205 if ( ! empty( $data['author__in'] ) ) {
206 $keys = [ 'posts_include_authors', 'query_include_authors' ];
207 foreach ( $keys as $key ) {
208 if ( isset( $element['settings'][ $key ] ) ) {
209 $element['settings'][ $key ] = [ get_current_user_id() ];
210 }
211 }
212 }
213 }
214 if ( $element['widgetType'] == 'eael-woo-product-gallery' ) {
215 $this->replace_term_ids( $element, [ 'eael_product_gallery_categories', 'eael_product_gallery_tags' ] );
216
217 }
218 if ( $element['widgetType'] == 'eicon-woocommerce' ) {
219 $this->replace_term_ids( $element, [ 'eael_product_grid_categories' ] );
220 }
221 }
222 }
223
224 private function replace_term_ids( &$element, $keys ) {
225 foreach ( $keys as $key ) {
226 // $this->sse_log('terms', 'Finalizing term ids, just a moment...', 1, 'eventLog');
227 if ( ! empty( $element['settings'][ $key ] ) ) {
228 $new_ids = [];
229 foreach ( $element['settings'][ $key ] as $id ) {
230 if ( isset( $this->map_term_ids[ $id ] ) ) {
231 $new_ids[] = $this->map_term_ids[ $id ];
232 }
233 }
234 if(!empty($new_ids)){
235 $element['settings'][ $key ] = $new_ids;
236 }
237 }
238
239 }
240 }
241 }