CTX Feed – WooCommerce Product Feed Manager Plugin - Version 2.1.21

Version Description

Download this release

Release Info

Developer wahid0003
Plugin Icon 128x128 CTX Feed – WooCommerce Product Feed Manager Plugin
Version 2.1.21
Comparing to
See all releases

Code changes from version 2.1.15 to 2.1.21

README.txt CHANGED
@@ -1,18 +1,18 @@
1
- === WooCommerce Product Feed : Google Shopping,Facebook Product Ad,Amazon,eBay and Many More ===
2
  Contributors: wahid0003
3
  Donate link: https://webappick.com
4
- Tags: Product feed,Google Merchant Feed,facebook product feed,Amazon,eBay,bing,pricegrabber,nextag,pricerunner,kelkoo,feed,woocommerce feed,woocommerce product feed, txt export, csv export, xml export,woocommerce export,product export, newegg,rakuten,houzz,godatafeed,pricefalls,google merchant,google shopping,sell,sears,variation export,shareasale,etsy,Buy,Getprice,LeGuide,Twenga,Beslist,Kieskeurig,HotLine,Yandex.Market,product variation,connexity,Commission Junction,channel advisor,dealtime,shopbot,shopzilla,yahoo,Getprice,Gimme,Junglee,Myshopping,Priceme,Shopmania,Wine-searcher
5
  Requires at least: 3.6
6
  Tested up to: 4.8
7
  Stable tag: 4.4
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
- Get Real Buyer and Boost Your Sell by Uploading your Products to 100+ Shopping Engines Like Google Shopping, Facebook, Amazon, eBay, Pricegrabber.
12
 
13
  == Description ==
14
 
15
- **WooCommerce Product Feed** generate product feed to Sync your products with your merchant center like Google Shopping,Facebook Product Ads,Idealo.de, shopbot.ca etc. The main target of this plugin is to generate product feed, automatically update product information into feed file according to given schedule and sync your product to different shopping engines via HTTP or FTP so that real buyer can get your product into shopping engines like Google Shopping, pricegrabber, pricerunner, nextag amazon, ebay and many more.<br/><br/> Compatible with WooCommerce 3.0+
16
  <blockquote>
17
  <h4>Free version support unlimited feed with up to 2000 products including variations.</h4>
18
  <br/>
@@ -29,7 +29,7 @@ You need product feed if you are a merchant with an ecommerce store and want to
29
 
30
  **WHAT IS COMPARISON SHOPPING ENGINE?**
31
 
32
- A shopping engine or comparison shopping engine is a type of website where shopper can search products based on price, feature and other criteria and compare. Most popular Comparison Shopping Engines are Google Shopping, Pricegrabber, Pricewatch, Shopzilla, Amazon Seller, Nextag, eBay Commerce Network.
33
 
34
  <blockquote>
35
  <h4><a target="_blank" href="http://webappick.helpscoutdocs.com/">Read Documentation and FAQ</a></h4>
@@ -49,7 +49,7 @@ In one word WooCommerce Product Feed is a revolution. Yah, it’s a revolution o
49
  **AVAILABLE FEATURES:**
50
 
51
  * It is highly customizable, having access to 100+ merchant sites & also very responsive of user commands.
52
- * 10+ pre configured template for Google Shopping,Google Adword,Amazon,Facebook,Nextag.com,pricegrabber.com,Shopping.com,
53
  become.com,conexity.com,shopmania.com,shopzilla.com,bing.com
54
  * You can post your product feeds either manually from your site to shopping engines
55
  or you can also set FTP to post your feeds automatically to your desired engines.
@@ -83,6 +83,8 @@ In one word WooCommerce Product Feed is a revolution. Yah, it’s a revolution o
83
  * <a target="_blank" href="http://www.shopzilla.com/">Shopzilla.com</a>
84
  * <a target="_blank" href="http://www.shopmania.com/">Shopmania.com</a>
85
  * <a target="_blank" href="http://www.shop.com/">Shop.com</a>
 
 
86
  * <a target="_blank" href="https://www.pricefalls.com/">Pricefalls.com</a>
87
  * <a target="_blank" href="http://www.pricerunner.co.uk/">Pricerunner.co.uk</a>
88
  * <a target="_blank" href="http://www.cj.com/">Comission Junction (cj.com)</a>
@@ -214,6 +216,29 @@ Using pro version:
214
 
215
  == Changelog ==
216
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
217
  = 2.1.14(2017-08-09) =
218
  * Fixed: Variable Product missing issue
219
 
1
+ === WooCommerce Product Feed : Google Shopping,Facebook Product Ad,eBay and Many More ===
2
  Contributors: wahid0003
3
  Donate link: https://webappick.com
4
+ Tags: Product feed,Google Merchant Feed,facebook product feed,eBay,bing,pricegrabber,nextag,pricerunner,kelkoo,feed,woocommerce feed,woocommerce product feed, txt export, csv export, xml export,woocommerce export,product export, newegg,rakuten,houzz,godatafeed,pricefalls,google merchant,google shopping,sell,sears,variation export,shareasale,etsy,Buy,Getprice,LeGuide,Twenga,Beslist,Kieskeurig,HotLine,Yandex.Market,product variation,connexity,Commission Junction,channel advisor,dealtime,shopbot,shopzilla,yahoo,Getprice,Gimme,Junglee,Myshopping,Priceme,Shopmania,Wine-searcher
5
  Requires at least: 3.6
6
  Tested up to: 4.8
7
  Stable tag: 4.4
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
+ Get Real Buyer and Boost Your Sell by Uploading your Products to 100+ Shopping Engines Like Google Merchant,Facebook,PriceSpy,eBay,Idealo.
12
 
13
  == Description ==
14
 
15
+ **WooCommerce Product Feed** generate product feed to Sync your products with your merchant center like Google Shopping,Facebook Product Ads,Idealo.de, shopbot.ca etc. The main target of this plugin is to generate product feed, automatically update product information into feed file according to given schedule and sync your product to different shopping engines via HTTP or FTP so that real buyer can get your product into shopping engines like Google Shopping, pricegrabber, pricerunner, nextag,ebay and many more.<br/><br/> Compatible with WooCommerce 3.0+
16
  <blockquote>
17
  <h4>Free version support unlimited feed with up to 2000 products including variations.</h4>
18
  <br/>
29
 
30
  **WHAT IS COMPARISON SHOPPING ENGINE?**
31
 
32
+ A shopping engine or comparison shopping engine is a type of website where shopper can search products based on price, feature and other criteria and compare. Most popular Comparison Shopping Engines are Google Shopping, Pricegrabber, Pricewatch, Shopzilla, Nextag, eBay Commerce Network.
33
 
34
  <blockquote>
35
  <h4><a target="_blank" href="http://webappick.helpscoutdocs.com/">Read Documentation and FAQ</a></h4>
49
  **AVAILABLE FEATURES:**
50
 
51
  * It is highly customizable, having access to 100+ merchant sites & also very responsive of user commands.
52
+ * 10+ pre configured template for Google Shopping,Google Adword,Facebook,Nextag.com,pricegrabber.com,Shopping.com,
53
  become.com,conexity.com,shopmania.com,shopzilla.com,bing.com
54
  * You can post your product feeds either manually from your site to shopping engines
55
  or you can also set FTP to post your feeds automatically to your desired engines.
83
  * <a target="_blank" href="http://www.shopzilla.com/">Shopzilla.com</a>
84
  * <a target="_blank" href="http://www.shopmania.com/">Shopmania.com</a>
85
  * <a target="_blank" href="http://www.shop.com/">Shop.com</a>
86
+ * <a target="_blank" href="https://pricespy.co.uk/">Pricespy.co.uk</a>
87
+ * <a target="_blank" href="https://www.prisjakt.nu/">Prisjakt.nu</a>
88
  * <a target="_blank" href="https://www.pricefalls.com/">Pricefalls.com</a>
89
  * <a target="_blank" href="http://www.pricerunner.co.uk/">Pricerunner.co.uk</a>
90
  * <a target="_blank" href="http://www.cj.com/">Comission Junction (cj.com)</a>
216
 
217
  == Changelog ==
218
 
219
+ = 2.1.21(2017-10-08) =
220
+ * Added: Adroll.com product feed template added
221
+
222
+ = 2.1.20(2017-10-04) =
223
+ * Fixed: js typeahead error fixed.
224
+
225
+ = 2.1.19(2017-10-04) =
226
+ * Fixed: decimal issue of progress percent.
227
+
228
+ = 2.1.18(2017-09-28) =
229
+ * Fixed: Sale Price will be empty if not on sale
230
+
231
+ = 2.1.17(2017-09-20) =
232
+ * Fixed: FTP Connection issue
233
+
234
+ = 2.1.16(2017-09-01) =
235
+ * Fixed: XML error for Google and Facebook template
236
+
237
+ = 2.1.15(2017-08-27) =
238
+ * Fixed: array_merge error
239
+ * Added: Strip slashed manual input (Prefix, Suffix, and Pattern)
240
+ * Added: HTML entity decoded for Google and Facebook XML header
241
+
242
  = 2.1.14(2017-08-09) =
243
  * Fixed: Variable Product missing issue
244
 
admin/class-woo-feed-admin.php CHANGED
@@ -92,8 +92,7 @@ class Woo_Feed_Admin
92
  * class.
93
  */
94
 
95
- wp_register_script($this->woo_feed . "_typeahead", plugin_dir_url(__FILE__) . 'js/typeahead.js', array(), $this->version, false);
96
- wp_enqueue_script($this->woo_feed . "_typeahead");
97
  wp_register_script($this->woo_feed . "_jvalidate", plugin_dir_url(__FILE__) . 'js/jquery.validate.min.js', array(), $this->version, false);
98
  wp_enqueue_script($this->woo_feed . "_jvalidate");
99
  wp_register_script($this->woo_feed . "_jvalidateadition", plugin_dir_url(__FILE__) . 'js/additional-methods.min.js', array(), $this->version, false);
92
  * class.
93
  */
94
 
95
+
 
96
  wp_register_script($this->woo_feed . "_jvalidate", plugin_dir_url(__FILE__) . 'js/jquery.validate.min.js', array(), $this->version, false);
97
  wp_enqueue_script($this->woo_feed . "_jvalidate");
98
  wp_register_script($this->woo_feed . "_jvalidateadition", plugin_dir_url(__FILE__) . 'js/additional-methods.min.js', array(), $this->version, false);
admin/css/woo-feed-admin.css CHANGED
@@ -292,3 +292,45 @@ p {
292
  .wf_tabs [id^="tab"]:checked ~ [id^="wf-tab-content"] {
293
  display: block;
294
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
292
  .wf_tabs [id^="tab"]:checked ~ [id^="wf-tab-content"] {
293
  display: block;
294
  }
295
+
296
+ /**
297
+ * Premium Page Design
298
+ */
299
+ .woo_feed_free_manage_attribute {
300
+ margin: 0 auto;
301
+ width: 100%;
302
+ }
303
+
304
+ .woo_feed_screenshort{
305
+ max-width: 100%;
306
+ width: 1000px;
307
+ border: 3px solid #00b9eb;
308
+ display: block;
309
+ margin: 0 auto;
310
+ }
311
+
312
+ .woo-feed-screen-shot-title{
313
+ font-size: 36px;
314
+ text-align: center;
315
+ box-sizing: content-box;
316
+ color: #00b9eb;
317
+ }
318
+
319
+ .woo_feed_screen {
320
+ background: #fff;
321
+ padding: 25px 20px;
322
+ margin-bottom: 20px;
323
+ }
324
+
325
+ .woo_feed_screen_des{
326
+ text-align: center;
327
+ margin: 20px 50px 20px 50px;
328
+ font-size: 16px;
329
+ color: #666;
330
+ }
331
+ .woo_feed_screen_des_2{
332
+ text-align: center;
333
+ margin: 20px 50px 5px 50px;
334
+ font-size: 14px;
335
+ color: #32373c;
336
+ }
admin/images/DA_1.png ADDED
Binary file
admin/images/DA_2.png ADDED
Binary file
admin/images/DA_3.png ADDED
Binary file
admin/images/Da_4.png ADDED
Binary file
admin/images/filter.png ADDED
Binary file
admin/js/woo-feed-admin.js CHANGED
@@ -12,25 +12,7 @@
12
  * This enables you to define handlers, for when the DOM is ready:
13
  */
14
  $(function () {
15
-
16
-
17
- //$('form').validate();
18
-
19
- // Category Mapping
20
- $('.woo-feed-mapping-input').typeahead({
21
- minLength: 1,
22
- source: function (query, process) {
23
- var url = $("#cmTable").attr('val');
24
- var provider = $("#providers").val();
25
- $.post(url, {
26
- q: query,
27
- limit: 8,
28
- provider: provider
29
- }, function (data) {
30
- process(JSON.parse(data));
31
- });
32
- }
33
- });
34
 
35
  // Category Mapping (Auto Field Populate)
36
  $(".treegrid-parent").on('change keyup', function () {
12
  * This enables you to define handlers, for when the DOM is ready:
13
  */
14
  $(function () {
15
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
 
17
  // Category Mapping (Auto Field Populate)
18
  $(".treegrid-parent").on('change keyup', function () {
admin/partials/adroll/add-feed.php ADDED
@@ -0,0 +1,754 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <ul class="wf_tabs">
2
+ <li>
3
+ <input type="radio" name="wf_tabs" id="tab1" checked/>
4
+ <label class="wf-tab-name" for="tab1"><?php echo _e( 'Feed Config', 'woo-feed' ); ?></label>
5
+
6
+ <div id="wf-tab-content1" class="wf-tab-content">
7
+ <table class="table tree widefat fixed sorted_table mtable" width="100%" id="table-1">
8
+ <thead>
9
+ <tr>
10
+ <th></th>
11
+ <th><?php echo ucfirst( $provider ); ?> <?php echo _e( 'Attributes', 'woo-feed' ); ?></th>
12
+ <th><?php echo _e( 'Prefix', 'woo-feed' ); ?></th>
13
+ <th><?php echo _e( 'Type', 'woo-feed' ); ?></th>
14
+ <th><?php echo _e( 'Value', 'woo-feed' ); ?></th>
15
+ <th><?php echo _e( 'Suffix', 'woo-feed' ); ?></th>
16
+ <th><?php echo _e( 'Output Type', 'woo-feed' ); ?></th>
17
+ <th><?php echo _e( 'Output Limit', 'woo-feed' ); ?></th>
18
+ <th></th>
19
+ </tr>
20
+ </thead>
21
+ <tbody>
22
+ <tr>
23
+ <td>
24
+ <i class="wf_sortedtable dashicons dashicons-menu"></i>
25
+ </td>
26
+ <td>
27
+ <select name="mattributes[]" id="" required class="wf_mattributes">
28
+ <?php echo $dropDown->googleAttributesDropdown( 'id' ); ?>
29
+ </select>
30
+ </td>
31
+ <td>
32
+ <input type="text" name="prefix[]" autocomplete="off" class="wf_ps"/>
33
+ </td>
34
+ <td>
35
+ <select name="type[]" class="attr_type wfnoempty">
36
+ <option value="attribute"> <?php echo _e( 'Attribute', 'woo-feed' ); ?></option>
37
+ <option value="pattern"> <?php echo _e( 'Pattern', 'woo-feed' ); ?></option>
38
+ </select>
39
+ </td>
40
+ <td>
41
+ <select name="attributes[]" id="" class="wf_attr wf_attributes">
42
+ <?php echo $product->attributeDropdown( 'id' ); ?>
43
+ </select>
44
+ <input type="text" name="default[]" autocomplete="off" class="wf_default wf_attributes"
45
+ style=" display: none;"/>
46
+ </td>
47
+ <td>
48
+ <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
49
+ </td>
50
+ <td>
51
+ <select name="output_type[][]" id="" class="outputType wfnoempty">
52
+ <option value="1">Default</option>
53
+ <option value="2">Strip Tags</option>
54
+ <option value="3">UTF-8 Encode</option>
55
+ <option value="4">htmlentities</option>
56
+ <option value="5">Integer</option>
57
+ <option value="6">Price</option>
58
+ <option value="7">Remove Space</option><option value="10">Remove ShortCodes</option><option value="9">Remove Special Character</option>
59
+ <option value="8">CDATA</option>
60
+ </select>
61
+ <i class="dashicons dashicons-editor-expand expandType"></i>
62
+ <i style="display: none;" class="dashicons dashicons-editor-contract contractType"></i>
63
+ </td>
64
+ <td>
65
+ <input type="text" name="limit[]" class="wf_ps"/>
66
+ </td>
67
+ <td>
68
+ <i class="delRow dashicons dashicons-trash"></i>
69
+ </td>
70
+ </tr>
71
+ <tr>
72
+ <td>
73
+ <i class="wf_sortedtable dashicons dashicons-menu"></i>
74
+ </td>
75
+ <td>
76
+ <select name="mattributes[]" id="" required class="wf_mattributes">
77
+ <?php echo $dropDown->googleAttributesDropdown( 'title' ); ?>
78
+ </select>
79
+ </td>
80
+ <td>
81
+ <input type="text" name="prefix[]" autocomplete="off" class="wf_ps"/>
82
+ </td>
83
+ <td>
84
+ <select name="type[]" class="attr_type wfnoempty">
85
+ <option value="attribute"> <?php echo _e( 'Attribute', 'woo-feed' ); ?></option>
86
+ <option value="pattern"> <?php echo _e( 'Pattern', 'woo-feed' ); ?></option>
87
+ </select>
88
+ </td>
89
+ <td>
90
+ <select name="attributes[]" id="" class="wf_attr wf_attributes">
91
+ <?php echo $product->attributeDropdown( 'title' ); ?>
92
+ </select>
93
+ <input type="text" name="default[]" autocomplete="off" class="wf_default wf_attributes"
94
+ style=" display: none;"/>
95
+ </td>
96
+ <td>
97
+ <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
98
+ </td>
99
+ <td>
100
+ <select name="output_type[][]" id="" class="outputType wfnoempty">
101
+ <option value="1">Default</option>
102
+ <option value="2">Strip Tags</option>
103
+ <option value="3">UTF-8 Encode</option>
104
+ <option value="4">htmlentities</option>
105
+ <option value="5">Integer</option>
106
+ <option value="6">Price</option>
107
+ <option value="7">Remove Space</option><option value="10">Remove ShortCodes</option><option value="9">Remove Special Character</option>
108
+ <option value="8">CDATA</option>
109
+ </select>
110
+ <i class="dashicons dashicons-editor-expand expandType"></i>
111
+ <i style="display: none;" class="dashicons dashicons-editor-contract contractType"></i>
112
+ </td>
113
+ <td>
114
+ <input type="text" name="limit[]" class="wf_ps"/>
115
+ </td>
116
+ <td>
117
+ <i class="delRow dashicons dashicons-trash"></i>
118
+ </td>
119
+ </tr>
120
+ <tr>
121
+ <td>
122
+ <i class="wf_sortedtable dashicons dashicons-menu"></i>
123
+ </td>
124
+ <td>
125
+ <select name="mattributes[]" id="" required class="wf_mattributes">
126
+ <?php echo $dropDown->googleAttributesDropdown( 'description' ); ?>
127
+ </select>
128
+ </td>
129
+ <td>
130
+ <input type="text" name="prefix[]" autocomplete="off" class="wf_ps"/>
131
+ </td>
132
+ <td>
133
+ <select name="type[]" class="attr_type wfnoempty">
134
+ <option value="attribute"> <?php echo _e( 'Attribute', 'woo-feed' ); ?></option>
135
+ <option value="pattern"> <?php echo _e( 'Pattern', 'woo-feed' ); ?></option>
136
+ </select>
137
+ </td>
138
+ <td>
139
+ <select name="attributes[]" id="" class="wf_attr wf_attributes">
140
+ <?php echo $product->attributeDropdown( 'description' ); ?>
141
+ </select>
142
+ <input type="text" name="default[]" autocomplete="off" class="wf_default wf_attributes"
143
+ style=" display: none;"/>
144
+ </td>
145
+ <td>
146
+ <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
147
+ </td>
148
+ <td>
149
+ <select name="output_type[][]" id="" class="outputType wfnoempty">
150
+ <option value="1">Default</option>
151
+ <option value="2">Strip Tags</option>
152
+ <option value="3">UTF-8 Encode</option>
153
+ <option value="4">htmlentities</option>
154
+ <option value="5">Integer</option>
155
+ <option value="6">Price</option>
156
+ <option value="7">Remove Space</option><option value="10">Remove ShortCodes</option><option value="9">Remove Special Character</option>
157
+ <option value="8">CDATA</option>
158
+ </select>
159
+ <i class="dashicons dashicons-editor-expand expandType"></i>
160
+ <i style="display: none;" class="dashicons dashicons-editor-contract contractType"></i>
161
+ </td>
162
+ <td>
163
+ <input type="text" name="limit[]" class="wf_ps"/>
164
+ </td>
165
+ <td>
166
+ <i class="delRow dashicons dashicons-trash"></i>
167
+ </td>
168
+ </tr>
169
+ <tr>
170
+ <td>
171
+ <i class="wf_sortedtable dashicons dashicons-menu"></i>
172
+ </td>
173
+ <td>
174
+ <select name="mattributes[]" id="" required class="wf_mattributes">
175
+ <?php echo $dropDown->googleAttributesDropdown( 'item_group_id' ); ?>
176
+ </select>
177
+ </td>
178
+ <td>
179
+ <input type="text" name="prefix[]" autocomplete="off" class="wf_ps"/>
180
+ </td>
181
+ <td>
182
+ <select name="type[]" class="attr_type wfnoempty">
183
+ <option value="attribute"> <?php echo _e( 'Attribute', 'woo-feed' ); ?></option>
184
+ <option value="pattern"> <?php echo _e( 'Pattern', 'woo-feed' ); ?></option>
185
+ </select>
186
+ </td>
187
+ <td>
188
+ <select name="attributes[]" id="" class="wf_attr wf_attributes">
189
+ <?php echo $product->attributeDropdown( 'item_group_id' ); ?>
190
+ </select>
191
+ <input type="text" name="default[]" autocomplete="off" class="wf_default wf_attributes"
192
+ style=" display: none;"/>
193
+ </td>
194
+ <td>
195
+ <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
196
+ </td>
197
+ <td>
198
+ <select name="output_type[][]" id="" class="outputType wfnoempty">
199
+ <option value="1">Default</option>
200
+ <option value="2">Strip Tags</option>
201
+ <option value="3">UTF-8 Encode</option>
202
+ <option value="4">htmlentities</option>
203
+ <option value="5">Integer</option>
204
+ <option value="6">Price</option>
205
+ <option value="7">Remove Space</option><option value="10">Remove ShortCodes</option><option value="9">Remove Special Character</option>
206
+ <option value="8">CDATA</option>
207
+ </select>
208
+ <i class="dashicons dashicons-editor-expand expandType"></i>
209
+ <i style="display: none;" class="dashicons dashicons-editor-contract contractType"></i>
210
+ </td>
211
+ <td>
212
+ <input type="text" name="limit[]" class="wf_ps"/>
213
+ </td>
214
+ <td>
215
+ <i class="delRow dashicons dashicons-trash"></i>
216
+ </td>
217
+ </tr>
218
+ <tr>
219
+ <td>
220
+ <i class="wf_sortedtable dashicons dashicons-menu"></i>
221
+ </td>
222
+ <td>
223
+ <select name="mattributes[]" id="" required class="wf_mattributes">
224
+ <?php echo $dropDown->googleAttributesDropdown( 'link' ); ?>
225
+ </select>
226
+ </td>
227
+ <td>
228
+ <input type="text" name="prefix[]" autocomplete="off" class="wf_ps"/>
229
+ </td>
230
+ <td>
231
+ <select name="type[]" class="attr_type wfnoempty">
232
+ <option value="attribute"> <?php echo _e( 'Attribute', 'woo-feed' ); ?></option>
233
+ <option value="pattern"> <?php echo _e( 'Pattern', 'woo-feed' ); ?></option>
234
+ </select>
235
+ </td>
236
+ <td>
237
+ <select name="attributes[]" id="" class="wf_attr wf_attributes">
238
+ <?php echo $product->attributeDropdown( 'link' ); ?>
239
+ </select>
240
+ <input type="text" name="default[]" autocomplete="off" class="wf_default wf_attributes"
241
+ style=" display: none;"/>
242
+ </td>
243
+ <td>
244
+ <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
245
+ </td>
246
+ <td>
247
+ <select name="output_type[][]" id="" class="outputType wfnoempty">
248
+ <option value="1">Default</option>
249
+ <option value="2">Strip Tags</option>
250
+ <option value="3">UTF-8 Encode</option>
251
+ <option value="4">htmlentities</option>
252
+ <option value="5">Integer</option>
253
+ <option value="6">Price</option>
254
+ <option value="7">Remove Space</option><option value="10">Remove ShortCodes</option><option value="9">Remove Special Character</option>
255
+ <option value="8">CDATA</option>
256
+ </select>
257
+ <i class="dashicons dashicons-editor-expand expandType"></i>
258
+ <i style="display: none;" class="dashicons dashicons-editor-contract contractType"></i>
259
+ </td>
260
+ <td>
261
+ <input type="text" name="limit[]" class="wf_ps"/>
262
+ </td>
263
+ <td>
264
+ <i class="delRow dashicons dashicons-trash"></i>
265
+ </td>
266
+ </tr>
267
+ <tr>
268
+ <td>
269
+ <i class="wf_sortedtable dashicons dashicons-menu"></i>
270
+ </td>
271
+ <td>
272
+ <select name="mattributes[]" id="" required class="wf_mattributes">
273
+ <?php echo $dropDown->googleAttributesDropdown('product_type'); ?>
274
+ </select>
275
+ </td>
276
+ <td>
277
+ <input type="text" name="prefix[]" autocomplete="off" class="wf_ps"/>
278
+ </td>
279
+ <td>
280
+ <select name="type[]" class="attr_type wfnoempty">
281
+ <option value="attribute"> <?php echo _e('Attribute','woo-feed');?></option>
282
+ <option value="pattern"> <?php echo _e('Pattern','woo-feed');?></option>
283
+ </select>
284
+ </td>
285
+ <td>
286
+ <select name="attributes[]" id="" class="wf_attr wf_attributes">
287
+ <?php echo $product->attributeDropdown('product_type'); ?>
288
+ </select>
289
+ <input type="text" name="default[]" autocomplete="off" class="wf_default wf_attributes"
290
+ style=" display: none;"/>
291
+ </td>
292
+ <td>
293
+ <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
294
+ </td>
295
+ <td>
296
+ <select name="output_type[][]" id="" class="outputType wfnoempty">
297
+ <option value="1">Default</option>
298
+ <option value="2">Strip Tags</option>
299
+ <option value="3">UTF-8 Encode</option>
300
+ <option value="4">htmlentities</option>
301
+ <option value="5">Integer</option>
302
+ <option value="6">Price</option>
303
+ <option value="7">Remove Space</option><option value="10">Remove ShortCodes</option><option value="9">Remove Special Character</option>
304
+ <option value="8">CDATA</option>
305
+ </select>
306
+ <i class="dashicons dashicons-editor-expand expandType"></i>
307
+ <i style="display: none;" class="dashicons dashicons-editor-contract contractType"></i>
308
+ </td>
309
+ <td>
310
+ <input type="text" name="limit[]" class="wf_ps"/>
311
+ </td>
312
+ <td>
313
+ <i class="delRow dashicons dashicons-trash"></i>
314
+ </td>
315
+ </tr>
316
+ <tr>
317
+ <td>
318
+ <i class="wf_sortedtable dashicons dashicons-menu"></i>
319
+ </td>
320
+ <td>
321
+ <select name="mattributes[]" id="" required class="wf_mattributes">
322
+ <?php echo $dropDown->googleAttributesDropdown('current_category'); ?>
323
+ </select>
324
+ </td>
325
+ <td>
326
+ <input type="text" name="prefix[]" autocomplete="off" class="wf_ps"/>
327
+ </td>
328
+ <td>
329
+ <select name="type[]" class="attr_type wfnoempty">
330
+ <option value="attribute"> <?php echo _e('Attribute','woo-feed');?></option>
331
+ <option value="pattern" selected> <?php echo _e('Pattern','woo-feed');?></option>
332
+ </select>
333
+ </td>
334
+ <td>
335
+ <select name="attributes[]" style=" display: none;" id="" class="wf_attr wf_attributes">
336
+ <?php echo $product->attributeDropdown(); ?>
337
+ </select>
338
+ <input type="text" name="default[]" autocomplete="off" class="wf_default wf_attributes" />
339
+ <br><span style="font-size:x-small;"><a href="http://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category" target="_blank">Learn More..</a></span>
340
+ </td>
341
+ <td>
342
+ <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
343
+ </td>
344
+ <td>
345
+ <select name="output_type[][]" id="" class="outputType wfnoempty">
346
+ <option value="1">Default</option>
347
+ <option value="2">Strip Tags</option>
348
+ <option value="3">UTF-8 Encode</option>
349
+ <option value="4">htmlentities</option>
350
+ <option value="5">Integer</option>
351
+ <option value="6">Price</option>
352
+ <option value="7">Remove Space</option><option value="10">Remove ShortCodes</option><option value="9">Remove Special Character</option>
353
+ <option value="8">CDATA</option>
354
+ </select>
355
+ <i class="dashicons dashicons-editor-expand expandType"></i>
356
+ <i style="display: none;" class="dashicons dashicons-editor-contract contractType"></i>
357
+ </td>
358
+ <td>
359
+ <input type="text" name="limit[]" class="wf_ps"/>
360
+ </td>
361
+ <td>
362
+ <i class="delRow dashicons dashicons-trash"></i>
363
+ </td>
364
+ </tr>
365
+ <tr>
366
+ <td>
367
+ <i class="wf_sortedtable dashicons dashicons-menu"></i>
368
+ </td>
369
+ <td>
370
+ <select name="mattributes[]" id="" required class="wf_mattributes">
371
+ <?php echo $dropDown->googleAttributesDropdown( 'image' ); ?>
372
+ </select>
373
+ </td>
374
+ <td>
375
+ <input type="text" name="prefix[]" autocomplete="off" class="wf_ps"/>
376
+ </td>
377
+ <td>
378
+ <select name="type[]" class="attr_type wfnoempty">
379
+ <option value="attribute"> <?php echo _e( 'Attribute', 'woo-feed' ); ?></option>
380
+ <option value="pattern"> <?php echo _e( 'Pattern', 'woo-feed' ); ?></option>
381
+ </select>
382
+ </td>
383
+ <td>
384
+ <select name="attributes[]" id="" class="wf_attr wf_attributes">
385
+ <?php echo $product->attributeDropdown( 'image' ); ?>
386
+ </select>
387
+ <input type="text" name="default[]" autocomplete="off" class="wf_default wf_attributes"
388
+ style=" display: none;"/>
389
+ </td>
390
+ <td>
391
+ <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
392
+ </td>
393
+ <td>
394
+ <select name="output_type[][]" id="" class="outputType wfnoempty">
395
+ <option value="1">Default</option>
396
+ <option value="2">Strip Tags</option>
397
+ <option value="3">UTF-8 Encode</option>
398
+ <option value="4">htmlentities</option>
399
+ <option value="5">Integer</option>
400
+ <option value="6">Price</option>
401
+ <option value="7">Remove Space</option><option value="10">Remove ShortCodes</option><option value="9">Remove Special Character</option>
402
+ <option value="8">CDATA</option>
403
+ </select>
404
+ <i class="dashicons dashicons-editor-expand expandType"></i>
405
+ <i style="display: none;" class="dashicons dashicons-editor-contract contractType"></i>
406
+ </td>
407
+ <td>
408
+ <input type="text" name="limit[]" class="wf_ps"/>
409
+ </td>
410
+ <td>
411
+ <i class="delRow dashicons dashicons-trash"></i>
412
+ </td>
413
+ </tr>
414
+ <tr>
415
+ <td>
416
+ <i class="wf_sortedtable dashicons dashicons-menu"></i>
417
+ </td>
418
+ <td>
419
+ <select name="mattributes[]" id="" required class="wf_mattributes">
420
+ <?php echo $dropDown->googleAttributesDropdown( 'condition' ); ?>
421
+ </select>
422
+ </td>
423
+ <td>
424
+ <input type="text" name="prefix[]" autocomplete="off" class="wf_ps"/>
425
+ </td>
426
+ <td>
427
+ <select name="type[]" class="attr_type wfnoempty">
428
+ <option value="attribute"><?php echo _e( 'Attribute', 'woo-feed' ); ?></option>
429
+ <option value="pattern"><?php echo _e( 'Pattern', 'woo-feed' ); ?></option>
430
+ </select>
431
+ </td>
432
+ <td>
433
+ <select name="attributes[]" id="" class="wf_attr wf_attributes">
434
+ <?php echo $product->attributeDropdown( 'condition' ); ?>
435
+ </select>
436
+ <input type="text" style=" display: none;" name="default[]" autocomplete="off" class="wf_default wf_attributes"
437
+ />
438
+ </td>
439
+ <td>
440
+ <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
441
+ </td>
442
+ <td>
443
+ <select name="output_type[][]" id="" class="outputType wfnoempty">
444
+ <option value="1">Default</option>
445
+ <option value="2">Strip Tags</option>
446
+ <option value="3">UTF-8 Encode</option>
447
+ <option value="4">htmlentities</option>
448
+ <option value="5">Integer</option>
449
+ <option value="6">Price</option>
450
+ <option value="7">Remove Space</option><option value="10">Remove ShortCodes</option><option value="9">Remove Special Character</option>
451
+ <option value="8">CDATA</option>
452
+ </select>
453
+ <i class="dashicons dashicons-editor-expand expandType"></i>
454
+ <i style="display: none;" class="dashicons dashicons-editor-contract contractType"></i>
455
+ </td>
456
+ <td>
457
+ <input type="text" name="limit[]" class="wf_ps"/>
458
+ </td>
459
+ <td>
460
+ <i class="delRow dashicons dashicons-trash"></i>
461
+ </td>
462
+ </tr>
463
+ <tr>
464
+ <td>
465
+ <i class="wf_sortedtable dashicons dashicons-menu"></i>
466
+ </td>
467
+ <td>
468
+ <select name="mattributes[]" id="" required class="wf_mattributes">
469
+ <?php echo $dropDown->googleAttributesDropdown( 'availability' ); ?>
470
+ </select>
471
+ </td>
472
+ <td>
473
+ <input type="text" name="prefix[]" autocomplete="off" class="wf_ps"/>
474
+ </td>
475
+ <td>
476
+ <select name="type[]" class="attr_type wfnoempty">
477
+ <option value="attribute"> <?php echo _e( 'Attribute', 'woo-feed' ); ?></option>
478
+ <option value="pattern"> <?php echo _e( 'Pattern', 'woo-feed' ); ?></option>
479
+ </select>
480
+ </td>
481
+ <td>
482
+ <select name="attributes[]" id="" class="wf_attr wf_attributes">
483
+ <?php echo $product->attributeDropdown( 'availability' ); ?>
484
+ </select>
485
+ <input type="text" name="default[]" autocomplete="off" class="wf_default wf_attributes"
486
+ style=" display: none;"/>
487
+ </td>
488
+ <td>
489
+ <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
490
+ </td>
491
+ <td>
492
+ <select name="output_type[][]" id="" class="outputType wfnoempty">
493
+ <option value="1">Default</option>
494
+ <option value="2">Strip Tags</option>
495
+ <option value="3">UTF-8 Encode</option>
496
+ <option value="4">htmlentities</option>
497
+ <option value="5">Integer</option>
498
+ <option value="6">Price</option>
499
+ <option value="7">Remove Space</option><option value="10">Remove ShortCodes</option><option value="9">Remove Special Character</option>
500
+ <option value="8">CDATA</option>
501
+ </select>
502
+ <i class="dashicons dashicons-editor-expand expandType"></i>
503
+ <i style="display: none;" class="dashicons dashicons-editor-contract contractType"></i>
504
+ </td>
505
+ <td>
506
+ <input type="text" name="limit[]" class="wf_ps"/>
507
+ </td>
508
+ <td>
509
+ <i class="delRow dashicons dashicons-trash"></i>
510
+ </td>
511
+ </tr>
512
+ <tr>
513
+ <td>
514
+ <i class="wf_sortedtable dashicons dashicons-menu"></i>
515
+ </td>
516
+ <td>
517
+ <select name="mattributes[]" id="" required class="wf_mattributes">
518
+ <?php echo $dropDown->googleAttributesDropdown( 'price' ); ?>
519
+ </select>
520
+ </td>
521
+ <td>
522
+ <input type="text" name="prefix[]" autocomplete="off" class="wf_ps"/>
523
+ </td>
524
+ <td>
525
+ <select name="type[]" class="attr_type wfnoempty">
526
+ <option value="attribute"> <?php echo _e( 'Attribute', 'woo-feed' ); ?></option>
527
+ <option value="pattern"> <?php echo _e( 'Pattern', 'woo-feed' ); ?></option>
528
+ </select>
529
+ </td>
530
+ <td>
531
+ <select name="attributes[]" id="" class="wf_attr wf_attributes">
532
+ <?php echo $product->attributeDropdown( 'price' ); ?>
533
+ </select>
534
+ <input type="text" name="default[]" autocomplete="off" class="wf_default wf_attributes"
535
+ style=" display: none;"/>
536
+ </td>
537
+ <td>
538
+ <input type="text" name="suffix[]" value="USD" autocomplete="off" class="wf_ps"/>
539
+ </td>
540
+ <td>
541
+ <select name="output_type[][]" id="" class="outputType wfnoempty">
542
+ <option value="1">Default</option>
543
+ <option value="2">Strip Tags</option>
544
+ <option value="3">UTF-8 Encode</option>
545
+ <option value="4">htmlentities</option>
546
+ <option value="5">Integer</option>
547
+ <option selected value="6">Price</option>
548
+ <option value="7">Remove Space</option><option value="10">Remove ShortCodes</option><option value="9">Remove Special Character</option>
549
+ <option value="8">CDATA</option>
550
+ </select>
551
+ <i class="dashicons dashicons-editor-expand expandType"></i>
552
+ <i style="display: none;" class="dashicons dashicons-editor-contract contractType"></i>
553
+ </td>
554
+ <td>
555
+ <input type="text" name="limit[]" class="wf_ps"/>
556
+ </td>
557
+ <td>
558
+ <i class="delRow dashicons dashicons-trash"></i>
559
+ </td>
560
+ </tr>
561
+
562
+ <tr>
563
+ <td>
564
+ <i class="wf_sortedtable dashicons dashicons-menu"></i>
565
+ </td>
566
+ <td>
567
+ <select name="mattributes[]" id="" required class="wf_mattributes">
568
+ <?php echo $dropDown->googleAttributesDropdown( 'sku' ); ?>
569
+ </select>
570
+ </td>
571
+ <td>
572
+ <input type="text" name="prefix[]" autocomplete="off" class="wf_ps"/>
573
+ </td>
574
+ <td>
575
+ <select name="type[]" class="attr_type wfnoempty">
576
+ <option value="attribute"> <?php echo _e( 'Attribute', 'woo-feed' ); ?></option>
577
+ <option value="pattern"> <?php echo _e( 'Pattern', 'woo-feed' ); ?></option>
578
+ </select>
579
+ </td>
580
+ <td>
581
+ <select name="attributes[]" id="" class="wf_attr wf_attributes">
582
+ <?php echo $product->attributeDropdown( 'sku' ); ?>
583
+ </select>
584
+ <input type="text" name="default[]" autocomplete="off" class="wf_default wf_attributes"
585
+ style=" display: none;"/>
586
+ </td>
587
+ <td>
588
+ <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
589
+ </td>
590
+ <td>
591
+ <select name="output_type[][]" id="" class="outputType wfnoempty">
592
+ <option value="1">Default</option>
593
+ <option value="2">Strip Tags</option>
594
+ <option value="3">UTF-8 Encode</option>
595
+ <option value="4">htmlentities</option>
596
+ <option value="5">Integer</option>
597
+ <option value="6">Price</option>
598
+ <option value="7">Remove Space</option><option value="10">Remove ShortCodes</option><option value="9">Remove Special Character</option>
599
+ <option value="8">CDATA</option>
600
+ </select>
601
+ <i class="dashicons dashicons-editor-expand expandType"></i>
602
+ <i style="display: none;" class="dashicons dashicons-editor-contract contractType"></i>
603
+ </td>
604
+ <td>
605
+ <input type="text" name="limit[]" class="wf_ps"/>
606
+ </td>
607
+ <td>
608
+ <i class="delRow dashicons dashicons-trash"></i>
609
+ </td>
610
+ </tr>
611
+ <tr>
612
+ <td>
613
+ <i class="wf_sortedtable dashicons dashicons-menu"></i>
614
+ </td>
615
+ <td>
616
+ <select name="mattributes[]" id="" required class="wf_mattributes">
617
+ <?php echo $dropDown->googleAttributesDropdown( 'brand' ); ?>
618
+ </select>
619
+ </td>
620
+ <td>
621
+ <input type="text" name="prefix[]" autocomplete="off" class="wf_ps"/>
622
+ </td>
623
+ <td>
624
+ <select name="type[]" class="attr_type wfnoempty">
625
+ <option value="attribute" ><?php echo _e( 'Attribute', 'woo-feed' ); ?></option>
626
+ <option value="pattern" selected><?php echo _e( 'Pattern', 'woo-feed' ); ?></option>
627
+ </select>
628
+ </td>
629
+ <td>
630
+ <select name="attributes[]" style=" display: none;" id="" class="wf_attr wf_attributes">
631
+ <?php echo $product->attributeDropdown(); ?>
632
+ </select>
633
+ <?php
634
+ $url = site_url();
635
+ $WABrand="";
636
+ // Remove all illegal characters from a url
637
+ $url = filter_var($url, FILTER_SANITIZE_URL);
638
+ // Validate url
639
+ if (filter_var($url, FILTER_VALIDATE_URL) !== false) {
640
+ $url=parse_url($url);
641
+ if(array_key_exists('host',$url)){
642
+ $arr = explode('.',$url['host']);
643
+ $WABrand = $arr[count($arr) - 2];
644
+ }
645
+ }
646
+
647
+ ?>
648
+ <input type="text" name="default[]" value="<?php echo $WABrand; ?>" autocomplete="off" class="wf_default wf_attributes"/>
649
+ </td>
650
+ <td>
651
+ <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
652
+ </td>
653
+ <td>
654
+ <select name="output_type[][]" id="" class="outputType wfnoempty">
655
+ <option value="1">Default</option>
656
+ <option value="2">Strip Tags</option>
657
+ <option value="3">UTF-8 Encode</option>
658
+ <option value="4">htmlentities</option>
659
+ <option value="5">Integer</option>
660
+ <option value="6">Price</option>
661
+ <option value="7">Remove Space</option>
662
+ <option value="10">Remove ShortCodes</option>
663
+ <option value="9">Remove Special Character</option>
664
+ <option value="8">CDATA</option>
665
+ </select>
666
+ <i class="dashicons dashicons-editor-expand expandType"></i>
667
+ <i style="display: none;" class="dashicons dashicons-editor-contract contractType"></i>
668
+ </td>
669
+ <td>
670
+ <input type="text" name="limit[]" class="wf_ps"/>
671
+ </td>
672
+ <td>
673
+ <i class="delRow dashicons dashicons-trash"></i>
674
+ </td>
675
+ </tr>
676
+ </tbody>
677
+ <tfoot>
678
+ <tr>
679
+ <td>
680
+ <button type="button" class="button-small button-primary" id="wf_newRow">
681
+ <?php echo _e( 'Add New Row', 'woo-feed' ); ?>
682
+ </button>
683
+ </td>
684
+ <td colspan="8">
685
+
686
+ </td>
687
+ </tr>
688
+ </tfoot>
689
+ </table>
690
+ <table class=" widefat fixed">
691
+ <tr>
692
+ <td align="left" class="">
693
+ <div class="makeFeedResponse"></div>
694
+ <div class="makeFeedComplete"></div>
695
+ </td>
696
+ <td align="right">
697
+ <button type="submit" id="wf_submit" class="wfbtn">
698
+ <?php echo _e( 'Save & Generate Feed', 'woo-feed' ); ?>
699
+ </button>
700
+ </td>
701
+ </tr>
702
+ </table>
703
+ </div>
704
+ </li>
705
+ <li>
706
+ <input type="radio" name="wf_tabs" id="tab3"/>
707
+ <label class="wf-tab-name" for="tab3"><?php echo _e( 'FTP', 'woo-feed' ); ?></label>
708
+
709
+ <div id="wf-tab-content3" class="wf-tab-content">
710
+ <table class="table widefat fixed mtable" width="100%">
711
+ <tbody>
712
+ <tr>
713
+ <td><?php echo _e( 'Enabled', 'woo-feed' ); ?></td>
714
+ <td>
715
+ <select name="ftpenabled" id="">
716
+ <option value="0"><?php echo _e( 'Disabled', 'woo-feed' ); ?></option>
717
+ <option value="1"><?php echo _e( 'Enabled', 'woo-feed' ); ?></option>
718
+ </select>
719
+ </td>
720
+ </tr>
721
+ <tr>
722
+ <td><?php echo _e( 'Host Name', 'woo-feed' ); ?></td>
723
+ <td><input type="text" name="ftphost"/></td>
724
+ </tr>
725
+ <tr>
726
+ <td><?php echo _e( 'User Name', 'woo-feed' ); ?></td>
727
+ <td><input type="text" name="ftpuser"/></td>
728
+ </tr>
729
+ <tr>
730
+ <td><?php echo _e( 'Password', 'woo-feed' ); ?></td>
731
+ <td><input type="password" name="ftppassword"/></td>
732
+ </tr>
733
+ <tr>
734
+ <td><?php echo _e( 'Path', 'woo-feed' ); ?></td>
735
+ <td><input type="text" name="ftppath"/></td>
736
+ </tr>
737
+ </tbody>
738
+ </table>
739
+ <table class=" widefat fixed">
740
+ <tr>
741
+ <td align="left" class="makeFeedResponse">
742
+
743
+ </td>
744
+ <td align="right">
745
+ <button type="submit" id="wf_submit" class="wfbtn">
746
+ <?php echo _e( 'Save & Generate Feed', 'woo-feed' ); ?>
747
+ </button>
748
+ </td>
749
+ </tr>
750
+ </table>
751
+ </div>
752
+ </li>
753
+
754
+ </ul>
admin/partials/facebook/add-feed.php CHANGED
@@ -328,15 +328,15 @@
328
  <td>
329
  <select name="type[]" class="attr_type wfnoempty">
330
  <option value="attribute"> <?php echo _e('Attribute', 'woo-feed'); ?></option>
331
- <option value="pattern"> <?php echo _e('Pattern', 'woo-feed'); ?></option>
332
  </select>
333
  </td>
334
  <td>
335
- <select name="attributes[]" id="" class="wf_attr wf_attributes">
336
  <?php echo $product->attributeDropdown(); ?>
337
  </select>
338
- <input type="text" name="default[]" autocomplete="off" class="wf_default wf_attributes"
339
- style=" display: none;"/>
340
  </td>
341
  <td>
342
  <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
@@ -620,17 +620,31 @@
620
  <input type="text" name="prefix[]" autocomplete="off" class="wf_ps"/>
621
  </td>
622
  <td>
623
- <select name="type[]" class="attr_type wfnoempty">
624
  <option value="attribute"><?php echo _e('Attribute', 'woo-feed'); ?></option>
625
- <option value="pattern"><?php echo _e('Pattern', 'woo-feed'); ?></option>
626
  </select>
627
  </td>
628
  <td>
629
- <select name="attributes[]" id="" class="wf_attr wf_attributes">
630
  <?php echo $product->attributeDropdown(); ?>
631
  </select>
632
- <input type="text" name="default[]" style=" display: none;" autocomplete="off" class="wf_default wf_attributes"
633
- />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
634
  </td>
635
  <td>
636
  <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
328
  <td>
329
  <select name="type[]" class="attr_type wfnoempty">
330
  <option value="attribute"> <?php echo _e('Attribute', 'woo-feed'); ?></option>
331
+ <option value="pattern" selected> <?php echo _e('Pattern', 'woo-feed'); ?></option>
332
  </select>
333
  </td>
334
  <td>
335
+ <select name="attributes[]" id="" style=" display: none;" class="wf_attr wf_attributes">
336
  <?php echo $product->attributeDropdown(); ?>
337
  </select>
338
+ <input type="text" name="default[]" autocomplete="off" class="wf_default wf_attributes"/>
339
+ <br><span style="font-size: x-small;"><a href="http://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category" target="_blank">Learn More..</a></span>
340
  </td>
341
  <td>
342
  <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
620
  <input type="text" name="prefix[]" autocomplete="off" class="wf_ps"/>
621
  </td>
622
  <td>
623
+ <select name="type[]" class="attr_type wfnoempty">
624
  <option value="attribute"><?php echo _e('Attribute', 'woo-feed'); ?></option>
625
+ <option value="pattern" selected><?php echo _e('Pattern', 'woo-feed'); ?></option>
626
  </select>
627
  </td>
628
  <td>
629
+ <select name="attributes[]" style=" display: none;" id="" class="wf_attr wf_attributes">
630
  <?php echo $product->attributeDropdown(); ?>
631
  </select>
632
+ <?php
633
+ $url = site_url();
634
+ $WABrand="";
635
+ // Remove all illegal characters from a url
636
+ $url = filter_var($url, FILTER_SANITIZE_URL);
637
+ // Validate url
638
+ if (filter_var($url, FILTER_VALIDATE_URL) !== false) {
639
+ $url=parse_url($url);
640
+ if(array_key_exists('host',$url)){
641
+ $arr = explode('.',$url['host']);
642
+ $WABrand = $arr[count($arr) - 2];
643
+ }
644
+ }
645
+
646
+ ?>
647
+ <input type="text" name="default[]" value="<?php echo $WABrand; ?>" autocomplete="off" class="wf_default wf_attributes"/>
648
  </td>
649
  <td>
650
  <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
admin/partials/google/add-feed.php CHANGED
@@ -328,15 +328,15 @@
328
  <td>
329
  <select name="type[]" class="attr_type wfnoempty">
330
  <option value="attribute"> <?php echo _e('Attribute','woo-feed');?></option>
331
- <option value="pattern"> <?php echo _e('Pattern','woo-feed');?></option>
332
  </select>
333
  </td>
334
  <td>
335
- <select name="attributes[]" id="" class="wf_attr wf_attributes">
336
  <?php echo $product->attributeDropdown(); ?>
337
  </select>
338
- <input type="text" name="default[]" autocomplete="off" class="wf_default wf_attributes"
339
- style=" display: none;"/>
340
  </td>
341
  <td>
342
  <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
@@ -622,16 +622,30 @@
622
  </td>
623
  <td>
624
  <select name="type[]" class="attr_type wfnoempty">
625
- <option value="attribute"><?php echo _e( 'Attribute', 'woo-feed' ); ?></option>
626
- <option value="pattern"><?php echo _e( 'Pattern', 'woo-feed' ); ?></option>
627
  </select>
628
  </td>
629
  <td>
630
- <select name="attributes[]" id="" class="wf_attr wf_attributes">
631
  <?php echo $product->attributeDropdown(); ?>
632
  </select>
633
- <input type="text" name="default[]" style=" display: none;" autocomplete="off" class="wf_default wf_attributes"
634
- />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
635
  </td>
636
  <td>
637
  <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
328
  <td>
329
  <select name="type[]" class="attr_type wfnoempty">
330
  <option value="attribute"> <?php echo _e('Attribute','woo-feed');?></option>
331
+ <option value="pattern" selected> <?php echo _e('Pattern','woo-feed');?></option>
332
  </select>
333
  </td>
334
  <td>
335
+ <select name="attributes[]" style=" display: none;" id="" class="wf_attr wf_attributes">
336
  <?php echo $product->attributeDropdown(); ?>
337
  </select>
338
+ <input type="text" name="default[]" autocomplete="off" class="wf_default wf_attributes" />
339
+ <br><span style="font-size:x-small;"><a href="http://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category" target="_blank">Learn More..</a></span>
340
  </td>
341
  <td>
342
  <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
622
  </td>
623
  <td>
624
  <select name="type[]" class="attr_type wfnoempty">
625
+ <option value="attribute" ><?php echo _e( 'Attribute', 'woo-feed' ); ?></option>
626
+ <option value="pattern" selected><?php echo _e( 'Pattern', 'woo-feed' ); ?></option>
627
  </select>
628
  </td>
629
  <td>
630
+ <select name="attributes[]" style=" display: none;" id="" class="wf_attr wf_attributes">
631
  <?php echo $product->attributeDropdown(); ?>
632
  </select>
633
+ <?php
634
+ $url = site_url();
635
+ $WABrand="";
636
+ // Remove all illegal characters from a url
637
+ $url = filter_var($url, FILTER_SANITIZE_URL);
638
+ // Validate url
639
+ if (filter_var($url, FILTER_VALIDATE_URL) !== false) {
640
+ $url=parse_url($url);
641
+ if(array_key_exists('host',$url)){
642
+ $arr = explode('.',$url['host']);
643
+ $WABrand = $arr[count($arr) - 2];
644
+ }
645
+ }
646
+
647
+ ?>
648
+ <input type="text" name="default[]" value="<?php echo $WABrand; ?>" autocomplete="off" class="wf_default wf_attributes"/>
649
  </td>
650
  <td>
651
  <input type="text" name="suffix[]" autocomplete="off" class="wf_ps"/>
admin/partials/woo-feed-admin-display.php CHANGED
@@ -17,6 +17,7 @@ $dropDown = new Woo_Feed_Dropdown();
17
  $product = new Woo_Feed_Products();
18
  $attributes=new Woo_Feed_Default_Attributes();
19
  $product->load_attributes();
 
20
  ?>
21
 
22
  <div class="wrap" id="Feed">
17
  $product = new Woo_Feed_Products();
18
  $attributes=new Woo_Feed_Default_Attributes();
19
  $product->load_attributes();
20
+
21
  ?>
22
 
23
  <div class="wrap" id="Feed">
admin/partials/woo-feed-edit-template.php CHANGED
@@ -14,6 +14,12 @@
14
  $dropDown = new Woo_Feed_Dropdown();
15
  $product = new Woo_Feed_Products();
16
  $product->load_attributes();
 
 
 
 
 
 
17
  $AttributesDropdown = $feedRules['provider'] . "AttributesDropdown";
18
  //echo "<pre>";print_r($feedRules);
19
  ?>
14
  $dropDown = new Woo_Feed_Dropdown();
15
  $product = new Woo_Feed_Products();
16
  $product->load_attributes();
17
+
18
+ # Condition is for those merchants which support another merchant feed requirements.
19
+ if($feedRules['provider']=='adroll'){
20
+ $feedRules['provider']='google';
21
+ }
22
+
23
  $AttributesDropdown = $feedRules['provider'] . "AttributesDropdown";
24
  //echo "<pre>";print_r($feedRules);
25
  ?>
admin/partials/woo-feed-manage-list.php CHANGED
@@ -232,7 +232,7 @@ if(isset($_POST)&& isset($_POST['filename'])){
232
  processFeed(products,0,0);
233
  }
234
 
235
- console.log("Counting Total Products:"+products);
236
 
237
  $(".feed-progress-container2").text("Processing Products...");
238
  }else{
@@ -260,7 +260,9 @@ if(isset($_POST)&& isset($_POST['filename'])){
260
  console.log("Offset:"+currentProducts);
261
  console.log("Limit:"+currentProducts);
262
 
263
- $(".feed-progress-container2").text(currentProducts+" out of "+n+" products processed.");
 
 
264
 
265
  if(batch<batches){
266
  var a = performance.now();
@@ -276,7 +278,7 @@ if(isset($_POST)&& isset($_POST['filename'])){
276
  feed: fileName
277
  },
278
  success : function(response) {
279
- console.log(response);
280
  if(response.success) {
281
  if(response.data.products=="yes"){
282
  offset=offset+limit;
@@ -330,7 +332,7 @@ if(isset($_POST)&& isset($_POST['filename'])){
330
  feed:fileName
331
  },
332
  success : function(response) {
333
- console.log(response);
334
  if(response.success) {
335
  width ='100';
336
  showFeedProgress();
232
  processFeed(products,0,0);
233
  }
234
 
235
+ // console.log("Counting Total Products:"+products);
236
 
237
  $(".feed-progress-container2").text("Processing Products...");
238
  }else{
260
  console.log("Offset:"+currentProducts);
261
  console.log("Limit:"+currentProducts);
262
 
263
+ //$(".feed-progress-container2").text(currentProducts+" out of "+n+" products processed.");
264
+ var nWidth=Math.round(width);
265
+ $(".feed-progress-container2").text("Processing products..."+nWidth+"%");
266
 
267
  if(batch<batches){
268
  var a = performance.now();
278
  feed: fileName
279
  },
280
  success : function(response) {
281
+ // console.log(response);
282
  if(response.success) {
283
  if(response.data.products=="yes"){
284
  offset=offset+limit;
332
  feed:fileName
333
  },
334
  success : function(response) {
335
+ // console.log(response);
336
  if(response.success) {
337
  width ='100';
338
  showFeedProgress();
admin/partials/woo-feed-pro-vs-free.php CHANGED
@@ -13,8 +13,76 @@
13
  <div class="wrap">
14
  <h2><?php echo _e('Pro vs Free', 'woo-feed'); ?></h2>
15
  <?php echo WPFFWMessage()->infoMessage1(); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  <table class="widefat fixed" >
17
  <thead>
 
 
 
18
  <tr>
19
  <th><h3>Features</h3></th>
20
  <th style="width: 30%;text-align: center;"><h3>Free</h3></th>
@@ -156,7 +224,7 @@
156
  <tr>
157
  <td></td>
158
  <td></td>
159
- <td style="text-align: center;"><a href="https://webappick.com/plugin/woocommerce-product-feed-pro/" target="_blank"><button class="button button-primary">Buy Now</button></a></td>
160
  </tr>
161
  </tbody>
162
  </table>
13
  <div class="wrap">
14
  <h2><?php echo _e('Pro vs Free', 'woo-feed'); ?></h2>
15
  <?php echo WPFFWMessage()->infoMessage1(); ?>
16
+
17
+
18
+ <div class="woo_feed_free_manage_attribute">
19
+
20
+ <div class="woo_feed_screen">
21
+ <h2 class="woo-feed-screen-shot-title">Dynamic Attribute</h2>
22
+ <p class="woo_feed_screen_des">
23
+ The Dynamic Attribute combine the powerful features of the WooCommerce Product Feed Pro with the ability to set your own conditions for any types of the attribute.There are different types of Woocommerce users have different types & classes of products and services. So, they may need varieties of custom values to demonstrate their products. And we are giving the options to make dynamic attributes as your need. Also, it is possible to generate the data feed file according to the search engines requirements without changing the attributes in your store.
24
+ </p>
25
+ <p class="woo_feed_screen_des_2">
26
+ If you have both Simple Product and Variable Product with size, color and other attribute variations then you have to make a Dynamic Attribute for each attribute(color,size) which contain the value of that attribute for both Simple Product and Product Variations. See the example below.
27
+ </p>
28
+ <?php
29
+ echo '<img class="woo_feed_screenshort" src="' . plugins_url( 'images/DA_1.png', dirname(__FILE__) ) . '" > ';
30
+ ?>
31
+ <p class="woo_feed_screen_des_2">
32
+ You can change your product price dynamically if you need.
33
+ </p>
34
+ <?php
35
+ echo '<img class="woo_feed_screenshort" src="' . plugins_url( 'images/DA_2.png', dirname(__FILE__) ) . '" > ';
36
+ ?>
37
+ <p class="woo_feed_screen_des_2">
38
+ You can add vat with your price.
39
+ </p>
40
+ <?php
41
+ echo '<img class="woo_feed_screenshort" src="' . plugins_url( 'images/DA_3.png', dirname(__FILE__) ) . '" > ';
42
+ ?>
43
+ <p class="woo_feed_screen_des_2">
44
+ It's possible to make Custom Label by searching your product information.
45
+ </p>
46
+ <?php
47
+ echo '<img class="woo_feed_screenshort" src="' . plugins_url( 'images/DA_4.png', dirname(__FILE__) ) . '" > ';
48
+ ?>
49
+ </div>
50
+
51
+ <div class="woo_feed_screen">
52
+ <h2 class="woo-feed-screen-shot-title">Category Mapping (To Reach Your Buyer)</h2>
53
+ <p class="woo_feed_screen_des">
54
+ Categories are the most important key to getting products to the search result . It is best practice to assign most matching shopping engine category to your store category for each product. During the creating of your feeds, you can also create a category for that particular product. And after creating the category you’ll get an option to map it to your marketplace category so that you can make two categories aligned to each other. This process is totally dynamic by our plugin & you can map all of your categories to make it more relevant & reachable to buyers.
55
+ <br/><iframe width="560" height="315" src="https://www.youtube.com/embed/uofoOSwkCG8" frameborder="0" allowfullscreen></iframe>
56
+ </p>
57
+
58
+ </div>
59
+
60
+ <div class="woo_feed_screen">
61
+ <h2 class="woo-feed-screen-shot-title">Smart Filter & Conditions</h2>
62
+ <p class="woo_feed_screen_des">Smart Filters help you to exclude the Non-Profitable , Out of Season, Hidden or Drafted Products you don’t want to share. Also, Its high filtering options help users to filter products according to product titles, price, availability of stocks, user ratings, total sales and other extensive product specifications.</p>
63
+ <?php
64
+ echo '<img class="woo_feed_screenshort" src="' . plugins_url( 'images/filter.png', dirname(__FILE__) ) . '" > ';
65
+ ?>
66
+ </div>
67
+
68
+ <div class="woo_feed_screen">
69
+ <h2 class="woo-feed-screen-shot-title">Multi Language Feed (WPML)</h2>
70
+ <p class="woo_feed_screen_des">WooCommerce Product Feed Pro is compatible with <b>WPML WooCommerce plugin</b>. And by supporting WPML this makes it possible for the e-commerce owners to create product feed in different languages. This enables the e-commerce owners the chance to globalize their business in minutes because you always have better chance of selling something if you are selling it in the native language.</p>
71
+
72
+ </div>
73
+
74
+ <div class="woo_feed_screen">
75
+ <h2 class="woo-feed-screen-shot-title">Custom Taxonomy</h2>
76
+ <p class="woo_feed_screen_des">The user can easily use any custom taxonomy or others WooCommerce plugin or extensions taxonomy value into the feed. For Example Product Brand, Model No size etc. So you can easily use those value into your feed.</p>
77
+ </div>
78
+
79
+ </div>
80
+
81
  <table class="widefat fixed" >
82
  <thead>
83
+ <tr>
84
+ <th colspan="3" style="font-size: 36px;text-align: center;color: #00b9eb;">Free vs Premium</th>
85
+ </tr>
86
  <tr>
87
  <th><h3>Features</h3></th>
88
  <th style="width: 30%;text-align: center;"><h3>Free</h3></th>
224
  <tr>
225
  <td></td>
226
  <td></td>
227
+ <td style="text-align: center;"><a href="https://goo.gl/URWvp6" target="_blank"><button class="button button-primary">Buy Now</button></a></td>
228
  </tr>
229
  </tbody>
230
  </table>
includes/class-woo-feed.php CHANGED
@@ -71,8 +71,8 @@ class Woo_Feed
71
  {
72
 
73
  $this->woo_feed = 'woo-feed';
74
- $this->version = '2.1.14';
75
-
76
  $this->load_dependencies();
77
  $this->set_locale();
78
  $this->define_admin_hooks();
71
  {
72
 
73
  $this->woo_feed = 'woo-feed';
74
+ $this->version = '2.1.21';
75
+
76
  $this->load_dependencies();
77
  $this->set_locale();
78
  $this->define_admin_hooks();
includes/classes/class-woo-feed-admin-message.php CHANGED
@@ -18,6 +18,8 @@ class Woo_Feed_Message
18
  <table class="widefat fixed">
19
  <tbody>
20
  <tr>
 
 
21
  <td align="center"><b><a target="_blank" style="color:#0073aa;"
22
  href="http://webappick.helpscoutdocs.com/">DOCUMENTATION</a></b></td>
23
  <td align="center"><b><a style="color:#ee264a;" target="_blank"
@@ -27,6 +29,13 @@ class Woo_Feed_Message
27
  href="https://webappick.com/support/">FREE SUPPORT & HELP ( support@webappick.com )</a></b></td>
28
  </tr>
29
  </tbody>
 
 
 
 
 
 
 
30
  </table><br>
31
  EOD;
32
  return $html;
18
  <table class="widefat fixed">
19
  <tbody>
20
  <tr>
21
+ <td align="center"><b><a target="_blank" style="color:#ee264a;"
22
+ href="https://goo.gl/URWvp6">GET PREMIUM</a></b></td>
23
  <td align="center"><b><a target="_blank" style="color:#0073aa;"
24
  href="http://webappick.helpscoutdocs.com/">DOCUMENTATION</a></b></td>
25
  <td align="center"><b><a style="color:#ee264a;" target="_blank"
29
  href="https://webappick.com/support/">FREE SUPPORT & HELP ( support@webappick.com )</a></b></td>
30
  </tr>
31
  </tbody>
32
+ </table>
33
+ <table class="widefat fixed">
34
+ <tbody>
35
+ <tr>
36
+ <td align='center'>If you like <b>WooCommerce Product Feed</b>, Please leave us a <a target="_blank" style="color:#0073aa;text-decoration: underline" href="https://wordpress.org/support/plugin/webappick-product-feed-for-woocommerce/reviews/?rate=5#new-post">&#x2605;&#x2605;&#x2605;&#x2605;&#x2605;</a> rating at <a target="_blank" style="color:#0073aa;" href="https://wordpress.org/support/plugin/webappick-product-feed-for-woocommerce/reviews/?rate=5#new-post">WordPress.org</a> and claim your <a href="https://goo.gl/7Di7wJ" target="_blanck"><b>special discount</b></a> to get the premium version.</td>
37
+ </tr>
38
+ </tbody>
39
  </table><br>
40
  EOD;
41
  return $html;
includes/classes/class-woo-feed-default-attributes.php CHANGED
@@ -45,8 +45,7 @@ class Woo_Feed_Default_Attributes
45
  "bing" =>"Bing",
46
  "become" =>"Become",
47
  "connexity" =>"Connexity",
48
- "pricespy" =>"PriceSpy",
49
- "prisjakt" =>"Prisjakt",
50
  "---2" =>"",
51
  "--3" =>"Amazon Template",
52
  "amazon_clothing" =>"Clothing",
45
  "bing" =>"Bing",
46
  "become" =>"Become",
47
  "connexity" =>"Connexity",
48
+ "adroll" =>"AdRoll",
 
49
  "---2" =>"",
50
  "--3" =>"Amazon Template",
51
  "amazon_clothing" =>"Clothing",
includes/classes/class-woo-feed-engine.php CHANGED
@@ -182,6 +182,7 @@ class WF_Engine
182
  if (array_key_exists($rules['value'], $value)) {
183
  $output = $value[$rules['value']];
184
  if (!empty($output)) {
 
185
  if(!empty($rules['type'])){
186
  foreach ($rules['type'] as $key22 => $value22) {
187
  # Format Output According to output type
@@ -243,6 +244,11 @@ class WF_Engine
243
  }
244
  }
245
  }
 
 
 
 
 
246
  } elseif ($output=="0"){
247
  $output="0";
248
  } else{
@@ -256,6 +262,7 @@ class WF_Engine
256
  if (!empty($default[$i])) {
257
  $output = str_replace("wf_pattern_", "", $rules['value']);
258
  if (!empty($output)) {
 
259
  # Format Output According to output type
260
  if(!empty($rules['type'])){
261
  foreach ($rules['type'] as $key22 => $value22) {
@@ -305,6 +312,7 @@ class WF_Engine
305
  }
306
  }
307
  $output = '<![CDATA[' . $output . ']]>';
 
308
  } else {
309
  if(substr($output, 0, 4 ) === "http"){
310
  $output = $this->make_url_with_parameter($rules['prefix'],$output,$rules['suffix']);
@@ -317,6 +325,11 @@ class WF_Engine
317
  }
318
  }
319
  }
 
 
 
 
 
320
  } elseif ($output=="0"){
321
  $output="0";
322
  } else{
@@ -506,6 +519,7 @@ class WF_Engine
506
  $string = str_replace( "\n", ' ', $string );
507
  $string = str_replace( "\r", ' ', $string );
508
  $string =trim($string);
 
509
  return $string;
510
  }else if($string=="0"){
511
  return "0";
@@ -535,7 +549,7 @@ class WF_Engine
535
  $string = str_replace( "\r", ' ', $string );
536
  $string = str_replace( "\t", ' ', $string );
537
  $string = trim($string);
538
-
539
  return $string;
540
  }else if($string=="0"){
541
  return "0";
182
  if (array_key_exists($rules['value'], $value)) {
183
  $output = $value[$rules['value']];
184
  if (!empty($output)) {
185
+
186
  if(!empty($rules['type'])){
187
  foreach ($rules['type'] as $key22 => $value22) {
188
  # Format Output According to output type
244
  }
245
  }
246
  }
247
+
248
+ if(!empty($output)){
249
+ $output=stripslashes($output);
250
+ }
251
+
252
  } elseif ($output=="0"){
253
  $output="0";
254
  } else{
262
  if (!empty($default[$i])) {
263
  $output = str_replace("wf_pattern_", "", $rules['value']);
264
  if (!empty($output)) {
265
+
266
  # Format Output According to output type
267
  if(!empty($rules['type'])){
268
  foreach ($rules['type'] as $key22 => $value22) {
312
  }
313
  }
314
  $output = '<![CDATA[' . $output . ']]>';
315
+
316
  } else {
317
  if(substr($output, 0, 4 ) === "http"){
318
  $output = $this->make_url_with_parameter($rules['prefix'],$output,$rules['suffix']);
325
  }
326
  }
327
  }
328
+
329
+ if(!empty($output)){
330
+ $output=stripslashes($output);
331
+ }
332
+
333
  } elseif ($output=="0"){
334
  $output="0";
335
  } else{
519
  $string = str_replace( "\n", ' ', $string );
520
  $string = str_replace( "\r", ' ', $string );
521
  $string =trim($string);
522
+ $string = stripslashes($string);
523
  return $string;
524
  }else if($string=="0"){
525
  return "0";
549
  $string = str_replace( "\r", ' ', $string );
550
  $string = str_replace( "\t", ' ', $string );
551
  $string = trim($string);
552
+ $string = stripslashes($string);
553
  return $string;
554
  }else if($string=="0"){
555
  return "0";
includes/classes/class-woo-feed-products.php CHANGED
@@ -63,7 +63,7 @@ class Woo_Feed_Products
63
  * @var array $attributeList attributes list array.
64
  */
65
  public $attributeList;
66
-
67
  public $feedRule;
68
  public $idExist=array();
69
  /**
@@ -74,7 +74,7 @@ class Woo_Feed_Products
74
  public function woo_feed_get_visible_product($feedRule="")
75
  {
76
  try{
77
-
78
  if(!empty($feedRule)){
79
  $this->feedRule=$feedRule;
80
  }
@@ -158,7 +158,7 @@ class Woo_Feed_Products
158
 
159
  $parentStatus=get_post($this->parentID);
160
  if($parentStatus && is_object($parentStatus) && $parentStatus->post_status!='publish'){
161
- continue;
162
  }
163
 
164
  # Check Valid URL
@@ -240,12 +240,12 @@ class Woo_Feed_Products
240
  $this->productsList[$i]['quantity'] = $this->get_quantity($this->childID, "_stock");
241
  $this->productsList[$i]['sale_price_sdate'] = $this->get_date($this->childID, "_sale_price_dates_from");
242
  $this->productsList[$i]['sale_price_edate'] = $this->get_date($this->childID, "_sale_price_dates_to");
243
- $this->productsList[$i]['price'] = ($product->get_regular_price()) ? $product->get_regular_price() : false;
244
- $this->productsList[$i]['sale_price'] = ($product->get_price()) ? $product->get_price() : false;
245
- $this->productsList[$i]['weight'] = ($product->get_weight()) ? $product->get_weight() : false;
246
- $this->productsList[$i]['width'] = ($product->get_width()) ? $product->get_width() : false;
247
- $this->productsList[$i]['height'] = ($product->get_height()) ? $product->get_height() : false;
248
- $this->productsList[$i]['length'] = ($product->get_length()) ? $product->get_length() : false;
249
 
250
  # Sale price effective date
251
  $from = $this->sale_price_effective_date($this->childID, '_sale_price_dates_from');
@@ -332,12 +332,12 @@ class Woo_Feed_Products
332
  $this->productsList[$i]['quantity'] = $this->get_quantity($post->ID, "_stock");
333
  $this->productsList[$i]['sale_price_sdate'] = $this->get_date($post->ID, "_sale_price_dates_from");
334
  $this->productsList[$i]['sale_price_edate'] = $this->get_date($post->ID, "_sale_price_dates_to");
335
- $this->productsList[$i]['price'] = ($product->get_regular_price()) ? $product->get_regular_price() : false;
336
- $this->productsList[$i]['sale_price'] = ($product->get_price()) ? $product->get_price() :false;
337
- $this->productsList[$i]['weight'] = ($product->get_weight()) ? $product->get_weight() : false;
338
- $this->productsList[$i]['width'] = ($product->get_width()) ? $product->get_width() : false;
339
- $this->productsList[$i]['height'] = ($product->get_height()) ? $product->get_height() : false;
340
- $this->productsList[$i]['length'] = ($product->get_length()) ? $product->get_length() : false;
341
 
342
  # Sale price effective date
343
  $from = $this->sale_price_effective_date($post->ID, '_sale_price_dates_from');
@@ -416,12 +416,12 @@ class Woo_Feed_Products
416
  $this->productsList[$i]['quantity'] = $this->get_quantity($post->ID, "_stock");
417
  $this->productsList[$i]['sale_price_sdate'] = $this->get_date($post->ID, "_sale_price_dates_from");
418
  $this->productsList[$i]['sale_price_edate'] = $this->get_date($post->ID, "_sale_price_dates_to");
419
- $this->productsList[$i]['price'] = ($product->get_regular_price()) ? $product->get_regular_price() : false;
420
- $this->productsList[$i]['sale_price'] = ($product->get_price()) ? $product->get_price() :false;
421
- $this->productsList[$i]['weight'] = ($product->get_weight()) ? $product->get_weight() : false;
422
- $this->productsList[$i]['width'] = ($product->get_width()) ? $product->get_width() : false;
423
- $this->productsList[$i]['height'] = ($product->get_height()) ? $product->get_height() : false;
424
- $this->productsList[$i]['length'] = ($product->get_length()) ? $product->get_length() : false;
425
 
426
  # Sale price effective date
427
  $from = $this->sale_price_effective_date($post->ID, '_sale_price_dates_from');
@@ -523,12 +523,12 @@ class Woo_Feed_Products
523
  $this->productsList[$i]['quantity'] = $this->get_quantity($post->ID, "_stock");
524
  $this->productsList[$i]['sale_price_sdate'] = $this->get_date($post->ID, "_sale_price_dates_from");
525
  $this->productsList[$i]['sale_price_edate'] = $this->get_date($post->ID, "_sale_price_dates_to");
526
- $this->productsList[$i]['price'] =($product->get_price()) ? $product->get_price() : false;
527
- $this->productsList[$i]['sale_price'] =($product->get_price()) ? $product->get_price() : $product->get_price();
528
- $this->productsList[$i]['weight'] = ($product->get_weight()) ? $product->get_weight() : false;
529
- $this->productsList[$i]['width'] = ($product->get_width()) ? $product->get_width() : false;
530
- $this->productsList[$i]['height'] = ($product->get_height()) ? $product->get_height() : false;
531
- $this->productsList[$i]['length'] = ($product->get_length()) ? $product->get_length() : false;
532
 
533
  # Sale price effective date
534
  $from = $this->sale_price_effective_date($post->ID, '_sale_price_dates_from');
@@ -609,17 +609,14 @@ class Woo_Feed_Products
609
  $this->productsList[$i]['sale_price_sdate'] = $this->get_date($post->ID, "_sale_price_dates_from");
610
  $this->productsList[$i]['sale_price_edate'] = $this->get_date($post->ID, "_sale_price_dates_to");
611
 
612
-
613
-
614
  $price=($product->get_price()) ? $product->get_price() : false;
615
-
616
-
617
- $this->productsList[$i]['price'] = ($price) ? $price : $product->get_price();
618
- $this->productsList[$i]['sale_price'] = ($price) ? $price : $product->get_price();
619
- $this->productsList[$i]['weight'] = ($product->get_weight()) ? $product->get_weight() : false;
620
- $this->productsList[$i]['width'] = ($product->get_width()) ? $product->get_width() : false;
621
- $this->productsList[$i]['height'] = ($product->get_height()) ? $product->get_height() : false;
622
- $this->productsList[$i]['length'] = ($product->get_length()) ? $product->get_length() : false;
623
 
624
  # Sale price effective date
625
  $from = $this->sale_price_effective_date($post->ID, '_sale_price_dates_from');
@@ -631,7 +628,7 @@ class Woo_Feed_Products
631
  } else {
632
  $this->productsList[$i]['sale_price_effective_date'] = "";
633
  }
634
- }
635
  }
636
  $i++;
637
  endwhile;
@@ -743,7 +740,7 @@ class Woo_Feed_Products
743
  *
744
  * @return array
745
  */
746
-
747
  public function additionalImages($Id)
748
  {
749
  $ids=$this->getAttributeValue($Id,"_product_image_gallery");
@@ -851,7 +848,7 @@ class Woo_Feed_Products
851
  $sql = "SELECT meta_key as name, meta_value as type
852
  FROM " . $wpdb->prefix . "postmeta" . " group by meta_key";
853
  $data = $wpdb->get_results($sql);
854
- if (count($data)) {
855
  foreach ($data as $key => $value) {
856
  if (substr($value->name, 0, 1) !== "_") { //&& substr($value->name, 0, 13) !== "attribute_pa_"
857
  $info["wf_cattr_" . $value->name] = $value->name;
@@ -1101,6 +1098,7 @@ class Woo_Feed_Products
1101
  $images = array(
1102
  "image" => "Main Image",
1103
  "feature_image" => "Featured Image",
 
1104
  "image_1" => "Additional Image 1",
1105
  "image_2" => "Additional Image 2",
1106
  "image_3" => "Additional Image 3",
63
  * @var array $attributeList attributes list array.
64
  */
65
  public $attributeList;
66
+
67
  public $feedRule;
68
  public $idExist=array();
69
  /**
74
  public function woo_feed_get_visible_product($feedRule="")
75
  {
76
  try{
77
+
78
  if(!empty($feedRule)){
79
  $this->feedRule=$feedRule;
80
  }
158
 
159
  $parentStatus=get_post($this->parentID);
160
  if($parentStatus && is_object($parentStatus) && $parentStatus->post_status!='publish'){
161
+ continue;
162
  }
163
 
164
  # Check Valid URL
240
  $this->productsList[$i]['quantity'] = $this->get_quantity($this->childID, "_stock");
241
  $this->productsList[$i]['sale_price_sdate'] = $this->get_date($this->childID, "_sale_price_dates_from");
242
  $this->productsList[$i]['sale_price_edate'] = $this->get_date($this->childID, "_sale_price_dates_to");
243
+ $this->productsList[$i]['price'] = ($product->get_regular_price()) ? $product->get_regular_price() : $product->get_price();
244
+ $this->productsList[$i]['sale_price'] = ($product->get_sale_price()) ? $product->get_sale_price() : "";
245
+ $this->productsList[$i]['weight'] = ($product->get_weight()) ? $product->get_weight() : "";
246
+ $this->productsList[$i]['width'] = ($product->get_width()) ? $product->get_width() : "";
247
+ $this->productsList[$i]['height'] = ($product->get_height()) ? $product->get_height() : "";
248
+ $this->productsList[$i]['length'] = ($product->get_length()) ? $product->get_length() : "";
249
 
250
  # Sale price effective date
251
  $from = $this->sale_price_effective_date($this->childID, '_sale_price_dates_from');
332
  $this->productsList[$i]['quantity'] = $this->get_quantity($post->ID, "_stock");
333
  $this->productsList[$i]['sale_price_sdate'] = $this->get_date($post->ID, "_sale_price_dates_from");
334
  $this->productsList[$i]['sale_price_edate'] = $this->get_date($post->ID, "_sale_price_dates_to");
335
+ $this->productsList[$i]['price'] = ($product->get_regular_price()) ? $product->get_regular_price() : $product->get_price();
336
+ $this->productsList[$i]['sale_price'] = ($product->get_sale_price()) ? $product->get_sale_price() : "";
337
+ $this->productsList[$i]['weight'] = ($product->get_weight()) ? $product->get_weight() : "";
338
+ $this->productsList[$i]['width'] = ($product->get_width()) ? $product->get_width() : "";
339
+ $this->productsList[$i]['height'] = ($product->get_height()) ? $product->get_height() : "";
340
+ $this->productsList[$i]['length'] = ($product->get_length()) ? $product->get_length() : "";
341
 
342
  # Sale price effective date
343
  $from = $this->sale_price_effective_date($post->ID, '_sale_price_dates_from');
416
  $this->productsList[$i]['quantity'] = $this->get_quantity($post->ID, "_stock");
417
  $this->productsList[$i]['sale_price_sdate'] = $this->get_date($post->ID, "_sale_price_dates_from");
418
  $this->productsList[$i]['sale_price_edate'] = $this->get_date($post->ID, "_sale_price_dates_to");
419
+ $this->productsList[$i]['price'] = ($product->get_regular_price()) ? $product->get_regular_price() : $product->get_price();
420
+ $this->productsList[$i]['sale_price'] = ($product->get_sale_price()) ? $product->get_sale_price() : "";
421
+ $this->productsList[$i]['weight'] = ($product->get_weight()) ? $product->get_weight() : "";
422
+ $this->productsList[$i]['width'] = ($product->get_width()) ? $product->get_width() : "";
423
+ $this->productsList[$i]['height'] = ($product->get_height()) ? $product->get_height() : "";
424
+ $this->productsList[$i]['length'] = ($product->get_length()) ? $product->get_length() : "";
425
 
426
  # Sale price effective date
427
  $from = $this->sale_price_effective_date($post->ID, '_sale_price_dates_from');
523
  $this->productsList[$i]['quantity'] = $this->get_quantity($post->ID, "_stock");
524
  $this->productsList[$i]['sale_price_sdate'] = $this->get_date($post->ID, "_sale_price_dates_from");
525
  $this->productsList[$i]['sale_price_edate'] = $this->get_date($post->ID, "_sale_price_dates_to");
526
+ $this->productsList[$i]['price'] =($product->get_regular_price()) ? $product->get_regular_price() : $product->get_price();
527
+ $this->productsList[$i]['sale_price'] =($product->get_sale_price()) ? $product->get_sale_price() : "";
528
+ $this->productsList[$i]['weight'] = ($product->get_weight()) ? $product->get_weight() : "";
529
+ $this->productsList[$i]['width'] = ($product->get_width()) ? $product->get_width() : "";
530
+ $this->productsList[$i]['height'] = ($product->get_height()) ? $product->get_height() : "";
531
+ $this->productsList[$i]['length'] = ($product->get_length()) ? $product->get_length() : "";
532
 
533
  # Sale price effective date
534
  $from = $this->sale_price_effective_date($post->ID, '_sale_price_dates_from');
609
  $this->productsList[$i]['sale_price_sdate'] = $this->get_date($post->ID, "_sale_price_dates_from");
610
  $this->productsList[$i]['sale_price_edate'] = $this->get_date($post->ID, "_sale_price_dates_to");
611
 
 
 
612
  $price=($product->get_price()) ? $product->get_price() : false;
613
+
614
+ $this->productsList[$i]['price'] = ($product->get_regular_price()) ? $product->get_regular_price() : $price;
615
+ $this->productsList[$i]['sale_price'] =($product->get_sale_price()) ? $product->get_sale_price() : "";
616
+ $this->productsList[$i]['weight'] = ($product->get_weight()) ? $product->get_weight() : "";
617
+ $this->productsList[$i]['width'] = ($product->get_width()) ? $product->get_width() : "";
618
+ $this->productsList[$i]['height'] = ($product->get_height()) ? $product->get_height() : "";
619
+ $this->productsList[$i]['length'] = ($product->get_length()) ? $product->get_length() : "";
 
620
 
621
  # Sale price effective date
622
  $from = $this->sale_price_effective_date($post->ID, '_sale_price_dates_from');
628
  } else {
629
  $this->productsList[$i]['sale_price_effective_date'] = "";
630
  }
631
+ }
632
  }
633
  $i++;
634
  endwhile;
740
  *
741
  * @return array
742
  */
743
+
744
  public function additionalImages($Id)
745
  {
746
  $ids=$this->getAttributeValue($Id,"_product_image_gallery");
848
  $sql = "SELECT meta_key as name, meta_value as type
849
  FROM " . $wpdb->prefix . "postmeta" . " group by meta_key";
850
  $data = $wpdb->get_results($sql);
851
+ if ($data) {
852
  foreach ($data as $key => $value) {
853
  if (substr($value->name, 0, 1) !== "_") { //&& substr($value->name, 0, 13) !== "attribute_pa_"
854
  $info["wf_cattr_" . $value->name] = $value->name;
1098
  $images = array(
1099
  "image" => "Main Image",
1100
  "feature_image" => "Featured Image",
1101
+ "images" => "Images [Comma Separated]",
1102
  "image_1" => "Additional Image 1",
1103
  "image_2" => "Additional Image 2",
1104
  "image_3" => "Additional Image 3",
includes/feeds/class-woo-feed-facebook.php CHANGED
@@ -421,9 +421,9 @@ class Woo_Feed_Facebook
421
  $output = '<?xml version="1.0" encoding="UTF-8" ?>
422
  <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
423
  <channel>
424
- <title>' . get_option('blogname') . '</title>
425
  <link><![CDATA[' . site_url() . ']]></link>
426
- <description>' . get_option('blogdescription') . '</description>';
427
  return $output;
428
  }
429
 
421
  $output = '<?xml version="1.0" encoding="UTF-8" ?>
422
  <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
423
  <channel>
424
+ <title><![CDATA[' . html_entity_decode(get_option('blogname')) . ']]></title>
425
  <link><![CDATA[' . site_url() . ']]></link>
426
+ <description><![CDATA[' . html_entity_decode( get_option('blogdescription')) . ']]></description>';
427
  return $output;
428
  }
429
 
includes/feeds/class-woo-feed-google.php CHANGED
@@ -471,9 +471,9 @@ class Woo_Feed_Google
471
  $output = '<?xml version="1.0" encoding="UTF-8" ?>
472
  <rss version="2.0" xmlns:g="http://base.google.com/ns/1.0" xmlns:c="http://base.google.com/cns/1.0">
473
  <channel>
474
- <title>' . get_option('blogname') . '</title>
475
  <link><![CDATA['.site_url().']]></link>
476
- <description>'.get_option('blogdescription').'</description>';
477
  return $output;
478
  }
479
 
471
  $output = '<?xml version="1.0" encoding="UTF-8" ?>
472
  <rss version="2.0" xmlns:g="http://base.google.com/ns/1.0" xmlns:c="http://base.google.com/cns/1.0">
473
  <channel>
474
+ <title><![CDATA[' . html_entity_decode(get_option('blogname')) . ']]></title>
475
  <link><![CDATA['.site_url().']]></link>
476
+ <description><![CDATA['.html_entity_decode(get_option('blogdescription')).']]></description>';
477
  return $output;
478
  }
479
 
woo-feed.php CHANGED
@@ -16,7 +16,7 @@
16
  * Plugin Name: WooCommerce Product Feed
17
  * Plugin URI: https://webappick.com/
18
  * Description: This plugin generate WooCommerce product feed for Shopping Engines like Google Shopping,Facebook Product Feed,eBay,Amazon,Idealo and many more..
19
- * Version: 2.1.14
20
  * Author: WebAppick
21
  * Author URI: https://webappick.com/
22
  * License: GPL v2
@@ -125,7 +125,7 @@ function woo_feed_add_update($info = "", $name = "")
125
  set_time_limit(0);
126
  if (count($info) && isset($info['provider'])) {
127
  # GEt Post data
128
- if ($info['provider'] == 'google') {
129
  $merchant = "Woo_Feed_Google";
130
  } elseif ($info['provider'] == 'facebook') {
131
  $merchant = "Woo_Feed_Facebook";
@@ -142,13 +142,7 @@ function woo_feed_add_update($info = "", $name = "")
142
  $type = sanitize_text_field($info['feedType']);
143
 
144
  $feedRules = $info;
145
-
146
- # FTP File Upload Info
147
- $ftphost = sanitize_text_field($info['ftphost']);
148
- $ftpuser = sanitize_text_field($info['ftpuser']);
149
- $ftppassword = sanitize_text_field($info['ftppassword']);
150
- $ftppath = sanitize_text_field($info['ftppath']);
151
- $ftpenabled = sanitize_text_field($info['ftpenabled']);
152
 
153
  # Get Feed info
154
  $products = new Woo_Generate_Feed($merchant, $feedRules);
@@ -156,13 +150,18 @@ function woo_feed_add_update($info = "", $name = "")
156
 
157
  if($type=='csv'){
158
  $csvHead[0]=$getString['header'];
159
- $string=array_merge($csvHead,$getString['body']);
 
 
 
 
 
160
  }else{
161
  $string=$getString['header'].$getString['body'].$getString['footer'];
162
  }
163
 
164
  # Check If any products founds
165
- if ($string) {
166
 
167
  $upload_dir = wp_upload_dir();
168
  $base = $upload_dir['basedir'];
@@ -177,12 +176,26 @@ function woo_feed_add_update($info = "", $name = "")
177
  $saveFile = $save->saveFile($path, $file, $string);
178
  }
179
 
180
- # Upload file to ftp server
181
- if ($ftpenabled) {
182
- $ftp = new FTPClient();
183
- $ftp->connect($ftphost, $ftpuser, $ftppassword);
184
- $ftp->uploadFile($file, $ftppath . "/" . $fileName . "." . $type);
185
- $ftp->getMessages();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
186
  }
187
 
188
  # Save Info into database
@@ -279,7 +292,7 @@ function woo_feed_generate_feed_data($info){
279
  try{
280
  if (count($info) && isset($info['provider'])) {
281
  # GEt Post data
282
- if ($info['provider'] == 'google') {
283
  $merchant = "Woo_Feed_Google";
284
  } elseif ($info['provider'] == 'facebook') {
285
  $merchant = "Woo_Feed_Facebook";
@@ -307,11 +320,15 @@ function woo_feed_generate_feed_data($info){
307
  $prevFeed= woo_feed_get_batch_feed_info($feedService,$type,$feedBody);
308
  if($prevFeed){
309
  if($type=='csv'){
310
- $newFeed=array_merge($prevFeed, $feed['body']);
 
 
 
311
  }else{
312
  $newFeed=$prevFeed.$feed['body'];
 
313
  }
314
- woo_feed_save_batch_feed_info($feedService,$type,$newFeed,$feedBody);
315
  }else{
316
  woo_feed_save_batch_feed_info($feedService,$type,$feed['body'],$feedBody);
317
  }
@@ -469,7 +486,11 @@ function woo_feed_save_feed_file(){
469
 
470
  if($type=='csv'){
471
  $csvHead[0]=$feedHeader;
472
- $string=array_merge($csvHead,$feedBody);
 
 
 
 
473
  }else{
474
  $string=$feedHeader.$feedBody.$feedFooter;
475
  }
@@ -480,7 +501,7 @@ function woo_feed_save_feed_file(){
480
  $path = $base . "/woo-feed/" . $feedService . "/" . $type;
481
  $saveFile = false;
482
  # Check If any products founds
483
- if ($string) {
484
  # Save File
485
 
486
  $file = $path . "/" . $fileName . "." . $type;
@@ -491,7 +512,7 @@ function woo_feed_save_feed_file(){
491
  $saveFile = $save->saveFile($path, $file, $string);
492
  }
493
  }else{
494
- $data=array("success"=>false,"message"=>"No Product Found with your feed configuration. Please Update & Generate the feed again.");
495
  wp_send_json_error($data);
496
  wp_die();
497
  }
@@ -527,6 +548,30 @@ function woo_feed_save_feed_file(){
527
 
528
  $update = update_option('wf_feed_' . $fileName, serialize($feedInfo));
529
  if ($saveFile) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
530
  $getInfo = unserialize(get_option('wf_feed_' . $fileName));
531
  $url = $getInfo['url'];
532
  $data=array(
@@ -645,7 +690,6 @@ function woo_feed_config_feed(){
645
  require plugin_dir_path(__FILE__) . 'admin/partials/woo-feed-config.php';
646
  }
647
 
648
-
649
  /*
650
  * Scheduled Action Hook
651
  */
16
  * Plugin Name: WooCommerce Product Feed
17
  * Plugin URI: https://webappick.com/
18
  * Description: This plugin generate WooCommerce product feed for Shopping Engines like Google Shopping,Facebook Product Feed,eBay,Amazon,Idealo and many more..
19
+ * Version: 2.1.21
20
  * Author: WebAppick
21
  * Author URI: https://webappick.com/
22
  * License: GPL v2
125
  set_time_limit(0);
126
  if (count($info) && isset($info['provider'])) {
127
  # GEt Post data
128
+ if ($info['provider'] == 'google' || $info['provider'] == 'adroll') {
129
  $merchant = "Woo_Feed_Google";
130
  } elseif ($info['provider'] == 'facebook') {
131
  $merchant = "Woo_Feed_Facebook";
142
  $type = sanitize_text_field($info['feedType']);
143
 
144
  $feedRules = $info;
145
+
 
 
 
 
 
 
146
 
147
  # Get Feed info
148
  $products = new Woo_Generate_Feed($merchant, $feedRules);
150
 
151
  if($type=='csv'){
152
  $csvHead[0]=$getString['header'];
153
+ if(!empty($csvHead) && !empty($getString['body'])){
154
+ $string=array_merge($csvHead,$getString['body']);
155
+ }else{
156
+ $string=array();
157
+ }
158
+
159
  }else{
160
  $string=$getString['header'].$getString['body'].$getString['footer'];
161
  }
162
 
163
  # Check If any products founds
164
+ if ($string && !empty($string)) {
165
 
166
  $upload_dir = wp_upload_dir();
167
  $base = $upload_dir['basedir'];
176
  $saveFile = $save->saveFile($path, $file, $string);
177
  }
178
 
179
+ # FTP File Upload Info
180
+ $ftpHost = sanitize_text_field($info['ftphost']);
181
+ $ftpUser = sanitize_text_field($info['ftpuser']);
182
+ $ftpPassword = sanitize_text_field($info['ftppassword']);
183
+ $ftpPath = sanitize_text_field($info['ftppath']);
184
+ $ftpEnabled = sanitize_text_field($info['ftpenabled']);
185
+
186
+ try{
187
+ if ($type == "json") {
188
+ $type="csv";
189
+ }
190
+ # Upload file to ftp server
191
+ if ($ftpEnabled) {
192
+ $ftp = new FTPClient();
193
+ if ($ftp->connect($ftpHost, $ftpUser, $ftpPassword)){
194
+ $ftp->uploadFile($file, $fileName . "." . $type);
195
+ }
196
+ }
197
+ }catch (Exception $e){
198
+
199
  }
200
 
201
  # Save Info into database
292
  try{
293
  if (count($info) && isset($info['provider'])) {
294
  # GEt Post data
295
+ if ($info['provider'] == 'google' || $info['provider'] == 'adroll') {
296
  $merchant = "Woo_Feed_Google";
297
  } elseif ($info['provider'] == 'facebook') {
298
  $merchant = "Woo_Feed_Facebook";
320
  $prevFeed= woo_feed_get_batch_feed_info($feedService,$type,$feedBody);
321
  if($prevFeed){
322
  if($type=='csv'){
323
+ if(!empty($prevFeed)){
324
+ $newFeed=array_merge($prevFeed, $feed['body']);
325
+ woo_feed_save_batch_feed_info($feedService,$type,$newFeed,$feedBody);
326
+ }
327
  }else{
328
  $newFeed=$prevFeed.$feed['body'];
329
+ woo_feed_save_batch_feed_info($feedService,$type,$newFeed,$feedBody);
330
  }
331
+
332
  }else{
333
  woo_feed_save_batch_feed_info($feedService,$type,$feed['body'],$feedBody);
334
  }
486
 
487
  if($type=='csv'){
488
  $csvHead[0]=$feedHeader;
489
+ if(!empty($csvHead) && !empty($feedBody)){
490
+ $string=array_merge($csvHead,$feedBody);
491
+ }else{
492
+ $string=array();
493
+ }
494
  }else{
495
  $string=$feedHeader.$feedBody.$feedFooter;
496
  }
501
  $path = $base . "/woo-feed/" . $feedService . "/" . $type;
502
  $saveFile = false;
503
  # Check If any products founds
504
+ if ($string && !empty($string)) {
505
  # Save File
506
 
507
  $file = $path . "/" . $fileName . "." . $type;
512
  $saveFile = $save->saveFile($path, $file, $string);
513
  }
514
  }else{
515
+ $data=array("success"=>false,"message"=>"No Product Found with your feed configuration. Please configure the feed properly.");
516
  wp_send_json_error($data);
517
  wp_die();
518
  }
548
 
549
  $update = update_option('wf_feed_' . $fileName, serialize($feedInfo));
550
  if ($saveFile) {
551
+
552
+ # FTP File Upload Info
553
+ $ftpHost = $info['ftphost'];
554
+ $ftpUser = $info['ftpuser'];
555
+ $ftpPassword = $info['ftppassword'];
556
+ $ftpPath = $info['ftppath'];
557
+ $ftpEnabled = $info['ftpenabled'];
558
+
559
+ try{
560
+ if ($type == "json") {
561
+ $type="csv";
562
+ }
563
+ # Upload file to ftp server
564
+ if ($ftpEnabled) {
565
+ $ftp = new FTPClient();
566
+ if ($ftp->connect($ftpHost, $ftpUser, $ftpPassword)){
567
+ $ftp->uploadFile($file, $fileName . "." . $type);
568
+ }
569
+ }
570
+ }catch (Exception $e){
571
+
572
+ }
573
+
574
+
575
  $getInfo = unserialize(get_option('wf_feed_' . $fileName));
576
  $url = $getInfo['url'];
577
  $data=array(
690
  require plugin_dir_path(__FILE__) . 'admin/partials/woo-feed-config.php';
691
  }
692
 
 
693
  /*
694
  * Scheduled Action Hook
695
  */