Import any XML or CSV File to WordPress - Version 3.2.3

Version Description

  • fixed re-count record when a file has been changed at an import setting screen
  • fixed unlink attachment source when posts updated/deleted
  • added a limit 10 to the existing meta values
Download this release

Release Info

Developer soflyy
Plugin Icon 128x128 Import any XML or CSV File to WordPress
Version 3.2.3
Comparing to
See all releases

Code changes from version 3.2.0 to 3.2.3

classes/chunk.php CHANGED
@@ -76,7 +76,7 @@ class PMXI_Chunk {
76
  $this->file = $file;
77
 
78
  if (empty($this->options['element'])){
79
- $founded_tags = array();
80
 
81
  if (function_exists('stream_filter_register')){
82
  stream_filter_register('preprocessxml', 'preprocessXml_filter');
@@ -90,8 +90,12 @@ class PMXI_Chunk {
90
  while ( @$reader->read()) {
91
  switch ($reader->nodeType) {
92
  case (XMLREADER::ELEMENT):
93
- array_push($founded_tags, str_replace(":", "_", $reader->localName));
94
- //if (count($founded_tags) > 100) break(2);
 
 
 
 
95
  break;
96
  default:
97
 
@@ -100,7 +104,7 @@ class PMXI_Chunk {
100
  }
101
  unset($reader);
102
 
103
- if (!empty($founded_tags)) {
104
  $element_counts = array_count_values($founded_tags);
105
  if (!empty($element_counts)){
106
  foreach ($element_counts as $tag => $count)
@@ -109,10 +113,12 @@ class PMXI_Chunk {
109
 
110
  arsort($element_counts);
111
  }
112
- }
113
 
114
  if (!empty($this->cloud)){
115
 
 
 
116
  $main_elements = array('node', 'product', 'job', 'deal', 'entry', 'item', 'property', 'listing', 'hotel', 'record', 'article', 'post', 'book');
117
 
118
  foreach ($this->cloud as $element_name => $value) {
@@ -122,11 +128,11 @@ class PMXI_Chunk {
122
  }
123
  }
124
  if (empty($this->options['element'])){
125
- foreach ($element_counts as $el => $count) {
126
  $this->options['element'] = $el;
127
  break;
128
  }
129
- }
130
  }
131
  }
132
 
76
  $this->file = $file;
77
 
78
  if (empty($this->options['element'])){
79
+ //$founded_tags = array();
80
 
81
  if (function_exists('stream_filter_register')){
82
  stream_filter_register('preprocessxml', 'preprocessXml_filter');
90
  while ( @$reader->read()) {
91
  switch ($reader->nodeType) {
92
  case (XMLREADER::ELEMENT):
93
+ if (array_key_exists(str_replace(":", "_", $reader->localName), $this->cloud))
94
+ $this->cloud[str_replace(":", "_", $reader->localName)]++;
95
+ else
96
+ $this->cloud[str_replace(":", "_", $reader->localName)] = 1;
97
+ //array_push($founded_tags, str_replace(":", "_", $reader->localName));
98
+
99
  break;
100
  default:
101
 
104
  }
105
  unset($reader);
106
 
107
+ /*if (!empty($founded_tags)) {
108
  $element_counts = array_count_values($founded_tags);
109
  if (!empty($element_counts)){
110
  foreach ($element_counts as $tag => $count)
113
 
114
  arsort($element_counts);
115
  }
116
+ } */
117
 
118
  if (!empty($this->cloud)){
119
 
120
+ arsort($this->cloud);
121
+
122
  $main_elements = array('node', 'product', 'job', 'deal', 'entry', 'item', 'property', 'listing', 'hotel', 'record', 'article', 'post', 'book');
123
 
124
  foreach ($this->cloud as $element_name => $value) {
128
  }
129
  }
130
  if (empty($this->options['element'])){
131
+ foreach ($this->cloud as $el => $count) {
132
  $this->options['element'] = $el;
133
  break;
134
  }
135
+ }
136
  }
137
  }
138
 
controllers/admin/import.php CHANGED
@@ -1532,26 +1532,12 @@ class PMXI_Admin_Import extends PMXI_Controller_Admin {
1532
  case 'upload':
1533
  $filePath = $this->input->post('filepath');
1534
 
1535
- $uploader = new PMXI_Upload($filePath, $this->errors);
1536
- $upload_result = $uploader->upload();
1537
-
1538
-
1539
- break;
1540
- case 'url':
1541
- $filePath = $this->input->post('url');
1542
 
1543
- $uploader = new PMXI_Upload($filePath, $this->errors);
1544
- $upload_result = $uploader->url($this->data['import']->feed_type);
1545
-
1546
  break;
1547
- case 'file':
1548
-
1549
- $filePath = $this->input->post('file');
1550
-
1551
- $uploader = new PMXI_Upload($filePath, $this->errors);
1552
- $upload_result = $uploader->file();
1553
-
1554
- break;
1555
  default:
1556
 
1557
  $this->errors->add('form-validation', __('WP All Import doesn\'t support this import type.', 'pmxi_plugin'));
@@ -1564,11 +1550,12 @@ class PMXI_Admin_Import extends PMXI_Controller_Admin {
1564
  }
1565
  elseif ($upload_result !== false and $this->data['import']['path'] != $filePath) {
1566
 
1567
- $file = new PMXI_Chunk($upload_result['filePath'], array('element' => ( ! empty($upload_result['root_element'])) ? $upload_result['root_element'] : ''));
1568
 
1569
- if ( ! empty($file->options['element']) ) {
 
1570
 
1571
- $upload_result['root_element'] = $file->options['element'];
1572
 
1573
  $baseXpath = $this->data['import']->xpath;
1574
 
@@ -1603,6 +1590,8 @@ class PMXI_Admin_Import extends PMXI_Controller_Admin {
1603
 
1604
  if ( ! empty($file->options['element']) ) {
1605
 
 
 
1606
  $baseXpath = '/' . $upload_result['root_element'];
1607
 
1608
  $loop = 0;
@@ -1634,6 +1623,8 @@ class PMXI_Admin_Import extends PMXI_Controller_Admin {
1634
 
1635
  }
1636
 
 
 
1637
  $post['delimiter'] = ( ! empty($upload_result['is_csv']) ) ? $upload_result['is_csv'] : '';
1638
 
1639
  }
@@ -1751,31 +1742,34 @@ class PMXI_Admin_Import extends PMXI_Controller_Admin {
1751
  break;*/
1752
  }
1753
 
1754
- // unlick previous files
1755
- $history = new PMXI_File_List();
1756
- $history->setColumns('id', 'name', 'registered_on', 'path')->getBy(array('import_id' => $this->data['import']->id), 'id DESC');
1757
- if ($history->count()){
1758
- foreach ($history as $file){
1759
- if ( @file_exists($file['path']) and $file['path'] != $upload_result['filePath'] ){
1760
- if (in_array($this->data['import']->type, array('upload')))
1761
- pmxi_remove_source($file['path'], false);
1762
- else
1763
- pmxi_remove_source($file['path']);
 
 
 
 
 
 
1764
  }
1765
- $history_file = new PMXI_File_Record();
1766
- $history_file->getBy('id', $file['id']);
1767
- if ( ! $history_file->isEmpty()) $history_file->delete();
1768
  }
1769
- }
1770
-
1771
- $history_file = new PMXI_File_Record();
1772
- $history_file->set(array(
1773
- 'name' => $this->data['import']->name,
1774
- 'import_id' => $this->data['import']->id,
1775
- 'path' => $upload_result['filePath'],
1776
- //'contents' => $this->get_xml(),
1777
- 'registered_on' => date('Y-m-d H:i:s')
1778
- ))->save();
1779
 
1780
  if ( ! $this->warnings->get_error_codes()) {
1781
 
@@ -1969,6 +1963,14 @@ class PMXI_Admin_Import extends PMXI_Controller_Admin {
1969
 
1970
  PMXI_Plugin::$session->set('update_previous', $import->id);
1971
 
 
 
 
 
 
 
 
 
1972
  // unlink previous files
1973
  $history = new PMXI_File_List();
1974
  $history->setColumns('id', 'name', 'registered_on', 'path')->getBy(array('import_id' => $import->id), 'id DESC');
1532
  case 'upload':
1533
  $filePath = $this->input->post('filepath');
1534
 
1535
+ if ($this->data['import']['path'] != $filePath){
1536
+ $uploader = new PMXI_Upload($filePath, $this->errors);
1537
+ $upload_result = $uploader->upload();
1538
+ }
 
 
 
1539
 
 
 
 
1540
  break;
 
 
 
 
 
 
 
 
1541
  default:
1542
 
1543
  $this->errors->add('form-validation', __('WP All Import doesn\'t support this import type.', 'pmxi_plugin'));
1550
  }
1551
  elseif ($upload_result !== false and $this->data['import']['path'] != $filePath) {
1552
 
1553
+ $file = new PMXI_Chunk($upload_result['filePath'], array('element' => ( ! empty($this->data['import']->root_element)) ? $this->data['import']->root_element : ''));
1554
 
1555
+ $root_element = '';
1556
+ if ( ! empty($file->options['element']) ) {
1557
 
1558
+ $root_element = $file->options['element'];
1559
 
1560
  $baseXpath = $this->data['import']->xpath;
1561
 
1590
 
1591
  if ( ! empty($file->options['element']) ) {
1592
 
1593
+ $root_element = $file->options['element'];
1594
+
1595
  $baseXpath = '/' . $upload_result['root_element'];
1596
 
1597
  $loop = 0;
1623
 
1624
  }
1625
 
1626
+ $upload_result['root_element'] = $root_element;
1627
+
1628
  $post['delimiter'] = ( ! empty($upload_result['is_csv']) ) ? $upload_result['is_csv'] : '';
1629
 
1630
  }
1742
  break;*/
1743
  }
1744
 
1745
+ // if new file is successfully uploaded
1746
+ if (!empty($upload_result['filePath'])){
1747
+ // unlick previous files
1748
+ $history = new PMXI_File_List();
1749
+ $history->setColumns('id', 'name', 'registered_on', 'path')->getBy(array('import_id' => $this->data['import']->id), 'id DESC');
1750
+ if ($history->count()){
1751
+ foreach ($history as $file){
1752
+ if ( @file_exists($file['path']) and $file['path'] != $upload_result['filePath'] ){
1753
+ if (in_array($this->data['import']->type, array('upload')))
1754
+ pmxi_remove_source($file['path'], false);
1755
+ else
1756
+ pmxi_remove_source($file['path']);
1757
+ }
1758
+ $history_file = new PMXI_File_Record();
1759
+ $history_file->getBy('id', $file['id']);
1760
+ if ( ! $history_file->isEmpty()) $history_file->delete();
1761
  }
 
 
 
1762
  }
1763
+
1764
+ $history_file = new PMXI_File_Record();
1765
+ $history_file->set(array(
1766
+ 'name' => $this->data['import']->name,
1767
+ 'import_id' => $this->data['import']->id,
1768
+ 'path' => $upload_result['filePath'],
1769
+ //'contents' => $this->get_xml(),
1770
+ 'registered_on' => date('Y-m-d H:i:s')
1771
+ ))->save();
1772
+ }
1773
 
1774
  if ( ! $this->warnings->get_error_codes()) {
1775
 
1963
 
1964
  PMXI_Plugin::$session->set('update_previous', $import->id);
1965
 
1966
+ if (empty($import->options['encoding'])){
1967
+ $currentOptions = $import->options;
1968
+ $currentOptions['encoding'] = 'UTF-8';
1969
+ $import->set(array(
1970
+ 'options' => $currentOptions
1971
+ ))->update();
1972
+ }
1973
+
1974
  // unlink previous files
1975
  $history = new PMXI_File_List();
1976
  $history->setColumns('id', 'name', 'registered_on', 'path')->getBy(array('import_id' => $import->id), 'id DESC');
controllers/admin/manage.php CHANGED
@@ -208,6 +208,14 @@ class PMXI_Admin_Manage extends PMXI_Controller_Admin {
208
  $filePath = $upload_result['filePath'];
209
  }
210
 
 
 
 
 
 
 
 
 
211
  @set_time_limit(0);
212
 
213
  $local_paths = ( ! empty($local_paths) ) ? $local_paths : array($filePath);
208
  $filePath = $upload_result['filePath'];
209
  }
210
 
211
+ if (empty($item->options['encoding'])){
212
+ $currentOptions = $item->options;
213
+ $currentOptions['encoding'] = 'UTF-8';
214
+ $item->set(array(
215
+ 'options' => $currentOptions
216
+ ))->update();
217
+ }
218
+
219
  @set_time_limit(0);
220
 
221
  $local_paths = ( ! empty($local_paths) ) ? $local_paths : array($filePath);
controllers/admin/settings.php CHANGED
@@ -199,7 +199,7 @@ class PMXI_Admin_Settings extends PMXI_Controller_Admin {
199
  $r = $wpdb->get_results("
200
  SELECT DISTINCT postmeta.meta_value
201
  FROM ".$wpdb->postmeta." as postmeta
202
- WHERE postmeta.meta_key='".$meta_key."'
203
  ", ARRAY_A);
204
 
205
  $meta_values = array();
@@ -438,7 +438,7 @@ class PMXI_Admin_Settings extends PMXI_Controller_Admin {
438
  }
439
 
440
  // Return JSON-RPC response
441
- echo json_encode(array("jsonrpc" => "2.0", "error" => null, "result" => null, "id" => "id", "name" => $filePath)); die;
442
 
443
  }
444
 
199
  $r = $wpdb->get_results("
200
  SELECT DISTINCT postmeta.meta_value
201
  FROM ".$wpdb->postmeta." as postmeta
202
+ WHERE postmeta.meta_key='".$meta_key."' LIMIT 0,10
203
  ", ARRAY_A);
204
 
205
  $meta_values = array();
438
  }
439
 
440
  // Return JSON-RPC response
441
+ exit(json_encode(array("jsonrpc" => "2.0", "error" => null, "result" => null, "id" => "id", "name" => $filePath)));
442
 
443
  }
444
 
models/import/record.php CHANGED
@@ -228,7 +228,7 @@ class PMXI_Import_Record extends PMXI_Model_Record {
228
  require_once(ABSPATH . 'wp-admin/includes/taxonomy.php');
229
 
230
  $taxonomies = array();
231
- $exclude_taxonomies = (class_exists('PMWI_Plugin')) ? array('post_format', 'product_type') : array('post_format');
232
  $post_taxonomies = array_diff_key(get_taxonomies_by_object_type(array($this->options['custom_type']), 'object'), array_flip($exclude_taxonomies));
233
  if ( ! empty($post_taxonomies) ):
234
  foreach ($post_taxonomies as $ctx): if ("" == $ctx->labels->name or (class_exists('PMWI_Plugin') and strpos($ctx->name, "pa_") === 0 and $this->options['custom_type'] == "product")) continue;
@@ -475,7 +475,12 @@ class PMXI_Import_Record extends PMXI_Model_Record {
475
  }
476
 
477
  $chunk == 1 and $logger and call_user_func($logger, __('Composing unique keys...', 'pmxi_plugin'));
478
- $unique_keys = XmlImportParser::factory($xml, $cxpath, $this->options['unique_key'], $file)->parse($records); $tmp_files[] = $file;
 
 
 
 
 
479
 
480
  $chunk == 1 and $logger and call_user_func($logger, __('Processing posts...', 'pmxi_plugin'));
481
 
@@ -775,7 +780,7 @@ class PMXI_Import_Record extends PMXI_Model_Record {
775
  // handle obsolete attachments (i.e. delete or keep) according to import settings
776
  if ( $this->options['update_all_data'] == 'yes' or ( $this->options['update_all_data'] == 'no' and $this->options['is_update_images'] and $this->options['update_images_logic'] == "full_update")){
777
  $logger and call_user_func($logger, sprintf(__('Deleting images for `%s`', 'pmxi_plugin'), $articleData['post_title']));
778
- wp_delete_attachments($articleData['ID'], $this->options['download_images'], 'images');
779
  }
780
 
781
  }
@@ -1513,7 +1518,7 @@ class PMXI_Import_Record extends PMXI_Model_Record {
1513
  empty($this->options['is_keep_attachments']) and wp_delete_attachments($missingPost['post_id'], true, 'files');
1514
  // Remove images
1515
  $logger and call_user_func($logger, __('Deleting images...', 'pmxi_plugin'));
1516
- empty($this->options['is_keep_imgs']) and wp_delete_attachments($missingPost['post_id'], $this->options['download_images']);
1517
 
1518
  $logger and call_user_func($logger, sprintf(__('Deleting post `%s` from pmxi_posts table', 'pmxi_plugin'), $missingPost['post_id']));
1519
  if ( ! empty($missingPost['id'])){
@@ -1726,13 +1731,11 @@ class PMXI_Import_Record extends PMXI_Model_Record {
1726
  $post = new PMXI_Post_List();
1727
  if ( ! $keepPosts) {
1728
  $ids = array();
1729
- foreach ($post->getBy('import_id', $this->id)->convertRecords() as $p) {
1730
- if ( $this->options['custom_type'] == 'import_users' ){
1731
- // Remove attachments
1732
- empty($this->options['is_keep_attachments']) and wp_delete_attachments($p->post_id, true, 'files');
1733
- // Remove images
1734
- empty($this->options['is_keep_imgs']) and wp_delete_attachments($p->post_id, $this->options['download_images']);
1735
- }
1736
  $ids[] = $p->post_id;
1737
  }
1738
 
228
  require_once(ABSPATH . 'wp-admin/includes/taxonomy.php');
229
 
230
  $taxonomies = array();
231
+ $exclude_taxonomies = (class_exists('PMWI_Plugin')) ? array('post_format', 'product_type', 'product_shipping_class') : array('post_format');
232
  $post_taxonomies = array_diff_key(get_taxonomies_by_object_type(array($this->options['custom_type']), 'object'), array_flip($exclude_taxonomies));
233
  if ( ! empty($post_taxonomies) ):
234
  foreach ($post_taxonomies as $ctx): if ("" == $ctx->labels->name or (class_exists('PMWI_Plugin') and strpos($ctx->name, "pa_") === 0 and $this->options['custom_type'] == "product")) continue;
475
  }
476
 
477
  $chunk == 1 and $logger and call_user_func($logger, __('Composing unique keys...', 'pmxi_plugin'));
478
+ if (!empty($this->options['unique_key'])){
479
+ $unique_keys = XmlImportParser::factory($xml, $cxpath, $this->options['unique_key'], $file)->parse($records); $tmp_files[] = $file;
480
+ }
481
+ else{
482
+ count($titles) and $unique_keys = array_fill(0, count($titles), '');
483
+ }
484
 
485
  $chunk == 1 and $logger and call_user_func($logger, __('Processing posts...', 'pmxi_plugin'));
486
 
780
  // handle obsolete attachments (i.e. delete or keep) according to import settings
781
  if ( $this->options['update_all_data'] == 'yes' or ( $this->options['update_all_data'] == 'no' and $this->options['is_update_images'] and $this->options['update_images_logic'] == "full_update")){
782
  $logger and call_user_func($logger, sprintf(__('Deleting images for `%s`', 'pmxi_plugin'), $articleData['post_title']));
783
+ wp_delete_attachments($articleData['ID'], ($this->options['download_images'] == 'yes'), 'images');
784
  }
785
 
786
  }
1518
  empty($this->options['is_keep_attachments']) and wp_delete_attachments($missingPost['post_id'], true, 'files');
1519
  // Remove images
1520
  $logger and call_user_func($logger, __('Deleting images...', 'pmxi_plugin'));
1521
+ empty($this->options['is_keep_imgs']) and wp_delete_attachments($missingPost['post_id'], ($this->options['download_images'] == 'yes'));
1522
 
1523
  $logger and call_user_func($logger, sprintf(__('Deleting post `%s` from pmxi_posts table', 'pmxi_plugin'), $missingPost['post_id']));
1524
  if ( ! empty($missingPost['id'])){
1731
  $post = new PMXI_Post_List();
1732
  if ( ! $keepPosts) {
1733
  $ids = array();
1734
+ foreach ($post->getBy('import_id', $this->id)->convertRecords() as $p) {
1735
+ // Remove attachments
1736
+ empty($this->options['is_keep_attachments']) and wp_delete_attachments($p->post_id, true, 'files');
1737
+ // Remove images
1738
+ empty($this->options['is_keep_imgs']) and wp_delete_attachments($p->post_id, ($this->options['download_images'] == 'yes'));
 
 
1739
  $ids[] = $p->post_id;
1740
  }
1741
 
plugin.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: WP All Import
4
  Plugin URI: http://www.wpallimport.com/upgrade-to-pro?utm_source=wordpress.org&utm_medium=plugins-page&utm_campaign=free+plugin
5
  Description: The most powerful solution for importing XML and CSV files to WordPress. Create Posts and Pages with content from any XML or CSV file. A paid upgrade to WP All Import Pro is available for support and additional features.
6
- Version: 3.2.0
7
  Author: Soflyy
8
  */
9
 
@@ -25,7 +25,7 @@ define('PMXI_ROOT_URL', rtrim(plugin_dir_url(__FILE__), '/'));
25
  */
26
  define('PMXI_PREFIX', 'pmxi_');
27
 
28
- define('PMXI_VERSION', '3.2.0');
29
 
30
  define('PMXI_EDITION', 'free');
31
 
@@ -315,6 +315,8 @@ final class PMXI_Plugin {
315
  }
316
 
317
  }
 
 
318
 
319
  }
320
  else {
@@ -322,12 +324,9 @@ final class PMXI_Plugin {
322
  // migration fixes for vesions
323
  switch ($is_migrated) {
324
 
325
- case '3.2.0 RC1':
326
- # code..
327
- break;
328
-
329
  case '3.2.1':
330
- # code..
331
  break;
332
 
333
  default:
@@ -622,11 +621,7 @@ final class PMXI_Plugin {
622
  }
623
  }
624
 
625
- dbDelta($plugin_queries);
626
-
627
- $this->__ver_1_04_transition_fix();
628
-
629
- $this->__add_feed_type_fix(); // feature to version 2.22
630
 
631
  // sync data between plugin tables and wordpress (mostly for the case when plugin is reactivated)
632
 
@@ -647,13 +642,10 @@ final class PMXI_Plugin {
647
  $locale = apply_filters( 'plugin_locale', get_locale(), 'pmxi_plugin' );
648
 
649
  load_plugin_textdomain( 'pmxi_plugin', false, dirname( plugin_basename( __FILE__ ) ) . "/i18n/languages" );
650
- }
 
 
651
 
652
- /**
653
- * Method perfoms transition from version when file uploads has been stored in dabase to the solution when it stored on disk
654
- * NOTE: the function can be removed when plugin version progress and it's sure matter nobody has ver 1.03
655
- */
656
- public function __ver_1_04_transition_fix() {
657
  $uploads = wp_upload_dir();
658
 
659
  if ( ! is_dir($uploads['basedir'] . '/wpallimport/logs') or ! is_writable($uploads['basedir'] . '/wpallimport/logs')) {
@@ -681,12 +673,9 @@ final class PMXI_Plugin {
681
  break;
682
  }
683
  }
684
- }
685
-
686
- public function __add_feed_type_fix(){
687
 
688
  $table = $this->getTablePrefix() . 'imports';
689
- global $wpdb;
690
  $tablefields = $wpdb->get_results("DESCRIBE {$table};");
691
  $parent_import_id = false;
692
  $iteration = false;
3
  Plugin Name: WP All Import
4
  Plugin URI: http://www.wpallimport.com/upgrade-to-pro?utm_source=wordpress.org&utm_medium=plugins-page&utm_campaign=free+plugin
5
  Description: The most powerful solution for importing XML and CSV files to WordPress. Create Posts and Pages with content from any XML or CSV file. A paid upgrade to WP All Import Pro is available for support and additional features.
6
+ Version: 3.2.3
7
  Author: Soflyy
8
  */
9
 
25
  */
26
  define('PMXI_PREFIX', 'pmxi_');
27
 
28
+ define('PMXI_VERSION', '3.2.3');
29
 
30
  define('PMXI_EDITION', 'free');
31
 
315
  }
316
 
317
  }
318
+
319
+ $this->__fix_db_schema(); // feature to version 3.2.0
320
 
321
  }
322
  else {
324
  // migration fixes for vesions
325
  switch ($is_migrated) {
326
 
327
+ case '3.2.0':
 
 
 
328
  case '3.2.1':
329
+ $this->__fix_db_schema(); // feature to version 3.2.0
330
  break;
331
 
332
  default:
621
  }
622
  }
623
 
624
+ dbDelta($plugin_queries);
 
 
 
 
625
 
626
  // sync data between plugin tables and wordpress (mostly for the case when plugin is reactivated)
627
 
642
  $locale = apply_filters( 'plugin_locale', get_locale(), 'pmxi_plugin' );
643
 
644
  load_plugin_textdomain( 'pmxi_plugin', false, dirname( plugin_basename( __FILE__ ) ) . "/i18n/languages" );
645
+ }
646
+
647
+ public function __fix_db_schema(){
648
 
 
 
 
 
 
649
  $uploads = wp_upload_dir();
650
 
651
  if ( ! is_dir($uploads['basedir'] . '/wpallimport/logs') or ! is_writable($uploads['basedir'] . '/wpallimport/logs')) {
673
  break;
674
  }
675
  }
 
 
 
676
 
677
  $table = $this->getTablePrefix() . 'imports';
678
+
679
  $tablefields = $wpdb->get_results("DESCRIBE {$table};");
680
  $parent_import_id = false;
681
  $iteration = false;
readme.txt CHANGED
@@ -1,14 +1,16 @@
1
  === Import any XML or CSV File to WordPress ===
2
- Contributors: soflyy
3
  Requires at least: 3.6.1
4
- Tested up to: 4.0
5
- Stable tag: 3.2.0
6
- Tags: wordpress csv import, wordpress xml import, xml, csv, datafeed, import, migrate, import csv to wordpress, import xml to wordpress, advanced xml import, advanced csv import, bulk csv import, bulk xml import, bulk data import, xml to custom post type, csv to custom post type, woocommerce csv import, woocommerce xml import, csv import, import csv, xml import, import xml
7
 
8
- WP All Import is an extremely powerful plugin that makes it easy to import any XML or CSV file to WordPress.
9
 
10
  == Description ==
11
 
 
 
12
  *“It's a wonderful plugin that does so much, so well that it's hard to list all of the features. But I'll tell you this, I was able to import the content of a pair of websites running the ModX CMS into a WordPress install in less than 30 minutes. No joke!”*
13
  **Alex Vasquez** - DigiSavvy Co-Founder & WordCamp Los Angeles Organizer
14
 
@@ -43,6 +45,31 @@ For technical support from the developers, please consider purchasing WP All Imp
43
 
44
  Need to [import XML and CSV to WooCommerce?](http://wordpress.org/plugins/woocommerce-xml-csv-product-import/) Check out our WooCommerce add-on.
45
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  == Premium Support ==
47
  Upgrade to the professional edition of WP All Import for premium support.
48
 
@@ -76,6 +103,18 @@ Does it work with special character encoding like Hebrew, Arabic, Chinese, etc?
76
 
77
  == Changelog ==
78
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  = 3.2.0 =
80
  * IMPORTANT: WP All Import v4 (3.2.0) is a MAJOR update. Read this post before upgrading: http://www.wpallimport.com/2014/11/free-version-wordpress-org-update-information
81
  * speed up the import of taxonomies/categories
1
  === Import any XML or CSV File to WordPress ===
2
+ Contributors: soflyy, wpallimport
3
  Requires at least: 3.6.1
4
+ Tested up to: 4.1
5
+ Stable tag: 3.2.3
6
+ Tags: wordpress csv import, wordpress xml import, xml, csv, datafeed, import, migrate, import csv to wordpress, import xml to wordpress, advanced xml import, advanced csv import, bulk csv import, bulk xml import, bulk data import, xml to custom post type, csv to custom post type, woocommerce csv import, woocommerce xml import, csv import, import csv, xml import, import xml, csv importer
7
 
8
+ WP All Import is an extremely powerful importer that makes it easy to import any XML or CSV file to WordPress.
9
 
10
  == Description ==
11
 
12
+ = WP All Import - Simple & Powerful XML / CSV Importer Plugin =
13
+
14
  *“It's a wonderful plugin that does so much, so well that it's hard to list all of the features. But I'll tell you this, I was able to import the content of a pair of websites running the ModX CMS into a WordPress install in less than 30 minutes. No joke!”*
15
  **Alex Vasquez** - DigiSavvy Co-Founder & WordCamp Los Angeles Organizer
16
 
45
 
46
  Need to [import XML and CSV to WooCommerce?](http://wordpress.org/plugins/woocommerce-xml-csv-product-import/) Check out our WooCommerce add-on.
47
 
48
+ = WordPress CSV Imports =
49
+
50
+ Read on to learn more about the CSV importer functionality of WP All Import. Importing CSVs with WP All Import is exactly the same as importing XML files, because internally, WP All Import actually converts your CSV file to an XML file on the fly. You can use the same XPath filtering options and all the same features you have when importing XML files.
51
+
52
+ CSV imports don't require your CSV file to have a specific structure. Your CSV file can use any column names/headings. You can map the columns in your CSV file to the appropriate places in WordPress during the import process.
53
+
54
+ When importing CSV files, your CSV should have UTF-8 encoding if you are having trouble importing special characters.
55
+
56
+ In step 2 of a CSV import, you can specify an alternative delimiter if you aren't using a comma. WP All Import can import CSVs that are pipe-delimited, # delimited, or delimited/separated by any other character.
57
+
58
+ For CSV import tutorials and example files, visit our [documentation](http://www.wpallimport.com/documentation/?utm_source=free-plugin&utm_medium=dot-org&utm_campaign=documentation). Please keep in mind CSV imports with WP All Import are just like XML imports - you have all the same functionality, and the process is exactly the same. Any of our tutorial videos that apply to XML files also apply to importing CSV files, so if you see a tutorial with us importing an XML file, know that you can follow the exact same steps for a CSV import.
59
+
60
+ = Add-Ons =
61
+
62
+ A number of premium add-ons are available to add functionality to the importer and make XML & CSV import tasks to complex plugins simple.
63
+
64
+ - Advanced Custom Fields Add-On - [ACF](http://www.advancedcustomfields.com/) XML & CSV importer
65
+ - WooCommerce Add-On - XML & CSV importer for all [WooCommerce](http://wordpress.org/plugins/woocommerce) product types
66
+ - User Import Add-On - XML & CSV importer for users, including user_meta
67
+ - Link Cloak Add-On - Auto-create redirects for links present during an XML or CSV import
68
+
69
+ Learn more about our add-ons at [http://www.wpallimport.com/add-ons](http://www.wpallimport.com/add-ons?utm_source=free-plugin&utm_medium=dot-org&utm_campaign=add-ons)
70
+
71
+ A [developer API](http://www.wpallimport.com/documentation/developers/action-reference/?utm_source=free-plugin&utm_medium=dot-org&utm_campaign=documentation) (action hooks) is also available.
72
+
73
  == Premium Support ==
74
  Upgrade to the professional edition of WP All Import for premium support.
75
 
103
 
104
  == Changelog ==
105
 
106
+ = 3.2.3 =
107
+ * fixed re-count record when a file has been changed at an import setting screen
108
+ * fixed unlink attachment source when posts updated/deleted
109
+ * added a limit 10 to the existing meta values
110
+
111
+ = 3.2.2 =
112
+ * fixed database schema
113
+ * uploading large files
114
+
115
+ = 3.2.1 =
116
+ * fixed updating import settings
117
+
118
  = 3.2.0 =
119
  * IMPORTANT: WP All Import v4 (3.2.0) is a MAJOR update. Read this post before upgrading: http://www.wpallimport.com/2014/11/free-version-wordpress-org-update-information
120
  * speed up the import of taxonomies/categories
static/js/jquery/jquery.ui-contextmenu.min.js CHANGED
File without changes