Version Description
- Security fix.
Download this release
Release Info
Developer | webtoffee |
Plugin | Product Import Export for WooCommerce |
Version | 1.7.4 |
Comparing to | |
See all releases |
Code changes from version 1.7.3 to 1.7.4
- includes/class-wf-prodimpexpcsv-admin-screen.php +3 -2
- includes/class-wf-prodimpexpcsv-ajax-handler.php +6 -0
- includes/exporter/class-wf-prodimpexpcsv-exporter.php +3 -3
- includes/importer/class-wf-csv-parser.php +2 -3
- includes/importer/class-wf-prodimpexpcsv-product-import.php +49 -89
- includes/importer/views/html-wf-import-greeting.php +33 -4
- product-import-export-for-woo.php +9 -10
- readme.txt +4 -1
includes/class-wf-prodimpexpcsv-admin-screen.php
CHANGED
@@ -89,9 +89,10 @@ class WF_ProdImpExpCsv_Admin_Screen {
|
|
89 |
|
90 |
if (strtotime(get_option('xa_pipe_plugin_installed_date')) < strtotime('-7 days')) {
|
91 |
|
92 |
-
if (!
|
93 |
return $header_text;
|
94 |
}
|
|
|
95 |
|
96 |
$current_screen = get_current_screen();
|
97 |
|
@@ -123,7 +124,7 @@ class WF_ProdImpExpCsv_Admin_Screen {
|
|
123 |
*/
|
124 |
public function review_rated() {
|
125 |
|
126 |
-
if (!
|
127 |
wp_die(-1);
|
128 |
}
|
129 |
update_option('xa_pipe_plugin_review_rated', 1);
|
89 |
|
90 |
if (strtotime(get_option('xa_pipe_plugin_installed_date')) < strtotime('-7 days')) {
|
91 |
|
92 |
+
if (!WF_Product_Import_Export_CSV::hf_user_permission()) {
|
93 |
return $header_text;
|
94 |
}
|
95 |
+
|
96 |
|
97 |
$current_screen = get_current_screen();
|
98 |
|
124 |
*/
|
125 |
public function review_rated() {
|
126 |
|
127 |
+
if (!WF_Product_Import_Export_CSV::hf_user_permission()) {
|
128 |
wp_die(-1);
|
129 |
}
|
130 |
update_option('xa_pipe_plugin_review_rated', 1);
|
includes/class-wf-prodimpexpcsv-ajax-handler.php
CHANGED
@@ -17,6 +17,9 @@ class WF_ProdImpExpCsv_AJAX_Handler {
|
|
17 |
* Ajax event for importing a CSV
|
18 |
*/
|
19 |
public function csv_import_request() {
|
|
|
|
|
|
|
20 |
define( 'WP_LOAD_IMPORTERS', true );
|
21 |
WF_ProdImpExpCsv_Importer::product_importer();
|
22 |
}
|
@@ -25,6 +28,9 @@ class WF_ProdImpExpCsv_AJAX_Handler {
|
|
25 |
* From regenerate thumbnails plugin
|
26 |
*/
|
27 |
public function regenerate_thumbnail() {
|
|
|
|
|
|
|
28 |
@error_reporting( 0 ); // Don't break the JSON result
|
29 |
|
30 |
header( 'Content-type: application/json' );
|
17 |
* Ajax event for importing a CSV
|
18 |
*/
|
19 |
public function csv_import_request() {
|
20 |
+
if (!wp_verify_nonce($_POST['wt_nonce'],WF_PROD_IMP_EXP_ID) && !WF_Product_Import_Export_CSV::hf_user_permission()) {
|
21 |
+
wp_die(__('Access Denied', 'product-import-export-for-woo'));
|
22 |
+
}
|
23 |
define( 'WP_LOAD_IMPORTERS', true );
|
24 |
WF_ProdImpExpCsv_Importer::product_importer();
|
25 |
}
|
28 |
* From regenerate thumbnails plugin
|
29 |
*/
|
30 |
public function regenerate_thumbnail() {
|
31 |
+
if (!wp_verify_nonce($_POST['wt_nonce'], WF_PROD_IMP_EXP_ID) && !WF_Product_Import_Export_CSV::hf_user_permission() ) {
|
32 |
+
wp_die(__('Access Denied', 'product-import-export-for-woo'));
|
33 |
+
}
|
34 |
@error_reporting( 0 ); // Don't break the JSON result
|
35 |
|
36 |
header( 'Content-type: application/json' );
|
includes/exporter/class-wf-prodimpexpcsv-exporter.php
CHANGED
@@ -15,11 +15,11 @@ class WF_ProdImpExpCsv_Exporter {
|
|
15 |
$limit = 100;
|
16 |
$current_offset = ! empty( $_POST['offset'] ) ? intval( $_POST['offset'] ) : 0;
|
17 |
$csv_columns = include( 'data/data-wf-post-columns.php' );
|
18 |
-
$user_columns_name = ! empty( $_POST['columns_name'] ) ? $_POST['columns_name'] : $csv_columns;
|
19 |
$product_taxonomies = get_object_taxonomies( 'product', 'name' );
|
20 |
-
$export_columns = ! empty( $_POST['columns'] ) ? $_POST['columns'] : '';
|
21 |
$include_hidden_meta = ! empty( $_POST['include_hidden_meta'] ) ? true : false;
|
22 |
-
$product_limit = ! empty( $_POST['product_limit'] ) ?
|
23 |
$exclude_hidden_meta_columns = include( 'data/data-wf-hidden-meta-columns.php' );
|
24 |
|
25 |
if ( $limit > $export_limit )
|
15 |
$limit = 100;
|
16 |
$current_offset = ! empty( $_POST['offset'] ) ? intval( $_POST['offset'] ) : 0;
|
17 |
$csv_columns = include( 'data/data-wf-post-columns.php' );
|
18 |
+
$user_columns_name = ! empty( $_POST['columns_name'] ) ? array_map('sanitize_text_field', $_POST['columns_name']) : $csv_columns;
|
19 |
$product_taxonomies = get_object_taxonomies( 'product', 'name' );
|
20 |
+
$export_columns = ! empty( $_POST['columns'] ) ? array_map('sanitize_text_field', $_POST['columns'] ): '';
|
21 |
$include_hidden_meta = ! empty( $_POST['include_hidden_meta'] ) ? true : false;
|
22 |
+
$product_limit = ! empty( $_POST['product_limit'] ) ? intval( $_POST['product_limit'] ) : '';
|
23 |
$exclude_hidden_meta_columns = include( 'data/data-wf-hidden-meta-columns.php' );
|
24 |
|
25 |
if ( $limit > $export_limit )
|
includes/importer/class-wf-csv-parser.php
CHANGED
@@ -68,7 +68,6 @@ class WF_CSV_Parser {
|
|
68 |
|
69 |
// Put all CSV data into an associative array
|
70 |
if (( $handle = fopen($file, "r") ) !== FALSE) {
|
71 |
-
$delimiter = WF_ProdImpExpCsv_Product_Import::wt_get_csv_delimiter($delimiter); //(strtolower($delimiter) == 'tab' ? "\t" : $delimiter);
|
72 |
$header = fgetcsv($handle, 0, $delimiter);
|
73 |
if ($start_pos != 0)
|
74 |
fseek($handle, $start_pos);
|
@@ -107,7 +106,7 @@ class WF_CSV_Parser {
|
|
107 |
$row[$s_heading] = ( isset($postmeta[$key]) ) ? $this->format_data_from_csv($postmeta[$key], $enc) : '';
|
108 |
|
109 |
if (!empty($eval_field[strtolower($heading)]))
|
110 |
-
$row[$s_heading] = $this->evaluate_field($row[$s_heading], $eval_field[strtolower($heading)]);
|
111 |
|
112 |
// Raw Headers stores the actual column name in the CSV
|
113 |
$raw_headers[$s_heading] = $heading;
|
@@ -887,7 +886,7 @@ class WF_CSV_Parser {
|
|
887 |
public function hf_currency_formatter($price) {
|
888 |
|
889 |
$decimal_seperator = wc_get_price_decimal_separator();
|
890 |
-
return preg_replace("[^0-9
|
891 |
}
|
892 |
|
893 |
public function wt_save_product_price( $post_meta) {
|
68 |
|
69 |
// Put all CSV data into an associative array
|
70 |
if (( $handle = fopen($file, "r") ) !== FALSE) {
|
|
|
71 |
$header = fgetcsv($handle, 0, $delimiter);
|
72 |
if ($start_pos != 0)
|
73 |
fseek($handle, $start_pos);
|
106 |
$row[$s_heading] = ( isset($postmeta[$key]) ) ? $this->format_data_from_csv($postmeta[$key], $enc) : '';
|
107 |
|
108 |
if (!empty($eval_field[strtolower($heading)]))
|
109 |
+
$row[$s_heading] = $this->evaluate_field($row[$s_heading], esc_attr($eval_field[strtolower($heading)]));
|
110 |
|
111 |
// Raw Headers stores the actual column name in the CSV
|
112 |
$raw_headers[$s_heading] = $heading;
|
886 |
public function hf_currency_formatter($price) {
|
887 |
|
888 |
$decimal_seperator = wc_get_price_decimal_separator();
|
889 |
+
return preg_replace("/[^0-9\'.$decimal_seperator.']/", "", $price);
|
890 |
}
|
891 |
|
892 |
public function wt_save_product_price( $post_meta) {
|
includes/importer/class-wf-prodimpexpcsv-product-import.php
CHANGED
@@ -20,7 +20,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
20 |
var $merge_empty_cells;
|
21 |
|
22 |
// mappings from old information to new
|
23 |
-
var $processed_terms = array();
|
24 |
var $processed_posts = array();
|
25 |
var $post_orphans = array();
|
26 |
var $attachments = array();
|
@@ -57,10 +57,12 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
57 |
global $woocommerce, $wpdb;
|
58 |
|
59 |
if ( ! empty( $_POST['delimiter'] ) ) {
|
60 |
-
$this->delimiter = stripslashes(
|
61 |
}else if ( ! empty( $_GET['delimiter'] ) ) {
|
62 |
-
$this->delimiter = stripslashes(
|
63 |
}
|
|
|
|
|
64 |
|
65 |
if ( ! $this->delimiter )
|
66 |
$this->delimiter = ',';
|
@@ -92,7 +94,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
92 |
if(!empty($_GET['file_url']))
|
93 |
$this->file_url = esc_attr( $_GET['file_url'] );
|
94 |
if(!empty($_GET['file_id']))
|
95 |
-
$this->id = $_GET['file_id'] ;
|
96 |
|
97 |
if ( !empty($_GET['clearmapping']) || $this->handle_upload() )
|
98 |
$this->import_options();
|
@@ -140,7 +142,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
140 |
|
141 |
if ( ! window.console ) { window.console = function(){}; }
|
142 |
|
143 |
-
var processed_terms = [];
|
144 |
var processed_posts = [];
|
145 |
var post_orphans = [];
|
146 |
var attachments = [];
|
@@ -154,13 +156,14 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
154 |
var data = {
|
155 |
action: 'woocommerce_csv_import_request',
|
156 |
file: '<?php echo addslashes( $file ); ?>',
|
157 |
-
mapping:
|
158 |
-
eval_field: '<?php echo stripslashes(json_encode(($_POST['eval_field']),JSON_HEX_APOS)) ?>',
|
159 |
delimiter: '<?php echo $this->delimiter; ?>',
|
160 |
merge_empty_cells: '<?php echo $this->merge_empty_cells; ?>',
|
161 |
merge: '<?php echo $this->merge; ?>',
|
162 |
start_pos: start_pos,
|
163 |
end_pos: end_pos,
|
|
|
164 |
};
|
165 |
data.eval_field = $.parseJSON(data.eval_field);
|
166 |
return $.ajax({
|
@@ -190,9 +193,9 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
190 |
|
191 |
} else if ( results.import_results && $( results.import_results ).size() > 0 ) {
|
192 |
|
193 |
-
$.each( results.processed_terms, function( index, value ) {
|
194 |
-
processed_terms.push( value );
|
195 |
-
});
|
196 |
|
197 |
$.each( results.processed_posts, function( index, value ) {
|
198 |
processed_posts.push( value );
|
@@ -255,7 +258,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
255 |
|
256 |
// Get CSV positions
|
257 |
if ( ( $handle = fopen( $file, "r" ) ) !== FALSE ) {
|
258 |
-
$csv_delimiter =
|
259 |
while ( ( $postmeta = fgetcsv( $handle, 0, $csv_delimiter ) ) !== FALSE ) {
|
260 |
$count++;
|
261 |
|
@@ -318,7 +321,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
318 |
$.ajax({
|
319 |
type: 'POST',
|
320 |
url: ajaxurl,
|
321 |
-
data: { action: "woocommerce_csv_import_regenerate_thumbnail", id: id },
|
322 |
success: function( response ) {
|
323 |
//console.log('On Success:-'+JSON.stringify(response, null, 4));
|
324 |
if ( response !== Object( response ) || ( typeof response.success === "undefined" && typeof response.error === "undefined" ) ) {
|
@@ -358,11 +361,12 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
358 |
var data = {
|
359 |
action: 'woocommerce_csv_import_request',
|
360 |
file: '<?php echo $file; ?>',
|
361 |
-
processed_terms: processed_terms,
|
362 |
processed_posts: processed_posts,
|
363 |
post_orphans: post_orphans,
|
364 |
upsell_skus: upsell_skus,
|
365 |
-
crosssell_skus: crosssell_skus
|
|
|
366 |
};
|
367 |
|
368 |
$.ajax({
|
@@ -384,10 +388,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
384 |
}
|
385 |
break;
|
386 |
case 3 :
|
387 |
-
|
388 |
-
if ( ! current_user_can( 'manage_woocommerce' ) )
|
389 |
-
die();
|
390 |
-
|
391 |
add_filter( 'http_request_timeout', array( $this, 'bump_request_timeout' ) );
|
392 |
|
393 |
if ( function_exists( 'gc_enable' ) )
|
@@ -399,8 +400,8 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
399 |
$wpdb->hide_errors();
|
400 |
|
401 |
$file = stripslashes( $_POST['file'] );
|
402 |
-
$mapping = json_decode( stripslashes( $_POST['mapping']
|
403 |
-
$eval_field = $_POST['eval_field'];
|
404 |
$start_pos = isset( $_POST['start_pos'] ) ? absint( $_POST['start_pos'] ) : 0;
|
405 |
$end_pos = isset( $_POST['end_pos'] ) ? absint( $_POST['end_pos'] ) : '';
|
406 |
|
@@ -412,7 +413,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
412 |
|
413 |
$results = array();
|
414 |
$results['import_results'] = $this->import_results;
|
415 |
-
$results['processed_terms'] = $this->processed_terms;
|
416 |
$results['processed_posts'] = $this->processed_posts;
|
417 |
$results['post_orphans'] = $this->post_orphans;
|
418 |
$results['attachments'] = $this->attachments;
|
@@ -425,9 +426,6 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
425 |
exit;
|
426 |
break;
|
427 |
case 4 :
|
428 |
-
// Check access - cannot use nonce here as it will expire after multiple requests
|
429 |
-
if ( ! current_user_can( 'manage_woocommerce' ) )
|
430 |
-
die();
|
431 |
|
432 |
add_filter( 'http_request_timeout', array( $this, 'bump_request_timeout' ) );
|
433 |
|
@@ -439,11 +437,11 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
439 |
@flush();
|
440 |
$wpdb->hide_errors();
|
441 |
|
442 |
-
$this->processed_terms = isset( $_POST['processed_terms'] ) ? $_POST['processed_terms'] : array();
|
443 |
-
$this->processed_posts = isset( $_POST['processed_posts']) ? $_POST['processed_posts']
|
444 |
-
$this->post_orphans = isset( $_POST['post_orphans']) ? $_POST['post_orphans'] : array();
|
445 |
-
$this->crosssell_skus = isset( $_POST['crosssell_skus']) ?
|
446 |
-
$this->upsell_skus = isset( $_POST['upsell_skus']) ?
|
447 |
|
448 |
_e( 'Step 1...', 'product-import-export-for-woo' ) . ' ';
|
449 |
|
@@ -535,7 +533,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
535 |
if ( ( $handle = fopen( $file, "r" ) ) !== FALSE ) {
|
536 |
|
537 |
$row = $raw_headers = array();
|
538 |
-
$csv_delimiter =
|
539 |
$header = fgetcsv( $handle, 0, $csv_delimiter );
|
540 |
|
541 |
while ( ( $postmeta = fgetcsv( $handle, 0, $csv_delimiter ) ) !== FALSE ) {
|
@@ -683,9 +681,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
683 |
* @return bool False if error uploading or invalid file, true otherwise
|
684 |
*/
|
685 |
public function handle_upload() {
|
686 |
-
|
687 |
-
return true;
|
688 |
-
}
|
689 |
if ( empty( $_POST['file_url'] ) ) {
|
690 |
|
691 |
$file = wp_import_handle_upload();
|
@@ -1538,62 +1534,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
1538 |
|
1539 |
update_post_meta( $product_id, "_{$type}_ids", $ids );
|
1540 |
}
|
1541 |
-
|
1542 |
-
private function handle_ftp(){
|
1543 |
-
$enable_ftp_ie = !empty( $_POST['enable_ftp_ie'] ) ? true : false;
|
1544 |
-
if($enable_ftp_ie == false) return false;
|
1545 |
-
|
1546 |
-
$ftp_server = ! empty( $_POST['ftp_server'] ) ? $_POST['ftp_server'] : '';
|
1547 |
-
$ftp_server_path = ! empty( $_POST['ftp_server_path'] ) ? $_POST['ftp_server_path'] : '';
|
1548 |
-
$ftp_user = ! empty( $_POST['ftp_user'] ) ? $_POST['ftp_user'] : '';
|
1549 |
-
$ftp_password = ! empty( $_POST['ftp_password'] ) ? $_POST['ftp_password'] : '';
|
1550 |
-
$use_ftps = ! empty( $_POST['use_ftps'] ) ? true : false;
|
1551 |
-
|
1552 |
-
|
1553 |
-
$settings = array();
|
1554 |
-
$settings[ 'ftp_server' ] = $ftp_server;
|
1555 |
-
$settings[ 'ftp_user' ] = $ftp_user;
|
1556 |
-
$settings[ 'ftp_password' ] = $ftp_password;
|
1557 |
-
$settings[ 'use_ftps' ] = $use_ftps;
|
1558 |
-
$settings[ 'enable_ftp_ie' ] = $enable_ftp_ie;
|
1559 |
-
$settings[ 'ftp_server_path' ] = $ftp_server_path;
|
1560 |
-
|
1561 |
-
|
1562 |
-
$local_file = 'wp-content/plugins/product-csv-import-export-for-woocommerce/temp-import.csv';
|
1563 |
-
$server_file = $ftp_server_path;
|
1564 |
-
|
1565 |
-
update_option( 'wf_shipment_tracking_importer_ftp', $settings );
|
1566 |
-
|
1567 |
-
$ftp_conn = $use_ftps ? ftp_ssl_connect($ftp_server) : ftp_connect($ftp_server);
|
1568 |
-
$error_message = "";
|
1569 |
-
$success = false;
|
1570 |
-
if($ftp_conn == false){
|
1571 |
-
$error_message = "There is connection problem\n";
|
1572 |
-
}
|
1573 |
-
|
1574 |
-
if(empty($error_message)){
|
1575 |
-
if(ftp_login($ftp_conn, $ftp_user, $ftp_password) == false){
|
1576 |
-
$error_message = "Not able to login \n";
|
1577 |
-
}
|
1578 |
-
}
|
1579 |
-
if(empty($error_message)){
|
1580 |
-
|
1581 |
-
if (ftp_get($ftp_conn, ABSPATH.$local_file, $server_file, FTP_BINARY)) {
|
1582 |
-
$error_message = "";
|
1583 |
-
$success = true;
|
1584 |
-
} else {
|
1585 |
-
$error_message = "There was a problem\n";
|
1586 |
-
}
|
1587 |
-
}
|
1588 |
|
1589 |
-
ftp_close($ftp_conn);
|
1590 |
-
if($success){
|
1591 |
-
$this->file_url = $local_file;
|
1592 |
-
}else{
|
1593 |
-
die($error_message);
|
1594 |
-
}
|
1595 |
-
return true;
|
1596 |
-
}
|
1597 |
|
1598 |
// Display import page title
|
1599 |
public function header() {
|
@@ -1670,7 +1611,7 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
1670 |
return $result;
|
1671 |
}
|
1672 |
|
1673 |
-
public static function
|
1674 |
$delemiter = strtolower($delemiter);
|
1675 |
switch ($delemiter) {
|
1676 |
case 'tab':
|
@@ -1683,4 +1624,23 @@ class WF_ProdImpExpCsv_Product_Import extends WP_Importer {
|
|
1683 |
}
|
1684 |
return $delemiter;
|
1685 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1686 |
}
|
20 |
var $merge_empty_cells;
|
21 |
|
22 |
// mappings from old information to new
|
23 |
+
// var $processed_terms = array();
|
24 |
var $processed_posts = array();
|
25 |
var $post_orphans = array();
|
26 |
var $attachments = array();
|
57 |
global $woocommerce, $wpdb;
|
58 |
|
59 |
if ( ! empty( $_POST['delimiter'] ) ) {
|
60 |
+
$this->delimiter = stripslashes(( $_POST['delimiter'] ) );
|
61 |
}else if ( ! empty( $_GET['delimiter'] ) ) {
|
62 |
+
$this->delimiter = stripslashes(( $_GET['delimiter'] ) );
|
63 |
}
|
64 |
+
|
65 |
+
$this->delimiter = self::wt_get_csv_delimiter($this->delimiter);
|
66 |
|
67 |
if ( ! $this->delimiter )
|
68 |
$this->delimiter = ',';
|
94 |
if(!empty($_GET['file_url']))
|
95 |
$this->file_url = esc_attr( $_GET['file_url'] );
|
96 |
if(!empty($_GET['file_id']))
|
97 |
+
$this->id = (int)$_GET['file_id'] ;
|
98 |
|
99 |
if ( !empty($_GET['clearmapping']) || $this->handle_upload() )
|
100 |
$this->import_options();
|
142 |
|
143 |
if ( ! window.console ) { window.console = function(){}; }
|
144 |
|
145 |
+
// var processed_terms = [];
|
146 |
var processed_posts = [];
|
147 |
var post_orphans = [];
|
148 |
var attachments = [];
|
156 |
var data = {
|
157 |
action: 'woocommerce_csv_import_request',
|
158 |
file: '<?php echo addslashes( $file ); ?>',
|
159 |
+
mapping: '<?php echo json_encode(wc_clean($_POST['map_from']),JSON_HEX_APOS); ?>',
|
160 |
+
eval_field: '<?php echo stripslashes(json_encode(wc_clean($_POST['eval_field']),JSON_HEX_APOS)) ?>',
|
161 |
delimiter: '<?php echo $this->delimiter; ?>',
|
162 |
merge_empty_cells: '<?php echo $this->merge_empty_cells; ?>',
|
163 |
merge: '<?php echo $this->merge; ?>',
|
164 |
start_pos: start_pos,
|
165 |
end_pos: end_pos,
|
166 |
+
wt_nonce: '<?php echo wp_create_nonce(WF_PROD_IMP_EXP_ID) ?>'
|
167 |
};
|
168 |
data.eval_field = $.parseJSON(data.eval_field);
|
169 |
return $.ajax({
|
193 |
|
194 |
} else if ( results.import_results && $( results.import_results ).size() > 0 ) {
|
195 |
|
196 |
+
// $.each( results.processed_terms, function( index, value ) {
|
197 |
+
// processed_terms.push( value );
|
198 |
+
// });
|
199 |
|
200 |
$.each( results.processed_posts, function( index, value ) {
|
201 |
processed_posts.push( value );
|
258 |
|
259 |
// Get CSV positions
|
260 |
if ( ( $handle = fopen( $file, "r" ) ) !== FALSE ) {
|
261 |
+
$csv_delimiter = $this->delimiter;
|
262 |
while ( ( $postmeta = fgetcsv( $handle, 0, $csv_delimiter ) ) !== FALSE ) {
|
263 |
$count++;
|
264 |
|
321 |
$.ajax({
|
322 |
type: 'POST',
|
323 |
url: ajaxurl,
|
324 |
+
data: { action: "woocommerce_csv_import_regenerate_thumbnail", id: id ,wt_nonce: '<?php echo wp_create_nonce(WF_PROD_IMP_EXP_ID) ?>' },
|
325 |
success: function( response ) {
|
326 |
//console.log('On Success:-'+JSON.stringify(response, null, 4));
|
327 |
if ( response !== Object( response ) || ( typeof response.success === "undefined" && typeof response.error === "undefined" ) ) {
|
361 |
var data = {
|
362 |
action: 'woocommerce_csv_import_request',
|
363 |
file: '<?php echo $file; ?>',
|
364 |
+
// processed_terms: processed_terms,
|
365 |
processed_posts: processed_posts,
|
366 |
post_orphans: post_orphans,
|
367 |
upsell_skus: upsell_skus,
|
368 |
+
crosssell_skus: crosssell_skus,
|
369 |
+
wt_nonce: '<?php echo wp_create_nonce(WF_PROD_IMP_EXP_ID) ?>'
|
370 |
};
|
371 |
|
372 |
$.ajax({
|
388 |
}
|
389 |
break;
|
390 |
case 3 :
|
391 |
+
|
|
|
|
|
|
|
392 |
add_filter( 'http_request_timeout', array( $this, 'bump_request_timeout' ) );
|
393 |
|
394 |
if ( function_exists( 'gc_enable' ) )
|
400 |
$wpdb->hide_errors();
|
401 |
|
402 |
$file = stripslashes( $_POST['file'] );
|
403 |
+
$mapping = json_decode( stripslashes(wc_clean( $_POST['mapping'])), true );
|
404 |
+
$eval_field = wc_clean( $_POST['eval_field']);
|
405 |
$start_pos = isset( $_POST['start_pos'] ) ? absint( $_POST['start_pos'] ) : 0;
|
406 |
$end_pos = isset( $_POST['end_pos'] ) ? absint( $_POST['end_pos'] ) : '';
|
407 |
|
413 |
|
414 |
$results = array();
|
415 |
$results['import_results'] = $this->import_results;
|
416 |
+
// $results['processed_terms'] = $this->processed_terms;
|
417 |
$results['processed_posts'] = $this->processed_posts;
|
418 |
$results['post_orphans'] = $this->post_orphans;
|
419 |
$results['attachments'] = $this->attachments;
|
426 |
exit;
|
427 |
break;
|
428 |
case 4 :
|
|
|
|
|
|
|
429 |
|
430 |
add_filter( 'http_request_timeout', array( $this, 'bump_request_timeout' ) );
|
431 |
|
437 |
@flush();
|
438 |
$wpdb->hide_errors();
|
439 |
|
440 |
+
// $this->processed_terms = isset( $_POST['processed_terms'] ) ? $_POST['processed_terms'] : array();
|
441 |
+
$this->processed_posts = isset( $_POST['processed_posts']) ? array_map('intval', $_POST['processed_posts']) : array();
|
442 |
+
$this->post_orphans = isset( $_POST['post_orphans']) ? array_map('intval', $_POST['post_orphans']) : array();
|
443 |
+
$this->crosssell_skus = isset( $_POST['crosssell_skus']) ? wc_clean( $_POST['crosssell_skus']) : array();
|
444 |
+
$this->upsell_skus = isset( $_POST['upsell_skus']) ? wc_clean( $_POST['upsell_skus']) : array();
|
445 |
|
446 |
_e( 'Step 1...', 'product-import-export-for-woo' ) . ' ';
|
447 |
|
533 |
if ( ( $handle = fopen( $file, "r" ) ) !== FALSE ) {
|
534 |
|
535 |
$row = $raw_headers = array();
|
536 |
+
$csv_delimiter = $this->delimiter;
|
537 |
$header = fgetcsv( $handle, 0, $csv_delimiter );
|
538 |
|
539 |
while ( ( $postmeta = fgetcsv( $handle, 0, $csv_delimiter ) ) !== FALSE ) {
|
681 |
* @return bool False if error uploading or invalid file, true otherwise
|
682 |
*/
|
683 |
public function handle_upload() {
|
684 |
+
|
|
|
|
|
685 |
if ( empty( $_POST['file_url'] ) ) {
|
686 |
|
687 |
$file = wp_import_handle_upload();
|
1534 |
|
1535 |
update_post_meta( $product_id, "_{$type}_ids", $ids );
|
1536 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1537 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1538 |
|
1539 |
// Display import page title
|
1540 |
public function header() {
|
1611 |
return $result;
|
1612 |
}
|
1613 |
|
1614 |
+
public static function wt_get_csv_delimiter1($delemiter=','){
|
1615 |
$delemiter = strtolower($delemiter);
|
1616 |
switch ($delemiter) {
|
1617 |
case 'tab':
|
1624 |
}
|
1625 |
return $delemiter;
|
1626 |
}
|
1627 |
+
|
1628 |
+
public static function wt_get_csv_delimiter($delemiter = ',',$other_delimiter = ''){
|
1629 |
+
$delemiter = strtolower($delemiter);
|
1630 |
+
$delemiter_pass = $delemiter;
|
1631 |
+
switch ($delemiter) {
|
1632 |
+
case 'tab':
|
1633 |
+
$delemiter_pass = "\t";
|
1634 |
+
break;
|
1635 |
+
|
1636 |
+
case 'space':
|
1637 |
+
$delemiter_pass = " ";
|
1638 |
+
break;
|
1639 |
+
|
1640 |
+
case 'other':
|
1641 |
+
$delemiter_pass = $other_delimiter;
|
1642 |
+
break;
|
1643 |
+
}
|
1644 |
+
return $delemiter_pass;
|
1645 |
+
}
|
1646 |
}
|
includes/importer/views/html-wf-import-greeting.php
CHANGED
@@ -57,10 +57,23 @@ if (!empty($ftp_settings)) {
|
|
57 |
<p><small><?php _e('Existing products are identified by their SKUs/IDs. If this option is not selected and if a product with same ID/SKU is found in the CSV, that product will not be imported.', 'product-import-export-for-woo'); ?></small></p>
|
58 |
</td>
|
59 |
|
60 |
-
</tr>
|
61 |
<tr>
|
62 |
-
<th><label><?php _e('Delimiter', '
|
63 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
</tr>
|
65 |
<tr>
|
66 |
<th><label><?php _e('Merge empty cells', 'product-import-export-for-woo'); ?></label><br/></th>
|
@@ -81,4 +94,20 @@ if (!empty($ftp_settings)) {
|
|
81 |
<?php include(WF_ProdImpExpCsv_BASE . 'includes/views/market.php'); ?>
|
82 |
<div class="clearfix"></div>
|
83 |
</div>
|
84 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
<p><small><?php _e('Existing products are identified by their SKUs/IDs. If this option is not selected and if a product with same ID/SKU is found in the CSV, that product will not be imported.', 'product-import-export-for-woo'); ?></small></p>
|
58 |
</td>
|
59 |
|
60 |
+
</tr>
|
61 |
<tr>
|
62 |
+
<th><label><?php _e('Delimiter', 'wf_csv_import_export'); ?></label><br/></th>
|
63 |
+
<td>
|
64 |
+
<input type="radio" id="wt_prod_delimiter_comma" name="delimiter" value="," checked >
|
65 |
+
<label for="wt_prod_delimiter_comma">Comma</label>
|
66 |
+
<input type="radio" id="wt_prod_delimiter_tab" name="delimiter" value="tab" >
|
67 |
+
<label for="wt_prod_delimiter_tab">Tab</label>
|
68 |
+
<input type="radio" id="wt_prod_delimiter_semi" name="delimiter" value=";" >
|
69 |
+
<label for="wt_prod_delimiter_semi">Semicolon</label>
|
70 |
+
<input type="radio" id="wt_prod_delimiter_space" name="delimiter" value="space" >
|
71 |
+
<label for="wt_prod_delimiter_space">Space</label>
|
72 |
+
<input type="radio" id="wt_prod_delimiter_other" name="delimiter" value="" >
|
73 |
+
<label for="wt_prod_delimiter_other">Other</label>
|
74 |
+
<input type="text" id="wt_prod_delimiter_other_txt" placeholder="," name="delimitertxt" maxlength="1" size="2" />
|
75 |
+
<span class="description"><?php _e('<br />Select a delimiter to separate the field values with. ‘,’ is the default delimiter', 'wf_csv_import_export'); ?></span>
|
76 |
+
</td>
|
77 |
</tr>
|
78 |
<tr>
|
79 |
<th><label><?php _e('Merge empty cells', 'product-import-export-for-woo'); ?></label><br/></th>
|
94 |
<?php include(WF_ProdImpExpCsv_BASE . 'includes/views/market.php'); ?>
|
95 |
<div class="clearfix"></div>
|
96 |
</div>
|
97 |
+
</div>
|
98 |
+
<script>
|
99 |
+
jQuery("#wt_prod_delimiter_other").click(function() {
|
100 |
+
jQuery("#wt_prod_delimiter_other_txt").focus();
|
101 |
+
});
|
102 |
+
|
103 |
+
jQuery("#wt_prod_delimiter_other_txt").focus(function() {
|
104 |
+
jQuery("#wt_prod_delimiter_other").prop("checked", true);
|
105 |
+
|
106 |
+
});
|
107 |
+
|
108 |
+
jQuery("#wt_import_greet").click(function () {
|
109 |
+
var delimiter = jQuery("#wt_prod_delimiter_other_txt").val();
|
110 |
+
jQuery('#wt_prod_delimiter_other').val(delimiter);
|
111 |
+
});
|
112 |
+
|
113 |
+
</script>
|
product-import-export-for-woo.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
Description: Import and Export Products From and To your WooCommerce Store.
|
6 |
Author: WebToffee
|
7 |
Author URI: https://www.webtoffee.com/product/product-import-export-woocommerce/
|
8 |
-
Version: 1.7.
|
9 |
WC tested up to: 3.9.2
|
10 |
License: GPLv3
|
11 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
@@ -18,7 +18,7 @@ if (!defined('ABSPATH') || !is_admin()) {
|
|
18 |
|
19 |
|
20 |
if (!defined('WF_PIPE_CURRENT_VERSION')) {
|
21 |
-
define("WF_PIPE_CURRENT_VERSION", "1.7.
|
22 |
}
|
23 |
if (!defined('WF_PROD_IMP_EXP_ID')) {
|
24 |
define("WF_PROD_IMP_EXP_ID", "wf_prod_imp_exp");
|
@@ -113,7 +113,7 @@ if (!defined('WF_WOOCOMMERCE_CSV_IM_EX')) {
|
|
113 |
if (!empty($_GET['action']) && !empty($_GET['page']) && $_GET['page'] == 'wf_woocommerce_csv_im_ex') {
|
114 |
switch ($_GET['action']) {
|
115 |
case "export" :
|
116 |
-
$user_ok =
|
117 |
if ($user_ok) {
|
118 |
include_once( 'includes/exporter/class-wf-prodimpexpcsv-exporter.php' );
|
119 |
WF_ProdImpExpCsv_Exporter::do_export('product');
|
@@ -132,7 +132,7 @@ if (!defined('WF_WOOCOMMERCE_CSV_IM_EX')) {
|
|
132 |
register_importer('xa_woocommerce_csv', 'WebToffee WooCommerce Product Import (CSV)', __('Import <strong>products</strong> to your store via a csv file.', 'product-import-export-for-woo'), 'WF_ProdImpExpCsv_Importer::product_importer');
|
133 |
}
|
134 |
|
135 |
-
|
136 |
// Check if user has rights to export
|
137 |
$current_user = wp_get_current_user();
|
138 |
$current_user->roles = apply_filters('hf_add_user_roles', $current_user->roles);
|
@@ -185,7 +185,7 @@ if (!defined('WF_WOOCOMMERCE_CSV_IM_EX')) {
|
|
185 |
}
|
186 |
|
187 |
public function WT_admin_footer_text($footer_text) {
|
188 |
-
if (!
|
189 |
return $footer_text;
|
190 |
}
|
191 |
$screen = get_current_screen();
|
@@ -211,13 +211,12 @@ if (!defined('WF_WOOCOMMERCE_CSV_IM_EX')) {
|
|
211 |
|
212 |
|
213 |
public function review_plugin(){
|
214 |
-
if (!
|
215 |
wp_die(-1);
|
216 |
}
|
217 |
update_option('pipe_wt_plugin_reviewed', 1);
|
218 |
-
wp_die();
|
219 |
-
|
220 |
-
}
|
221 |
|
222 |
}
|
223 |
|
@@ -243,7 +242,7 @@ function hf_welcome_screen_activate_basic() {
|
|
243 |
wp_die(__("Is everything fine? You already have the Premium version installed in your website. For any issues, kindly raise a ticket via <a target='_blank' href='https://www.webtoffee.com/support/'>support</a>", 'product-import-export-for-woo'), "", array('back_link' => 1));
|
244 |
}
|
245 |
update_option('xa_pipe_plugin_installed_date', date('Y-m-d H:i:s'));
|
246 |
-
set_transient('_welcome_screen_activation_redirect', true, 30);
|
247 |
}
|
248 |
|
249 |
if (!function_exists('impexp_welcome')) {
|
5 |
Description: Import and Export Products From and To your WooCommerce Store.
|
6 |
Author: WebToffee
|
7 |
Author URI: https://www.webtoffee.com/product/product-import-export-woocommerce/
|
8 |
+
Version: 1.7.4
|
9 |
WC tested up to: 3.9.2
|
10 |
License: GPLv3
|
11 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
18 |
|
19 |
|
20 |
if (!defined('WF_PIPE_CURRENT_VERSION')) {
|
21 |
+
define("WF_PIPE_CURRENT_VERSION", "1.7.4");
|
22 |
}
|
23 |
if (!defined('WF_PROD_IMP_EXP_ID')) {
|
24 |
define("WF_PROD_IMP_EXP_ID", "wf_prod_imp_exp");
|
113 |
if (!empty($_GET['action']) && !empty($_GET['page']) && $_GET['page'] == 'wf_woocommerce_csv_im_ex') {
|
114 |
switch ($_GET['action']) {
|
115 |
case "export" :
|
116 |
+
$user_ok = self::hf_user_permission();
|
117 |
if ($user_ok) {
|
118 |
include_once( 'includes/exporter/class-wf-prodimpexpcsv-exporter.php' );
|
119 |
WF_ProdImpExpCsv_Exporter::do_export('product');
|
132 |
register_importer('xa_woocommerce_csv', 'WebToffee WooCommerce Product Import (CSV)', __('Import <strong>products</strong> to your store via a csv file.', 'product-import-export-for-woo'), 'WF_ProdImpExpCsv_Importer::product_importer');
|
133 |
}
|
134 |
|
135 |
+
public static function hf_user_permission() {
|
136 |
// Check if user has rights to export
|
137 |
$current_user = wp_get_current_user();
|
138 |
$current_user->roles = apply_filters('hf_add_user_roles', $current_user->roles);
|
185 |
}
|
186 |
|
187 |
public function WT_admin_footer_text($footer_text) {
|
188 |
+
if (!self::hf_user_permission()) {
|
189 |
return $footer_text;
|
190 |
}
|
191 |
$screen = get_current_screen();
|
211 |
|
212 |
|
213 |
public function review_plugin(){
|
214 |
+
if (!self::hf_user_permission()) {
|
215 |
wp_die(-1);
|
216 |
}
|
217 |
update_option('pipe_wt_plugin_reviewed', 1);
|
218 |
+
wp_die();
|
219 |
+
}
|
|
|
220 |
|
221 |
}
|
222 |
|
242 |
wp_die(__("Is everything fine? You already have the Premium version installed in your website. For any issues, kindly raise a ticket via <a target='_blank' href='https://www.webtoffee.com/support/'>support</a>", 'product-import-export-for-woo'), "", array('back_link' => 1));
|
243 |
}
|
244 |
update_option('xa_pipe_plugin_installed_date', date('Y-m-d H:i:s'));
|
245 |
+
set_transient('_welcome_screen_activation_redirect', true, 30);
|
246 |
}
|
247 |
|
248 |
if (!function_exists('impexp_welcome')) {
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.webtoffee.com/plugins/
|
|
4 |
Tags: woocommerce product import, woocommerce import products, woocommerce export products, export woocommerce products, import products into woocommerce ,product, export, import, woocommerce ,csv
|
5 |
Requires at least: 3.0.1
|
6 |
Tested up to: 5.3.2
|
7 |
-
Stable tag: 1.7.
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -153,6 +153,9 @@ By default, admin and store manager are given access to export orders from your
|
|
153 |
|
154 |
== Changelog ==
|
155 |
|
|
|
|
|
|
|
156 |
= 1.7.3 =
|
157 |
* Tested OK with WC 3.9.2
|
158 |
|
4 |
Tags: woocommerce product import, woocommerce import products, woocommerce export products, export woocommerce products, import products into woocommerce ,product, export, import, woocommerce ,csv
|
5 |
Requires at least: 3.0.1
|
6 |
Tested up to: 5.3.2
|
7 |
+
Stable tag: 1.7.4
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
153 |
|
154 |
== Changelog ==
|
155 |
|
156 |
+
= 1.7.4 =
|
157 |
+
* Security fix.
|
158 |
+
|
159 |
= 1.7.3 =
|
160 |
* Tested OK with WC 3.9.2
|
161 |
|