PluginProbe ʕ •ᴥ•ʔ
WP All Export – Drag & Drop Export to Any Custom CSV, XML & Excel / 1.2.2
WP All Export – Drag & Drop Export to Any Custom CSV, XML & Excel v1.2.2
trunk 0.9.0 0.9.1 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.2.0 1.2.1 1.2.10 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.10 1.4.11 1.4.12 1.4.13 1.4.14 1.4.15 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0
wp-all-export / libraries / XmlExportCpt.php
wp-all-export / libraries Last commit date
VariableProductTitle 7 years ago .gitkeep 7 years ago WpaeInvalidPhpException.php 7 years ago WpaeInvalidStringException.php 7 years ago WpaeMethodNotFoundException.php 7 years ago WpaePhpInterpreterErrorHandler.php 7 years ago WpaeString.php 7 years ago WpaeTooMuchRecursionException.php 7 years ago WpaeXmlProcessor.php 7 years ago XmlCsvExport.php 7 years ago XmlExportACF.php 7 years ago XmlExportComment.php 7 years ago XmlExportCpt.php 7 years ago XmlExportEngine.php 7 years ago XmlExportFiltering.php 7 years ago XmlExportMediaGallery.php 7 years ago XmlExportTaxonomy.php 7 years ago XmlExportUser.php 7 years ago XmlExportWooCommerce.php 7 years ago XmlExportWooCommerceCoupon.php 7 years ago XmlExportWooCommerceOrder.php 7 years ago XmlGoogleMerchants.php 7 years ago XmlSpec.php 7 years ago
XmlExportCpt.php
717 lines
1 <?php
2
3
4 use Wpae\App\Service\VariationOptions\VariationOptionsFactory;
5
6 final class XmlExportCpt
7 {
8 private static $userData = array();
9
10 public static function prepare_data($entry, $exportOptions,
11 $xmlWriter = false, &$acfs, &$woo, &$woo_order, $implode_delimiter, $preview, $is_item_data = false, $subID = false)
12 {
13 $variationOptionsFactory = new VariationOptionsFactory();
14 $variationOptions = $variationOptionsFactory->createVariationOptions(PMXE_EDITION);
15 $entry = $variationOptions->preprocessPost($entry);
16
17 $article = array();
18
19 // associate exported post with import
20 if (!$is_item_data and wp_all_export_is_compatible() && isset($exportOptions['is_generate_import']) && isset($exportOptions['import_id'])) {
21 $postRecord = new PMXI_Post_Record();
22 $postRecord->clear();
23 $postRecord->getBy(array(
24 'post_id' => $entry->ID,
25 'import_id' => $exportOptions['import_id'],
26 ));
27
28 if ($postRecord->isEmpty()) {
29 $postRecord->set(array(
30 'post_id' => $entry->ID,
31 'import_id' => $exportOptions['import_id'],
32 'unique_key' => $entry->ID,
33 'product_key' => $entry->ID
34 ))->save();
35 }
36 unset($postRecord);
37 }
38
39 $is_xml_export = false;
40
41 if (!empty($xmlWriter) && $exportOptions['export_to'] == XmlExportEngine::EXPORT_TYPE_XML && !in_array($exportOptions['xml_template_type'], array('custom', 'XmlGoogleMerchants'))) {
42 $is_xml_export = true;
43 }
44
45 if (isset($exportOptions['ids']) && is_array($exportOptions['ids'])) {
46 foreach ($exportOptions['ids'] as $ID => $value) {
47 $pType = $entry->post_type;
48
49 if ($is_item_data and $subID != $ID) continue;
50
51 // skip shop order items data
52 if ($pType == "shop_order" and strpos($exportOptions['cc_label'][$ID], "item_data__") !== false and !$is_item_data) continue;
53
54 $fieldName = apply_filters('wp_all_export_field_name', wp_all_export_parse_field_name($exportOptions['cc_name'][$ID]), XmlExportEngine::$exportID);
55 $fieldValue = str_replace("item_data__", "", $exportOptions['cc_value'][$ID]);
56 $fieldLabel = str_replace("item_data__", "", $exportOptions['cc_label'][$ID]);
57 $fieldSql = $exportOptions['cc_sql'][$ID];
58 $fieldPhp = $exportOptions['cc_php'][$ID];
59 $fieldCode = $exportOptions['cc_code'][$ID];
60 $fieldType = $exportOptions['cc_type'][$ID];
61 $fieldOptions = $exportOptions['cc_options'][$ID];
62 $fieldSettings = empty($exportOptions['cc_settings'][$ID]) ? $fieldOptions : $exportOptions['cc_settings'][$ID];
63
64 $fieldSnippet = (!empty($fieldPhp) and !empty($fieldCode)) ? $fieldCode : false;
65
66 if (empty($fieldName) or empty($fieldType) or !is_numeric($ID)) continue;
67
68 $element_name = (!empty($fieldName)) ? $fieldName : 'untitled_' . $ID;
69 $element_name_ns = '';
70
71 if ($is_xml_export) {
72 $element_name = (!empty($fieldName)) ? preg_replace('/[^a-z0-9_:-]/i', '', $fieldName) : 'untitled_' . $ID;
73
74 if (strpos($element_name, ":") !== false) {
75 $element_name_parts = explode(":", $element_name);
76 $element_name_ns = (empty($element_name_parts[0])) ? '' : $element_name_parts[0];
77 $element_name = (empty($element_name_parts[1])) ? 'untitled_' . $ID : preg_replace('/[^a-z0-9_-]/i', '', $element_name_parts[1]);
78 }
79 }
80
81
82 switch ($fieldType) {
83 case 'id':
84 // For ID columns make first element in lowercase for Excel export
85 if ($element_name == 'ID' && !$ID && isset($exportOptions['export_to']) && $exportOptions['export_to'] == 'csv' && isset($exportOptions['export_to_sheet']) && $exportOptions['export_to_sheet'] != 'csv') {
86 $element_name = 'id';
87 }
88 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_post_id', pmxe_filter($entry->ID, $fieldSnippet), $entry->ID));
89 break;
90 case 'permalink':
91 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_post_guid', pmxe_filter(get_permalink(), $fieldSnippet), $entry->ID));
92 break;
93 case 'post_type':
94 if ($entry->post_type == 'product_variation') $pType = 'product';
95 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_post_type', pmxe_filter($pType, $fieldSnippet), $entry->ID));
96 break;
97 case 'title':
98 $val = apply_filters('pmxe_post_title', pmxe_filter($entry->post_title, $fieldSnippet));
99 wp_all_export_write_article($article, $element_name, ($preview) ? trim(preg_replace('~[\r\n]+~', ' ', htmlspecialchars($val))) : $val, $entry->ID);
100 break;
101 case 'content':
102 $postContent = $entry->post_content;
103
104 $field_settings = (!empty($fieldSettings)) ? json_decode($fieldSettings, true) : false;
105 if (empty($field_settings) or $field_settings['export_images_from_gallery']) {
106 // search for images in galleries
107 $galleries = array();
108 if (preg_match_all('%\[gallery[^\]]*ids="([^\s\]]*)"[^\]]*\]%is', $postContent, $matches, PREG_PATTERN_ORDER)) {
109 $galleries = array_unique(array_filter($matches[1]));
110 }
111 if (!empty($galleries)) {
112 foreach ($galleries as $key => $gallery) {
113 $gallery_images = array();
114 $imgs = array_unique(array_filter(explode(",", $gallery)));
115 if (!empty($imgs)) {
116 foreach ($imgs as $img) {
117 if (is_numeric($img)) {
118 $gallery_images[] = wp_get_attachment_url($img) . "|" . wp_get_attachment_caption($img);
119 }
120 }
121 }
122 $gallery_images = array_unique($gallery_images);
123 $postContent = str_replace("ids=\"" . implode(",", $imgs) . "\"", "ids=\"" . implode(",", $gallery_images) . "\"", $postContent);
124 }
125 }
126 }
127
128 if (isset($exportOptions['export_to']) && $exportOptions['export_to'] == XmlExportEngine::EXPORT_TYPE_XML && $exportOptions['xml_template_type'] == 'custom') {
129 $postContent = str_replace('[', '**OPENSHORTCODE**', $postContent);
130 $postContent = str_replace(']', '**CLOSESHORTCODE**', $postContent);
131 }
132
133 $val = apply_filters('pmxe_post_content', pmxe_filter($postContent, $fieldSnippet), $entry->ID);
134 wp_all_export_write_article($article, $element_name, ($preview) ? trim(preg_replace('~[\r\n]+~', ' ', htmlspecialchars($val))) : $val);
135 break;
136
137 // Media Attachments
138 case 'attachments':
139 case 'attachment_id':
140 case 'attachment_url':
141 case 'attachment_filename':
142 case 'attachment_path':
143 case 'attachment_title':
144 case 'attachment_caption':
145 case 'attachment_description':
146 case 'attachment_alt':
147
148 XmlExportMediaGallery::getInstance($entry->ID);
149
150 $attachment_data = XmlExportMediaGallery::get_attachments($fieldType);
151
152 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_' . $fieldType, pmxe_filter(implode($implode_delimiter, $attachment_data), $fieldSnippet), $entry->ID));
153
154 break;
155
156 // Media Images
157 case 'media':
158 case 'image_id':
159 case 'image_url':
160 case 'image_filename':
161 case 'image_path':
162 case 'image_title':
163 case 'image_caption':
164 case 'image_description':
165 case 'image_alt':
166 case 'image_featured':
167
168 $field_options = json_decode($fieldOptions, true);
169
170 XmlExportMediaGallery::getInstance($entry->ID);
171
172 $images_data = XmlExportMediaGallery::get_images($fieldType, $field_options);
173
174 $images_separator = empty($field_options['image_separator']) ? $implode_delimiter : $field_options['image_separator'];
175
176 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_' . $fieldType, pmxe_filter(implode($images_separator, $images_data), $fieldSnippet), $entry->ID));
177
178 break;
179
180
181 case 'date':
182 $post_date = prepare_date_field_value($fieldSettings, get_post_time('U', true, $entry->ID), "Ymd");
183 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_post_date', pmxe_filter($post_date, $fieldSnippet), $entry->ID));
184 break;
185 case 'post_modified':
186 $post_date = prepare_date_field_value($fieldSettings, get_post_modified_time('U', true, $entry->ID), "Ymd");
187 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_post_modified_date', pmxe_filter($post_date, $fieldSnippet), $entry->ID));
188 break;
189 case 'parent':
190 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_post_parent', pmxe_filter($entry->post_parent, $fieldSnippet), $entry->ID));
191 break;
192 case 'parent_slug':
193 $val = '';
194 if ($entry->post_parent != 0) {
195 $pages = get_post_ancestors($entry->ID);
196 $slugs = array();
197 if (!empty($pages)) {
198 foreach ($pages as $page) {
199 $the_post = get_post($page);
200 $slugs[] = $the_post->post_name;
201 }
202 $val = implode("/", array_reverse($slugs));
203 } else {
204 $the_post = get_post($entry->ID);
205 $val = $the_post->post_name;
206 }
207 } else {
208 $val = $entry->post_parent;
209 }
210 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_post_parent_slug', pmxe_filter($val, $fieldSnippet), $entry->ID));
211 break;
212 case 'comment_status':
213 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_comment_status', pmxe_filter($entry->comment_status, $fieldSnippet), $entry->ID));
214 break;
215 case 'ping_status':
216 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_ping_status', pmxe_filter($entry->ping_status, $fieldSnippet), $entry->ID));
217 break;
218 case 'template':
219 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_post_template', pmxe_filter(get_post_meta($entry->ID, '_wp_page_template', true), $fieldSnippet), $entry->ID));
220 break;
221 case 'order':
222 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_menu_order', pmxe_filter($entry->menu_order, $fieldSnippet), $entry->ID));
223 break;
224 case 'status':
225 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_post_status', pmxe_filter($entry->post_status, $fieldSnippet), $entry->ID));
226 break;
227 case 'format':
228 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_post_format', pmxe_filter(get_post_format($entry->ID), $fieldSnippet), $entry->ID));
229 break;
230 case 'author':
231 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_post_author', pmxe_filter($entry->post_author, $fieldSnippet), $entry->ID));
232 break;
233 case 'author_username':
234 $userData = self::getUserdata($entry->post_author);
235 if (is_object($userData)) {
236 $userDataValue = $userData->user_login;
237 } else {
238 $userDataValue = '';
239 }
240
241 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_post_author', pmxe_filter($userDataValue, $fieldSnippet), $entry->ID));
242 break;
243 case 'author_email':
244 $userData = self::getUserdata($entry->post_author);
245 if (is_object($userData)) {
246 $userDataValue = $userData->user_email;
247 } else {
248 $userDataValue = '';
249 }
250
251 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_post_author', pmxe_filter($userDataValue, $fieldSnippet), $entry->ID));
252 break;
253 case 'author_first_name':
254 $userData = self::getUserdata($entry->post_author);
255 if (is_object($userData)) {
256 $userDataValue = $userData->first_name;
257 } else {
258 $userDataValue = '';
259 }
260
261 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_post_author', pmxe_filter($userDataValue, $fieldSnippet), $entry->ID));
262 break;
263 case 'author_last_name':
264 $userData = self::getUserdata($entry->post_author);
265 if (is_object($userData)) {
266 $userDataValue = $userData->last_name;
267 } else {
268 $userDataValue = '';
269 }
270
271 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_post_author', pmxe_filter($userDataValue, $fieldSnippet), $entry->ID));
272 break;
273 case 'slug':
274 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_post_slug', pmxe_filter($entry->post_name, $fieldSnippet), $entry->ID));
275 break;
276 case 'excerpt':
277 $val = apply_filters('pmxe_post_excerpt', pmxe_filter($entry->post_excerpt, $fieldSnippet), $entry->ID);
278 wp_all_export_write_article($article, $element_name, ($preview) ? trim(preg_replace('~[\r\n]+~', ' ', htmlspecialchars($val))) : $val);
279 break;
280 case 'cf':
281 if (!empty($fieldValue)) {
282
283 $val = "";
284 $cur_meta_values = get_post_meta($entry->ID, $fieldValue);
285
286 if (!empty($cur_meta_values) and is_array($cur_meta_values)) {
287 foreach ($cur_meta_values as $key => $cur_meta_value) {
288 if (empty($val)) {
289 $val = maybe_serialize($cur_meta_value);
290 } else {
291 $val = $val . $implode_delimiter . maybe_serialize($cur_meta_value);
292 }
293 }
294 $val = pmxe_filter($val, $fieldSnippet);
295 wp_all_export_write_article($article, $element_name, ($preview) ? trim(preg_replace('~[\r\n]+~', ' ', htmlspecialchars($val))) : $val);
296 }
297
298 if (empty($cur_meta_values)) {
299 if (empty($article[$element_name])) {
300 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_custom_field', pmxe_filter('', $fieldSnippet), $fieldValue, $entry->ID));
301 }
302 }
303 }
304 break;
305
306 case 'acf':
307
308 if (!empty($fieldLabel) and class_exists('acf')) {
309
310 global $acf;
311
312 $field_options = unserialize($fieldOptions);
313
314 if (!$is_xml_export) {
315 switch ($field_options['type']) {
316 case 'textarea':
317 case 'oembed':
318 case 'wysiwyg':
319 case 'wp_wysiwyg':
320 case 'date_time_picker':
321 case 'date_picker':
322
323 $field_value = get_field($fieldLabel, $entry->ID, false);
324
325 break;
326
327 default:
328
329 $field_value = get_field($fieldLabel, $entry->ID);
330
331 break;
332 }
333 } else {
334 $field_value = get_field($fieldLabel, $entry->ID);
335 }
336
337 XmlExportACF::export_acf_field(
338 $field_value,
339 $exportOptions,
340 $ID,
341 $entry->ID,
342 $article,
343 $xmlWriter,
344 $acfs,
345 $element_name,
346 $element_name_ns,
347 $fieldSnippet,
348 $field_options['group_id'],
349 $preview
350 );
351 }
352
353 break;
354
355 case 'woo':
356
357 if ($is_xml_export) {
358 XmlExportEngine::$woo_export->export_xml($xmlWriter, $entry, $exportOptions, $ID);
359 } else {
360 XmlExportEngine::$woo_export->export_csv($article, $woo, $entry, $exportOptions, $ID);
361 }
362
363 break;
364
365 case 'woo_order':
366
367 if ($is_xml_export) {
368 XmlExportEngine::$woo_order_export->export_xml($xmlWriter, $entry, $exportOptions, $ID, $preview);
369 } else {
370 XmlExportEngine::$woo_order_export->export_csv($article, $woo_order, $entry, $exportOptions, $ID, $preview);
371 }
372
373 break;
374
375 case 'attr':
376
377 if (!empty($fieldValue)) {
378 if ($entry->post_type != 'product_variation') {
379 $txes_list = get_the_terms($entry->ID, $fieldValue);
380 if (!is_wp_error($txes_list) and !empty($txes_list)) {
381 $attr_new = array();
382 foreach ($txes_list as $t) {
383 $attr_new[] = $t->name;
384 }
385 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_woo_attribute', pmxe_filter(implode($implode_delimiter, $attr_new), $fieldSnippet), $entry->ID, $fieldValue));
386 } else {
387 // Write empty value (so the functions are still applied)
388 wp_all_export_write_article($article, $element_name, pmxe_filter('', $fieldSnippet));
389 }
390 } else {
391 $attribute_pa = apply_filters('pmxe_woo_attribute', get_post_meta($entry->ID, 'attribute_' . strtolower(urlencode($fieldValue)), true), $entry->ID, $fieldValue);
392 $term = get_term_by('slug', $attribute_pa, $fieldValue);
393 if ($term and !is_wp_error($term)) {
394 $attribute_pa = pmxe_filter($term->name, $fieldSnippet);
395 } else {
396 // Write empty value (so the functions are still applied)
397 $attribute_pa = pmxe_filter('', $fieldSnippet);
398 }
399
400 wp_all_export_write_article($article, $element_name, $attribute_pa);
401 }
402
403 // if ( ! in_array($element_name, $attributes)) $attributes[] = $element_name;
404 }
405 break;
406
407 case 'cats':
408
409 if (!empty($fieldValue)) {
410
411 // get categories from parent product in case when variation exported
412 if ($fieldLabel != 'product_shipping_class') {
413 // get categories from parent product in case when variation exported
414 $entry_id = ($entry->post_type == 'product_variation') ? $entry->post_parent : $entry->ID;
415 } else {
416 $entry_id = $entry->ID;
417 }
418
419 // switch to post language if WPML installed
420 if (class_exists('SitePress')) {
421 $post_type = get_post_type($entry_id);
422 $post_type = apply_filters('wpml_element_type', $post_type);
423 $post_language_details = apply_filters('wpml_element_language_details',
424 null,
425 array(
426 'element_id' => $entry_id,
427 'element_type' => $post_type
428 )
429 );
430 $language_code = empty($post_language_details->language_code) ? '' : $post_language_details->language_code;
431 $current_language = apply_filters('wpml_current_language', null);
432 do_action('wpml_switch_language', $language_code);
433 }
434
435 $txes_list = get_the_terms($entry_id, $fieldValue);
436
437 $hierarchy_groups = array();
438
439 if (!is_wp_error($txes_list) and !empty($txes_list)) {
440 $txes_ids = array();
441
442 foreach ($txes_list as $t) {
443 $txes_ids[] = $t->term_id;
444 }
445
446 foreach ($txes_list as $t) {
447 if (wp_all_export_check_children_assign($t->term_id, $fieldValue, $txes_ids)) {
448 $ancestors = get_ancestors($t->term_id, $fieldValue);
449 if (count($ancestors) > 0) {
450 $hierarchy_group = array();
451 for ($i = count($ancestors) - 1; $i >= 0; $i--) {
452 $term = get_term_by('id', $ancestors[$i], $fieldValue);
453 if ($term) {
454 $hierarchy_group[] = $term->name;
455 }
456 }
457 $hierarchy_group[] = $t->name;
458 $hierarchy_groups[] = implode('>', $hierarchy_group);
459 } else {
460 $hierarchy_groups[] = $t->name;
461 }
462 }
463 }
464
465 // if ( empty($hierarchy_groups) ) $hierarchy_groups = '';
466 }
467
468 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_post_taxonomy', pmxe_filter(implode($implode_delimiter, $hierarchy_groups), $fieldSnippet), $entry->ID));
469
470 // if ( ! in_array($element_name, $taxes)) $taxes[] = $element_name;
471
472 if ($fieldLabel == 'product_type') {
473
474 if ($entry->post_type == 'product_variation') $article[$element_name] = 'variable';
475
476 }
477
478 // swith to current language if WPML installed
479 if (class_exists('SitePress')) {
480 do_action('wpml_switch_language', $current_language);
481 }
482 }
483
484 break;
485
486 case 'sql':
487
488 if (!empty($fieldSql)) {
489 global $wpdb;
490 $val = $wpdb->get_var($wpdb->prepare(stripcslashes(str_replace("%%ID%%", "%d", $fieldSql)), $entry->ID));
491 if (!empty($fieldPhp) and !empty($fieldCode)) {
492 // if shortcode defined
493 if (strpos($fieldCode, '[') === 0) {
494 $val = do_shortcode(str_replace("%%VALUE%%", $val, $fieldCode));
495 } else {
496 $val = eval('return ' . stripcslashes(str_replace("%%VALUE%%", $val, $fieldCode)) . ';');
497 }
498 }
499 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_sql_field', $val, $element_name, $entry->ID));
500 }
501 break;
502
503 case 'wpml_trid':
504
505 $post_type = get_post_type($entry->ID);
506
507 $post_type = apply_filters('wpml_element_type', $post_type);
508
509 $post_language_details = apply_filters('wpml_element_language_details',
510 null,
511 array(
512 'element_id' => $entry->ID,
513 'element_type' => $post_type
514 )
515 );
516
517 $trid = empty($post_language_details->trid) ? '' : $post_language_details->trid;
518
519 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_trid_field', $trid, $element_name, $entry->ID));
520
521 break;
522
523 case 'wpml_lang':
524
525 $post_type = get_post_type($entry->ID);
526
527 $post_type = apply_filters('wpml_element_type', $post_type);
528
529 $post_language_details = apply_filters('wpml_element_language_details',
530 null,
531 array(
532 'element_id' => $entry->ID,
533 'element_type' => $post_type
534 )
535 );
536
537 $language_code = empty($post_language_details->language_code) ? '' : $post_language_details->language_code;
538
539 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_trid_field', $language_code, $element_name, $entry->ID));
540
541 break;
542
543 default:
544 # code...
545 break;
546
547 }
548 if ($is_xml_export and isset($article[$element_name])) {
549 $element_name_in_file = XmlCsvExport::_get_valid_header_name($element_name);
550
551 $xmlWriter = apply_filters('wp_all_export_add_before_element', $xmlWriter, $element_name_in_file, XmlExportEngine::$exportID, $entry->ID);
552
553 $xmlWriter->beginElement($element_name_ns, $element_name_in_file, null);
554 $xmlWriter->writeData($article[$element_name], $element_name_in_file);
555 $xmlWriter->closeElement();
556
557 $xmlWriter = apply_filters('wp_all_export_add_after_element', $xmlWriter, $element_name_in_file, XmlExportEngine::$exportID, $entry->ID);
558 }
559 }
560 }
561
562 return $article;
563 }
564
565 public static function prepare_import_template($exportOptions, &$templateOptions, &$cf_list, &$attr_list, &$taxs_list, $element_name, $ID)
566 {
567 $options = $exportOptions;
568
569 $element_type = $options['cc_type'][$ID];
570
571 $is_xml_template = $options['export_to'] == 'xml';
572
573 $implode_delimiter = XmlExportEngine::$implode;
574
575 switch ($element_type) {
576 case 'id':
577 if ($element_name == 'ID' && !$ID && $exportOptions['export_to'] == 'csv' && $exportOptions['export_to_sheet'] != 'csv') {
578 $element_name = 'id';
579 }
580 $templateOptions['unique_key'] = '{' . $element_name . '[1]}';
581 $templateOptions['tmp_unique_key'] = '{' . $element_name . '[1]}';
582 $templateOptions['single_product_id'] = '{' . $element_name . '[1]}';
583 break;
584 case 'title':
585 $templateOptions[$element_type] = '{' . $element_name . '[1]}';
586 $templateOptions['is_update_' . $options['cc_type'][$ID]] = 1;
587 $templateOptions['single_product_id_first_is_variation'] = '{' . $element_name . '[1]}';
588 break;
589 case 'content':
590 case 'author':
591 $templateOptions[$element_type] = '{' . $element_name . '[1]}';
592 $templateOptions['is_update_' . $options['cc_type'][$ID]] = 1;
593 break;
594 case 'slug':
595 $templateOptions['post_slug'] = '{' . $element_name . '[1]}';
596 $templateOptions['is_update_' . $options['cc_type'][$ID]] = 1;
597 break;
598 case 'parent_slug':
599 $templateOptions['is_multiple_page_parent'] = 'no';
600 $templateOptions['single_page_parent'] = '{' . $element_name . '[1]}';
601 $templateOptions['is_update_parent'] = 1;
602 break;
603 case 'parent':
604 $templateOptions['single_product_parent_id'] = '{' . $element_name . '[1]}';
605 $templateOptions['single_product_id_first_is_parent_id'] = '{' . $element_name . '[1]}';
606 break;
607 case 'excerpt':
608 $templateOptions['post_excerpt'] = '{' . $element_name . '[1]}';
609 $templateOptions['is_update_' . $options['cc_type'][$ID]] = 1;
610 break;
611 case 'status':
612 $templateOptions['status_xpath'] = '{' . $element_name . '[1]}';
613 $templateOptions['is_update_status'] = 1;
614 break;
615 case 'comment_status':
616 $templateOptions['comment_status_xpath'] = '{'.$element_name.'[1]}';
617 $templateOptions['is_update_comment_status'] = 1;
618 break;
619 case 'date':
620 $templateOptions[$element_type] = '{' . $element_name . '[1]}';
621 $templateOptions['is_update_dates'] = 1;
622 break;
623 case 'order':
624 $templateOptions[$element_type] = '{' . $element_name . '[1]}';
625 $templateOptions['is_update_menu_order'] = 1;
626 $templateOptions['single_product_menu_order'] = '{' . $element_name . '[1]}';
627 break;
628 case 'post_type':
629
630 if (empty($options['cpt'])) {
631 $templateOptions['is_override_post_type'] = 1;
632 $templateOptions['post_type_xpath'] = '{' . $element_name . '[1]}';
633 }
634 break;
635
636 case 'cf':
637
638 if (!empty($options['cc_value'][$ID])) {
639 $exclude_cf = array('_thumbnail_id');
640
641 if (strpos($options['cc_value'][$ID], 'attribute_') === 0 and !in_array($options['cc_value'][$ID], $attr_list)) {
642 $templateOptions['attribute_name'][] = str_replace('attribute_', '', $options['cc_value'][$ID]);
643 $templateOptions['attribute_value'][] = '{' . $element_name . '[1]}';
644 $templateOptions['in_variations'][] = "1";
645 $templateOptions['is_visible'][] = "1";
646 $templateOptions['is_taxonomy'][] = "0";
647 $templateOptions['create_taxonomy_in_not_exists'][] = "0";
648 $attr_list[] = $options['cc_value'][$ID];
649 } elseif (!in_array($options['cc_value'][$ID], $cf_list) and !in_array($options['cc_value'][$ID], $exclude_cf)) {
650 $cf_list[] = $options['cc_value'][$ID];
651
652 $templateOptions['custom_name'][] = $options['cc_value'][$ID];
653 $templateOptions['custom_value'][] = '{' . $element_name . '[1]}';
654 $templateOptions['custom_format'][] = 0;
655 }
656 }
657
658 break;
659
660 case 'attr':
661
662 if (!empty($options['cc_value'][$ID]) and !in_array($options['cc_value'][$ID], $attr_list)) {
663 $templateOptions['attribute_name'][] = str_replace('pa_', '', $options['cc_value'][$ID]);
664 $templateOptions['attribute_value'][] = '{' . $element_name . '[1]}';
665 $templateOptions['in_variations'][] = "1";
666 $templateOptions['is_visible'][] = "1";
667 $templateOptions['is_taxonomy'][] = "1";
668 $templateOptions['create_taxonomy_in_not_exists'][] = "1";
669 $attr_list[] = $options['cc_value'][$ID];
670 }
671
672 break;
673 case 'cats':
674 if (!empty($options['cc_value'][$ID])) {
675 switch ($options['cc_label'][$ID]) {
676 case 'product_type':
677 $templateOptions['is_multiple_product_type'] = 'no';
678 $templateOptions['single_product_type'] = '{' . $element_name . '[1]}';
679 break;
680 case 'product_shipping_class':
681 $templateOptions['is_multiple_product_shipping_class'] = 'no';
682 $templateOptions['single_product_shipping_class'] = '{' . $element_name . '[1]}';
683 break;
684 default:
685 $taxonomy = $options['cc_value'][$ID];
686 $templateOptions['tax_assing'][$taxonomy] = 1;
687
688 if (is_taxonomy_hierarchical($taxonomy)) {
689 $templateOptions['tax_logic'][$taxonomy] = 'hierarchical';
690 $templateOptions['tax_hierarchical_logic_entire'][$taxonomy] = 1;
691 $templateOptions['multiple_term_assing'][$taxonomy] = 1;
692 $templateOptions['tax_hierarchical_delim'][$taxonomy] = '>';
693 $templateOptions['is_tax_hierarchical_group_delim'][$taxonomy] = 1;
694 $templateOptions['tax_hierarchical_group_delim'][$taxonomy] = $is_xml_template ? '|' : $implode_delimiter;
695 $templateOptions['tax_hierarchical_xpath'][$taxonomy] = array('{' . $element_name . '[1]}');
696 } else {
697 $templateOptions['tax_logic'][$taxonomy] = 'multiple';
698 $templateOptions['multiple_term_assing'][$taxonomy] = 1;
699 $templateOptions['tax_multiple_xpath'][$taxonomy] = '{' . $element_name . '[1]}';
700 $templateOptions['tax_multiple_delim'][$taxonomy] = $is_xml_template ? '|' : $implode_delimiter;
701 }
702 $taxs_list[] = $taxonomy;
703 break;
704 }
705 }
706 break;
707 }
708 }
709
710 static function getUserdata($userId)
711 {
712 if (!isset(self::$userData[$userId])) {
713 self::$userData[$userId] = get_userdata($userId);
714 }
715 return self::$userData[$userId];
716 }
717 }