PluginProbe ʕ •ᴥ•ʔ
WP All Export – Drag & Drop Export to Any Custom CSV, XML & Excel / 1.3.1
WP All Export – Drag & Drop Export to Any Custom CSV, XML & Excel v1.3.1
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 9 years ago .gitkeep 10 years ago WpaeInvalidPhpException.php 9 years ago WpaeInvalidStringException.php 9 years ago WpaeMethodNotFoundException.php 9 years ago WpaePhpInterpreterErrorHandler.php 8 years ago WpaeString.php 8 years ago WpaeTooMuchRecursionException.php 9 years ago WpaeXmlProcessor.php 7 years ago XmlCsvExport.php 4 years ago XmlExportComment.php 8 years ago XmlExportCpt.php 4 years ago XmlExportEngine.php 4 years ago XmlExportFiltering.php 9 years ago XmlExportMediaGallery.php 6 years ago XmlExportTaxonomy.php 9 years ago XmlGoogleMerchants.php 9 years ago XmlSpec.php 9 years ago
XmlExportCpt.php
730 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(XmlExportEngine::get_addons_service()->isAcfAddonActive()) {
309
310 if (!empty($fieldLabel) and class_exists('acf')) {
311
312 global $acf;
313
314 $field_options = unserialize($fieldOptions);
315
316 if (!$is_xml_export) {
317 switch ($field_options['type']) {
318 case 'textarea':
319 case 'oembed':
320 case 'wysiwyg':
321 case 'wp_wysiwyg':
322 case 'date_time_picker':
323 case 'date_picker':
324
325 $field_value = get_field($fieldLabel, $entry->ID, false);
326
327 break;
328
329 default:
330
331 $field_value = get_field($fieldLabel, $entry->ID);
332
333 break;
334 }
335 } else {
336 $field_value = get_field($fieldLabel, $entry->ID);
337 }
338
339 XmlExportACF::export_acf_field(
340 $field_value,
341 $exportOptions,
342 $ID,
343 $entry->ID,
344 $article,
345 $xmlWriter,
346 $acfs,
347 $element_name,
348 $element_name_ns,
349 $fieldSnippet,
350 $field_options['group_id'],
351 $preview
352 );
353 }
354 }
355
356 break;
357
358 case 'woo':
359
360 if ($is_xml_export) {
361 if (XmlExportEngine::get_addons_service()->isWooCommerceAddonActive()) {
362 XmlExportEngine::$woo_export->export_xml($xmlWriter, $entry, $exportOptions, $ID);
363 }
364 } else {
365 if (XmlExportEngine::get_addons_service()->isWooCommerceAddonActive()) {
366 XmlExportEngine::$woo_export->export_csv($article, $woo, $entry, $exportOptions, $ID);
367 }
368 }
369
370 break;
371
372 case 'woo_order':
373
374 if ($is_xml_export) {
375 if (XmlExportEngine::get_addons_service()->isWooCommerceAddonActive()) {
376 XmlExportEngine::$woo_order_export->export_xml($xmlWriter, $entry, $exportOptions, $ID, $preview);
377 }
378 } else {
379 if (XmlExportEngine::get_addons_service()->isWooCommerceAddonActive()) {
380 XmlExportEngine::$woo_order_export->export_csv($article, $woo_order, $entry, $exportOptions, $ID, $preview);
381 }
382 }
383
384 break;
385
386 case 'attr':
387
388 if (!empty($fieldValue)) {
389 if ($entry->post_type != 'product_variation') {
390 $txes_list = get_the_terms($entry->ID, $fieldValue);
391 if (!is_wp_error($txes_list) and !empty($txes_list)) {
392 $attr_new = array();
393 foreach ($txes_list as $t) {
394 $attr_new[] = $t->name;
395 }
396 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_woo_attribute', pmxe_filter(implode($implode_delimiter, $attr_new), $fieldSnippet), $entry->ID, $fieldValue));
397 } else {
398 // Write empty value (so the functions are still applied)
399 wp_all_export_write_article($article, $element_name, pmxe_filter('', $fieldSnippet));
400 }
401 } else {
402 $attribute_pa = apply_filters('pmxe_woo_attribute', get_post_meta($entry->ID, 'attribute_' . strtolower(urlencode($fieldValue)), true), $entry->ID, $fieldValue);
403 $term = get_term_by('slug', $attribute_pa, $fieldValue);
404 if ($term and !is_wp_error($term)) {
405 $attribute_pa = pmxe_filter($term->name, $fieldSnippet);
406 } else {
407 // Write empty value (so the functions are still applied)
408 $attribute_pa = pmxe_filter('', $fieldSnippet);
409 }
410
411 wp_all_export_write_article($article, $element_name, $attribute_pa);
412 }
413
414 // if ( ! in_array($element_name, $attributes)) $attributes[] = $element_name;
415 }
416 break;
417
418 case 'cats':
419
420 if (!empty($fieldValue)) {
421
422 // get categories from parent product in case when variation exported
423 if ($fieldLabel != 'product_shipping_class') {
424 // get categories from parent product in case when variation exported
425 $entry_id = ($entry->post_type == 'product_variation') ? $entry->post_parent : $entry->ID;
426 } else {
427 $entry_id = $entry->ID;
428 }
429
430 // switch to post language if WPML installed
431 if (class_exists('SitePress')) {
432 $post_type = get_post_type($entry_id);
433 $post_type = apply_filters('wpml_element_type', $post_type);
434 $post_language_details = apply_filters('wpml_element_language_details',
435 null,
436 array(
437 'element_id' => $entry_id,
438 'element_type' => $post_type
439 )
440 );
441 $language_code = empty($post_language_details->language_code) ? '' : $post_language_details->language_code;
442 $current_language = apply_filters('wpml_current_language', null);
443 do_action('wpml_switch_language', $language_code);
444 }
445
446 $txes_list = get_the_terms($entry_id, $fieldValue);
447
448 $hierarchy_groups = array();
449
450 if (!is_wp_error($txes_list) and !empty($txes_list)) {
451 $txes_ids = array();
452
453 foreach ($txes_list as $t) {
454 $txes_ids[] = $t->term_id;
455 }
456
457 foreach ($txes_list as $t) {
458 if (wp_all_export_check_children_assign($t->term_id, $fieldValue, $txes_ids)) {
459 $ancestors = get_ancestors($t->term_id, $fieldValue);
460 if (count($ancestors) > 0) {
461 $hierarchy_group = array();
462 for ($i = count($ancestors) - 1; $i >= 0; $i--) {
463 $term = get_term_by('id', $ancestors[$i], $fieldValue);
464 if ($term) {
465 $hierarchy_group[] = $term->name;
466 }
467 }
468 $hierarchy_group[] = $t->name;
469 $hierarchy_groups[] = implode('>', $hierarchy_group);
470 } else {
471 $hierarchy_groups[] = $t->name;
472 }
473 }
474 }
475
476 // if ( empty($hierarchy_groups) ) $hierarchy_groups = '';
477 }
478
479 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_post_taxonomy', pmxe_filter(implode($implode_delimiter, $hierarchy_groups), $fieldSnippet), $entry->ID));
480
481 // if ( ! in_array($element_name, $taxes)) $taxes[] = $element_name;
482
483 if ($fieldLabel == 'product_type') {
484
485 if ($entry->post_type == 'product_variation') $article[$element_name] = 'variable';
486
487 }
488
489 // swith to current language if WPML installed
490 if (class_exists('SitePress')) {
491 do_action('wpml_switch_language', $current_language);
492 }
493 }
494
495 break;
496
497 case 'sql':
498
499 if (!empty($fieldSql)) {
500 global $wpdb;
501 $val = $wpdb->get_var($wpdb->prepare(stripcslashes(str_replace("%%ID%%", "%d", $fieldSql)), $entry->ID));
502 if (!empty($fieldPhp) and !empty($fieldCode)) {
503 // if shortcode defined
504 if (strpos($fieldCode, '[') === 0) {
505 $val = do_shortcode(str_replace("%%VALUE%%", $val, $fieldCode));
506 } else {
507 $val = eval('return ' . stripcslashes(str_replace("%%VALUE%%", $val, $fieldCode)) . ';');
508 }
509 }
510 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_sql_field', $val, $element_name, $entry->ID));
511 }
512 break;
513
514 case 'wpml_trid':
515
516 $post_type = get_post_type($entry->ID);
517
518 $post_type = apply_filters('wpml_element_type', $post_type);
519
520 $post_language_details = apply_filters('wpml_element_language_details',
521 null,
522 array(
523 'element_id' => $entry->ID,
524 'element_type' => $post_type
525 )
526 );
527
528 $trid = empty($post_language_details->trid) ? '' : $post_language_details->trid;
529
530 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_trid_field', $trid, $element_name, $entry->ID));
531
532 break;
533
534 case 'wpml_lang':
535
536 $post_type = get_post_type($entry->ID);
537
538 $post_type = apply_filters('wpml_element_type', $post_type);
539
540 $post_language_details = apply_filters('wpml_element_language_details',
541 null,
542 array(
543 'element_id' => $entry->ID,
544 'element_type' => $post_type
545 )
546 );
547
548 $language_code = empty($post_language_details->language_code) ? '' : $post_language_details->language_code;
549
550 wp_all_export_write_article($article, $element_name, apply_filters('pmxe_trid_field', $language_code, $element_name, $entry->ID));
551
552 break;
553
554 default:
555 # code...
556 break;
557
558 }
559 if ($is_xml_export and isset($article[$element_name])) {
560 $element_name_in_file = XmlCsvExport::_get_valid_header_name($element_name);
561
562 $xmlWriter = apply_filters('wp_all_export_add_before_element', $xmlWriter, $element_name_in_file, XmlExportEngine::$exportID, $entry->ID);
563
564 $xmlWriter->beginElement($element_name_ns, $element_name_in_file, null);
565 $xmlWriter->writeData($article[$element_name], $element_name_in_file);
566 $xmlWriter->closeElement();
567
568 $xmlWriter = apply_filters('wp_all_export_add_after_element', $xmlWriter, $element_name_in_file, XmlExportEngine::$exportID, $entry->ID);
569 }
570 }
571 }
572
573 return $article;
574 }
575
576 public static function prepare_import_template($exportOptions, &$templateOptions, &$cf_list, &$attr_list, &$taxs_list, $element_name, $ID)
577 {
578 $options = $exportOptions;
579
580 $element_type = $options['cc_type'][$ID];
581
582 $is_xml_template = $options['export_to'] == 'xml';
583
584 $implode_delimiter = XmlExportEngine::$implode;
585
586 switch ($element_type) {
587 case 'id':
588 if ($element_name == 'ID' && !$ID && $exportOptions['export_to'] == 'csv' && $exportOptions['export_to_sheet'] != 'csv') {
589 $element_name = 'id';
590 }
591 $templateOptions['unique_key'] = '{' . $element_name . '[1]}';
592 $templateOptions['tmp_unique_key'] = '{' . $element_name . '[1]}';
593 $templateOptions['single_product_id'] = '{' . $element_name . '[1]}';
594 break;
595 case 'title':
596 $templateOptions[$element_type] = '{' . $element_name . '[1]}';
597 $templateOptions['is_update_' . $options['cc_type'][$ID]] = 1;
598 $templateOptions['single_product_id_first_is_variation'] = '{' . $element_name . '[1]}';
599 break;
600 case 'content':
601 case 'author':
602 $templateOptions[$element_type] = '{' . $element_name . '[1]}';
603 $templateOptions['is_update_' . $options['cc_type'][$ID]] = 1;
604 break;
605 case 'slug':
606 $templateOptions['post_slug'] = '{' . $element_name . '[1]}';
607 $templateOptions['is_update_' . $options['cc_type'][$ID]] = 1;
608 break;
609 case 'parent_slug':
610 $templateOptions['is_multiple_page_parent'] = 'no';
611 $templateOptions['single_page_parent'] = '{' . $element_name . '[1]}';
612 $templateOptions['is_update_parent'] = 1;
613 break;
614 case 'parent':
615 $templateOptions['single_product_parent_id'] = '{' . $element_name . '[1]}';
616 $templateOptions['single_product_id_first_is_parent_id'] = '{' . $element_name . '[1]}';
617 break;
618 case 'excerpt':
619 $templateOptions['post_excerpt'] = '{' . $element_name . '[1]}';
620 $templateOptions['is_update_' . $options['cc_type'][$ID]] = 1;
621 break;
622 case 'status':
623 $templateOptions['status_xpath'] = '{' . $element_name . '[1]}';
624 $templateOptions['is_update_status'] = 1;
625 break;
626 case 'comment_status':
627 $templateOptions['comment_status_xpath'] = '{' . $element_name . '[1]}';
628 $templateOptions['is_update_comment_status'] = 1;
629 break;
630 case 'date':
631 $templateOptions[$element_type] = '{' . $element_name . '[1]}';
632 $templateOptions['is_update_dates'] = 1;
633 break;
634 case 'order':
635 $templateOptions[$element_type] = '{' . $element_name . '[1]}';
636 $templateOptions['is_update_menu_order'] = 1;
637 $templateOptions['single_product_menu_order'] = '{' . $element_name . '[1]}';
638 break;
639 case 'post_type':
640
641 if (empty($options['cpt'])) {
642 $templateOptions['is_override_post_type'] = 1;
643 $templateOptions['post_type_xpath'] = '{' . $element_name . '[1]}';
644 }
645 break;
646
647 case 'cf':
648
649 if (!empty($options['cc_value'][$ID])) {
650 $exclude_cf = array('_thumbnail_id');
651
652 if (strpos($options['cc_value'][$ID], 'attribute_') === 0 and !in_array($options['cc_value'][$ID], $attr_list)) {
653 $templateOptions['attribute_name'][] = str_replace('attribute_', '', $options['cc_value'][$ID]);
654 $templateOptions['attribute_value'][] = '{' . $element_name . '[1]}';
655 $templateOptions['in_variations'][] = "1";
656 $templateOptions['is_visible'][] = "1";
657 $templateOptions['is_taxonomy'][] = "0";
658 $templateOptions['create_taxonomy_in_not_exists'][] = "0";
659 $attr_list[] = $options['cc_value'][$ID];
660 } elseif (!in_array($options['cc_value'][$ID], $cf_list) and !in_array($options['cc_value'][$ID], $exclude_cf)) {
661 $cf_list[] = $options['cc_value'][$ID];
662
663 $templateOptions['custom_name'][] = $options['cc_value'][$ID];
664 $templateOptions['custom_value'][] = '{' . $element_name . '[1]}';
665 $templateOptions['custom_format'][] = 0;
666 }
667 }
668
669 break;
670
671 case 'attr':
672
673 if (!empty($options['cc_value'][$ID]) and !in_array($options['cc_value'][$ID], $attr_list)) {
674 $templateOptions['attribute_name'][] = str_replace('pa_', '', $options['cc_value'][$ID]);
675 $templateOptions['attribute_value'][] = '{' . $element_name . '[1]}';
676 $templateOptions['in_variations'][] = "1";
677 $templateOptions['is_visible'][] = "1";
678 $templateOptions['is_taxonomy'][] = "1";
679 $templateOptions['create_taxonomy_in_not_exists'][] = "1";
680 $attr_list[] = $options['cc_value'][$ID];
681 }
682
683 break;
684 case 'cats':
685 if (!empty($options['cc_value'][$ID])) {
686 switch ($options['cc_label'][$ID]) {
687 case 'product_type':
688 $templateOptions['is_multiple_product_type'] = 'no';
689 $templateOptions['single_product_type'] = '{' . $element_name . '[1]}';
690 break;
691 case 'product_shipping_class':
692 $templateOptions['is_multiple_product_shipping_class'] = 'no';
693 $templateOptions['single_product_shipping_class'] = '{' . $element_name . '[1]}';
694 break;
695 default:
696 $taxonomy = $options['cc_value'][$ID];
697 $templateOptions['tax_assing'][$taxonomy] = 1;
698
699 if (is_taxonomy_hierarchical($taxonomy)) {
700 $templateOptions['tax_logic'][$taxonomy] = 'hierarchical';
701 $templateOptions['tax_hierarchical_logic_entire'][$taxonomy] = 1;
702 $templateOptions['multiple_term_assing'][$taxonomy] = 1;
703 $templateOptions['tax_hierarchical_delim'][$taxonomy] = '>';
704 $templateOptions['is_tax_hierarchical_group_delim'][$taxonomy] = 1;
705 $templateOptions['tax_hierarchical_group_delim'][$taxonomy] = $is_xml_template ? '|' : $implode_delimiter;
706 $templateOptions['tax_hierarchical_xpath'][$taxonomy] = array('{' . $element_name . '[1]}');
707 } else {
708 $templateOptions['tax_logic'][$taxonomy] = 'multiple';
709 $templateOptions['multiple_term_assing'][$taxonomy] = 1;
710 $templateOptions['tax_multiple_xpath'][$taxonomy] = '{' . $element_name . '[1]}';
711 $templateOptions['tax_multiple_delim'][$taxonomy] = $is_xml_template ? '|' : $implode_delimiter;
712 }
713 $taxs_list[] = $taxonomy;
714 break;
715 }
716 }
717 break;
718 }
719 }
720
721 static function getUserdata($userId)
722 {
723 if (!isset(self::$userData[$userId])) {
724 self::$userData[$userId] = get_userdata($userId);
725 }
726 return self::$userData[$userId];
727 }
728 }
729
730