Export WordPress data to XML/CSV - Version 1.0.4

Version Description

  • fixed export attachment meta alt
  • fixed export manually stored ACF
  • fixed export repeater field for users in csv format
  • fixed import export templates
  • fixed ajaxurl conflict with WPML
  • added French & Latvian translations
  • added 'Variation Description' field
Download this release

Release Info

Developer soflyy
Plugin Icon 128x128 Export WordPress data to XML/CSV
Version 1.0.4
Comparing to
See all releases

Code changes from version 1.0.3 to 1.0.4

actions/admin_menu.php CHANGED
@@ -14,7 +14,7 @@ function pmxe_admin_menu() {
14
add_submenu_page('pmxe-admin-home', __('Export to XML', 'wp_all_export_plugin') . ' ‹ ' . __('WP All Export', 'wp_all_export_plugin'), __('New Export', 'wp_all_export_plugin'), 'manage_options', 'pmxe-admin-export', array(PMXE_Plugin::getInstance(), 'adminDispatcher'));
15
add_submenu_page('pmxe-admin-home', __('Manage Exports', 'wp_all_export_plugin') . ' ‹ ' . __('WP All Export', 'wp_all_export_plugin'), __('Manage Exports', 'wp_all_export_plugin'), 'manage_options', 'pmxe-admin-manage', array(PMXE_Plugin::getInstance(), 'adminDispatcher'));
16
add_submenu_page('pmxe-admin-home', __('Settings', 'wp_all_export_plugin') . ' ‹ ' . __('WP All Export', 'wp_all_export_plugin'), __('Settings', 'wp_all_export_plugin'), 'manage_options', 'pmxe-admin-settings', array(PMXE_Plugin::getInstance(), 'adminDispatcher'));
17
- add_submenu_page('pmxe-admin-home', __('Feedback', 'wp_all_export_plugin') . ' ‹ ' . __('WP All Export', 'wp_all_export_plugin'), __('Feedback', 'wp_all_export_plugin'), 'manage_options', 'pmxe-admin-feedback', array(PMXE_Plugin::getInstance(), 'adminDispatcher'));
18
add_submenu_page('pmxe-admin-home', __('Support', 'wp_all_export_plugin') . ' ‹ ' . __('WP All Export', 'wp_all_export_plugin'), __('Support', 'wp_all_export_plugin'), 'manage_options', 'pmxe-admin-help', array(PMXE_Plugin::getInstance(), 'adminDispatcher'));
19
20
}
14
add_submenu_page('pmxe-admin-home', __('Export to XML', 'wp_all_export_plugin') . ' ‹ ' . __('WP All Export', 'wp_all_export_plugin'), __('New Export', 'wp_all_export_plugin'), 'manage_options', 'pmxe-admin-export', array(PMXE_Plugin::getInstance(), 'adminDispatcher'));
15
add_submenu_page('pmxe-admin-home', __('Manage Exports', 'wp_all_export_plugin') . ' ‹ ' . __('WP All Export', 'wp_all_export_plugin'), __('Manage Exports', 'wp_all_export_plugin'), 'manage_options', 'pmxe-admin-manage', array(PMXE_Plugin::getInstance(), 'adminDispatcher'));
16
add_submenu_page('pmxe-admin-home', __('Settings', 'wp_all_export_plugin') . ' ‹ ' . __('WP All Export', 'wp_all_export_plugin'), __('Settings', 'wp_all_export_plugin'), 'manage_options', 'pmxe-admin-settings', array(PMXE_Plugin::getInstance(), 'adminDispatcher'));
17
+ // add_submenu_page('pmxe-admin-home', __('Feedback', 'wp_all_export_plugin') . ' ‹ ' . __('WP All Export', 'wp_all_export_plugin'), __('Feedback', 'wp_all_export_plugin'), 'manage_options', 'pmxe-admin-feedback', array(PMXE_Plugin::getInstance(), 'adminDispatcher'));
18
add_submenu_page('pmxe-admin-home', __('Support', 'wp_all_export_plugin') . ' ‹ ' . __('WP All Export', 'wp_all_export_plugin'), __('Support', 'wp_all_export_plugin'), 'manage_options', 'pmxe-admin-help', array(PMXE_Plugin::getInstance(), 'adminDispatcher'));
19
20
}
actions/wp_ajax_export_filtering.php CHANGED
@@ -122,8 +122,9 @@ function pmxe_wp_ajax_export_filtering(){
122
<select name="product_matching_mode">
123
<option value="strict" <?php echo ( $product_matching_mode == 'strict' ) ? 'selected="selected"' : ''; ?>><?php _e("Strict", "wp_all_export_plugin"); ?></option>
124
<option value="permissive" <?php echo ( $product_matching_mode == 'permissive' ) ? 'selected="selected"' : ''; ?>><?php _e("Permissive", "wp_all_export_plugin"); ?></option>
125
</select>
126
- <a href="#help" class="wpallexport-help" style="position: relative; top: 0px;" title="<?php _e('Strict matching requires all variations to pass in order for the product to be exported. Permissive matching allows the product to be exported if any of the variations pass.', 'wp_all_export_plugin'); ?>">?</a>
127
</div>
128
129
<?php endif; ?>
122
<select name="product_matching_mode">
123
<option value="strict" <?php echo ( $product_matching_mode == 'strict' ) ? 'selected="selected"' : ''; ?>><?php _e("Strict", "wp_all_export_plugin"); ?></option>
124
<option value="permissive" <?php echo ( $product_matching_mode == 'permissive' ) ? 'selected="selected"' : ''; ?>><?php _e("Permissive", "wp_all_export_plugin"); ?></option>
125
+ <option value="parent" <?php echo ( $product_matching_mode == 'parent' ) ? 'selected="selected"' : ''; ?>><?php _e("Parent", "wp_all_export_plugin"); ?></option>
126
</select>
127
+ <a href="#help" class="wpallexport-help" style="position: relative; top: 0px;" title="<?php _e('Strict matching requires all variations to pass in order for the product to be exported. Permissive matching allows the product to be exported if any of the variations pass. Parent matching applies filters to parent products only.', 'wp_all_export_plugin'); ?>">?</a>
128
</div>
129
130
<?php endif; ?>
actions/wp_ajax_export_filtering_count.php CHANGED
@@ -47,12 +47,19 @@ function pmxe_wp_ajax_export_filtering_count(){
47
PMXE_Plugin::$session->save_data();
48
49
$found_records = 0;
50
51
if ( 'users' == $post['cpt'] )
52
{
53
add_action('pre_user_query', 'wp_all_export_pre_user_query', 10, 1);
54
$exportQuery = new WP_User_Query( array( 'orderby' => 'ID', 'order' => 'ASC', 'number' => 10 ));
55
-
56
if ( ! empty($exportQuery->results)){
57
$found_records = $exportQuery->get_total();
58
}
@@ -60,13 +67,19 @@ function pmxe_wp_ajax_export_filtering_count(){
60
}
61
else
62
{
63
- add_filter('posts_where', 'wp_all_export_posts_where', 10, 1);
64
- add_filter('posts_join', 'wp_all_export_posts_join', 10, 1);
65
-
66
$cpt = ($post['cpt'] == 'product') ? array('product', 'product_variation') : $post['cpt'];
67
68
- $exportQuery = new WP_Query( array( 'post_type' => $cpt, 'post_status' => 'any', 'orderby' => 'ID', 'order' => 'ASC', 'posts_per_page' => 10 ));
69
70
if ( ! empty($exportQuery->found_posts)){
71
$found_records = $exportQuery->found_posts;
72
}
@@ -86,9 +99,12 @@ function pmxe_wp_ajax_export_filtering_count(){
86
<?php if (! $export->isEmpty() and $export->options['export_only_new_stuff']): ?>
87
<h3><?php _e('Nothing to export.', 'wp_all_export_plugin'); ?></h3>
88
<h4><?php printf(__("All %s have already been exported.", "wp_all_export_plugin"), wp_all_export_get_cpt_name(array($post['cpt']))); ?></h4>
89
- <?php else: ?>
90
<h3><?php _e('Nothing to export.', 'wp_all_export_plugin'); ?></h3>
91
<h4><?php printf(__("No matching %s found for selected filter rules.", "wp_all_export_plugin"), wp_all_export_get_cpt_name(array($post['cpt']))); ?></h4>
92
<?php endif; ?>
93
<?php endif; ?>
94
@@ -101,8 +117,10 @@ function pmxe_wp_ajax_export_filtering_count(){
101
<?php if ($found_records > 0) :?>
102
<h3><span class="matches_count"><?php echo $found_records; ?></span> <strong><?php echo wp_all_export_get_cpt_name(array($post['cpt']), $found_records); ?></strong> will be exported</h3>
103
<h4><?php _e("Continue to Step 2 to choose data to include in the export file.", "wp_all_export_plugin"); ?></h4>
104
- <?php else: ?>
105
<h4 style="line-height:60px;"><?php printf(__("No matching %s found for selected filter rules.", "wp_all_export_plugin"), wp_all_export_get_cpt_name(array($post['cpt']))); ?></h4>
106
<?php endif; ?>
107
</div>
108
<?php
47
PMXE_Plugin::$session->save_data();
48
49
$found_records = 0;
50
+ $total_records = 0;
51
52
if ( 'users' == $post['cpt'] )
53
{
54
+ // get total users
55
+ $totalQuery = new WP_User_Query( array( 'orderby' => 'ID', 'order' => 'ASC', 'number' => 10 ));
56
+ if ( ! empty($totalQuery->results)){
57
+ $total_records = $totalQuery->get_total();
58
+ }
59
+
60
+ // get users depends on filters
61
add_action('pre_user_query', 'wp_all_export_pre_user_query', 10, 1);
62
$exportQuery = new WP_User_Query( array( 'orderby' => 'ID', 'order' => 'ASC', 'number' => 10 ));
63
if ( ! empty($exportQuery->results)){
64
$found_records = $exportQuery->get_total();
65
}
67
}
68
else
69
{
70
$cpt = ($post['cpt'] == 'product') ? array('product', 'product_variation') : $post['cpt'];
71
72
+ // get total custom post type records
73
+ $totalQuery = new WP_Query( array( 'post_type' => $cpt, 'post_status' => 'any', 'orderby' => 'ID', 'order' => 'ASC', 'posts_per_page' => 10 ));
74
+ if ( ! empty($totalQuery->found_posts)){
75
+ $total_records = $totalQuery->found_posts;
76
+ }
77
78
+ // get custom post type records depends on filters
79
+ add_filter('posts_where', 'wp_all_export_posts_where', 10, 1);
80
+ add_filter('posts_join', 'wp_all_export_posts_join', 10, 1);
81
+
82
+ $exportQuery = new WP_Query( array( 'post_type' => $cpt, 'post_status' => 'any', 'orderby' => 'ID', 'order' => 'ASC', 'posts_per_page' => 10 ));
83
if ( ! empty($exportQuery->found_posts)){
84
$found_records = $exportQuery->found_posts;
85
}
99
<?php if (! $export->isEmpty() and $export->options['export_only_new_stuff']): ?>
100
<h3><?php _e('Nothing to export.', 'wp_all_export_plugin'); ?></h3>
101
<h4><?php printf(__("All %s have already been exported.", "wp_all_export_plugin"), wp_all_export_get_cpt_name(array($post['cpt']))); ?></h4>
102
+ <?php elseif ($total_records > 0): ?>
103
<h3><?php _e('Nothing to export.', 'wp_all_export_plugin'); ?></h3>
104
<h4><?php printf(__("No matching %s found for selected filter rules.", "wp_all_export_plugin"), wp_all_export_get_cpt_name(array($post['cpt']))); ?></h4>
105
+ <?php else: ?>
106
+ <h3><?php _e('Nothing to export.', 'wp_all_export_plugin'); ?></h3>
107
+ <h4><?php printf(__("There aren't any %s to export.", "wp_all_export_plugin"), wp_all_export_get_cpt_name(array($post['cpt']))); ?></h4>
108
<?php endif; ?>
109
<?php endif; ?>
110
117
<?php if ($found_records > 0) :?>
118
<h3><span class="matches_count"><?php echo $found_records; ?></span> <strong><?php echo wp_all_export_get_cpt_name(array($post['cpt']), $found_records); ?></strong> will be exported</h3>
119
<h4><?php _e("Continue to Step 2 to choose data to include in the export file.", "wp_all_export_plugin"); ?></h4>
120
+ <?php elseif ($total_records > 0): ?>
121
<h4 style="line-height:60px;"><?php printf(__("No matching %s found for selected filter rules.", "wp_all_export_plugin"), wp_all_export_get_cpt_name(array($post['cpt']))); ?></h4>
122
+ <?php else: ?>
123
+ <h4 style="line-height:60px;"><?php printf(__("There aren't any %s to export.", "wp_all_export_plugin"), wp_all_export_get_cpt_name(array($post['cpt']))); ?></h4>
124
<?php endif; ?>
125
</div>
126
<?php
classes/XMLWriter.php CHANGED
@@ -27,4 +27,9 @@ class PMXE_XMLWriter extends XMLWriter
27
}
28
}
29
30
}
27
}
28
}
29
30
+ public function writeData( $value )
31
+ {
32
+ if (empty($value) or is_numeric($value)) $this->text($value); else $this->writeCData($value);
33
+ }
34
+
35
}
classes/chunk.php CHANGED
@@ -90,12 +90,11 @@ class PMXE_Chunk {
90
91
if (empty($this->options['element']) or $this->options['get_cloud'])
92
{
93
- // if (function_exists('stream_filter_register') and $this->options['filter']){
94
- // stream_filter_register('preprocessxml', 'preprocessXml_filter');
95
- // $path = 'php://filter/read=preprocessxml/resource=' . $this->file;
96
- // }
97
- // else
98
- $path = $this->file;
99
100
$reader = new XMLReader();
101
$reader->open($path);
@@ -103,10 +102,11 @@ class PMXE_Chunk {
103
while ( @$reader->read()) {
104
switch ($reader->nodeType) {
105
case (XMLREADER::ELEMENT):
106
- if (array_key_exists(str_replace(":", "_", $reader->localName), $this->cloud))
107
- $this->cloud[str_replace(":", "_", $reader->localName)]++;
108
else
109
- $this->cloud[str_replace(":", "_", $reader->localName)] = 1;
110
break;
111
default:
112
@@ -137,12 +137,11 @@ class PMXE_Chunk {
137
}
138
}
139
140
- // if (function_exists('stream_filter_register') and $this->options['filter']){
141
- // stream_filter_register('preprocessxml', 'preprocessXml_filter');
142
- // $path = 'php://filter/read=preprocessxml/resource=' . $this->file;
143
- // }
144
- // else
145
- $path = $this->file;
146
147
$this->reader = new XMLReader();
148
@$this->reader->open($path);
@@ -185,10 +184,12 @@ class PMXE_Chunk {
185
while ( @$this->reader->read() ) {
186
switch ($this->reader->nodeType) {
187
case (XMLREADER::ELEMENT):
188
- if ( strtolower(str_replace(":", "_", $this->reader->localName)) == strtolower($element) ) {
189
190
if ($this->loop < $this->options['pointer']){
191
- $this->loop++;
192
continue;
193
}
194
@@ -212,15 +213,17 @@ class PMXE_Chunk {
212
213
function removeColonsFromRSS($feed) {
214
215
// pull out colons from start tags
216
// (<\w+):(\w+>)
217
- $pattern = '/(<\w+):(\w+[ |>]{1})/i';
218
- $replacement = '<$2';
219
$feed = preg_replace($pattern, $replacement, $feed);
220
// pull out colons from end tags
221
// (<\/\w+):(\w+>)
222
- $pattern = '/(<\/\w+):(\w+>)/i';
223
- $replacement = '</$2';
224
$feed = preg_replace($pattern, $replacement, $feed);
225
// pull out colons from attributes
226
$pattern = '/(\s+\w+):(\w+[=]{1})/i';
@@ -228,12 +231,44 @@ class PMXE_Chunk {
228
$feed = preg_replace($pattern, $replacement, $feed);
229
// pull colons from single element
230
// (<\w+):(\w+\/>)
231
- $pattern = '/(<\w+):(\w+\/>)/i';
232
- $replacement = '<$2';
233
- $feed = preg_replace($pattern, $replacement, $feed);
234
-
235
return $feed;
236
237
}
238
239
}
90
91
if (empty($this->options['element']) or $this->options['get_cloud'])
92
{
93
+ if (function_exists('stream_filter_register') and $this->options['filter']){
94
+ stream_filter_register('preprocessxml', 'wpae_preprocessXml_filter');
95
+ $path = 'php://filter/read=preprocessxml/resource=' . $this->file;
96
+ }
97
+ else $path = $this->file;
98
99
$reader = new XMLReader();
100
$reader->open($path);
102
while ( @$reader->read()) {
103
switch ($reader->nodeType) {
104
case (XMLREADER::ELEMENT):
105
+ $localName = str_replace("_colon_", ":", $reader->localName);
106
+ if (array_key_exists(str_replace(":", "_", $localName), $this->cloud))
107
+ $this->cloud[str_replace(":", "_", $localName)]++;
108
else
109
+ $this->cloud[str_replace(":", "_", $localName)] = 1;
110
break;
111
default:
112
137
}
138
}
139
140
+ if (function_exists('stream_filter_register') and $this->options['filter']){
141
+ stream_filter_register('preprocessxml', 'wpae_preprocessXml_filter');
142
+ $path = 'php://filter/read=preprocessxml/resource=' . $this->file;
143
+ }
144
+ else $path = $this->file;
145
146
$this->reader = new XMLReader();
147
@$this->reader->open($path);
184
while ( @$this->reader->read() ) {
185
switch ($this->reader->nodeType) {
186
case (XMLREADER::ELEMENT):
187
+ $localName = str_replace("_colon_", ":", $this->reader->localName);
188
+
189
+ if ( strtolower(str_replace(":", "_", $localName)) == strtolower($element) ) {
190
191
if ($this->loop < $this->options['pointer']){
192
+ $this->loop++;
193
continue;
194
}
195
213
214
function removeColonsFromRSS($feed) {
215
216
+ $feed = str_replace("_colon_", ":", $feed);
217
+
218
// pull out colons from start tags
219
// (<\w+):(\w+>)
220
+ $pattern = '/(<\w+):([\w+|\.|-]+[ |>]{1})/i';
221
+ $replacement = '$1_$2';
222
$feed = preg_replace($pattern, $replacement, $feed);
223
// pull out colons from end tags
224
// (<\/\w+):(\w+>)
225
+ $pattern = '/(<\/\w+):([\w+|\.|-]+>)/i';
226
+ $replacement = '$1_$2';
227
$feed = preg_replace($pattern, $replacement, $feed);
228
// pull out colons from attributes
229
$pattern = '/(\s+\w+):(\w+[=]{1})/i';
231
$feed = preg_replace($pattern, $replacement, $feed);
232
// pull colons from single element
233
// (<\w+):(\w+\/>)
234
+ $pattern = '/(<\w+):([\w+|\.|-]+\/>)/i';
235
+ $replacement = '$1_$2';
236
+ $feed = preg_replace($pattern, $replacement, $feed);
237
+
238
+ $is_preprocess_enabled = apply_filters('is_xml_preprocess_enabled', true);
239
+ if ($is_preprocess_enabled)
240
+ {
241
+ // replace temporary word _ampersand_ back to & symbol
242
+ $feed = str_replace("_ampersand_", "&", $feed);
243
+ }
244
+
245
return $feed;
246
247
}
248
249
}
250
+
251
+ class wpae_preprocessXml_filter extends php_user_filter {
252
+
253
+ function filter($in, $out, &$consumed, $closing)
254
+ {
255
+ while ($bucket = stream_bucket_make_writeable($in)) {
256
+ $is_preprocess_enabled = apply_filters('is_xml_preprocess_enabled', true);
257
+ if ($is_preprocess_enabled)
258
+ {
259
+ // the & symbol is not valid in XML, so replace it with temporary word _ampersand_
260
+ $bucket->data = str_replace("&", "_ampersand_", $bucket->data);
261
+ $bucket->data = preg_replace('/[^\x{0009}\x{000a}\x{000d}\x{0020}-\x{D7FF}\x{E000}-\x{FFFD}]+/u', ' ', $this->replace_colons($bucket->data));
262
+ }
263
+ $consumed += $bucket->datalen;
264
+ stream_bucket_append($out, $bucket);
265
+ }
266
+ return PSFS_PASS_ON;
267
+ }
268
+
269
+ function replace_colons($data)
270
+ {
271
+ return str_replace(":", "_colon_", $data);
272
+ }
273
+
274
+ }
classes/download.php CHANGED
@@ -5,11 +5,14 @@ class PMXE_Download
5
6
static public function zip($file_name)
7
{
8
-
9
header('Content-type: application/zip');
10
header("Content-Disposition: attachment; filename=\"".basename($file_name)."\"");
11
header('Content-Length: ' . filesize($file_name));
12
- readfile($file_name);
13
die;
14
}
15
5
6
static public function zip($file_name)
7
{
8
+ $uploads = wp_upload_dir();
9
+ $bundle_url = $uploads['baseurl'] . str_replace($uploads['basedir'], '', $file_name);
10
+ wp_redirect($bundle_url);
11
+ die;
12
header('Content-type: application/zip');
13
header("Content-Disposition: attachment; filename=\"".basename($file_name)."\"");
14
header('Content-Length: ' . filesize($file_name));
15
+ readfile($file_name);
16
die;
17
}
18
controllers/admin/settings.php CHANGED
@@ -37,7 +37,7 @@ class PMXE_Admin_Settings extends PMXE_Controller_Admin {
37
{
38
39
$filename = stripslashes($file_name);
40
- $extension = strtolower(pmxi_getExtension($filename));
41
42
if (($extension != "txt"))
43
{
@@ -54,7 +54,7 @@ class PMXE_Admin_Settings extends PMXE_Controller_Admin {
54
unset($template_data['id']);
55
$template->clear()->set($template_data)->insert();
56
}
57
- wp_redirect(add_query_arg('pmxi_nt', urlencode(sprintf(_n('%d template imported', '%d templates imported', count($templates_data), 'wp_all_export_plugin'), count($templates_data))), $this->baseUrl)); die();
58
}
59
else $this->errors->add('form-validation', __('Wrong imported data format', 'wp_all_export_plugin'));
60
}
@@ -78,7 +78,7 @@ class PMXE_Admin_Settings extends PMXE_Controller_Admin {
78
foreach ($templates_ids as $template_id) {
79
$template->clear()->set('id', $template_id)->delete();
80
}
81
- wp_redirect(add_query_arg('pmxi_nt', urlencode(sprintf(_n('%d template deleted', '%d templates deleted', count($templates_ids), 'wp_all_export_plugin'), count($templates_ids))), $this->baseUrl)); die();
82
}
83
if ($this->input->post('export_templates')){
84
$export_data = array();
37
{
38
39
$filename = stripslashes($file_name);
40
+ $extension = strtolower(pmxe_getExtension($filename));
41
42
if (($extension != "txt"))
43
{
54
unset($template_data['id']);
55
$template->clear()->set($template_data)->insert();
56
}
57
+ wp_redirect(add_query_arg('pmxe_nt', urlencode(sprintf(_n('%d template imported', '%d templates imported', count($templates_data), 'wp_all_export_plugin'), count($templates_data))), $this->baseUrl)); die();
58
}
59
else $this->errors->add('form-validation', __('Wrong imported data format', 'wp_all_export_plugin'));
60
}
78
foreach ($templates_ids as $template_id) {
79
$template->clear()->set('id', $template_id)->delete();
80
}
81
+ wp_redirect(add_query_arg('pmxe_nt', urlencode(sprintf(_n('%d template deleted', '%d templates deleted', count($templates_ids), 'wp_all_export_plugin'), count($templates_ids))), $this->baseUrl)); die();
82
}
83
if ($this->input->post('export_templates')){
84
$export_data = array();
helpers/pmxe_export_acf_field_csv.php CHANGED
@@ -6,7 +6,7 @@ function pmxe_export_acf_field_csv($field_value, $exportOptions, $ID, $recordID,
6
7
$field_name = ($ID) ? $exportOptions['cc_label'][$ID] : $exportOptions['name'];
8
9
- $field_options = ($ID) ? unserialize($exportOptions['cc_options'][$ID]) : $exportOptions;
10
11
if ( ! empty($field_value) ) {
12
@@ -22,7 +22,7 @@ function pmxe_export_acf_field_csv($field_value, $exportOptions, $ID, $recordID,
22
case 'date_time_picker':
23
case 'date_picker':
24
25
- $field_value = date('Ymd', strtotime($field_value));
26
27
break;
28
@@ -71,11 +71,9 @@ function pmxe_export_acf_field_csv($field_value, $exportOptions, $ID, $recordID,
71
$put_to_csv = false;
72
73
break;
74
- case 'paypal_item':
75
76
- $acfs[] = $element_name . '_item_name';
77
- $acfs[] = $element_name . '_item_description';
78
- $acfs[] = $element_name . '_price';
79
80
if ( is_array($field_value) ){
81
foreach ($field_value as $key => $value) {
@@ -88,14 +86,11 @@ function pmxe_export_acf_field_csv($field_value, $exportOptions, $ID, $recordID,
88
break;
89
case 'google_map':
90
91
- $article[$element_name . '_address'] = $field_value['address'];
92
- $acfs[] = $element_name . '_address';
93
-
94
- $article[$element_name . '_lat'] = $field_value['lat'];
95
- $acfs[] = $element_name . '_lat';
96
97
- $article[$element_name . '_lng'] = $field_value['lng'];
98
- $acfs[] = $element_name . '_lng';
99
100
$put_to_csv = false;
101
@@ -232,12 +227,14 @@ function pmxe_export_acf_field_csv($field_value, $exportOptions, $ID, $recordID,
232
233
if( have_rows($field_name, $recordID) ){
234
235
- $repeater_element_name = empty($ID) ? $parent_field_name : $element_name;
236
237
- if ( ! empty($ID))
238
- $acfs[$repeater_element_name] = array();
239
240
$rowValues = array();
241
242
while( have_rows($field_name, $recordID) ): the_row();
243
@@ -291,9 +288,11 @@ function pmxe_export_acf_field_csv($field_value, $exportOptions, $ID, $recordID,
291
292
foreach ($rowValues as $key => $values) {
293
$article[$element_name . '_' . $key] = ($preview) ? trim(preg_replace('~[\r\n]+~', ' ', htmlspecialchars(implode($exportOptions['delimiter'], $values)))) : implode($exportOptions['delimiter'], $values);
294
- if ( ! in_array($element_name . '_' . $key, $acfs[$repeater_element_name])) $acfs[$repeater_element_name][] = $element_name . '_' . $key;
295
}
296
-
297
}
298
299
$put_to_csv = false;
@@ -353,8 +352,7 @@ function pmxe_export_acf_field_csv($field_value, $exportOptions, $ID, $recordID,
353
354
if ($put_to_csv){
355
356
-
357
- switch ($field_options['type']) {
358
359
case 'repeater':
360
@@ -362,37 +360,74 @@ function pmxe_export_acf_field_csv($field_value, $exportOptions, $ID, $recordID,
362
363
if ($acf->settings['version'] and version_compare($acf->settings['version'], '5.0.0') >= 0){
364
365
- $acf_fields = get_posts(array('posts_per_page' => -1, 'post_type' => 'acf-field', 'post_parent' => $field_options['ID'], 'post_status' => 'publish', 'orderby' => 'menu_order', 'order' => 'ASC'));
366
367
- if ( ! empty($acf_fields) ){
368
369
- foreach ($acf_fields as $field) {
370
371
- $sub_name = $element_name . '_' . $field->post_excerpt;
372
373
- if ( ! in_array($sub_name, $acfs)) $acfs[] = $sub_name;
374
375
- }
376
377
- }
378
379
}
380
381
break;
382
383
case 'google_map':
384
case 'location-field':
385
386
- $acfs[] = $element_name . '_address';
387
- $acfs[] = $element_name . '_lat';
388
- $acfs[] = $element_name . '_lng';
389
390
break;
391
case 'paypal_item':
392
393
- $acfs[] = $element_name . '_item_name';
394
- $acfs[] = $element_name . '_item_description';
395
- $acfs[] = $element_name . '_price';
396
397
break;
398
@@ -400,7 +435,7 @@ function pmxe_export_acf_field_csv($field_value, $exportOptions, $ID, $recordID,
400
401
$val = apply_filters('pmxe_acf_field', pmxe_filter( ( ! empty($field_value) ) ? maybe_serialize($field_value) : '', $fieldSnipped), $field_name, $recordID);
402
$article[$element_name] = ($preview) ? trim(preg_replace('~[\r\n]+~', ' ', htmlspecialchars($val))) : $val;
403
- $acfs[] = $element_name;
404
405
break;
406
6
7
$field_name = ($ID) ? $exportOptions['cc_label'][$ID] : $exportOptions['name'];
8
9
+ $field_options = ($ID) ? unserialize($exportOptions['cc_options'][$ID]) : $exportOptions;
10
11
if ( ! empty($field_value) ) {
12
22
case 'date_time_picker':
23
case 'date_picker':
24
25
+ $field_value = date('Ymd', strtotime($field_value));
26
27
break;
28
71
$put_to_csv = false;
72
73
break;
74
+ case 'paypal_item':
75
76
+ $acfs[] = array($element_name . '_item_name', $element_name . '_item_description', $element_name . '_price');
77
78
if ( is_array($field_value) ){
79
foreach ($field_value as $key => $value) {
86
break;
87
case 'google_map':
88
89
+ $acfs[] = array($element_name . '_address', $element_name . '_lat', $element_name . '_lng');
90
91
+ $article[$element_name . '_address'] = $field_value['address'];
92
+ $article[$element_name . '_lat'] = $field_value['lat'];
93
+ $article[$element_name . '_lng'] = $field_value['lng'];
94
95
$put_to_csv = false;
96
227
228
if( have_rows($field_name, $recordID) ){
229
230
+ // $repeater_element_name = empty($ID) ? $parent_field_name : $element_name;
231
232
+ // if ( ! empty($ID))
233
+ // $acfs[$repeater_element_name] = array();
234
235
$rowValues = array();
236
+
237
+ $repeater_sub_field_names = array();
238
239
while( have_rows($field_name, $recordID) ): the_row();
240
288
289
foreach ($rowValues as $key => $values) {
290
$article[$element_name . '_' . $key] = ($preview) ? trim(preg_replace('~[\r\n]+~', ' ', htmlspecialchars(implode($exportOptions['delimiter'], $values)))) : implode($exportOptions['delimiter'], $values);
291
+ if ( ! in_array($element_name . '_' . $key, $repeater_sub_field_names)) $repeater_sub_field_names[] = $element_name . '_' . $key;
292
}
293
+
294
+ if ( ! empty($repeater_sub_field_names)) $acfs[] = $repeater_sub_field_names;
295
+
296
}
297
298
$put_to_csv = false;
352
353
if ($put_to_csv){
354
355
+ switch ($field_options['type']) {
356
357
case 'repeater':
358
360
361
if ($acf->settings['version'] and version_compare($acf->settings['version'], '5.0.0') >= 0){
362
363
+ if ( is_numeric($field_options['ID']))
364
+ {
365
+ $acf_fields = get_posts(array('posts_per_page' => -1, 'post_type' => 'acf-field', 'post_parent' => $field_options['ID'], 'post_status' => 'publish', 'orderby' => 'menu_order', 'order' => 'ASC'));
366
367
+ if ( ! empty($acf_fields) )
368
+ {
369
+ $repeater_sub_field_names = array();
370
371
+ foreach ($acf_fields as $field) {
372
373
+ $sub_name = $element_name . '_' . $field->post_excerpt;
374
375
+ if ( ! in_array($sub_name, $acfs) and ! in_array($sub_name, $repeater_sub_field_names)) $repeater_sub_field_names[] = $sub_name;
376
377
+ }
378
379
+ if ( ! empty($repeater_sub_field_names)) $acfs[] = $repeater_sub_field_names;
380
+ }
381
+ }
382
+ else
383
+ {
384
+ $acf_fields = acf_local()->fields;
385
+
386
+ if ( ! empty($acf_fields) )
387
+ {
388
+ $repeater_sub_field_names = array();
389
+
390
+ foreach ($acf_fields as $field_key => $field)
391
+ {
392
+ if ($field['parent'] == $field_options['key'])
393
+ {
394
+ $sub_name = $element_name . '_' . $field['name'];
395
396
+ if ( ! in_array($sub_name, $acfs) and ! in_array($sub_name, $repeater_sub_field_names)) $repeater_sub_field_names[] = $sub_name;
397
+ }
398
+ }
399
+
400
+ if ( ! empty($repeater_sub_field_names)) $acfs[] = $repeater_sub_field_names;
401
+ }
402
+ }
403
}
404
+ else
405
+ {
406
+ if ( ! empty($field_options['sub_fields']))
407
+ {
408
+ $repeater_sub_field_names = array();
409
+
410
+ foreach ($field_options['sub_fields'] as $n => $sub_field)
411
+ {
412
+ $sub_name = $element_name . '_' . $sub_field['name'];
413
414
+ if ( ! in_array($sub_name, $acfs) and ! in_array($sub_name, $repeater_sub_field_names)) $repeater_sub_field_names[] = $sub_name;
415
+ }
416
+ if ( ! empty($repeater_sub_field_names)) $acfs[] = $repeater_sub_field_names;
417
+ }
418
+ }
419
+
420
break;
421
422
case 'google_map':
423
case 'location-field':
424
425
+ $acfs[] = array($element_name . '_address', $element_name . '_lat', $element_name . '_lng');
426
427
break;
428
case 'paypal_item':
429
430
+ $acfs[] = array($element_name . '_item_name', $element_name . '_item_description', $element_name . '_price');
431
432
break;
433
435
436
$val = apply_filters('pmxe_acf_field', pmxe_filter( ( ! empty($field_value) ) ? maybe_serialize($field_value) : '', $fieldSnipped), $field_name, $recordID);
437
$article[$element_name] = ($preview) ? trim(preg_replace('~[\r\n]+~', ' ', htmlspecialchars($val))) : $val;
438
+ $acfs[] = $element_name;
439
440
break;
441
helpers/pmxe_export_acf_field_xml.php CHANGED
@@ -55,17 +55,17 @@ function pmxe_export_acf_field_xml($field_value, $exportOptions, $ID, $recordID,
55
56
$xmlWriter->beginElement($element_name_ns, $element_name, null);
57
$xmlWriter->startElement('address');
58
- $xmlWriter->writeCData($localion_parts[0]);
59
$xmlWriter->endElement();
60
61
if (!empty($localion_parts[1])){
62
$coordinates = explode(",", $localion_parts[1]);
63
if (!empty($coordinates)){
64
$xmlWriter->startElement('lat');
65
- $xmlWriter->writeCData($coordinates[0]);
66
$xmlWriter->endElement();
67
$xmlWriter->startElement('lng');
68
- $xmlWriter->writeCData($coordinates[1]);
69
$xmlWriter->endElement();
70
}
71
}
@@ -82,7 +82,7 @@ function pmxe_export_acf_field_xml($field_value, $exportOptions, $ID, $recordID,
82
if ( is_array($field_value) ){
83
foreach ($field_value as $key => $value) {
84
$xmlWriter->beginElement($element_name_ns, $key, null);
85
- $xmlWriter->writeCData($value);
86
$xmlWriter->endElement();
87
}
88
}
@@ -95,13 +95,13 @@ function pmxe_export_acf_field_xml($field_value, $exportOptions, $ID, $recordID,
95
96
$xmlWriter->beginElement($element_name_ns, $element_name, null);
97
$xmlWriter->startElement('address');
98
- $xmlWriter->writeCData($field_value['address']);
99
$xmlWriter->endElement();
100
$xmlWriter->startElement('lat');
101
- $xmlWriter->writeCData($field_value['lat']);
102
$xmlWriter->endElement();
103
$xmlWriter->startElement('lng');
104
- $xmlWriter->writeCData($field_value['lng']);
105
$xmlWriter->endElement();
106
$xmlWriter->endElement();
107
@@ -211,7 +211,7 @@ function pmxe_export_acf_field_xml($field_value, $exportOptions, $ID, $recordID,
211
if ($entry and !is_wp_error($entry))
212
{
213
$xmlWriter->startElement('term');
214
- $xmlWriter->writeCData($entry->name);
215
$xmlWriter->endElement();
216
}
217
}
@@ -221,7 +221,7 @@ function pmxe_export_acf_field_xml($field_value, $exportOptions, $ID, $recordID,
221
if ($entry)
222
{
223
$xmlWriter->startElement('term');
224
- $xmlWriter->writeCData($entry->name);
225
$xmlWriter->endElement();
226
}
227
}
@@ -344,7 +344,7 @@ function pmxe_export_acf_field_xml($field_value, $exportOptions, $ID, $recordID,
344
if ($put_to_xml){
345
346
$xmlWriter->beginElement($element_name_ns, $element_name, null);
347
- $xmlWriter->writeCData(apply_filters('pmxe_acf_field', pmxe_filter( maybe_serialize($field_value), $fieldSnipped), $field_name, $recordID));
348
$xmlWriter->endElement();
349
350
}
55
56
$xmlWriter->beginElement($element_name_ns, $element_name, null);
57
$xmlWriter->startElement('address');
58
+ $xmlWriter->writeData($localion_parts[0]);
59
$xmlWriter->endElement();
60
61
if (!empty($localion_parts[1])){
62
$coordinates = explode(",", $localion_parts[1]);
63
if (!empty($coordinates)){
64
$xmlWriter->startElement('lat');
65
+ $xmlWriter->writeData($coordinates[0]);
66
$xmlWriter->endElement();
67
$xmlWriter->startElement('lng');
68
+ $xmlWriter->writeData($coordinates[1]);
69
$xmlWriter->endElement();
70
}
71
}
82
if ( is_array($field_value) ){
83
foreach ($field_value as $key => $value) {
84
$xmlWriter->beginElement($element_name_ns, $key, null);
85
+ $xmlWriter->writeData($value);
86
$xmlWriter->endElement();
87
}
88
}
95
96
$xmlWriter->beginElement($element_name_ns, $element_name, null);
97
$xmlWriter->startElement('address');
98
+ $xmlWriter->writeData($field_value['address']);
99
$xmlWriter->endElement();
100
$xmlWriter->startElement('lat');
101
+ $xmlWriter->writeData($field_value['lat']);
102
$xmlWriter->endElement();
103
$xmlWriter->startElement('lng');
104
+ $xmlWriter->writeData($field_value['lng']);
105
$xmlWriter->endElement();
106
$xmlWriter->endElement();
107
211
if ($entry and !is_wp_error($entry))
212
{
213
$xmlWriter->startElement('term');
214
+ $xmlWriter->writeData($entry->name);
215
$xmlWriter->endElement();
216
}
217
}
221
if ($entry)
222
{
223
$xmlWriter->startElement('term');
224
+ $xmlWriter->writeData($entry->name);
225
$xmlWriter->endElement();
226
}
227
}
344
if ($put_to_xml){
345
346
$xmlWriter->beginElement($element_name_ns, $element_name, null);
347
+ $xmlWriter->writeData(apply_filters('pmxe_acf_field', pmxe_filter( maybe_serialize($field_value), $fieldSnipped), $field_name, $recordID));
348
$xmlWriter->endElement();
349
350
}
helpers/pmxe_export_csv.php CHANGED
@@ -160,14 +160,14 @@ function pmxe_export_csv($exportQuery, $exportOptions, $preview = false, $is_cro
160
$img_titles[] = apply_filters('pmxe_attachment_title', $attach->post_title, get_the_ID(), $attach->ID);
161
$img_captions[] = apply_filters('pmxe_attachment_caption', $attach->post_excerpt, get_the_ID(), $attach->ID);
162
$img_descriptions[] = apply_filters('pmxe_attachment_content', $attach->post_content, get_the_ID(), $attach->ID);
163
- $img_alts[] = apply_filters('pmxe_attachment_alt', get_post_meta($record->ID, '_wp_attachment_image_alt', true), get_the_ID(), $attach->ID);
164
165
$images_count++;
166
}
167
}
168
if (! empty($img_urls))
169
$article[$element_name . '_images'] = implode($implode_delimiter, $img_urls);
170
-
171
if (!empty($img_titles)) $article[$element_name. '_titles'] = implode($implode_delimiter, $img_titles);
172
if (!empty($img_captions)) $article[$element_name . '_captions'] = implode($implode_delimiter, $img_captions);
173
if (!empty($img_alts)) $article[$element_name . '_alts'] = implode($implode_delimiter, $img_alts);
@@ -367,12 +367,13 @@ function pmxe_export_csv($exportQuery, $exportOptions, $preview = false, $is_cro
367
foreach ($txes_list as $t) {
368
$attr_new[] = $t->name;
369
}
370
- $article[$element_name] = apply_filters('pmxe_woo_attribute', pmxe_filter(implode($implode_delimiter, $attr_new), $fieldSnipped), get_the_ID());
371
}
372
if ( ! in_array($element_name, $attributes)) $attributes[] = $element_name;
373
}
374
- else{
375
- $attribute_pa = get_post_meta($record->ID, 'attribute_' . $exportOptions['cc_value'][$ID], true);
376
$article['attribute_' . $element_name] = $attribute_pa;
377
if ( ! in_array('attribute_' . $element_name, $attributes)) $attributes[] = 'attribute_' . $element_name;
378
}
160
$img_titles[] = apply_filters('pmxe_attachment_title', $attach->post_title, get_the_ID(), $attach->ID);
161
$img_captions[] = apply_filters('pmxe_attachment_caption', $attach->post_excerpt, get_the_ID(), $attach->ID);
162
$img_descriptions[] = apply_filters('pmxe_attachment_content', $attach->post_content, get_the_ID(), $attach->ID);
163
+ $img_alts[] = apply_filters('pmxe_attachment_alt', get_post_meta($attach->ID, '_wp_attachment_image_alt', true), get_the_ID(), $attach->ID);
164
165
$images_count++;
166
}
167
}
168
if (! empty($img_urls))
169
$article[$element_name . '_images'] = implode($implode_delimiter, $img_urls);
170
+
171
if (!empty($img_titles)) $article[$element_name. '_titles'] = implode($implode_delimiter, $img_titles);
172
if (!empty($img_captions)) $article[$element_name . '_captions'] = implode($implode_delimiter, $img_captions);
173
if (!empty($img_alts)) $article[$element_name . '_alts'] = implode($implode_delimiter, $img_alts);
367
foreach ($txes_list as $t) {
368
$attr_new[] = $t->name;
369
}
370
+ $article[$element_name] = apply_filters('pmxe_woo_attribute', pmxe_filter(implode($implode_delimiter, $attr_new), $fieldSnipped), get_the_ID(), $exportOptions['cc_value'][$ID]);
371
}
372
if ( ! in_array($element_name, $attributes)) $attributes[] = $element_name;
373
}
374
+ else
375
+ {
376
+ $attribute_pa = apply_filters('pmxe_woo_attribute', get_post_meta($record->ID, 'attribute_' . $exportOptions['cc_value'][$ID], true), get_the_ID(), $exportOptions['cc_value'][$ID]);
377
$article['attribute_' . $element_name] = $attribute_pa;
378
if ( ! in_array('attribute_' . $element_name, $attributes)) $attributes[] = 'attribute_' . $element_name;
379
}
helpers/pmxe_export_xml.php CHANGED
@@ -22,7 +22,7 @@ function pmxe_export_xml($exportQuery, $exportOptions, $preview = false, $is_cro
22
foreach ($additional_data as $key => $value)
23
{
24
$xmlWriter->startElement(preg_replace('/[^a-z0-9_-]/i', '', $key));
25
- $xmlWriter->writeCData($value);
26
$xmlWriter->endElement();
27
}
28
}
@@ -40,7 +40,7 @@ function pmxe_export_xml($exportQuery, $exportOptions, $preview = false, $is_cro
40
foreach ($additional_data as $key => $value)
41
{
42
$xmlWriter->startElement(preg_replace('/[^a-z0-9_-]/i', '', $key));
43
- $xmlWriter->writeCData($value);
44
$xmlWriter->endElement();
45
}
46
}
@@ -51,7 +51,11 @@ function pmxe_export_xml($exportQuery, $exportOptions, $preview = false, $is_cro
51
52
while ( $exportQuery->have_posts() ) :
53
54
- $exportQuery->the_post(); $record = get_post( get_the_ID() );
55
56
$xmlWriter->startElement($exportOptions['record_xml_tag']);
57
@@ -70,7 +74,7 @@ function pmxe_export_xml($exportQuery, $exportOptions, $preview = false, $is_cro
70
'post_id' => $record->ID,
71
'import_id' => $exportOptions['import_id'],
72
'unique_key' => $record->ID,
73
- 'product_key' => $record->ID
74
))->save();
75
}
76
unset($postRecord);
@@ -107,12 +111,12 @@ function pmxe_export_xml($exportQuery, $exportOptions, $preview = false, $is_cro
107
break;
108
case 'title':
109
$xmlWriter->beginElement($element_name_ns, $element_name, null);
110
- $xmlWriter->writeCData(apply_filters('pmxe_post_title', pmxe_filter($record->post_title, $fieldSnipped) , get_the_ID()));
111
$xmlWriter->endElement();
112
break;
113
case 'content':
114
$xmlWriter->beginElement($element_name_ns, $element_name, null);
115
- $xmlWriter->writeCData(apply_filters('pmxe_post_content', pmxe_filter($record->post_content, $fieldSnipped), get_the_ID()));
116
$xmlWriter->endElement();
117
break;
118
case 'media':
@@ -182,7 +186,7 @@ function pmxe_export_xml($exportQuery, $exportOptions, $preview = false, $is_cro
182
$xmlWriter->writeElement('title', apply_filters('pmxe_attachment_title', $attach->post_title, get_the_ID(), $attach->ID));
183
$xmlWriter->writeElement('caption', apply_filters('pmxe_attachment_caption', $attach->post_excerpt, get_the_ID(), $attach->ID));
184
$xmlWriter->writeElement('description', apply_filters('pmxe_attachment_content', $attach->post_content, get_the_ID(), $attach->ID));
185
- $xmlWriter->writeElement('alt', apply_filters('pmxe_attachment_alt', get_post_meta($record->ID, '_wp_attachment_image_alt', true), get_the_ID(), $attach->ID));
186
187
$xmlWriter->endElement();
188
}
@@ -269,7 +273,7 @@ function pmxe_export_xml($exportQuery, $exportOptions, $preview = false, $is_cro
269
270
case 'excerpt':
271
$xmlWriter->beginElement($element_name_ns, $element_name, null);
272
- $xmlWriter->writeCData(apply_filters('pmxe_post_excerpt', pmxe_filter($record->post_excerpt, $fieldSnipped) , get_the_ID()));
273
$xmlWriter->endElement();
274
break;
275
@@ -279,14 +283,14 @@ function pmxe_export_xml($exportQuery, $exportOptions, $preview = false, $is_cro
279
if (!empty($cur_meta_values) and is_array($cur_meta_values)){
280
foreach ($cur_meta_values as $key => $cur_meta_value) {
281
$xmlWriter->beginElement($element_name_ns, $element_name, null);
282
- $xmlWriter->writeCData(apply_filters('pmxe_custom_field', pmxe_filter(maybe_serialize($cur_meta_value), $fieldSnipped), $exportOptions['cc_value'][$ID], get_the_ID()));
283
$xmlWriter->endElement();
284
}
285
}
286
287
if (empty($cur_meta_values)){
288
$xmlWriter->beginElement($element_name_ns, $element_name, null);
289
- $xmlWriter->writeCData(apply_filters('pmxe_custom_field', pmxe_filter('', $fieldSnipped), $exportOptions['cc_value'][$ID], get_the_ID()));
290
$xmlWriter->endElement();
291
}
292
}
@@ -339,16 +343,16 @@ function pmxe_export_xml($exportQuery, $exportOptions, $preview = false, $is_cro
339
$attr_new[] = $t->name;
340
}
341
$xmlWriter->beginElement($element_name_ns, $is_variable_product ? $element_name : 'attribute_' . $element_name, null);
342
- $xmlWriter->writeCData(apply_filters('pmxe_woo_attribute', pmxe_filter(implode('|', $attr_new), $fieldSnipped), get_the_ID()));
343
$xmlWriter->endElement();
344
endif;
345
}
346
}
347
else{
348
- $attribute_pa = get_post_meta($record->ID, 'attribute_' . $exportOptions['cc_value'][$ID], true);
349
if ( ! empty($attribute_pa)){
350
$xmlWriter->beginElement($element_name_ns, 'attribute_' . $element_name, null);
351
- $xmlWriter->writeCData(apply_filters('woo_field', $attribute_pa));
352
$xmlWriter->endElement();
353
}
354
}
@@ -398,7 +402,7 @@ function pmxe_export_xml($exportQuery, $exportOptions, $preview = false, $is_cro
398
if ( ! empty($hierarchy_groups) ){
399
400
$xmlWriter->beginElement($element_name_ns, $element_name, null);
401
- $xmlWriter->writeCData(apply_filters('pmxe_post_taxonomy', pmxe_filter(implode('|', $hierarchy_groups), $fieldSnipped), get_the_ID()));
402
$xmlWriter->endElement();
403
404
}
@@ -424,7 +428,7 @@ function pmxe_export_xml($exportQuery, $exportOptions, $preview = false, $is_cro
424
}
425
}
426
$xmlWriter->beginElement($element_name_ns, $element_name, null);
427
- $xmlWriter->writeCData(apply_filters('pmxe_sql_field', $val, $element_name, get_the_ID()));
428
$xmlWriter->endElement();
429
}
430
break;
22
foreach ($additional_data as $key => $value)
23
{
24
$xmlWriter->startElement(preg_replace('/[^a-z0-9_-]/i', '', $key));
25
+ $xmlWriter->writeData($value);
26
$xmlWriter->endElement();
27
}
28
}
40
foreach ($additional_data as $key => $value)
41
{
42
$xmlWriter->startElement(preg_replace('/[^a-z0-9_-]/i', '', $key));
43
+ $xmlWriter->writeData($value);
44
$xmlWriter->endElement();
45
}
46
}
51
52
while ( $exportQuery->have_posts() ) :
53
54
+ $exportQuery->the_post(); $record = get_post( get_the_ID() );
55
+
56
+ $is_export_record = apply_filters('wp_all_export_xml_rows', true, $record, $exportOptions);
57
+
58
+ if ( ! $is_export_record ) continue;
59
60
$xmlWriter->startElement($exportOptions['record_xml_tag']);
61
74
'post_id' => $record->ID,
75
'import_id' => $exportOptions['import_id'],
76
'unique_key' => $record->ID,
77
+ 'product_key' => $record->ID
78
))->save();
79
}
80
unset($postRecord);
111
break;
112
case 'title':
113
$xmlWriter->beginElement($element_name_ns, $element_name, null);
114
+ $xmlWriter->writeData(apply_filters('pmxe_post_title', pmxe_filter($record->post_title, $fieldSnipped) , get_the_ID()));
115
$xmlWriter->endElement();
116
break;
117
case 'content':
118
$xmlWriter->beginElement($element_name_ns, $element_name, null);
119
+ $xmlWriter->writeData(apply_filters('pmxe_post_content', pmxe_filter($record->post_content, $fieldSnipped), get_the_ID()));
120
$xmlWriter->endElement();
121
break;
122
case 'media':
186
$xmlWriter->writeElement('title', apply_filters('pmxe_attachment_title', $attach->post_title, get_the_ID(), $attach->ID));
187
$xmlWriter->writeElement('caption', apply_filters('pmxe_attachment_caption', $attach->post_excerpt, get_the_ID(), $attach->ID));
188
$xmlWriter->writeElement('description', apply_filters('pmxe_attachment_content', $attach->post_content, get_the_ID(), $attach->ID));
189
+ $xmlWriter->writeElement('alt', apply_filters('pmxe_attachment_alt', get_post_meta($attach->ID, '_wp_attachment_image_alt', true), get_the_ID(), $attach->ID));
190
191
$xmlWriter->endElement();
192
}
273
274
case 'excerpt':
275
$xmlWriter->beginElement($element_name_ns, $element_name, null);
276
+ $xmlWriter->writeData(apply_filters('pmxe_post_excerpt', pmxe_filter($record->post_excerpt, $fieldSnipped) , get_the_ID()));
277
$xmlWriter->endElement();
278
break;
279
283
if (!empty($cur_meta_values) and is_array($cur_meta_values)){
284
foreach ($cur_meta_values as $key => $cur_meta_value) {
285
$xmlWriter->beginElement($element_name_ns, $element_name, null);
286
+ $xmlWriter->writeData(apply_filters('pmxe_custom_field', pmxe_filter(maybe_serialize($cur_meta_value), $fieldSnipped), $exportOptions['cc_value'][$ID], get_the_ID()));
287
$xmlWriter->endElement();
288
}
289
}
290
291
if (empty($cur_meta_values)){
292
$xmlWriter->beginElement($element_name_ns, $element_name, null);
293
+ $xmlWriter->writeData(apply_filters('pmxe_custom_field', pmxe_filter('', $fieldSnipped), $exportOptions['cc_value'][$ID], get_the_ID()));
294
$xmlWriter->endElement();
295
}
296
}
343
$attr_new[] = $t->name;
344
}
345
$xmlWriter->beginElement($element_name_ns, $is_variable_product ? $element_name : 'attribute_' . $element_name, null);
346
+ $xmlWriter->writeData(apply_filters('pmxe_woo_attribute', pmxe_filter(implode('|', $attr_new), $fieldSnipped), get_the_ID(), $exportOptions['cc_value'][$ID]));
347
$xmlWriter->endElement();
348
endif;
349
}
350
}
351
else{
352
+ $attribute_pa = apply_filters('pmxe_woo_attribute', get_post_meta($record->ID, 'attribute_' . $exportOptions['cc_value'][$ID], true), get_the_ID(), $exportOptions['cc_value'][$ID]);
353
if ( ! empty($attribute_pa)){
354
$xmlWriter->beginElement($element_name_ns, 'attribute_' . $element_name, null);
355
+ $xmlWriter->writeData(apply_filters('woo_field', $attribute_pa));
356
$xmlWriter->endElement();
357
}
358
}
402
if ( ! empty($hierarchy_groups) ){
403
404
$xmlWriter->beginElement($element_name_ns, $element_name, null);
405
+ $xmlWriter->writeData(apply_filters('pmxe_post_taxonomy', pmxe_filter(implode('|', $hierarchy_groups), $fieldSnipped), get_the_ID()));
406
$xmlWriter->endElement();
407
408
}
428
}
429
}
430
$xmlWriter->beginElement($element_name_ns, $element_name, null);
431
+ $xmlWriter->writeData(apply_filters('pmxe_sql_field', $val, $element_name, get_the_ID()));
432
$xmlWriter->endElement();
433
}
434
break;
helpers/pmxe_functions.php CHANGED
@@ -37,4 +37,15 @@
37
rmdir($dir);
38
}
39
}
40
}
37
rmdir($dir);
38
}
39
}
40
+ }
41
+
42
+ if ( ! function_exists('pmxe_getExtension')){
43
+ function pmxe_getExtension($str)
44
+ {
45
+ $i = strrpos($str,".");
46
+ if (!$i) return "";
47
+ $l = strlen($str) - $i;
48
+ $ext = substr($str,$i+1,$l);
49
+ return (strlen($ext) <= 4) ? $ext : "";
50
+ }
51
}
helpers/wp_all_export_generate_export_file.php CHANGED
@@ -13,15 +13,18 @@ if ( ! function_exists('wp_all_export_generate_export_file') )
13
14
$export->getById( $export_id );
15
16
- if ( ! $export->isEmpty() and $export->options['creata_a_new_export_file'] )
17
{
18
- $export_file_name = sanitize_file_name($export->options['friendly_name']) . ' - ' . ($export->iteration + 1) . '.' . $export->options['export_to'];
19
- }
20
- else
21
- {
22
- $export_file_name = sanitize_file_name($export->options['friendly_name']) . '.' . $export->options['export_to'];
23
- }
24
25
- return $target . DIRECTORY_SEPARATOR . $export_file_name;
26
}
27
}
13
14
$export->getById( $export_id );
15
16
+ if ( ! $export->isEmpty())
17
{
18
+ if ($export->options['creata_a_new_export_file'] )
19
+ {
20
+ $export_file_name = sanitize_file_name($export->options['friendly_name']) . ' - ' . ($export->iteration + 1) . '.' . $export->options['export_to'];
21
+ }
22
+ else
23
+ {
24
+ $export_file_name = sanitize_file_name($export->options['friendly_name']) . '.' . $export->options['export_to'];
25
+ }
26
+ }
27
28
+ return apply_filters('wp_all_export_export_file_name', $target . DIRECTORY_SEPARATOR . $export_file_name, $export_id );
29
}
30
}
helpers/wp_all_export_prepare_template_csv.php CHANGED
@@ -11,6 +11,9 @@ function wp_all_export_prepare_template_csv($exportOptions, &$templateOptions)
11
$taxs_list = array();
12
$acf_list = array();
13
$implode_delimiter = ($exportOptions['delimiter'] == ',') ? '|' : ',';
14
foreach ($exportOptions['ids'] as $ID => $value) {
15
if (empty($exportOptions['cc_type'][$ID])) continue;
16
$element_name = strtolower((!empty($exportOptions['cc_name'][$ID])) ? preg_replace('/[^a-z0-9_]/i', '', $exportOptions['cc_name'][$ID]) : 'untitled_' . $ID);
@@ -23,12 +26,15 @@ function wp_all_export_prepare_template_csv($exportOptions, &$templateOptions)
23
case 'title':
24
case 'content':
25
case 'author':
26
- case 'parent':
27
- case 'excerpt':
28
case 'slug':
29
$templateOptions[$exportOptions['cc_type'][$ID]] = '{'. $element_name .'[1]}';
30
$templateOptions['is_update_' . $exportOptions['cc_type'][$ID]] = 1;
31
break;
32
case 'status':
33
$templateOptions['status_xpath'] = '{'. $element_name .'[1]}';
34
$templateOptions['is_update_status'] = 1;
11
$taxs_list = array();
12
$acf_list = array();
13
$implode_delimiter = ($exportOptions['delimiter'] == ',') ? '|' : ',';
14
+
15
+ if ( ! empty($exportOptions['is_user_export']) ) $templateOptions['pmui']['import_users'] = 1;
16
+
17
foreach ($exportOptions['ids'] as $ID => $value) {
18
if (empty($exportOptions['cc_type'][$ID])) continue;
19
$element_name = strtolower((!empty($exportOptions['cc_name'][$ID])) ? preg_replace('/[^a-z0-9_]/i', '', $exportOptions['cc_name'][$ID]) : 'untitled_' . $ID);
26
case 'title':
27
case 'content':
28
case 'author':
29
+ case 'parent':
30
case 'slug':
31
$templateOptions[$exportOptions['cc_type'][$ID]] = '{'. $element_name .'[1]}';
32
$templateOptions['is_update_' . $exportOptions['cc_type'][$ID]] = 1;
33
break;
34
+ case 'excerpt':
35
+ $templateOptions['post_excerpt'] = '{'. $element_name .'[1]}';
36
+ $templateOptions['is_update_' . $exportOptions['cc_type'][$ID]] = 1;
37
+ break;
38
case 'status':
39
$templateOptions['status_xpath'] = '{'. $element_name .'[1]}';
40
$templateOptions['is_update_status'] = 1;
helpers/wp_all_export_prepare_template_xml.php CHANGED
@@ -10,6 +10,9 @@ function wp_all_export_prepare_template_xml($exportOptions, &$templateOptions)
10
$attr_list = array();
11
$taxs_list = array();
12
$acf_list = array();
13
foreach ($exportOptions['ids'] as $ID => $value) {
14
if (empty($exportOptions['cc_type'][$ID])) continue;
15
$element_name = (!empty($exportOptions['cc_name'][$ID])) ? str_replace(':', '_', preg_replace('/[^a-z0-9_:-]/i', '', $exportOptions['cc_name'][$ID])) : 'untitled_' . $ID;
@@ -22,12 +25,15 @@ function wp_all_export_prepare_template_xml($exportOptions, &$templateOptions)
22
case 'title':
23
case 'content':
24
case 'author':
25
- case 'parent':
26
- case 'excerpt':
27
case 'slug':
28
$templateOptions[$exportOptions['cc_type'][$ID]] = '{'. $element_name .'[1]}';
29
$templateOptions['is_update_' . $exportOptions['cc_type'][$ID]] = 1;
30
break;
31
case 'status':
32
$templateOptions['status_xpath'] = '{'. $element_name .'[1]}';
33
$templateOptions['is_update_status'] = 1;
@@ -63,7 +69,7 @@ function wp_all_export_prepare_template_xml($exportOptions, &$templateOptions)
63
'url' => 'http://www.wpallimport.com/woocommerce-product-import/'
64
);
65
}
66
-
67
if ( ! in_array($exportOptions['cc_label'][$ID], $cf_list)) $cf_list[] = $exportOptions['cc_label'][$ID];
68
69
switch ($exportOptions['cc_label'][$ID]) {
@@ -256,7 +262,7 @@ function wp_all_export_prepare_template_xml($exportOptions, &$templateOptions)
256
$templateOptions['acf'][$field_options['group_id']] = 1;
257
}
258
259
- $field_tpl_key = 'acf_' . $element_name . '[1]';
260
261
$acf_list[] = '[' . $field_options['name'] . '] ' . $field_options['label'];
262
@@ -416,7 +422,7 @@ function wp_all_export_prepare_template_xml($exportOptions, &$templateOptions)
416
$templateOptions['tax_logic'][$taxonomy] = 'hierarchical';
417
$templateOptions['tax_hierarchical_logic_entire'][$taxonomy] = 1;
418
$templateOptions['multiple_term_assing'][$taxonomy] = 1;
419
- $templateOptions['tax_hierarchical_delim'][$taxonomy] = '&gt;';
420
$templateOptions['is_tax_hierarchical_group_delim'][$taxonomy] = 1;
421
$templateOptions['tax_hierarchical_group_delim'][$taxonomy] = '|';
422
$templateOptions['tax_hierarchical_xpath'][$taxonomy] = array('{'. $element_name .'[1]}');
10
$attr_list = array();
11
$taxs_list = array();
12
$acf_list = array();
13
+
14
+ if ( ! empty($exportOptions['is_user_export']) ) $templateOptions['pmui']['import_users'] = 1;
15
+
16
foreach ($exportOptions['ids'] as $ID => $value) {
17
if (empty($exportOptions['cc_type'][$ID])) continue;
18
$element_name = (!empty($exportOptions['cc_name'][$ID])) ? str_replace(':', '_', preg_replace('/[^a-z0-9_:-]/i', '', $exportOptions['cc_name'][$ID])) : 'untitled_' . $ID;
25
case 'title':
26
case 'content':
27
case 'author':
28
+ case 'parent':
29
case 'slug':
30
$templateOptions[$exportOptions['cc_type'][$ID]] = '{'. $element_name .'[1]}';
31
$templateOptions['is_update_' . $exportOptions['cc_type'][$ID]] = 1;
32
break;
33
+ case 'excerpt':
34
+ $templateOptions['post_excerpt'] = '{'. $element_name .'[1]}';
35
+ $templateOptions['is_update_' . $exportOptions['cc_type'][$ID]] = 1;
36
+ break;
37
case 'status':
38
$templateOptions['status_xpath'] = '{'. $element_name .'[1]}';
39
$templateOptions['is_update_status'] = 1;
69
'url' => 'http://www.wpallimport.com/woocommerce-product-import/'
70
);
71
}
72
+
73
if ( ! in_array($exportOptions['cc_label'][$ID], $cf_list)) $cf_list[] = $exportOptions['cc_label'][$ID];
74
75
switch ($exportOptions['cc_label'][$ID]) {
262
$templateOptions['acf'][$field_options['group_id']] = 1;
263
}
264
265
+ $field_tpl_key = $element_name . '[1]';
266
267
$acf_list[] = '[' . $field_options['name'] . '] ' . $field_options['label'];
268
422
$templateOptions['tax_logic'][$taxonomy] = 'hierarchical';
423
$templateOptions['tax_hierarchical_logic_entire'][$taxonomy] = 1;
424
$templateOptions['multiple_term_assing'][$taxonomy] = 1;
425
+ $templateOptions['tax_hierarchical_delim'][$taxonomy] = '>';
426
$templateOptions['is_tax_hierarchical_group_delim'][$taxonomy] = 1;
427
$templateOptions['tax_hierarchical_group_delim'][$taxonomy] = '|';
428
$templateOptions['tax_hierarchical_xpath'][$taxonomy] = array('{'. $element_name .'[1]}');
i18n/languages/wp_all_export_plugin-fr_FR.mo ADDED
Binary file
i18n/languages/wp_all_export_plugin-fr_FR.po ADDED
@@ -0,0 +1,1454 @@
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WP All Export\n"
4
+ "POT-Creation-Date: 2015-10-05 22:42-0600\n"
5
+ "PO-Revision-Date: 2016-01-27 12:30+0200\n"
6
+ "Language-Team: \n"
7
+ "MIME-Version: 1.0\n"
8
+ "Content-Type: text/plain; charset=UTF-8\n"
9
+ "Content-Transfer-Encoding: 8bit\n"
10
+ "X-Generator: Poedit 1.8.4\n"
11
+ "X-Poedit-Basepath: .\n"
12
+ "Plural-Forms: nplurals=2; plural=(n > 1);\n"
13
+ "X-Poedit-SourceCharset: UTF-8\n"
14
+ "X-Poedit-KeywordsList: __;_e;_ngettext;_n;_ngettext_noop;_n_noop;_x;_nx;"
15
+ "_nx_noop;_ex;esc_attr__;esc_attr_e;esc_attr_x;esc_html__;esc_html_e;"
16
+ "esc_html_x;_c;_nc\n"
17
+ "Last-Translator: \n"
18
+ "Language: fr_FR\n"
19
+ "X-Poedit-SearchPath-0: .\n"
20
+
21
+ #: static/js/jquery/moment.js:6
22
+ msgid "year"
23
+ msgstr "année"
24
+
25
+ #: actions/admin_menu.php:11 actions/admin_menu.php:14
26
+ #: actions/admin_menu.php:15 actions/admin_menu.php:16
27
+ #: actions/admin_menu.php:17 models/export/record.php:487
28
+ #: views/admin/export/index.php:9 views/admin/export/options.php:15
29
+ #: views/admin/export/process.php:9 views/admin/export/template.php:7
30
+ #: views/admin/manage/index.php:4 views/admin/settings/index.php:6
31
+ msgid "WP All Export"
32
+ msgstr "WP Tous Export"
33
+
34
+ #: actions/admin_menu.php:11
35
+ msgid "All Export"
36
+ msgstr ""
37
+
38
+ #: actions/admin_menu.php:14
39
+ msgid "Export to XML"
40
+ msgstr "Exporter vers XML"
41
+
42
+ #: actions/admin_menu.php:14
43
+ msgid "New Export"
44
+ msgstr "Nouvelle Export"
45
+
46
+ #: actions/admin_menu.php:15 views/admin/export/process.php:51
47
+ #: views/admin/manage/index.php:5
48
+ msgid "Manage Exports"
49
+ msgstr "Gérer exportations"
50
+
51
+ #: actions/admin_menu.php:16 views/admin/settings/index.php:7
52
+ msgid "Settings"
53
+ msgstr "Paramètres"
54
+
55
+ #: actions/admin_menu.php:17
56
+ msgid "Feedback"
57
+ msgstr "Réaction"
58
+
59
+ #: actions/wp_ajax_export_available_rules.php:6
60
+ #: actions/wp_ajax_export_available_rules.php:10
61
+ #: actions/wp_ajax_export_filtering.php:6
62
+ #: actions/wp_ajax_export_filtering.php:10
63
+ #: actions/wp_ajax_export_filtering_count.php:6
64
+ #: actions/wp_ajax_export_filtering_count.php:10
65
+ #: actions/wp_ajax_export_preview.php:8 actions/wp_ajax_export_preview.php:12
66
+ #: actions/wp_ajax_save_functions.php:6 actions/wp_ajax_save_functions.php:10
67
+ #: actions/wp_ajax_wpallexport.php:8 actions/wp_ajax_wpallexport.php:12
68
+ #: controllers/admin/manage.php:257 controllers/admin/manage.php:292
69
+ #: controllers/admin/manage.php:378 controllers/controller.php:114
70
+ msgid "Security check"
71
+ msgstr "Vérification de sécurité"
72
+
73
+ #: actions/wp_ajax_export_available_rules.php:21
74
+ #: actions/wp_ajax_export_filtering.php:50 views/admin/export/options.php:92
75
+ msgid "Select Rule"
76
+ msgstr "Sélectionner une règle"
77
+
78
+ #: actions/wp_ajax_export_available_rules.php:38
79
+ msgid "equals"
80
+ msgstr "est égal à"
81
+
82
+ #: actions/wp_ajax_export_available_rules.php:39
83
+ msgid "doesn't equal"
84
+ msgstr "n'est pas égal"
85
+
86
+ #: actions/wp_ajax_export_available_rules.php:40
87
+ msgid "greater than"
88
+ msgstr "supérieur à"
89
+
90
+ #: actions/wp_ajax_export_available_rules.php:41
91
+ msgid "equal to or greater than"
92
+ msgstr "plus grand ou égal à"
93
+
94
+ #: actions/wp_ajax_export_available_rules.php:42
95
+ msgid "less than"
96
+ msgstr "moins d'une"
97
+
98
+ #: actions/wp_ajax_export_available_rules.php:43
99
+ msgid "equal to or less than"
100
+ msgstr "plus petit ou égal à"
101
+
102
+ #: actions/wp_ajax_export_available_rules.php:45
103
+ msgid "contains"
104
+ msgstr "contient"
105
+
106
+ #: actions/wp_ajax_export_available_rules.php:46
107
+ msgid "doesn't contain"
108
+ msgstr "ne contient pas"
109
+
110
+ #: actions/wp_ajax_export_available_rules.php:47
111
+ msgid "is empty"
112
+ msgstr "est vide"
113
+
114
+ #: actions/wp_ajax_export_available_rules.php:48
115
+ msgid "is not empty"
116
+ msgstr "n'est pas vide"
117
+
118
+ #: actions/wp_ajax_export_filtering.php:30
119
+ msgid "Add Filtering Options"
120
+ msgstr "Options de filtrage"
121
+
122
+ #: actions/wp_ajax_export_filtering.php:36 views/admin/export/options.php:78
123
+ msgid "Element"
124
+ msgstr "Élément"
125
+
126
+ #: actions/wp_ajax_export_filtering.php:37 views/admin/export/options.php:79
127
+ msgid "Rule"
128
+ msgstr "Règle"
129
+
130
+ #: actions/wp_ajax_export_filtering.php:38 views/admin/export/options.php:80
131
+ msgid "Value"
132
+ msgstr "Valeur"
133
+
134
+ #: actions/wp_ajax_export_filtering.php:44 views/admin/export/options.php:86
135
+ msgid "Select Element"
136
+ msgstr "Sélectionner un élément"
137
+
138
+ #: actions/wp_ajax_export_filtering.php:57 views/admin/export/options.php:99
139
+ msgid "Add Rule"
140
+ msgstr "Ajouter une règle"
141
+
142
+ #: actions/wp_ajax_export_filtering.php:69 views/admin/export/options.php:112
143
+ msgid ""
144
+ "No filtering options. Add filtering options to only export records matching "
145
+ "some specified criteria."
146
+ msgstr ""
147
+ "Aucune des options de filtrage. Ajouter des options de filtrage uniquement à "
148
+ "l'exportation correspondant à certains critères spécifiés."
149
+
150
+ #: actions/wp_ajax_export_filtering.php:106
151
+ msgid "Apply Filters To Export Data"
152
+ msgstr "Appliquer des filtres d'exporter des données"
153
+
154
+ #: actions/wp_ajax_export_filtering.php:114 views/admin/export/options.php:159
155
+ msgid "Variable product matching rules: "
156
+ msgstr "Variable règles produits correspondants:"
157
+
158
+ #: actions/wp_ajax_export_filtering.php:116 views/admin/export/options.php:161
159
+ msgid "Strict"
160
+ msgstr "Strict"
161
+
162
+ #: actions/wp_ajax_export_filtering.php:117 views/admin/export/options.php:162
163
+ msgid "Permissive"
164
+ msgstr "permissif"
165
+
166
+ #: actions/wp_ajax_export_filtering.php:119 views/admin/export/options.php:164
167
+ msgid ""
168
+ "Strict matching requires all variations to pass in order for the product to "
169
+ "be exported. Permissive matching allows the product to be exported if any of "
170
+ "the variations pass."
171
+ msgstr ""
172
+ "Appariement strict exige que toutes les variations de passer pour que le "
173
+ "produit à exporter. Appariement permissive permet au produit d'être exporté "
174
+ "si l'une des variations passe."
175
+
176
+ #: actions/wp_ajax_export_filtering_count.php:68
177
+ msgid "Continue to Step 2 to choose data to include in the export file."
178
+ msgstr ""
179
+ "Passez à l'étape 2 pour sélectionner les données à inclure dans le fichier "
180
+ "d'exportation."
181
+
182
+ #: actions/wp_ajax_export_filtering_count.php:70
183
+ #, php-format
184
+ msgid "No matching %s found for selected filter rules"
185
+ msgstr "Aucune correspondance %s trouvé des règles de filtrage sélectionnés"
186
+
187
+ #: actions/wp_ajax_export_preview.php:125
188
+ msgid "Data not found."
189
+ msgstr "Données Exif introuvables"
190
+
191
+ #: actions/wp_ajax_export_preview.php:134
192
+ msgid "This format is not supported."
193
+ msgstr "Ce format vidéo n'est pas supporté."
194
+
195
+ #: actions/wp_ajax_save_functions.php:43
196
+ msgid "PHP code must be wrapped in \"&lt;?php\" and \"?&gt;\""
197
+ msgstr "Code PHP doit être enveloppé dans \"&lt;?php\" et \"?&gt;\""
198
+
199
+ #: actions/wp_ajax_save_functions.php:52
200
+ msgid "File has been successfully updated."
201
+ msgstr "a été mis à jour avec succès."
202
+
203
+ #: actions/wp_loaded.php:32 actions/wp_loaded.php:67
204
+ #, php-format
205
+ msgid "Export #%s is currently in manually process. Request skipped."
206
+ msgstr "Exporter #%s est actuellement en processus manuel Demande ignorée."
207
+
208
+ #: actions/wp_loaded.php:42
209
+ #, php-format
210
+ msgid "#%s Cron job triggered."
211
+ msgstr "La tâche Cron #%s est déclenchée."
212
+
213
+ #: actions/wp_loaded.php:46
214
+ #, php-format
215
+ msgid "Export #%s currently in process. Request skipped."
216
+ msgstr "Exporter #%s actuellement en cours. Demande ignorée."
217
+
218
+ #: actions/wp_loaded.php:49
219
+ #, php-format
220
+ msgid "Export #%s already triggered. Request skipped."
221
+ msgstr "Exporter #%s déjà déclenché. Demande ignorée."
222
+
223
+ #: actions/wp_loaded.php:64
224
+ #, php-format
225
+ msgid "Export #%s is not triggered. Request skipped."
226
+ msgstr "Exporter #%s est pas déclenché. Demande ignorée."
227
+
228
+ #: actions/wp_loaded.php:77
229
+ #, php-format
230
+ msgid "Export #%s complete"
231
+ msgstr "Exporter le #%s de complète de"
232
+
233
+ #: actions/wp_loaded.php:82
234
+ #, php-format
235
+ msgid "Records Processed %s"
236
+ msgstr "Enregistrements traités %s"
237
+
238
+ #: actions/wp_loaded.php:88
239
+ #, php-format
240
+ msgid "Export #%s already processing. Request skipped."
241
+ msgstr "Exporter #%s traitement déjà. Demande ignorée."
242
+
243
+ #: classes/updater.php:187
244
+ #, php-format
245
+ msgid ""
246
+ "There is a new version of %1$s available. <a target=\"_blank\" class="
247
+ "\"thickbox\" href=\"%2$s\">View version %3$s details</a>."
248
+ msgstr ""
249
+ "Une nouvelle version de %1$s est disponible. <a target=\"_blank\" class="
250
+ "\"thickbox\" href=\"%2$s\">Voir les détails de la version %3$s</a>."
251
+
252
+ #: classes/updater.php:194
253
+ #, php-format
254
+ msgid ""
255
+ "There is a new version of %1$s available. <a target=\"_blank\" class="
256
+ "\"thickbox\" href=\"%2$s\">View version %3$s details</a> or <a href=\"%4$s"
257
+ "\">update now</a>."
258
+ msgstr ""
259
+ "Une nouvelle version de %1$s est disponible. <a target=\"_blank\" class="
260
+ "\"thickbox\" href=\"%2$s\">Voir les détails de la version %3$s</a> ou <a "
261
+ "href=\"%4$s\">mettre à jour maintenant</a>."
262
+
263
+ #: classes/updater.php:346
264
+ msgid "You do not have permission to install plugin updates"
265
+ msgstr ""
266
+ "Vous n’avez pas la permission d’installer les mises à jour de l’extension."
267
+
268
+ #: classes/updater.php:346
269
+ msgid "Error"
270
+ msgstr "Erreur"
271
+
272
+ #: controllers/admin/export.php:202
273
+ msgid "You haven't selected any columns for export."
274
+ msgstr "Vous avez sélectionné aucun colonnes pour l'exportation."
275
+
276
+ #: controllers/admin/export.php:206
277
+ msgid "CSV delimiter must be specified"
278
+ msgstr "CSV délimiteur doit être spécifié"
279
+
280
+ #: controllers/admin/export.php:223 controllers/admin/export.php:305
281
+ msgid "Options updated"
282
+ msgstr "Options mises à jour !"
283
+
284
+ #: controllers/admin/manage.php:56
285
+ msgid "&laquo;"
286
+ msgstr "&laquo;"
287
+
288
+ #: controllers/admin/manage.php:57
289
+ msgid "&raquo;"
290
+ msgstr "&raquo;"
291
+
292
+ #: controllers/admin/manage.php:155 views/admin/manage/index.php:292
293
+ msgid "Export canceled"
294
+ msgstr "Exporter annulé"
295
+
296
+ #: controllers/admin/manage.php:221
297
+ msgid "Export deleted"
298
+ msgstr "Export supprimé"
299
+
300
+ #: controllers/admin/manage.php:249
301
+ #, php-format
302
+ msgid "%d %s deleted"
303
+ msgstr "%d %s supprimés"
304
+
305
+ #: controllers/admin/manage.php:249 views/admin/manage/bulk.php:10
306
+ msgid "export"
307
+ msgstr "Exporter"
308
+
309
+ #: controllers/admin/manage.php:343
310
+ msgid ""
311
+ "The other two files in this zip are the export file containing all of your "
312
+ "data and the import template for WP All Import. \n"
313
+ "\n"
314
+ "To import this data, create a new import with WP All Import and upload this "
315
+ "zip file."
316
+ msgstr ""
317
+ "Les deux autres fichiers dans ce zip sont le fichier d'exportation contenant "
318
+ "toutes vos données et le modèle d'importation pour WP toutes les "
319
+ "importations. Pour importer ces données, créer une nouvelle importation avec "
320
+ "WP toutes les importations et télécharger ce fichier zip."
321
+
322
+ #: controllers/admin/manage.php:412
323
+ msgid "File format not supported"
324
+ msgstr "Ce format de fichier n'est pas pris en charge."
325
+
326
+ #: controllers/admin/manage.php:418 controllers/admin/manage.php:423
327
+ msgid ""
328
+ "The exported file is missing and can't be downloaded. Please re-run your "
329
+ "export to re-generate it."
330
+ msgstr ""
331
+ "Le fichier exporté est absent et ne peut pas être téléchargé. S'il vous "
332
+ "plaît ré-exécuter votre exportation de re-générer."
333
+
334
+ #: controllers/admin/settings.php:21
335
+ msgid "Settings saved"
336
+ msgstr "Paramètres enregistrés !"
337
+
338
+ #: filters/wpallexport_custom_types.php:4
339
+ msgid "WooCommerce Products"
340
+ msgstr "WooCommerce Produits"
341
+
342
+ #: helpers/pmxe_render_xml_element.php:44 helpers/pmxe_render_xml_text.php:9
343
+ #, php-format
344
+ msgid "<strong>%s</strong> %s more"
345
+ msgstr "<strong>%s</strong> %s plus"
346
+
347
+ #: helpers/pmxe_render_xml_element.php:44 helpers/pmxe_render_xml_text.php:9
348
+ msgid "element"
349
+ msgstr "élément"
350
+
351
+ #: helpers/pmxe_render_xml_text.php:15
352
+ msgid "more"
353
+ msgstr "plus"
354
+
355
+ #: helpers/wp_all_export_get_cpt_name.php:9
356
+ msgid "Product Variations"
357
+ msgstr "Variations du Produit"
358
+
359
+ #: helpers/wp_all_export_get_cpt_name.php:19 views/admin/export/index.php:67
360
+ msgid "Users"
361
+ msgstr "Utilisateurs"
362
+
363
+ #: helpers/wp_all_export_get_cpt_name.php:19
364
+ msgid "User"
365
+ msgstr "Utilisateur"
366
+
367
+ #: helpers/wp_all_export_get_cpt_name.php:23
368
+ msgid "Records"
369
+ msgstr "Les enregistrements"
370
+
371
+ #: helpers/wp_all_export_get_cpt_name.php:23
372
+ msgid "Record"
373
+ msgstr "Dossier"
374
+
375
+ #: libraries/XmlExportACF.php:156 libraries/XmlExportACF.php:206
376
+ msgid "ACF"
377
+ msgstr "ACF"
378
+
379
+ #: libraries/XmlExportEngine.php:168
380
+ msgid "Standard"
381
+ msgstr "Standard"
382
+
383
+ #: libraries/XmlExportEngine.php:172
384
+ msgid "Taxonomies"
385
+ msgstr "Taxonomies"
386
+
387
+ #: libraries/XmlExportEngine.php:176
388
+ msgid "Custom Fields"
389
+ msgstr "Champs personnalisés"
390
+
391
+ #: libraries/XmlExportEngine.php:180
392
+ msgid "Other"
393
+ msgstr "Other"
394
+
395
+ #: libraries/XmlExportEngine.php:187 libraries/XmlExportUser.php:199
396
+ msgid "General"
397
+ msgstr "Généralités"
398
+
399
+ #: libraries/XmlExportEngine.php:242
400
+ msgid "WP Query field is required"
401
+ msgstr "WP champ Query est nécessaire"
402
+
403
+ #: libraries/XmlExportEngine.php:250
404
+ msgid "No matching users found"
405
+ msgstr "Aucun utilisateur correspondant n'a été trouvé"
406
+
407
+ #: libraries/XmlExportEngine.php:262
408
+ msgid "Invalid query"
409
+ msgstr "Requête non valide"
410
+
411
+ #: libraries/XmlExportEngine.php:265
412
+ msgid "No matching posts found for WP_Query expression specified"
413
+ msgstr ""
414
+ "Pas de messages correspondants trouvés pour l'expression WP_Query spécifiées"
415
+
416
+ #: libraries/XmlExportEngine.php:289 libraries/XmlExportEngine.php:305
417
+ msgid "No matching posts found for selected post types"
418
+ msgstr ""
419
+ "Pas de messages correspondants trouvés pour les types de poste sélectionnés"
420
+
421
+ #: libraries/XmlExportEngine.php:423
422
+ #: libraries/XmlExportWooCommerceOrder.php:875
423
+ msgid "All"
424
+ msgstr "Tous"
425
+
426
+ #: libraries/XmlExportEngine.php:442 views/admin/export/template.php:73
427
+ #: views/admin/export/template.php:106 views/admin/export/template.php:133
428
+ msgid "Delete field"
429
+ msgstr "Supprimer champ"
430
+
431
+ #: libraries/XmlExportUser.php:218 libraries/XmlExportUser.php:292
432
+ #: libraries/XmlExportWooCommerce.php:111
433
+ #: libraries/XmlExportWooCommerce.php:279
434
+ #: libraries/XmlExportWooCommerceOrder.php:130
435
+ #: libraries/XmlExportWooCommerceOrder.php:934
436
+ #: views/admin/export/template/new_field_cpt.php:78
437
+ #: views/admin/export/template/new_field_shop_order.php:33
438
+ #: views/admin/export/template/new_field_user.php:57
439
+ msgid "Advanced"
440
+ msgstr "Avancé"
441
+
442
+ #: libraries/XmlExportUser.php:231
443
+ msgid "Network"
444
+ msgstr "Réseau"
445
+
446
+ #: libraries/XmlExportWooCommerce.php:98 libraries/XmlExportWooCommerce.php:283
447
+ msgid "Product Data"
448
+ msgstr "Caractéristiques du produit"
449
+
450
+ #: libraries/XmlExportWooCommerceOrder.php:65
451
+ #: libraries/XmlExportWooCommerceOrder.php:914
452
+ msgid "Order"
453
+ msgstr "Ordre"
454
+
455
+ #: libraries/XmlExportWooCommerceOrder.php:67
456
+ #: libraries/XmlExportWooCommerceOrder.php:949
457
+ msgid "Order ID"
458
+ msgstr "Numéro de commande"
459
+
460
+ #: libraries/XmlExportWooCommerceOrder.php:68
461
+ #: libraries/XmlExportWooCommerceOrder.php:950
462
+ msgid "Order Key"
463
+ msgstr "Afin clé"
464
+
465
+ #: libraries/XmlExportWooCommerceOrder.php:69
466
+ #: libraries/XmlExportWooCommerceOrder.php:951
467
+ msgid "Order Date"
468
+ msgstr "Date de la Commande"
469
+
470
+ #: libraries/XmlExportWooCommerceOrder.php:70
471
+ #: libraries/XmlExportWooCommerceOrder.php:952
472
+ msgid "Completed Date"
473
+ msgstr "Date d'achèvement"
474
+
475
+ #: libraries/XmlExportWooCommerceOrder.php:71
476
+ #: libraries/XmlExportWooCommerceOrder.php:953
477
+ #: views/admin/export/template/new_field_cpt.php:9
478
+ msgid "Title"
479
+ msgstr "Titre"
480
+
481
+ #: libraries/XmlExportWooCommerceOrder.php:72
482
+ #: libraries/XmlExportWooCommerceOrder.php:954
483
+ msgid "Order Status"
484
+ msgstr "Užsakymo būsena"
485
+
486
+ #: libraries/XmlExportWooCommerceOrder.php:73
487
+ #: libraries/XmlExportWooCommerceOrder.php:955
488
+ msgid "Order Currency"
489
+ msgstr "Afin devise"
490
+
491
+ #: libraries/XmlExportWooCommerceOrder.php:74
492
+ #: libraries/XmlExportWooCommerceOrder.php:956
493
+ msgid "Payment Method"
494
+ msgstr "Mokėjimo būdas"
495
+
496
+ #: libraries/XmlExportWooCommerceOrder.php:75
497
+ #: libraries/XmlExportWooCommerceOrder.php:957
498
+ msgid "Order Total"
499
+ msgstr "Total Commande"
500
+
501
+ #: libraries/XmlExportWooCommerceOrder.php:79
502
+ #: libraries/XmlExportWooCommerceOrder.php:918
503
+ msgid "Customer"
504
+ msgstr "Client"
505
+
506
+ #: libraries/XmlExportWooCommerceOrder.php:875
507
+ msgid "Data"
508
+ msgstr "Données"
509
+
510
+ #: libraries/XmlExportWooCommerceOrder.php:922
511
+ msgid "Items"
512
+ msgstr "Articles"
513
+
514
+ #: libraries/XmlExportWooCommerceOrder.php:926
515
+ msgid "Taxes & Shipping"
516
+ msgstr "Taxes & Livraison"
517
+
518
+ #: libraries/XmlExportWooCommerceOrder.php:930
519
+ msgid "Fees & Discounts"
520
+ msgstr "Frais & Réductions"
521
+
522
+ #: libraries/XmlExportWooCommerceOrder.php:970
523
+ msgid "Product ID"
524
+ msgstr "ID Produit :"
525
+
526
+ #: libraries/XmlExportWooCommerceOrder.php:971
527
+ msgid "SKU"
528
+ msgstr "Réference"
529
+
530
+ #: libraries/XmlExportWooCommerceOrder.php:972
531
+ msgid "Product Name"
532
+ msgstr "Nom du projet"
533
+
534
+ #: libraries/XmlExportWooCommerceOrder.php:973
535
+ msgid "Product Variation Details"
536
+ msgstr "Produit Variation Détails"
537
+
538
+ #: libraries/XmlExportWooCommerceOrder.php:974
539
+ msgid "Quantity"
540
+ msgstr "Quantité"
541
+
542
+ #: libraries/XmlExportWooCommerceOrder.php:975
543
+ msgid "Item Cost"
544
+ msgstr "coût de l’article"
545
+
546
+ #: libraries/XmlExportWooCommerceOrder.php:976
547
+ msgid "Item Total"
548
+ msgstr "Total des biens"
549
+
550
+ #: libraries/XmlExportWooCommerceOrder.php:985
551
+ msgid "Rate Code (per tax)"
552
+ msgstr "Code de taux (par l'impôt)"
553
+
554
+ #: libraries/XmlExportWooCommerceOrder.php:986
555
+ msgid "Rate Percentage (per tax)"
556
+ msgstr "Rate Pourcentage (par l'impôt)"
557
+
558
+ #: libraries/XmlExportWooCommerceOrder.php:987
559
+ msgid "Amount (per tax)"
560
+ msgstr "Montant (par l'impôt)"
561
+
562
+ #: libraries/XmlExportWooCommerceOrder.php:988
563
+ msgid "Total Tax Amount"
564
+ msgstr "Montant total"
565
+
566
+ #: libraries/XmlExportWooCommerceOrder.php:989
567
+ msgid "Shipping Method"
568
+ msgstr "Méthode de livraison"
569
+
570
+ #: libraries/XmlExportWooCommerceOrder.php:990
571
+ msgid "Shipping Cost"
572
+ msgstr "Frais de livraison"
573
+
574
+ #: libraries/XmlExportWooCommerceOrder.php:999
575
+ msgid "Discount Amount (per coupon)"
576
+ msgstr "Montant de la remise (par coupon)"
577
+
578
+ #: libraries/XmlExportWooCommerceOrder.php:1000
579
+ msgid "Coupons Used"
580
+ msgstr "Valeur des coupons utilisés"
581
+
582
+ #: libraries/XmlExportWooCommerceOrder.php:1001
583
+ msgid "Total Discount Amount"
584
+ msgstr "Montant total de Discount"
585
+
586
+ #: libraries/XmlExportWooCommerceOrder.php:1002
587
+ msgid "Fee Amount (per surcharge)"
588
+ msgstr "Montant des frais (par supplément)"
589
+
590
+ #: libraries/XmlExportWooCommerceOrder.php:1003
591
+ msgid "Total Fee Amount"
592
+ msgstr "Montant total des frais"
593
+
594
+ #: libraries/XmlExportWooCommerceOrder.php:1013
595
+ msgid "Customer User ID"
596
+ msgstr "Client ID de l'utilisateur"
597
+
598
+ #: libraries/XmlExportWooCommerceOrder.php:1014
599
+ msgid "Customer Note"
600
+ msgstr "Note client"
601
+
602
+ #: views/admin/export/index.php:10 views/admin/export/options.php:16
603
+ #: views/admin/export/process.php:10 views/admin/export/template.php:8
604
+ msgid "Export to XML / CSV"
605
+ msgstr "Exporter au format CSV"
606
+
607
+ #: views/admin/export/index.php:13 views/admin/export/options.php:19
608
+ #: views/admin/export/process.php:13 views/admin/export/template.php:11
609
+ msgid "Support"
610
+ msgstr "Assistance"
611
+
612
+ #: views/admin/export/index.php:13 views/admin/export/options.php:19
613
+ #: views/admin/export/process.php:13 views/admin/export/template.php:11
614
+ msgid "Documentation"
615
+ msgstr "Documentation"
616
+
617
+ #: views/admin/export/index.php:30
618
+ msgid "First, choose what to export."
619
+ msgstr "Tout d'abord, choisir ce que d'exporter."
620
+
621
+ #: views/admin/export/index.php:33
622
+ msgid "Specific Post Type"
623
+ msgstr "Type Contribution spécifique"
624
+
625
+ #: views/admin/export/index.php:37
626
+ msgid "WP_Query Results"
627
+ msgstr "Résultats WP_Query"
628
+
629
+ #: views/admin/export/index.php:56
630
+ msgid "Choose a post type..."
631
+ msgstr "Choisissez le type de post"
632
+
633
+ #: views/admin/export/index.php:79
634
+ msgid "Post Type Query"
635
+ msgstr "Type Contribution Query"
636
+
637
+ #: views/admin/export/index.php:80
638
+ msgid "User Query"
639
+ msgstr "Requêtes de l'utilisateur"
640
+
641
+ #: views/admin/export/index.php:112
642
+ msgid "Skip to Step 3"
643
+ msgstr "Passer à l'étape 3"
644
+
645
+ #: views/admin/export/index.php:114
646
+ msgid "Continue to Step 2"
647
+ msgstr "Passez à l'étape 2"
648
+
649
+ #: views/admin/export/index.php:116
650
+ msgid "Auto Generate Export Template"
651
+ msgstr "Générer automatiquement Exporter le modèle"
652
+
653
+ #: views/admin/export/index.php:123 views/admin/export/options.php:238
654
+ #: views/admin/export/process.php:56 views/admin/export/template.php:214
655
+ #: views/admin/manage/index.php:359 views/admin/manage/scheduling.php:57
656
+ #: views/admin/manage/templates.php:19 views/admin/settings/index.php:91
657
+ msgid "Created by"
658
+ msgstr "Créé par"
659
+
660
+ #: views/admin/export/options.php:43
661
+ msgid "Your export is ready to run."
662
+ msgstr "Votre exportation est prêt à fonctionner."
663
+
664
+ #: views/admin/export/options.php:45
665
+ #, php-format
666
+ msgid "WP All Export will export %d %s."
667
+ msgstr "WP toute exportation exportera %d %s."
668
+
669
+ #: views/admin/export/options.php:54 views/admin/export/options.php:227
670
+ msgid "Confirm & Run Export"
671
+ msgstr "Confirmation d'exportation"
672
+
673
+ #: views/admin/export/options.php:70
674
+ msgid "Filters"
675
+ msgstr "Filtres"
676
+
677
+ #: views/admin/export/options.php:185
678
+ msgid "Advanced Export"
679
+ msgstr "Export"
680
+
681
+ #: views/admin/export/options.php:195
682
+ msgid "Include BOM in export file"
683
+ msgstr "Inclure nomenclature dans le fichier d'exportation"
684
+
685
+ #: views/admin/export/options.php:196
686
+ msgid ""
687
+ "The BOM will help some programs like Microsoft Excel read your export file "
688
+ "if it includes non-English characters."
689
+ msgstr ""
690
+ "La nomenclature aidera certains programmes comme Microsoft Excel lire votre "
691
+ "fichier d'exportation si elle comporte des caractères non-anglais."
692
+
693
+ #: views/admin/export/options.php:199
694
+ msgid "In each iteration, process"
695
+ msgstr "Dans chaque itération, processus"
696
+
697
+ #: views/admin/export/options.php:199
698
+ msgid "records"
699
+ msgstr "enregistrements"
700
+
701
+ #: views/admin/export/options.php:200
702
+ msgid ""
703
+ "WP All Export must be able to process this many records in less than your "
704
+ "server's timeout settings. If your export fails before completion, to "
705
+ "troubleshoot you should lower this number."
706
+ msgstr ""
707
+ "WP toute exportation doit être en mesure de traiter ces nombreux "
708
+ "enregistrements en moins les paramètres de délai d'attente de votre serveur. "
709
+ "Si votre exportation échoue avant la fin, pour résoudre les problèmes que "
710
+ "vous devriez réduire ce nombre."
711
+
712
+ #: views/admin/export/options.php:206
713
+ msgid "Friendly Name:"
714
+ msgstr "Nom convivial"
715
+
716
+ #: views/admin/export/options.php:207
717
+ msgid "Save friendly name..."
718
+ msgstr "Enregistrer nom convivial …"
719
+
720
+ #: views/admin/export/options.php:225
721
+ msgid "Back to Step 2"
722
+ msgstr "Retour à l'étape 2"
723
+
724
+ #: views/admin/export/options.php:230 views/admin/export/template.php:207
725
+ msgid "Back to Manage Exports"
726
+ msgstr "Retour à Gérer exportations"
727
+
728
+ #: views/admin/export/options.php:231
729
+ msgid "Save Export Configuration"
730
+ msgstr "Sauvegarder la configuration d'exportation"
731
+
732
+ #: views/admin/export/process.php:22
733
+ msgid "Export <span id=\"status\">in Progress...</span>"
734
+ msgstr "Exporter <span id=\"status\">la progression...</span>"
735
+
736
+ #: views/admin/export/process.php:23
737
+ msgid ""
738
+ "Exporting may take some time. Please do not close your browser or refresh "
739
+ "the page until the process is complete."
740
+ msgstr ""
741
+ "Exportatrice peut prendre un certain temps. S'il vous plaît ne pas fermer "
742
+ "votre navigateur ou actualiser la page jusqu'à ce que le processus est "
743
+ "terminé."
744
+
745
+ #: views/admin/export/process.php:29
746
+ msgid "Time Elapsed"
747
+ msgstr "temps écoulé"
748
+
749
+ #: views/admin/export/process.php:31
750
+ msgid "Exported"
751
+ msgstr "Eksportuotas"
752
+
753
+ #: views/admin/export/process.php:36
754
+ msgid "Export Complete!"
755
+ msgstr "Exportation terminée."
756
+
757
+ #: views/admin/export/process.php:37
758
+ msgid "WP All Export successfully exported your data!"
759
+ msgstr "WP toute exportation exporté avec succès vos données!"
760
+
761
+ #: views/admin/export/process.php:38
762
+ msgid "Download Data"
763
+ msgstr "Télécharger de nouvelles données…"
764
+
765
+ #: views/admin/export/process.php:45 views/admin/manage/index.php:139
766
+ #: views/admin/manage/index.php:145
767
+ msgid "Bundle"
768
+ msgstr "Carton pour vrac"
769
+
770
+ #: views/admin/export/process.php:46
771
+ msgid "Settings & Data for WP All Import"
772
+ msgstr "Réglages et données pour WP Tous importation"
773
+
774
+ #: views/admin/export/template.php:23
775
+ msgid "Choose data to include in the export file."
776
+ msgstr "Choisissez données à inclure dans le fichier d'exportation."
777
+
778
+ #: views/admin/export/template.php:115
779
+ msgid ""
780
+ "Drag & drop data from \"Available Data\" on the right to include it in the "
781
+ "export or click \"Add Field To Export\" below."
782
+ msgstr ""
783
+ "Drag & drop de données \"données disponibles\" sur la droite de l'inclure "
784
+</