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 | 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 +13 -7
- controllers/admin/import.php +46 -44
- controllers/admin/manage.php +8 -0
- controllers/admin/settings.php +2 -2
- models/import/record.php +14 -11
- plugin.php +11 -22
- readme.txt +44 -5
- static/js/jquery/jquery.ui-contextmenu.min.js +0 -0
classes/chunk.php
CHANGED
@@ -76,7 +76,7 @@ class PMXI_Chunk {
|
|
76 |
$this->file = $file;
|
77 |
|
78 |
if (empty($this->options['element'])){
|
79 |
-
|
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 |
-
|
94 |
-
|
|
|
|
|
|
|
|
|
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 ($
|
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 |
-
$
|
1536 |
-
|
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($
|
1568 |
|
1569 |
-
|
|
|
1570 |
|
1571 |
-
$
|
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 |
-
//
|
1755 |
-
|
1756 |
-
|
1757 |
-
|
1758 |
-
|
1759 |
-
|
1760 |
-
|
1761 |
-
|
1762 |
-
|
1763 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
1772 |
-
|
1773 |
-
|
1774 |
-
|
1775 |
-
|
1776 |
-
|
1777 |
-
|
1778 |
-
|
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 |
-
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
1731 |
-
|
1732 |
-
|
1733 |
-
|
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.
|
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.
|
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
|
326 |
-
# code..
|
327 |
-
break;
|
328 |
-
|
329 |
case '3.2.1':
|
330 |
-
|
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 |
-
|
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.
|
5 |
-
Stable tag: 3.2.
|
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
|
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
|