CTX Feed – WooCommerce Product Feed Manager Plugin - Version 4.3.31

Version Description

(2021-02-14) = * Added: Woo Feed to new name CTX Feed. * Added: Status page new look with all product counter.

Download this release

Release Info

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

Code changes from version 4.3.30 to 4.3.31

README.txt CHANGED
@@ -1,11 +1,11 @@
1
- === Product Feed for WooCommerce ===
2
  Contributors: wahid0003, webappick, mhamudul_hk, shuvo586, nayanchamp7
3
  Donate link: https://webappick.com
4
  Tags: Product Feed, WooCommerce, Google Shopping, Google Merchant, Facebook Catalog, Bing Shopping, Instagram Shop, Skroutz Data Feed, xml feed, csv feed, txt feed, woocommerce product feed
5
  Requires at least: 3.6
6
  Tested Up To: 5.6.1
7
  Requires PHP: 5.6
8
- Stable tag: 4.3.30
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -14,7 +14,7 @@ Generate error-free woocommerce product feed for any marketing channel like Goog
14
  == Description ==
15
  Easily create the most optimized and error-free product feeds for your WooCommerce store targeting the leading global and local product marketing channels like Google Shopping or Google Merchant, Facebook Dynamic Product Ads, Instagram Shopping Ads, Pinterest Shopping Ads, eBay Ads, Bing Ads, PriceRunner, Rakuten, PriceSpy, Kelko, and more.
16
 
17
- **WooCommerce Product Feed Pro (Woo Feed)** is a WooCommerce product feed generator plugin for WooCommerce powered stores. This plugin currently supports more than 100+ marketing channels. So, you can target your desired marketing channels, price comparison sites, and/or affiliate networks.
18
 
19
  It aims to reduce your hardship on marketing efforts to create product feeds and distribute them in multiple marketing/shopping channels. There are flexible options to update product information according to your given schedule and sync the update to the right channel via HTTP or FTP. Stay at ease knowing that your customers will automatically get the latest product information.
20
 
@@ -54,7 +54,7 @@ In a word, WooCommerce Product Feed is a revolution. Yeah, it's a revolution of
54
 
55
  **EASY USER INTERFACE:**
56
 
57
- Creating the product feed and navigating the woo feed plugin option is easy. Anyone can operate this product feed plugin without having any technical knowledge. You will get all the feed configuration in one window. There is no need to open a separate window to customize any field or option of the plugin.
58
 
59
  **PRODUCT TYPES:**
60
 
@@ -72,7 +72,7 @@ Supports all default WooCommerce product types including bundle product, composi
72
 
73
  The free version of this product feed plugin automatically adds variable products and product variation. If a variable product has four variations, then the plugin will add five products to the product feed, including one product for the variable product (parent of the variations) and four products for variations.
74
 
75
- There is an option on the <a target="_blank" href="https://webappick.com/plugin/woocommerce-product-feed-pro/">Woo Feed Pro</a> version there you can exclude the variations or the variable products or you can keep both the variable and product variations.
76
 
77
  **BUILTIN TEMPLATE:**
78
 
@@ -80,7 +80,7 @@ There are more than 100+ pre-configured templates to give you a quick start. Tho
80
 
81
  **CUSTOM TEMPLATE:**
82
 
83
- If a template is not available in our plugin, you can use the Custom Template to create any product feed for any channel. We can also add your channel as a template if you send your channels feed requirements to <a target="_blank" href="https://webappick.com/contact/">woo feed support team</a>.
84
 
85
  **PRODUCT ATTRIBUTES:**
86
 
@@ -142,7 +142,7 @@ Categories are the essential key to get products into search results. It is best
142
 
143
  **BATCH FEED MAKING:**
144
 
145
- Due to PHP execution time and memory limit, it's not possible to process Thousands of products at a time. We have developed the woo feed plugin with the functionality to make feed with batches. Users can easily set Limit and Offset to make feed. This functionality is compatible with any WordPress Hosting and any number of products you have on your site.
146
 
147
  **WP OPTIONS:**
148
 
@@ -170,7 +170,7 @@ Then comes the canonical_link attribute that redirects all the variants to the m
170
 
171
  **GOOGLE SHIPPING & TAX:**
172
 
173
- Woo Feed plugin allows you to place the shipping zone and shipping class accurately so that your Google Shopping product feed includes the correct shipping information (shipping country, region, service, postal_code, price). Our plugin utilizes your configured shipping zone settings for a proper representation. Along with WooCommerce Shipping this WooCommerce Google Product Feed plugin also compatible with <a target="_blank" href="https://codecanyon.net/item/table-rate-shipping-for-woocommerce/3796656">Table Rate Shipping</a> plugin by BolderElement.
174
 
175
  **GOOGLE ANALYTICS UTM PARAMETER:**
176
 
@@ -212,7 +212,7 @@ Our plugin automatically discounted price applied by any Dynamic Discount & Pric
212
 
213
  **SEO TITLE & META DESCRIPTION**
214
 
215
- Woo Feed plugin is compatible with three top-rated / most popular SEO plugins. You can assign SEO Meta Title and Meta Description instead of Product Title and Description if you want. Supported plugins are:
216
 
217
  * <a target="_blank" href="https://wordpress.org/plugins/wordpress-seo/">Yoast SEO</a>.
218
  * <a target="_blank" href="https://wordpress.org/plugins/all-in-one-seo-pack/">All in one SEO</a>.
@@ -233,7 +233,7 @@ The built-in caching feature of our WooCommerce product feed plugin reduces the
233
 
234
  **PRODUCT BRAND (PRO FEATURE)**
235
 
236
- Woo Feed Pro plugin has an option to add product brands. You can even add other brand plugins data for brands of your preference. The supported brand plugins are listed below:
237
 
238
  * <a target="_blank" href="https://woocommerce.com/products/brands/">WooCommerce Brands</a>
239
  * <a target="_blank" href="https://wordpress.org/plugins/perfect-woocommerce-brands/">Perfect Brands for WooCommerce</a>
@@ -450,7 +450,7 @@ e.g.
450
 
451
  1. Upload `webappick-product-feed-for-woocommerce` folder to the `/wp-content/plugins/` directory
452
  1. Activate the plugin through the 'Plugins' menu in WordPress
453
- 1. Select 'Woo Feed' from admin menu, Click 'Make Feed'
454
  1. Select the template and make feed
455
  1. Done!
456
 
@@ -498,6 +498,10 @@ Using pro version:
498
 
499
  == Changelog ==
500
 
 
 
 
 
501
  = 4.3.30 (2021-02-11) =
502
  * Added: WooCommerce latest version(5.0.0) compatibility.
503
  * Tweak: Updated doc links.
1
+ === CTX Feed - Generate WooCommerce Product Feed ===
2
  Contributors: wahid0003, webappick, mhamudul_hk, shuvo586, nayanchamp7
3
  Donate link: https://webappick.com
4
  Tags: Product Feed, WooCommerce, Google Shopping, Google Merchant, Facebook Catalog, Bing Shopping, Instagram Shop, Skroutz Data Feed, xml feed, csv feed, txt feed, woocommerce product feed
5
  Requires at least: 3.6
6
  Tested Up To: 5.6.1
7
  Requires PHP: 5.6
8
+ Stable tag: 4.3.31
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
14
  == Description ==
15
  Easily create the most optimized and error-free product feeds for your WooCommerce store targeting the leading global and local product marketing channels like Google Shopping or Google Merchant, Facebook Dynamic Product Ads, Instagram Shopping Ads, Pinterest Shopping Ads, eBay Ads, Bing Ads, PriceRunner, Rakuten, PriceSpy, Kelko, and more.
16
 
17
+ **WooCommerce Product Feed Pro (CTX Feed)** is a WooCommerce product feed generator plugin for WooCommerce powered stores. This plugin currently supports more than 100+ marketing channels. So, you can target your desired marketing channels, price comparison sites, and/or affiliate networks.
18
 
19
  It aims to reduce your hardship on marketing efforts to create product feeds and distribute them in multiple marketing/shopping channels. There are flexible options to update product information according to your given schedule and sync the update to the right channel via HTTP or FTP. Stay at ease knowing that your customers will automatically get the latest product information.
20
 
54
 
55
  **EASY USER INTERFACE:**
56
 
57
+ Creating the product feed and navigating the ctx feed plugin option is easy. Anyone can operate this product feed plugin without having any technical knowledge. You will get all the feed configuration in one window. There is no need to open a separate window to customize any field or option of the plugin.
58
 
59
  **PRODUCT TYPES:**
60
 
72
 
73
  The free version of this product feed plugin automatically adds variable products and product variation. If a variable product has four variations, then the plugin will add five products to the product feed, including one product for the variable product (parent of the variations) and four products for variations.
74
 
75
+ There is an option on the <a target="_blank" href="https://webappick.com/plugin/woocommerce-product-feed-pro/">CTX Feed Pro</a> version there you can exclude the variations or the variable products or you can keep both the variable and product variations.
76
 
77
  **BUILTIN TEMPLATE:**
78
 
80
 
81
  **CUSTOM TEMPLATE:**
82
 
83
+ If a template is not available in our plugin, you can use the Custom Template to create any product feed for any channel. We can also add your channel as a template if you send your channels feed requirements to <a target="_blank" href="https://webappick.com/contact/">ctx feed support team</a>.
84
 
85
  **PRODUCT ATTRIBUTES:**
86
 
142
 
143
  **BATCH FEED MAKING:**
144
 
145
+ Due to PHP execution time and memory limit, it's not possible to process Thousands of products at a time. We have developed the ctx feed plugin with the functionality to make feed with batches. Users can easily set Limit and Offset to make feed. This functionality is compatible with any WordPress Hosting and any number of products you have on your site.
146
 
147
  **WP OPTIONS:**
148
 
170
 
171
  **GOOGLE SHIPPING & TAX:**
172
 
173
+ CTX Feed plugin allows you to place the shipping zone and shipping class accurately so that your Google Shopping product feed includes the correct shipping information (shipping country, region, service, postal_code, price). Our plugin utilizes your configured shipping zone settings for a proper representation. Along with WooCommerce Shipping this WooCommerce Google Product Feed plugin also compatible with <a target="_blank" href="https://codecanyon.net/item/table-rate-shipping-for-woocommerce/3796656">Table Rate Shipping</a> plugin by BolderElement.
174
 
175
  **GOOGLE ANALYTICS UTM PARAMETER:**
176
 
212
 
213
  **SEO TITLE & META DESCRIPTION**
214
 
215
+ CTX Feed plugin is compatible with three top-rated / most popular SEO plugins. You can assign SEO Meta Title and Meta Description instead of Product Title and Description if you want. Supported plugins are:
216
 
217
  * <a target="_blank" href="https://wordpress.org/plugins/wordpress-seo/">Yoast SEO</a>.
218
  * <a target="_blank" href="https://wordpress.org/plugins/all-in-one-seo-pack/">All in one SEO</a>.
233
 
234
  **PRODUCT BRAND (PRO FEATURE)**
235
 
236
+ CTX Feed Pro plugin has an option to add product brands. You can even add other brand plugins data for brands of your preference. The supported brand plugins are listed below:
237
 
238
  * <a target="_blank" href="https://woocommerce.com/products/brands/">WooCommerce Brands</a>
239
  * <a target="_blank" href="https://wordpress.org/plugins/perfect-woocommerce-brands/">Perfect Brands for WooCommerce</a>
450
 
451
  1. Upload `webappick-product-feed-for-woocommerce` folder to the `/wp-content/plugins/` directory
452
  1. Activate the plugin through the 'Plugins' menu in WordPress
453
+ 1. Select 'CTX Feed' from admin menu, Click 'Make Feed'
454
  1. Select the template and make feed
455
  1. Done!
456
 
498
 
499
  == Changelog ==
500
 
501
+ = 4.3.31 (2021-02-14) =
502
+ * Added: Woo Feed to new name CTX Feed.
503
+ * Added: Status page new look with all product counter.
504
+
505
  = 4.3.30 (2021-02-11) =
506
  * Added: WooCommerce latest version(5.0.0) compatibility.
507
  * Tweak: Updated doc links.
admin/class-woo-feed-admin.php CHANGED
@@ -227,7 +227,7 @@ class Woo_Feed_Admin {
227
  * class.
228
  */
229
  if ( function_exists( 'add_options_page' ) ) {
230
- add_menu_page( __( 'Woo Feed', 'woo-feed' ), __( 'Woo Feed', 'woo-feed' ), 'manage_woocommerce', 'webappick-manage-feeds', 'woo_feed_manage_feed', 'dashicons-rss' );
231
  add_submenu_page( 'webappick-manage-feeds', __( 'Manage Feeds', 'woo-feed' ), __( 'Manage Feeds', 'woo-feed' ), 'manage_woocommerce', 'webappick-manage-feeds', 'woo_feed_manage_feed' );
232
  add_submenu_page( 'webappick-manage-feeds', __( 'Make Feed', 'woo-feed' ), __( 'Make Feed', 'woo-feed' ), 'manage_woocommerce', 'webappick-new-feed', 'woo_feed_generate_new_feed' );
233
  add_submenu_page( 'webappick-manage-feeds', __( 'Category Mapping', 'woo-feed' ), __( 'Category Mapping', 'woo-feed' ), 'manage_woocommerce', 'webappick-feed-category-mapping', 'woo_feed_category_mapping' );
227
  * class.
228
  */
229
  if ( function_exists( 'add_options_page' ) ) {
230
+ add_menu_page( __( 'CTX Feed', 'woo-feed' ), __( 'CTX Feed', 'woo-feed' ), 'manage_woocommerce', 'webappick-manage-feeds', 'woo_feed_manage_feed', 'dashicons-rss' );
231
  add_submenu_page( 'webappick-manage-feeds', __( 'Manage Feeds', 'woo-feed' ), __( 'Manage Feeds', 'woo-feed' ), 'manage_woocommerce', 'webappick-manage-feeds', 'woo_feed_manage_feed' );
232
  add_submenu_page( 'webappick-manage-feeds', __( 'Make Feed', 'woo-feed' ), __( 'Make Feed', 'woo-feed' ), 'manage_woocommerce', 'webappick-new-feed', 'woo_feed_generate_new_feed' );
233
  add_submenu_page( 'webappick-manage-feeds', __( 'Category Mapping', 'woo-feed' ), __( 'Category Mapping', 'woo-feed' ), 'manage_woocommerce', 'webappick-feed-category-mapping', 'woo_feed_category_mapping' );
admin/images/get-woo-feed-pro.svg CHANGED
@@ -1,31 +1,97 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <svg width="107px" height="25px" viewBox="0 0 107 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
- <!-- Generator: Sketch 61.2 (89653) - https://sketch.com -->
4
- <title>CTA</title>
5
- <desc>Created with Sketch.</desc>
6
- <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
7
- <g id="CTA" fill-rule="nonzero">
8
- <rect id="Rectangle" fill="#FF3355" x="0.132352941" y="0.360294118" width="106.481618" height="24.4007353" rx="12.1985294"></rect>
9
- <path d="M19.2022059,12.8492647 C19.1470588,12.8492647 19.1066176,12.8125 19.1066176,12.7536765 L19.1066176,11.9963235 C19.104345,11.9703416 19.1136834,11.9446854 19.1321255,11.9262432 C19.1505677,11.907801 19.1762239,11.8984627 19.2022059,11.9007353 L21.9632353,11.9007353 C22.0477941,11.9007353 22.0845588,11.9558824 22.0772059,12.0147059 C22.0477941,14.1801471 21.0845588,15.5220588 19.0330882,15.5110294 C17.0845588,15.5110294 15.7904412,14.1691176 15.7904412,12.1470588 C15.7904412,10.125 17.1433824,8.78308824 19.1654412,8.78308824 C20.0362991,8.75832837 20.8817831,9.07802702 21.5183824,9.67279412 C21.550596,9.70682032 21.550596,9.76009144 21.5183824,9.79411765 L20.9338235,10.5294118 C20.9201246,10.5462088 20.9002572,10.5568048 20.8786765,10.5588235 C20.8533232,10.5594394 20.8290321,10.5486434 20.8125,10.5294118 C20.350049,10.1409626 19.7657121,9.92752999 19.1617647,9.92647059 C18.5619039,9.88832985 17.9740956,10.1069024 17.5448863,10.5276958 C17.115677,10.9484892 16.8855087,11.5318546 16.9117647,12.1323529 C16.9117647,13.4742647 17.7610294,14.3713235 19.0183824,14.3713235 C19.9652733,14.459594 20.8093433,13.7755219 20.9191176,12.8308824 L19.2022059,12.8492647 Z" id="Path" fill="#FFFFFF"></path>
10
- <path d="M25.1176471,14.5220588 C25.4885221,14.528734 25.8487169,14.3977541 26.1286765,14.1544118 C26.155429,14.1316394 26.1891474,14.1186708 26.2242647,14.1176471 C26.249618,14.1170312 26.273909,14.1278272 26.2904412,14.1470588 L26.8382353,14.7389706 C26.8769925,14.7789075 26.8769925,14.8424161 26.8382353,14.8823529 C26.3568334,15.3412601 25.7037034,15.5749978 25.0404412,15.5257353 C24.4127108,15.5683847 23.7966414,15.3409501 23.3472045,14.9006424 C22.8977675,14.4603346 22.6577398,13.8490616 22.6875,13.2205882 C22.6493832,12.5966937 22.8808857,11.9864482 23.3232197,11.5448173 C23.7655538,11.1031865 24.3761669,10.8726552 25,10.9117647 C26.3897059,10.9117647 27.3051471,11.7426471 27.2977941,13.5477941 C27.3015245,13.5741138 27.292661,13.6006556 27.2738641,13.6194524 C27.2550673,13.6382492 27.2285255,13.6471127 27.2022059,13.6433824 L23.8529412,13.6433824 C24.0107685,14.2005798 24.5403974,14.5685487 25.1176471,14.5220588 Z M26.1764706,12.8382353 C26.0466714,12.2956235 25.5615971,11.9128992 25.0036765,11.9128992 C24.4457559,11.9128992 23.9606815,12.2956235 23.8308824,12.8382353 L26.1764706,12.8382353 Z" id="Shape" fill="#FFFFFF"></path>
11
- <path d="M29.8639706,14.4264706 C29.9997138,14.4097052 30.1275486,14.3534579 30.2316176,14.2647059 C30.2497404,14.2603367 30.268642,14.2603367 30.2867647,14.2647059 C30.3195966,14.2642964 30.3496973,14.2829302 30.3639706,14.3125 L30.6580882,15.0698529 C30.6875,15.1360294 30.6764706,15.1911765 30.6286765,15.2205882 C30.3485569,15.4224178 30.0106437,15.5281769 29.6654412,15.5220588 C28.8713235,15.5220588 28.4080882,14.9558824 28.4191176,13.9889706 L28.4191176,11.9889706 L27.8235294,11.9889706 C27.7975475,11.9912432 27.7718912,11.9819048 27.7534491,11.9634627 C27.7350069,11.9450205 27.7256685,11.9193643 27.7279412,11.8933824 L27.7279412,11.0808824 C27.7288603,11.056794 27.7395947,11.0341305 27.7576499,11.0181586 C27.7757051,11.0021867 27.7995089,10.9942972 27.8235294,10.9963235 L28.4191176,10.9963235 L28.4191176,9.61764706 C28.4191176,9.5625 28.4485294,9.52205882 28.5036765,9.52205882 L29.4117647,9.52205882 C29.4377466,9.51978619 29.4634029,9.52912457 29.481845,9.54756673 C29.5002872,9.56600888 29.5096256,9.59166512 29.5073529,9.61764706 L29.5073529,10.9963235 L30.4154412,10.9963235 C30.4394617,10.9942972 30.4632655,11.0021867 30.4813207,11.0181586 C30.4993759,11.0341305 30.5101103,11.056794 30.5110294,11.0808824 L30.5110294,11.8933824 C30.513302,11.9193643 30.5039637,11.9450205 30.4855215,11.9634627 C30.4670794,11.9819048 30.4414231,11.9912432 30.4154412,11.9889706 L29.5073529,11.9889706 L29.5073529,13.4338235 C29.4963235,14.1985294 29.5735294,14.4264706 29.8639706,14.4264706 Z" id="Path" fill="#FFFFFF"></path>
12
- <path d="M92.9227941,9.70955882 C93.0355116,9.83229938 93.0938491,9.99537908 93.0845588,10.1617647 C93.092784,10.3290999 93.0346534,10.4929225 92.9227941,10.6176471 C92.818376,10.7288538 92.6708042,10.7892241 92.5183824,10.7830882 C92.3648679,10.7893253 92.2161268,10.7290249 92.1102941,10.6176471 C91.9984348,10.4929225 91.9403042,10.3290999 91.9485294,10.1617647 C91.9392391,9.99537908 91.9975766,9.83229938 92.1102941,9.70955882 C92.2142161,9.59464144 92.3635367,9.53141556 92.5183824,9.53676471 C92.6721494,9.53149337 92.8203129,9.59479958 92.9227941,9.70955882 Z" id="Path" fill="#FFFFFF"></path>
13
- <path d="M93.4816176,7.37867647 L87.0441176,7.37867647 C86.2319342,7.37867647 85.5735294,8.03708125 85.5735294,8.84926471 L85.5735294,11.4669118 C85.5735294,12.2790952 86.2319342,12.9375 87.0441176,12.9375 L93.4816176,12.9375 C94.2938011,12.9375 94.9522059,12.2790952 94.9522059,11.4669118 L94.9522059,8.84926471 C94.9522059,8.03708125 94.2938011,7.37867647 93.4816176,7.37867647 Z M89.1397059,10.3198529 C89.0327388,10.4823493 88.8806962,10.6101162 88.7022059,10.6875 C88.4913577,10.7741698 88.264633,10.8155064 88.0367647,10.8088235 L87.4522059,10.8088235 L87.4522059,11.6176471 L86.7830882,11.6176471 L86.7830882,8.69852941 L88.0330882,8.69852941 C88.2616352,8.69233678 88.4887667,8.73625724 88.6985294,8.82720588 C88.8770197,8.90458965 89.0290623,9.03235655 89.1360294,9.19485294 C89.2395623,9.36385291 89.2919177,9.55922799 89.2867647,9.75735294 C89.2926927,9.95623538 89.2416705,10.152671 89.1397059,10.3235294 L89.1397059,10.3198529 Z M91.1029412,9.62132353 L90.9595588,9.62132353 C90.7993843,9.61225596 90.6425228,9.66941734 90.5257353,9.77941176 C90.4114703,9.90838441 90.3544232,10.0781991 90.3676471,10.25 L90.3676471,11.3051471 L89.7242647,11.3051471 L89.7242647,9.0625 L90.3382353,9.0625 L90.3382353,9.35661765 C90.4167807,9.24787729 90.5235761,9.1626952 90.6470588,9.11029412 C90.7920932,9.05279368 90.9469332,9.02407337 91.1029412,9.02573529 L91.1029412,9.62132353 Z M93.5808824,10.7536765 C93.4778856,10.929006 93.32752,11.0717259 93.1470588,11.1654412 C92.9529062,11.2657514 92.7368842,11.3162829 92.5183824,11.3125 C92.2987546,11.3158276 92.0816514,11.2653385 91.8860294,11.1654412 C91.7055682,11.0717259 91.5552027,10.929006 91.4522059,10.7536765 C91.2402711,10.3835858 91.2402711,9.9289142 91.4522059,9.55882353 C91.5566538,9.38558439 91.7067342,9.2444071 91.8860294,9.15073529 C92.0807266,9.04796026 92.2982584,8.99610675 92.5183824,9 C92.7373719,8.99576216 92.9538007,9.04765445 93.1470588,9.15073529 C93.326354,9.2444071 93.4764344,9.38558439 93.5808824,9.55882353 C93.787724,9.93025299 93.787724,10.382247 93.5808824,10.7536765 L93.5808824,10.7536765 Z M88,9.25 L87.4558824,9.25 L87.4558824,10.2647059 L88,10.2647059 C88.1635109,10.2767796 88.3260922,10.2312568 88.4595588,10.1360294 C88.5643344,10.0431083 88.6222807,9.90834946 88.6176471,9.76838235 C88.6244323,9.62801772 88.566103,9.49236826 88.4595588,9.40073529 C88.3300141,9.29588281 88.1664804,9.24224374 88,9.25 L88,9.25 Z" id="Shape" fill="#FFFFFF"></path>
14
- <g id="text-copy" transform="translate(42.647059, 9.191176)" fill="#FFFFFF">
15
- <path d="M4.82720588,1.40808824 C4.92279412,1.75612745 5.02696078,2.12377451 5.13970588,2.51102941 C5.25245098,2.89828431 5.36642157,3.27573529 5.48161765,3.64338235 L5.84926471,4.74632353 C5.96691176,5.10906863 6.08088235,5.45220588 6.19117647,5.77573529 C6.28431373,5.42769608 6.375,5.0502451 6.46323529,4.64338235 C6.55147059,4.23651961 6.63970588,3.8125 6.72794118,3.37132353 C6.81617647,2.93259804 6.90318627,2.48406863 6.98897059,2.02573529 C7.0747549,1.56740196 7.15318627,1.1127451 7.22426471,0.661764706 L8.42647059,0.661764706 C8.20588235,1.87254902 7.96078431,3.03431373 7.69117647,4.14705882 C7.42156863,5.25980392 7.12132353,6.3247549 6.79044118,7.34191176 L5.6875,7.34191176 C5.21446078,6.0502451 4.75735294,4.6372549 4.31617647,3.10294118 C4.08333333,3.88235294 3.84926471,4.61764706 3.61397059,5.30882353 C3.37867647,6 3.13235294,6.68137255 2.875,7.35294118 L1.77205882,7.35294118 C1.44362745,6.33578431 1.15073529,5.26838235 0.893382353,4.15073529 C0.636029412,3.03308824 0.403186275,1.86887255 0.194852941,0.658088235 L1.43382353,0.658088235 C1.50735294,1.09436275 1.58455882,1.54166667 1.66544118,2 C1.74632353,2.45833333 1.83088235,2.90686275 1.91911765,3.34558824 C2.00735294,3.78676471 2.09681373,4.21446078 2.1875,4.62867647 C2.27818627,5.04289216 2.36887255,5.42279412 2.45955882,5.76838235 C2.57965686,5.43995098 2.70220588,5.09436275 2.82720588,4.73161765 C2.95220588,4.36887255 3.0747549,4.00122549 3.19485294,3.62867647 C3.31495098,3.25122549 3.42892157,2.87745098 3.53676471,2.50735294 C3.64460784,2.1372549 3.74632353,1.77818627 3.84191176,1.43014706 L4.82720588,1.40808824 Z" id="Path"></path>
16
- <path d="M14.0808824,4.49632353 C14.0845238,4.89379694 14.0211357,5.28904053 13.8933824,5.66544118 C13.7807914,5.99812183 13.6019468,6.30453398 13.3676471,6.56617647 C13.1400718,6.81481717 12.8617321,7.01166102 12.5514706,7.14338235 C12.2187495,7.28282026 11.8607065,7.35167467 11.5,7.34558824 C11.1399205,7.34981155 10.7829626,7.27841998 10.4522059,7.13602941 C10.1417251,6.99818459 9.8646,6.79504309 9.63970588,6.54044118 C9.41103958,6.28505838 9.23378193,5.98796458 9.11764706,5.66544118 C8.98786391,5.28827725 8.92442527,4.89147478 8.93014706,4.49264706 C8.92631459,4.09455161 8.99226265,3.69886323 9.125,3.32352941 C9.2446805,2.9994223 9.42707929,2.70208729 9.66176471,2.44852941 C9.8897814,2.20130336 10.1680739,2.00574644 10.4779412,1.875 C10.8063426,1.73870735 11.1591854,1.67114172 11.5147059,1.67647059 C11.8718865,1.6738978 12.2258641,1.74394283 12.5551471,1.88235294 C12.8650065,2.01288891 13.1423847,2.20994042 13.3676471,2.45955882 C13.5988688,2.72279428 13.7762341,3.02881176 13.8897059,3.36029412 C14.0173641,3.72539666 14.0820109,4.10954813 14.0808824,4.49632353 Z M12.8088235,4.49632353 C12.8343612,4.04480035 12.7159304,3.59682303 12.4705882,3.21691176 C12.2416673,2.91861709 11.8870407,2.74374917 11.5110294,2.74374917 C11.1350181,2.74374917 10.7803915,2.91861709 10.5514706,3.21691176 C10.295768,3.59333329 10.1669618,4.04157892 10.1838235,4.49632353 C10.1542556,4.958648 10.2727279,5.41837216 10.5220588,5.80882353 C10.7492458,6.1098213 11.1045055,6.28677404 11.4816176,6.28677404 C11.8587298,6.28677404 12.2139895,6.1098213 12.4411765,5.80882353 C12.7016128,5.42083622 12.8304957,4.95943562 12.8088235,4.49264706 L12.8088235,4.49632353 Z" id="Shape"></path>
17
- <path d="M19.7463235,4.51470588 C19.7490744,4.91121083 19.6844288,5.30530046 19.5551471,5.68014706 C19.4368459,6.01205015 19.2516484,6.31612447 19.0110294,6.57352941 C18.7830881,6.82084157 18.5047756,7.01641251 18.1948529,7.14705882 C17.861772,7.28493071 17.5038037,7.35251912 17.1433824,7.34558824 C16.7833028,7.34981155 16.426345,7.27841998 16.0955882,7.13602941 C15.787455,7.00095235 15.5117036,6.80165933 15.2867647,6.55147059 C15.0592514,6.28530965 14.8868047,5.97665508 14.7794118,5.64338235 C14.6497443,5.26872866 14.5862969,4.87435952 14.5919118,4.47794118 C14.5881787,4.08225191 14.6541364,3.68899501 14.7867647,3.31617647 C14.9064409,2.99316304 15.0888679,2.69703155 15.3235294,2.44485294 C15.5519099,2.19895492 15.8301755,2.00467038 16.1397059,1.875 C16.4684605,1.74026503 16.8212314,1.67396412 17.1764706,1.68014706 C17.5336223,1.67788009 17.8875391,1.74791309 18.2169118,1.88602941 C18.5264242,2.0154948 18.8037739,2.21127105 19.0294118,2.45955882 C19.2606092,2.72142478 19.4380006,3.02623821 19.5514706,3.35661765 C19.6810988,3.72874097 19.7445573,4.12069062 19.7389706,4.51470588 L19.7463235,4.51470588 Z M18.4742647,4.51470588 C18.5054174,4.06300533 18.39072,3.61323673 18.1470588,3.23161765 C17.9172929,2.9346509 17.5629752,2.76080187 17.1875,2.76080187 C16.8120248,2.76080187 16.4577071,2.9346509 16.2279412,3.23161765 C15.971572,3.60634725 15.8426632,4.0536608 15.8602941,4.50735294 C15.8307603,4.96735997 15.949292,5.42473791 16.1985294,5.8125 C16.4265908,6.11213823 16.7815314,6.28804057 17.1580882,6.28804057 C17.5346451,6.28804057 17.8895857,6.11213823 18.1176471,5.8125 C18.3681751,5.42517315 18.4880038,4.96776287 18.4595588,4.50735294 L18.4742647,4.51470588 Z" id="Shape-2"></path>
18
- <polygon id="Path-2" points="20.7757353 7.32720588 20.8088235 0.650735294 24.8933824 0.676470588 24.8933824 1.70955882 21.9852941 1.70955882 21.9558824 3.40441176 24.5367647 3.40441176 24.5367647 4.4375 21.9558824 4.4375 21.9558824 7.34558824"></polygon>
19
- <path d="M25.4117647,5.05514706 C25.4048027,4.63069922 25.4745494,4.20848275 25.6176471,3.80882353 C25.7379286,3.48720136 25.9203139,3.19238685 26.1544118,2.94117647 C26.3698576,2.71193305 26.6318457,2.53142451 26.9227941,2.41176471 C27.1962113,2.2835811 27.4924057,2.21109472 27.7941176,2.19852941 C28.4233325,2.16646474 29.0326941,2.42375076 29.4485294,2.89705882 C29.8825554,3.49171867 30.0898661,4.22186928 30.0330882,4.95588235 L30.0330882,5.41544118 L26.6507353,5.41544118 C26.6541263,5.79152546 26.8014808,6.15201771 27.0625,6.42279412 C27.3710072,6.67936802 27.7646911,6.81059597 28.1654412,6.79044118 C28.4309897,6.79458981 28.6961555,6.7686899 28.9558824,6.71323529 C29.1496503,6.67368207 29.3392261,6.61582452 29.5220588,6.54044118 L29.6764706,7.55882353 C29.5899441,7.60134572 29.5002065,7.63699491 29.4080882,7.66544118 C29.272855,7.70641495 29.135372,7.73955818 28.9963235,7.76470588 C28.8492647,7.79411765 28.6911765,7.81862745 28.5220588,7.83823529 C28.3487196,7.85736148 28.1743799,7.86595569 28,7.86397059 C27.5985243,7.87049037 27.1997911,7.79674348 26.8272059,7.64705882 C26.5094935,7.51794826 26.2262606,7.31653814 26,7.05882353 C25.7841208,6.80516637 25.6226914,6.50983816 25.5257353,6.19117647 C25.4258544,5.82239923 25.3824692,5.44060878 25.3970588,5.05882353 L25.4117647,5.05514706 Z M28.8566176,4.51838235 C28.8583205,4.35304959 28.8360296,4.18834421 28.7904412,4.02941176 C28.7503398,3.88330199 28.6829808,3.74608928 28.5919118,3.625 C28.5051422,3.51281176 28.3946688,3.42116903 28.2683824,3.35661765 C28.1264663,3.28777982 27.9701891,3.25375172 27.8125,3.25735294 C27.6472044,3.25249645 27.4831988,3.28782075 27.3345588,3.36029412 C27.1933225,3.42751943 27.0680005,3.52401732 26.9669118,3.64338235 C26.8692513,3.76278676 26.7933412,3.89842936 26.7426471,4.04411765 C26.6896532,4.19420899 26.6526828,4.34948446 26.6323529,4.50735294 L28.8566176,4.51838235 Z" id="Shape-3"></path>
20
- <path d="M31.0735294,5.01470588 C31.0668088,4.59027589 31.1365484,4.1681023 31.2794118,3.76838235 C31.3997797,3.44680253 31.582155,3.15200401 31.8161765,2.90073529 C32.0316223,2.67149188 32.2936104,2.49098333 32.5845588,2.37132353 C32.8612302,2.25919575 33.1573674,2.20296717 33.4558824,2.20588235 C34.0840276,2.17386125 34.6922516,2.4312389 35.1066176,2.90441176 C35.5390459,3.49970945 35.7450091,4.22970528 35.6875,4.96323529 L35.6875,5.42279412 L32.3161765,5.42279412 C32.3194509,5.79531889 32.4639872,6.15271762 32.7205882,6.42279412 C33.0289169,6.67968883 33.4227297,6.81095978 33.8235294,6.79044118 C34.0878585,6.79450123 34.3517965,6.76860076 34.6102941,6.71323529 C34.8040785,6.67374674 34.9936603,6.61588734 35.1764706,6.54044118 L35.3272059,7.55882353 C35.2407169,7.60143012 35.1509725,7.63708201 35.0588235,7.66544118 C34.9236032,7.70646246 34.7861174,7.73960636 34.6470588,7.76470588 C34.502451,7.79411765 34.3443627,7.81862745 34.1727941,7.83823529 C34.0006784,7.85727599 33.8275671,7.86587017 33.6544118,7.86397059 C33.2529029,7.87088823 32.8540915,7.79712687 32.4816176,7.64705882 C32.1647675,7.51829143 31.8826574,7.3167842 31.6580882,7.05882353 C31.442382,6.80504743 31.2809731,6.50975684 31.1838235,6.19117647 C31.0857837,5.80719662 31.0485669,5.4102172 31.0735294,5.01470588 L31.0735294,5.01470588 Z M34.5073529,4.47794118 C34.50885,4.31262127 34.4865631,4.14794533 34.4411765,3.98897059 C34.4009923,3.84289217 34.3336407,3.7056944 34.2426471,3.58455882 C34.1569343,3.4727883 34.0477519,3.38117549 33.9227941,3.31617647 C33.782036,3.24777503 33.6270543,3.21375467 33.4705882,3.21691176 C33.3052656,3.21175906 33.1411897,3.24709849 32.9926471,3.31985294 C32.8514107,3.38707825 32.7260888,3.48357615 32.625,3.60294118 C32.5273396,3.72234558 32.4514295,3.85798819 32.4007353,4.00367647 C32.3477678,4.15377558 32.3107981,4.30904823 32.2904412,4.46691176 L34.5073529,4.47794118 Z" id="Shape-4"></path>
21
- <path d="M40.8308824,7.09191176 C40.1754331,7.26231365 39.5007639,7.34757405 38.8235294,7.34558824 C38.4481194,7.35127056 38.0746805,7.29027555 37.7205882,7.16544118 C37.4136377,7.05925096 37.1328777,6.8887895 36.8970588,6.66544118 C36.6760614,6.44337014 36.5055227,6.17627638 36.3970588,5.88235294 C36.2750785,5.55062575 36.2164651,5.19894542 36.2242647,4.84558824 C36.2219153,4.49622979 36.2752812,4.14873094 36.3823529,3.81617647 C36.4776697,3.53093885 36.6303059,3.26820438 36.8308824,3.04411765 C37.0302241,2.80881916 37.2821004,2.62369012 37.5661765,2.50367647 C37.8747566,2.38126308 38.2048969,2.3224881 38.5367647,2.33088235 C38.7577824,2.32833612 38.9780651,2.35679961 39.1911765,2.41544118 C39.3578507,2.46287507 39.5201981,2.5243703 39.6764706,2.59926471 L39.6764706,0.294117647 L40.8639706,0.136029412 L40.8308824,7.09191176 Z M37.4485294,4.81617647 C37.4197565,5.23486367 37.5511771,5.64883855 37.8161765,5.97426471 C38.0783276,6.25794044 38.4523949,6.41133494 38.8382353,6.39338235 C38.9989904,6.39611657 39.1597739,6.3899798 39.3198529,6.375 C39.4301471,6.375 39.5404412,6.35784314 39.6507353,6.32352941 L39.6507353,3.57720588 C39.5214351,3.49853468 39.3832011,3.43558884 39.2389706,3.38970588 C39.0611477,3.33058553 38.8748919,3.30078461 38.6875,3.30147059 C38.323894,3.27108017 37.9687895,3.42248132 37.7389706,3.70588235 C37.5316426,4.03490201 37.4326406,4.42062429 37.4558824,4.80882353 L37.4485294,4.81617647 Z" id="Shape-5"></path>
22
- </g>
23
- <g id="file-icon-copy" transform="translate(33.088235, 6.617647)">
24
- <path d="M6.61764706,0.470588235 L1.02205882,0.470588235 C0.729936541,0.47858696 0.497888925,0.718805267 0.5,1.01102941 L0.5,9.65808824 C0.489639114,10.0763006 0.817258018,10.4252148 1.23529412,10.4411765 L7.05882353,10.4411765 C7.51021658,10.4291442 7.8669025,10.0543774 7.85661765,9.60294118 L7.85661765,1.77573529 C7.87106821,1.07467102 7.31851455,0.492604106 6.61764706,0.470588235 L6.61764706,0.470588235 Z M6.31617647,5.08088235 L2.49264706,5.08088235 C2.35757017,5.05875098 2.25841252,4.94202498 2.25841252,4.80514706 C2.25841252,4.66826914 2.35757017,4.55154313 2.49264706,4.52941176 L6.31985294,4.52941176 C6.45492983,4.55154313 6.55408748,4.66826914 6.55408748,4.80514706 C6.55408748,4.94202498 6.45492983,5.05875098 6.31985294,5.08088235 L6.31617647,5.08088235 Z M6.55147059,5.98161765 C6.55482647,6.1208006 6.4539003,6.24065043 6.31617647,6.26102941 L2.49264706,6.26102941 C2.36036556,6.23453022 2.26516354,6.11836549 2.26516354,5.98345588 C2.26516354,5.84854627 2.36036556,5.73238155 2.49264706,5.70588235 L6.31985294,5.70588235 C6.4553509,5.72754852 6.55506282,5.84439844 6.55514706,5.98161765 L6.55147059,5.98161765 Z M3.125,2.04411765 C3.12508424,1.90689844 3.22479616,1.79004852 3.36029412,1.76838235 L5.44485294,1.76838235 C5.57713444,1.79488155 5.67233646,1.91104627 5.67233646,2.04595588 C5.67233646,2.18086549 5.57713444,2.29703022 5.44485294,2.32352941 L3.36029412,2.32352941 C3.22403624,2.3014921 3.12506552,2.18209885 3.12867647,2.04411765 L3.125,2.04411765 Z M2.48897059,6.85294118 L5.00367647,6.85294118 C5.14467782,6.86919545 5.25109027,6.98857957 5.25109027,7.13051471 C5.25109027,7.27244984 5.14467782,7.39183396 5.00367647,7.40808824 L2.48897059,7.40808824 C2.34796924,7.39183396 2.24155679,7.27244984 2.24155679,7.13051471 C2.24155679,6.98857957 2.34796924,6.86919545 2.48897059,6.85294118 L2.48897059,6.85294118 Z M6.30514706,7.41544118 C6.14271037,7.41544118 6.01102941,7.28376022 6.01102941,7.12132353 C6.01102941,6.95888684 6.14271037,6.82720588 6.30514706,6.82720588 C6.46758375,6.82720588 6.59926471,6.95888684 6.59926471,7.12132353 C6.59927729,7.28233523 6.46982266,7.41342853 6.30882353,7.41544118 L6.30514706,7.41544118 Z M6.46323529,1.23897059 L6.46323529,0.613970588 C7.10930467,0.736885829 7.61078656,1.24863197 7.72058824,1.89706007 L7.10661765,1.89706007 C6.93690364,1.89739394 6.77409438,1.82988766 6.65441176,1.70955882 C6.53231523,1.58354985 6.46492687,1.41441826 6.46691176,1.23897059 L6.46323529,1.23897059 Z" id="Shape" fill="#FFFFFF"></path>
25
- <path d="M6.13235294,0.470588235 L6.13235294,1.33823529 C6.13235294,1.56898801 6.22426792,1.79023642 6.38777933,1.95305791 C6.55129074,2.11587939 6.77292583,2.20686012 7.00367647,2.20589015 L7.87132353,2.20589015 C7.86728286,1.24775038 7.09049132,0.472601109 6.13235294,0.470588235 Z M6.65441176,1.70588235 C6.53321265,1.58078266 6.4658952,1.41314902 6.46690042,1.23897059 L6.46690042,0.613970588 C7.11155185,0.738256913 7.61128149,1.24971042 7.72058824,1.89705882 L7.10661765,1.89705882 C6.93637097,1.89642327 6.77348567,1.82756119 6.65441176,1.70588235 L6.65441176,1.70588235 Z" id="Shape" fill="#FFFFFF"></path>
26
- <path d="M7.88235294,0.911764706 L7.88235294,0.911764706 L7.83455882,0.845588235 C7.79411765,0.794117647 7.74264706,0.746323529 7.69852941,0.691176471 C7.3148135,0.288591476 6.78408624,0.0590519327 6.22794118,0.0551470588 L1.25367647,0.0551470588 C0.594622539,0.0612090419 0.0641268687,0.598274318 0.0661764706,1.25735294 L0.0661764706,9.66176471 C0.0428466163,10.2640913 0.477180733,10.7871944 1.07352941,10.875 L6.90441176,10.875 C7.24960023,10.9065855 7.59251573,10.7942661 7.85212752,10.5645828 C8.11173931,10.3348994 8.26501488,10.0082294 8.27573529,9.66176471 L8.27573529,3.39338235 C8.27790503,3.32057536 8.24997751,3.25009161 8.19852941,3.19852941 C8.15105621,3.14474713 8.08276669,3.1139499 8.01102941,3.11397059 C7.96132653,3.11210095 7.91234199,3.12628068 7.87132353,3.15441176 C7.85014959,3.16360094 7.83130514,3.17742021 7.81617647,3.19485294 C7.76167864,3.24590549 7.73328249,3.31892417 7.73897059,3.39338235 L7.73897059,9.64338235 C7.73897059,10.0367647 7.40808824,10.2941176 6.91544118,10.2941176 L1.07352941,10.2941176 C0.793081166,10.2029897 0.606053343,9.93815827 0.613970588,9.64338235 L0.613970588,1.23897059 C0.613700153,1.06710637 0.681049713,0.902033924 0.801470588,0.779411765 C0.918910272,0.655778491 1.08320905,0.587654609 1.25367647,0.591911765 L5.91911765,0.591911765 L5.91911765,1.23897059 C5.92356895,1.56404182 6.05561043,1.8743393 6.28676471,2.10294118 C6.50434676,2.33467584 6.80714272,2.46748109 7.125,2.47058824 L8.04044118,2.47058824 C8.15101531,2.46938013 8.25047396,2.40307436 8.29411765,2.30147059 C8.3132705,2.26785808 8.32340263,2.2298626 8.32352941,2.19117647 L8.32352941,2.16911765 C8.30960155,1.71454217 8.15551041,1.27538242 7.88235294,0.911764706 L7.88235294,0.911764706 Z M7.10661765,1.89338235 C6.93690364,1.89371747 6.77409438,1.82621119 6.65441176,1.70588235 C6.53321265,1.58078266 6.4658952,1.41314902 6.46690042,1.23897059 L6.46690042,0.613970588 C7.11155185,0.738256913 7.61128149,1.24971042 7.72058824,1.89705882 L7.10661765,1.89338235 Z" id="Shape-6" fill="#1E181A"></path>
27
- <path d="M7.72058824,1.89706007 L7.10661765,1.89706007 C6.93690364,1.89739394 6.77409438,1.82988766 6.65441176,1.70955882 C6.53321265,1.58445913 6.4658952,1.41682549 6.46690042,1.24264706 L6.46690042,0.617647059 C7.11045499,0.741442617 7.60989323,1.25113325 7.72058824,1.89706007 Z" id="Path" fill="#FFFFFF"></path>
28
- </g>
29
- </g>
30
- </g>
31
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 25.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 180 42" style="enable-background:new 0 0 180 42;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:url(#SVGID_1_);}
7
+ .st1{fill:#FFFFFF;}
8
+ .st2{fill:#FF3355;}
9
+ .st3{fill:#2E3B50;}
10
+ </style>
11
+ <g>
12
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="90" y1="-0.0308" x2="90" y2="41.9692">
13
+ <stop offset="0" style="stop-color:#FF3355"/>
14
+ <stop offset="1" style="stop-color:#FF3333"/>
15
+ </linearGradient>
16
+ <path class="st0" d="M159,41.97H21c-11.6,0-21-9.4-21-21v0c0-11.6,9.4-21,21-21h138c11.6,0,21,9.4,21,21v0
17
+ C180,32.57,170.6,41.97,159,41.97z"/>
18
+ </g>
19
+ <g>
20
+ <path class="st1" d="M48.07,13.12h10.68c0.63,0,1.24,0.25,1.68,0.7c0.45,0.45,0.7,1.05,0.7,1.68v14.26c0,0.4-0.16,0.79-0.45,1.08
21
+ c-0.29,0.29-0.67,0.45-1.08,0.45H48.5c-0.38,0-0.74-0.15-1.01-0.42c-0.27-0.27-0.42-0.63-0.42-1.01V14.1c0-0.26,0.11-0.51,0.3-0.7
22
+ C47.56,13.22,47.81,13.12,48.07,13.12L48.07,13.12z"/>
23
+ <path class="st1" d="M61.13,16.32h-1.67c-0.45,0-0.87-0.18-1.19-0.49c-0.31-0.31-0.49-0.74-0.49-1.19v-1.67
24
+ c0.89,0,1.74,0.35,2.37,0.98C60.77,14.58,61.13,15.43,61.13,16.32L61.13,16.32z"/>
25
+ <path class="st2" d="M56.11,15.82h-4.02c-0.12,0.01-0.24,0.07-0.32,0.16c-0.08,0.09-0.13,0.21-0.13,0.34
26
+ c0,0.12,0.05,0.25,0.13,0.34c0.08,0.09,0.2,0.15,0.32,0.16h4.02c0.12-0.01,0.24-0.07,0.32-0.16c0.08-0.09,0.13-0.21,0.13-0.34
27
+ c0-0.12-0.05-0.25-0.13-0.34C56.35,15.89,56.23,15.83,56.11,15.82z M55.25,25.07h-4.84c-0.13,0-0.26,0.05-0.36,0.15
28
+ c-0.09,0.09-0.15,0.22-0.15,0.36c0,0.13,0.05,0.26,0.15,0.36c0.09,0.09,0.22,0.15,0.36,0.15h4.84c0.13,0,0.26-0.05,0.36-0.15
29
+ c0.09-0.09,0.15-0.22,0.15-0.36c0-0.13-0.05-0.26-0.15-0.36C55.51,25.12,55.39,25.07,55.25,25.07z M57.76,22.98h-7.35
30
+ c-0.12,0.01-0.24,0.07-0.32,0.16c-0.08,0.09-0.13,0.21-0.13,0.34c0,0.12,0.05,0.25,0.13,0.34c0.08,0.09,0.2,0.15,0.32,0.16h7.36
31
+ c0.12-0.01,0.24-0.07,0.32-0.16c0.08-0.09,0.13-0.21,0.13-0.34c0-0.12-0.05-0.25-0.13-0.34c-0.08-0.09-0.2-0.15-0.32-0.16H57.76z
32
+ M57.76,20.84h-7.35c-0.12,0.01-0.24,0.07-0.32,0.16c-0.08,0.09-0.13,0.21-0.13,0.34c0,0.12,0.05,0.25,0.13,0.34
33
+ c0.08,0.09,0.2,0.15,0.32,0.16h7.36c0.12-0.01,0.24-0.07,0.32-0.16c0.08-0.09,0.13-0.21,0.13-0.34c0-0.12-0.05-0.25-0.13-0.34
34
+ c-0.08-0.09-0.2-0.15-0.32-0.16H57.76z"/>
35
+ <path class="st3" d="M57.57,15.42c0.1,0.25,0.25,0.47,0.44,0.66c0.19,0.19,0.41,0.34,0.66,0.44c0.25,0.1,0.5,0.15,0.78,0.15l1.67,0
36
+ c0.07,0,0.14-0.03,0.2-0.06c0.06-0.04,0.11-0.1,0.15-0.17c0.02-0.04,0.03-0.09,0.03-0.17c-0.02-0.78-0.28-1.51-0.74-2.14
37
+ l-0.09-0.15c-0.06-0.08-0.14-0.16-0.24-0.27c-0.34-0.35-0.75-0.62-1.2-0.81c-0.45-0.19-0.93-0.29-1.42-0.29h-9.09
38
+ c-0.53,0-1.05,0.21-1.43,0.59c-0.38,0.38-0.6,0.89-0.6,1.43v15.07c0,1.15,0.91,2.03,1.7,2.03h10.68c1.37,0,2.37-0.85,2.37-2.03
39
+ V18.49c0-0.05-0.01-0.09-0.02-0.14c-0.02-0.04-0.04-0.08-0.08-0.12c-0.03-0.03-0.07-0.06-0.11-0.08c-0.04-0.02-0.09-0.03-0.14-0.03
40
+ c-0.05,0-0.09,0.01-0.13,0.03c-0.04,0.02-0.08,0.04-0.12,0.08c-0.03,0.03-0.06,0.07-0.08,0.12c-0.02,0.04-0.03,0.09-0.03,0.14
41
+ v11.21c0,0.78-0.66,1.31-1.64,1.31l-10.74-0.01c-0.27-0.09-0.52-0.26-0.68-0.5c-0.17-0.24-0.26-0.52-0.25-0.8V14.64
42
+ c0-0.17,0.03-0.34,0.1-0.5c0.07-0.16,0.16-0.3,0.28-0.42c0.12-0.12,0.27-0.22,0.42-0.28c0.16-0.07,0.33-0.1,0.5-0.1h8.68v1.31
43
+ C57.42,14.91,57.47,15.17,57.57,15.42z M58.14,13.36l0.16,0.03c0.6,0.11,1.15,0.39,1.58,0.82c0.43,0.43,0.72,0.98,0.82,1.58
44
+ l0.03,0.16l-1.28-0.01h-0.01c-0.17,0-0.34-0.03-0.49-0.1c-0.16-0.06-0.3-0.16-0.43-0.28c-0.12-0.12-0.22-0.27-0.28-0.43
45
+ c-0.07-0.16-0.1-0.33-0.1-0.5V13.36z"/>
46
+ <circle class="st2" cx="56.88" cy="25.5" r="0.54"/>
47
+ </g>
48
+ <path class="st1" d="M159.75,24.51h-17.43c-0.69,0-1.25-0.56-1.25-1.25v-9.52c0-0.69,0.56-1.25,1.25-1.25h17.43
49
+ c0.69,0,1.25,0.56,1.25,1.25v9.52C161,23.95,160.44,24.51,159.75,24.51z"/>
50
+ <g>
51
+ <path class="st1" d="M25.85,26.85c-0.46,0.61-1.11,1.06-1.93,1.37c-0.82,0.31-1.76,0.47-2.8,0.47c-1.07,0-2.03-0.24-2.85-0.73
52
+ s-1.47-1.18-1.92-2.09c-0.45-0.91-0.68-1.97-0.7-3.18v-1c0-1.94,0.46-3.45,1.39-4.54c0.93-1.09,2.22-1.63,3.88-1.63
53
+ c1.43,0,2.56,0.35,3.4,1.06c0.84,0.71,1.34,1.72,1.51,3.05h-2.18c-0.25-1.54-1.14-2.32-2.69-2.32c-1,0-1.76,0.36-2.28,1.08
54
+ c-0.52,0.72-0.79,1.77-0.81,3.16v0.98c0,1.38,0.29,2.46,0.88,3.22c0.58,0.76,1.4,1.15,2.44,1.15c1.14,0,1.95-0.26,2.43-0.77v-2.5
55
+ h-2.64v-1.69h4.86V26.85z"/>
56
+ <path class="st1" d="M32.29,28.69c-1.36,0-2.46-0.43-3.3-1.28s-1.26-1.99-1.26-3.41v-0.26c0-0.95,0.18-1.8,0.55-2.55
57
+ c0.37-0.75,0.88-1.33,1.55-1.75c0.66-0.42,1.4-0.63,2.22-0.63c1.3,0,2.3,0.41,3.01,1.24c0.71,0.83,1.06,2,1.06,3.51v0.86h-6.23
58
+ c0.06,0.79,0.33,1.41,0.79,1.87s1.04,0.69,1.74,0.69c0.98,0,1.78-0.4,2.4-1.19l1.15,1.1c-0.38,0.57-0.89,1.01-1.53,1.33
59
+ C33.8,28.53,33.09,28.69,32.29,28.69z M32.04,20.52c-0.59,0-1.06,0.21-1.42,0.62c-0.36,0.41-0.59,0.98-0.69,1.72H34V22.7
60
+ c-0.05-0.72-0.24-1.26-0.57-1.62C33.09,20.71,32.63,20.52,32.04,20.52z"/>
61
+ <path class="st1" d="M40.46,16.67v2.32h1.68v1.59h-1.68v5.32c0,0.36,0.07,0.63,0.22,0.79c0.14,0.16,0.4,0.24,0.77,0.24
62
+ c0.25,0,0.5-0.03,0.75-0.09v1.66c-0.49,0.13-0.96,0.2-1.41,0.2c-1.64,0-2.47-0.91-2.47-2.72v-5.4h-1.57v-1.59h1.57v-2.32H40.46z"/>
63
+ <path class="st1" d="M76.23,24.34c-0.13,1.37-0.63,2.44-1.51,3.2c-0.88,0.77-2.05,1.15-3.51,1.15c-1.02,0-1.92-0.24-2.7-0.73
64
+ s-1.38-1.17-1.8-2.07c-0.42-0.89-0.64-1.93-0.66-3.11v-1.2c0-1.21,0.21-2.28,0.64-3.2s1.04-1.63,1.85-2.13
65
+ c0.8-0.5,1.73-0.75,2.78-0.75c1.42,0,2.55,0.38,3.42,1.15c0.86,0.77,1.37,1.85,1.51,3.25h-2.22c-0.11-0.92-0.37-1.59-0.81-2
66
+ s-1.06-0.61-1.9-0.61c-0.97,0-1.71,0.35-2.23,1.06c-0.52,0.71-0.79,1.75-0.8,3.12v1.14c0,1.39,0.25,2.44,0.74,3.17
67
+ c0.5,0.73,1.22,1.09,2.18,1.09c0.88,0,1.53-0.2,1.97-0.59s0.72-1.05,0.84-1.96H76.23z"/>
68
+ <path class="st1" d="M87.23,17.49h-4v11.03h-2.21V17.49h-3.96v-1.8h10.17V17.49z"/>
69
+ <path class="st1" d="M93.33,20.32l2.7-4.63h2.57l-3.88,6.36l3.96,6.47h-2.6l-2.76-4.7l-2.77,4.7h-2.59l3.97-6.47l-3.88-6.36h2.57
70
+ L93.33,20.32z"/>
71
+ <path class="st1" d="M107.72,23.1h-5.16v5.42h-2.23V15.69h8.15v1.8h-5.92v3.81h5.16V23.1z"/>
72
+ <path class="st1" d="M114.04,28.69c-1.36,0-2.46-0.43-3.3-1.28s-1.26-1.99-1.26-3.41v-0.26c0-0.95,0.18-1.8,0.55-2.55
73
+ c0.37-0.75,0.88-1.33,1.55-1.75c0.66-0.42,1.4-0.63,2.22-0.63c1.3,0,2.3,0.41,3.01,1.24c0.71,0.83,1.06,2,1.06,3.51v0.86h-6.23
74
+ c0.06,0.79,0.33,1.41,0.79,1.87s1.04,0.69,1.74,0.69c0.98,0,1.78-0.4,2.4-1.19l1.15,1.1c-0.38,0.57-0.89,1.01-1.53,1.33
75
+ C115.55,28.53,114.84,28.69,114.04,28.69z M113.79,20.52c-0.59,0-1.06,0.21-1.42,0.62c-0.36,0.41-0.59,0.98-0.69,1.72h4.08V22.7
76
+ c-0.05-0.72-0.24-1.26-0.57-1.62C114.85,20.71,114.38,20.52,113.79,20.52z"/>
77
+ <path class="st1" d="M123.72,28.69c-1.36,0-2.46-0.43-3.3-1.28s-1.26-1.99-1.26-3.41v-0.26c0-0.95,0.18-1.8,0.55-2.55
78
+ c0.37-0.75,0.88-1.33,1.55-1.75c0.66-0.42,1.4-0.63,2.22-0.63c1.3,0,2.3,0.41,3.01,1.24c0.71,0.83,1.06,2,1.06,3.51v0.86h-6.23
79
+ c0.06,0.79,0.33,1.41,0.79,1.87s1.04,0.69,1.74,0.69c0.98,0,1.78-0.4,2.4-1.19l1.15,1.1c-0.38,0.57-0.89,1.01-1.53,1.33
80
+ C125.23,28.53,124.52,28.69,123.72,28.69z M123.47,20.52c-0.59,0-1.06,0.21-1.42,0.62c-0.36,0.41-0.59,0.98-0.69,1.72h4.08V22.7
81
+ c-0.05-0.72-0.24-1.26-0.57-1.62C124.53,20.71,124.06,20.52,123.47,20.52z"/>
82
+ <path class="st1" d="M128.81,23.68c0-1.47,0.34-2.65,1.02-3.54c0.68-0.89,1.59-1.33,2.74-1.33c1.01,0,1.83,0.35,2.45,1.06v-4.88
83
+ h2.14v13.53h-1.94l-0.11-0.99c-0.64,0.78-1.5,1.16-2.56,1.16c-1.12,0-2.02-0.45-2.71-1.35C129.15,26.44,128.81,25.22,128.81,23.68z
84
+ M130.95,23.86c0,0.97,0.19,1.72,0.56,2.27s0.9,0.81,1.59,0.81c0.88,0,1.52-0.39,1.92-1.17v-4.07c-0.39-0.76-1.03-1.15-1.9-1.15
85
+ c-0.69,0-1.23,0.27-1.6,0.82C131.14,21.93,130.95,22.76,130.95,23.86z"/>
86
+ <path class="st2" d="M144.85,19.73v2.77h-1.3v-7.48h2.86c0.84,0,1.5,0.22,1.99,0.65s0.74,1.01,0.74,1.73c0,0.73-0.24,1.3-0.72,1.71
87
+ c-0.48,0.41-1.16,0.61-2.02,0.61H144.85z M144.85,18.69h1.56c0.46,0,0.82-0.11,1.06-0.33c0.24-0.22,0.36-0.53,0.36-0.94
88
+ c0-0.4-0.12-0.73-0.37-0.97c-0.25-0.24-0.58-0.37-1.02-0.37h-1.6V18.69z"/>
89
+ <path class="st2" d="M153.06,18.09c-0.17-0.03-0.33-0.04-0.51-0.04c-0.57,0-0.96,0.22-1.16,0.66v3.8h-1.25v-5.56h1.19l0.03,0.62
90
+ c0.3-0.48,0.72-0.72,1.25-0.72c0.18,0,0.33,0.02,0.44,0.07L153.06,18.09z"/>
91
+ <path class="st2" d="M153.43,19.68c0-0.54,0.11-1.04,0.32-1.47s0.52-0.77,0.91-1.01c0.39-0.23,0.84-0.35,1.35-0.35
92
+ c0.75,0,1.36,0.24,1.83,0.72c0.47,0.48,0.72,1.12,0.76,1.92l0.01,0.29c0,0.55-0.11,1.04-0.32,1.47c-0.21,0.43-0.51,0.76-0.9,1
93
+ c-0.39,0.24-0.84,0.35-1.36,0.35c-0.78,0-1.41-0.26-1.88-0.78c-0.47-0.52-0.71-1.22-0.71-2.09V19.68z M154.67,19.79
94
+ c0,0.57,0.12,1.02,0.35,1.34s0.57,0.49,0.99,0.49s0.75-0.16,0.98-0.49c0.23-0.33,0.35-0.81,0.35-1.44c0-0.56-0.12-1.01-0.36-1.34
95
+ c-0.24-0.33-0.57-0.49-0.98-0.49c-0.41,0-0.73,0.16-0.97,0.49C154.79,18.66,154.67,19.14,154.67,19.79z"/>
96
+ </g>
97
+ </svg>
admin/images/woo-feed-pro-banner.png CHANGED
Binary file
admin/images/woofeed-now-ctxfeed.png ADDED
Binary file
admin/js/woo-feed-admin.min.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}!function(s,a,t,i,c){s.fn.disabled=function(n){return s(this).each(function(){var e=s(this),t="disabled";void 0!==e.prop(t)?e.prop(t,void 0===n||!0===n):!0===n?e.addClass(t):e.removeClass(t)}),self},s.fn.isDisabled=function(){var e=s(this),t="disabled";return void 0!==e.prop(t)?e.prop(t):e.hasClass(t)};function e(e){s(e.currentTarget).removeClass(function(e,t){return(t.match(/\btooltipped-\S+/g)||[]).join(" ")}).removeClass("tooltipped").removeAttr("aria-label")}function r(e,t){s(e).addClass("tooltipped tooltipped-s").attr("aria-label",t)}function o(e,t){return s.extend(!0,{},e,t)}function n(){l=s(".toClipboard"),!ClipboardJS.isSupported()||/iPhone|iPad/i.test(navigator.userAgent)?l.find("img").hide(0):(l.each(function(){s(this).on("mouseleave",e).on("blur",e)}),new ClipboardJS(".toClipboard").on("error",function(e){var t,n;r(e.trigger,(t=e.action,n="cut"===t?"X":"C",/iPhone|iPad/i.test(navigator.userAgent)?"No support :(":/Mac/i.test(navigator.userAgent)?"Press ⌘-"+n+" to "+t:"Press Ctrl-"+n+" to "+t))}).on("success",function(e){r(e.trigger,"Copied!")}))}var l,_,d={in_array:function(e,t){try{return-1!==t.indexOf(e)}catch(e){return!1}},selectize_render_item:function(e,t){return'<div class="item wapk-selectize-item">'.concat(t(e.text),"</div>")},ajax_fail:function(e){console.warn(e),alert(e.hasOwnProperty("statusText")&&e.hasOwnProperty("status")?c.ajax.error+"\n"+e.statusText+" ("+e.status+")":e)},sortable:function(e,n,a,r){return(e||s(".sorted_table")).each(function(){var e=s(this),t=e.find("tbody > tr:eq(0) > td").length||a||9;e.wf_sortable(o({containerSelector:"table",itemPath:"> tbody",itemSelector:"tr",handle:"i.wf_sortedtable",placeholder:'<tr class="placeholder"><td colspan="'.concat(t,'"></td></tr>'),onDrop:function(e,t,n,a){e.removeClass(t.group.options.draggedClass).removeAttr("style"),s("body").removeClass(t.group.options.bodyClass),r&&"function"==typeof r&&r(e,t,n,a)}},n))})},selectize:function(e,t){return(e||s("select.selectize")).not(".selectized").each(function(){var e=s(this);e.selectize(o({create:e.data("create")||!1,plugins:e.data("plugins")?e.data("plugins").split(",").map(function(e){return e.trim()}):[],render:{item:d.selectize_render_item}},t))})},fancySelect:function(e,t){return(e||s("select.fancySelect")).not(".FancySelectInit").each(function(){s(this).fancySelect(o({maxItemShow:3},t))})},reindex_config_table:function(){s("#table-1").find("tbody tr").each(function(n,e){s(e).find("[name]").each(function(e,t){s(t).attr("name",s(t).attr("name").replace(/(\[\d\])/g,"[".concat(n,"]")))})})},common:function(){d.sortable(s(".sorted_table"),{},9,d.reindex_config_table),d.selectize(),d.fancySelect(s(".outputType"))}},f={form:null,init:function(){this.form=s(".generateFeed"),this.form.length&&(d.common(),s(t).trigger(new jQuery.Event("feedEditor.init",{target:this.form})))},renderMerchantInfo:function(n,a,r){function e(e){var t;r.hasOwnProperty(e)&&(n.find(".merchant-info-section."+e+" .data").html(r[e]),"feed_file_type"===e&&((t=r[e].split(",").map(function(e){return e.trim().toLowerCase()}).filter(function(e){return""!==e&&e!==c.na.toLowerCase()})).length?(a.find("option").removeAttr("selected").each(function(){var e=s(this);e.val()&&!d.in_array(e.val(),t)?e.disabled(!0):e.disabled(!1)}),1===t.length&&a.find('option[value="'+t[0]+'"]').attr("selected","selected")):a.find("option").disabled(!1)))}for(var t in r)e(t);n.find(".spinner").removeClass("is-active"),a.disabled(!1),a.trigger("change"),a.parent().find(".spinner").removeClass("is-active")},renderMerchantTemplate:function(n,a){function e(t){if(a.hasOwnProperty(t))if("tabs"===t)n.html(a[t]);else{var e=s('[name="'+t+'"]');e.length&&e.each(function(){var e=s(this);e.is("select")?e.find('[value="'+a[t]+'"]').prop("selected",!0):(e.is("[type=checkbox]")||e.is("[type=radio]"))&&e.val()===a[t]?e.prop("checked",!0):e.val(a[t])}).trigger("change")}}for(var t in a)e(t);f.init()}},u=[],p=[],h=function(){function e(){_classCallCheck(this,e),this._feed=c.generator.feed,this._limit=c.generator.limit,this._progress=0,this._timer=null,this._color=!1,this._total_batch=0,this._current_batch=0,this._product_ids=[],this._progress_per_batch=0,this._refresh=!0,this._regenerate=c.generator.regenerate,a.isRegenerating=!1,this._all_btn=s(".wpf_regenerate"),this._current_btn=s("#".concat(this._feed.replace("wf_config","wf_feed_"))),this._current_btn_label=""}return _createClass(e,[{key:"init",value:function(){var n=this;""!==this._feed&&this._regenerate&&!1===a.isRegenerating&&this.generate();var e=a.location.search;return"webappick-manage-feeds"===new URLSearchParams(e).get("page")&&s("body").addClass("woo-import-popup-body"),s(t).on("click",".woo-feed-campaign-close-button",function(e){e.preventDefault(),s(this).parent(".woo-feed-promotion").hide();var t=s(this).data("condition");1===t&&i.post("woo_feed_hide_promotion",{_ajax_nonce:c.nonce,condition:t}).then(function(e){n._log(e)}).fail(function(e){n._log(e),n._updateProgressStatus(e.message),n._color="red"})}),s(t).on("click",".wpf_regenerate",function(e){e.preventDefault(),n._current_btn=s(this),n._current_btn.hasClass("disabled")||!0===a.isRegenerating||(n._feed=n._current_btn.attr("id").replace("wf_feed_","wf_config"),""!==n._feed&&n.generate())}),this}},{key:"_block_button",value:function(){this._all_btn.length&&this._all_btn.addClass("disabled"),this._current_btn.length&&(this._current_btn.find("span").addClass("wpf_spin reverse_spin"),this._current_btn_label=this._current_btn.attr("title"),this._current_btn.attr("aria-label",c.regenerate).attr("title",c.regenerate))}},{key:"_unblock_button",value:function(){this._all_btn.length&&this._all_btn.removeClass("disabled"),this._current_btn.length&&(this._current_btn.find("span").removeClass("wpf_spin"),this._current_btn.find("span").removeClass("reverse_spin"),this._current_btn.attr("aria-label",this._current_btn_label).attr("title",this._current_btn_label))}},{key:"generate",value:function(){var t=this,n=this;a.isRegenerating=!0,this._block_button(),this._resetProgressBar(),this._progressBarActive(),this._log("Counting Total Products"),this._updateProgressStatus("Fetching products."),this._get_product_ids().then(function(e){t._progress=10,n._log({response:e}),e.success?(n._log("Total ".concat(e.total," Products found.")),n._product_ids=e.product,n._total_batch=t._product_ids.length,n._current_batch=0,n._progress_per_batch=(90-t._progress)/t._total_batch,n._process_batch(),n._updateProgressStatus("Processing Products...")):n._updateProgressStatus(e.data.message)}).fail(function(e){n._log(e),n._updateProgressStatus(e.message),n._color="red",setTimeout(function(){n._stopProgressBar(),n._unblock_button()},1500)})}},{key:"_get_product_ids",value:function(){return this._progress=5,i.post("get_product_information",{_ajax_nonce:c.nonce,feed:this._feed,limit:this._limit})}},{key:"_process_batch",value:function(){var t=this,e="Processing Batch ".concat(this._current_batch+1," of ").concat(this._total_batch);this._updateProgressStatus(e),this._log(e),i.post("make_batch_feed",{_ajax_nonce:c.nonce,feed:this._feed,products:this._product_ids[this._current_batch],loop:this._current_batch}).then(function(e){t._current_batch++,t._log("Batch ".concat(t._current_batch," Completed")),t._log(e),t._current_batch<t._total_batch&&(t._process_batch(),t._progress+=t._progress_per_batch),t._current_batch===t._total_batch&&t._save_feed_file()}).fail(function(e){t._log(e),t._updateProgressStatus(e.message),t._color="red",setTimeout(function(){t._stopProgressBar(),t._unblock_button()},1500)})}},{key:"_save_feed_file",value:function(){var t=this;this._log("Saving feed file"),this._updateProgressStatus("Saving feed file"),i.post("save_feed_file",{_ajax_nonce:c.nonce,feed:this._feed}).then(function(e){t._log(e),t._progress=100,t._refresh&&(a.location.href="".concat(c.pages.list.feed,"&link=").concat(e.url,"&cat=").concat(e.cat)),setTimeout(function(){t._stopProgressBar(),setTimeout(function(){t._resetProgressBar(!0),t._unblock_button()},3e3)},2500)}).fail(function(e){t._log(e),t._updateProgressStatus(e.message),t._color="red",setTimeout(function(){t._stopProgressBar(),t._unblock_button()},1500)})}},{key:"_log",value:function(e){return c.wpf_debug&&console.log(e),this}},{key:"_progressBarActive",value:function(e){var t=0<arguments.length&&void 0!==e?e:0,n=this;return this._toggleProgressBar(!0),this._timer=setInterval(function(){n._updateProgressBar()},t||1e3),this}},{key:"_stopProgressBar",value:function(){return clearInterval(this._timer),this}},{key:"_resetProgressBar",value:function(e){return this._toggleProgressBar(!1),this._updateProgressStatus(""),clearInterval(this._timer),this._color=!1,this._timer=null,this._progress=0,e&&this._updateProgressBar(),this}},{key:"_toggleProgressBar",value:function(e){var t=s("#feed_progress_table");return e?t.show():t.hide(),this}},{key:"_updateProgressStatus",value:function(e){return s(".feed-progress-status").text(e),this}},{key:"_updateProgressBar",value:function(){var e=s(".feed-progress-percentage"),t=s(".feed-progress-bar-fill"),n="".concat(Math.round(this._progress),"%");t.css({width:n}),e.text(n)}}]),e}();a.wf={helper:d,feedEditor:f,generator:h},s(a).on("load",function(){null!==s(location).attr("href").match(/webappick.*feed/g)&&s("#wpbody-content").addClass("woofeed-body-content");var e=a.location.search;"edit-feed"===new URLSearchParams(e).get("action")&&s(".itemWrapper").show(),n(),postboxes.add_postbox_toggles(pagenow),(new h).init(),""!==c.generator.feed&&c.generator.regenerate,f.init(),d.common(),s(".wfmasterTooltip").hover(function(){var e=s(this),t=e.attr("wftitle");e.data("tipText",t).removeAttr("wftitle"),s('<p class="wftooltip"></p>').text(t).appendTo("body").fadeIn("slow")},function(){var e=s(this);e.attr("wftitle",e.data("tipText")),s(".wftooltip").remove()}).mousemove(function(e){s(".wftooltip").css({top:e.pageY+10,left:e.pageX+20})}),s(".generateFeed").validate(),s(t).on("click","[data-toggle_slide]",function(e){e.preventDefault(),s(s(this).data("toggle_slide")).slideToggle("fast")}).on("click","#wf_newRow",function(){var e=s("#table-1 tbody"),t=s("#feed_config_template").text().trim().replace(/__idx__/g,e.find("tr").length);e.append(t),d.fancySelect(s(".outputType"))}).on("click",".single-feed-delete",function(e){e.preventDefault(),confirm(c.form.del_confirm)&&(a.location.href=s(this).attr("val"))}).on("click",".wf_clean_cache_wrapper",function(e){e.preventDefault();var t=s(".woo-feed-clean-cache-nonce").val(),n=s(".woo-feed-cache-loader");n.show(),i.post("clear_cache_data",{_ajax_clean_nonce:t}).then(function(e){e.success&&n.hide()}).fail(function(e){console.log("something wrong")})}).on("change",".wf_attr.wf_attributes",function(e){e.preventDefault(),s(".fancy-picker-picked").trigger("click");var t,n,a=s(this).val(),r=s(this).parents("tr").find(".outputType"),o=s(this).parents("tr").find(".fancy-picker-content .fancy-picker-option"),i=s(this).parents("tr").find(".fancy-picker-data span");""!==a&&-1!==a.indexOf("wf_taxo")&&(t="for_custom_taxo",n="parent_if_empty"),["price","current_price","sale_price","price_with_tax","current_price_with_tax","sale_price_with_tax"].includes(a)&&(t="for_price",n="Price"),o.removeClass("selected"),"for_custom_taxo"!==t&&"for_price"!==t||o.each(function(e){n===s(this).text()&&(s(this).addClass("selected"),i.text(n),r.find("option").text(n),r.find("option").val(s(this).data("value")))})}).on("click","#doaction, #doaction2",function(){return confirm(c.form.del_confirm_multi)}).on("change",".dType",function(){var e=s(this),t=e.val(),n=e.closest("tr");"pattern"===t?(n.find(".value_attribute").hide(),n.find(".value_pattern").show()):"attribute"===t?(n.find(".value_attribute").show(),n.find(".value_pattern").hide()):"remove"===t&&(n.find(".value_attribute").hide(),n.find(".value_pattern").hide())}).on("click",".delRow",function(e){e.preventDefault(),s(this).closest("tr").remove(),d.reindex_config_table()}).on("submit","#generateFeed",function(){s(this).validate(),s(this).valid()&&s(".makeFeedResponse").show().html('<b style="color: darkblue;"><i class="dashicons dashicons-sos wpf_spin"></i> '.concat(c.form.generate,"</b>"))}).on("submit","#updatefeed",function(e,t){s(this).validate(),s(this).valid()&&s(".makeFeedResponse").show().html('<b style="color: darkblue;"><i class="dashicons dashicons-sos wpf_spin"></i> '.concat(t&&t.save?c.form.save:c.form.generate,"</b>"))}).on("change",".ftporsftp",function(){var e=s(this).val(),t=s(".ssh2_status");"sftp"===e?(t.show().css("color","dodgerblue").text(c.form.sftp_checking),i.post("get_ssh2_status",{_ajax_nonce:c.nonce,server:e}).then(function(e){"exists"===e?(t.css("color","#2CC185").text(c.form.sftp_available),setTimeout(function(){t.hide()},1500)):t.show().css("color","red").text(c.form.sftp_warning)}).fail(function(e){t.hide(),d.ajax_fail(e)})):t.hide()}).on("click",'[name="save_feed_config"]',function(e){e.preventDefault(),s("#updatefeed").trigger("submit",{save:!0})}).on("change","#provider",function(e){e.preventDefault();var t=s(this).val(),n=s("#feedType"),a=s("#providerPage"),r=s("#feed_merchant_info");a.html('<h3><span style="float:none;margin: -3px 0 0;" class="spinner is-active"></span> '+c.form.loading_tmpl+"</h3>"),r.find(".spinner").addClass("is-active"),n.disabled(!0),n.parent().find(".spinner").addClass("is-active"),r.find(".merchant-info-section .data").html(""),u.hasOwnProperty(t)?f.renderMerchantInfo(r,n,u[t]):i.send("woo_feed_get_merchant_info",{type:"GET",data:{nonce:c.nonce,provider:t}}).then(function(e){u[t]=e,f.renderMerchantInfo(r,n,e)}).fail(d.ajax_fail),p.hasOwnProperty(t)?f.renderMerchantTemplate(a,p[t]):i.post("get_feed_merchant",{_ajax_nonce:c.nonce,merchant:t}).then(function(e){p[t]=e,f.renderMerchantTemplate(a,e),"bing"===t&&(s("#delimiter option").removeAttr("selected"),s('#delimiter option[value="tab"]').attr("selected","selected"),s("#enclosure option").removeAttr("selected"),s('#enclosure option[value=" "]').attr("selected","selected")),"google_product_review"!==t&&s('.wf_attributes option[value="reviewer_name"]').hide()}).fail(d.ajax_fail)}).on("change",".woo_feed_status_input",function(){var e=s(this);i.post("update_feed_status",{_ajax_nonce:c.nonce,feedName:e.val(),status:e[0].checked?1:0})}),s(t).on("change",'[name="is_outOfStock"], [name="product_visibility"]',function(){var e=s(".out-of-stock-visibility");"n"===s('[name="is_outOfStock"]:checked').val()&&"1"===s('[name="product_visibility"]:checked').val()?e.show():e.hide()}).on("change",".attr_type",function(){var e=s(this),t=e.val(),n=e.closest("tr");"pattern"===t?(n.find(".wf_attr").hide(),n.find(".wf_attr").val(""),n.find(".wf_default").show()):(n.find(".wf_attr").show(),n.find(".wf_default").hide(),n.find(".wf_default").val(""))}).on("change",".wf_mattributes, .attr_type",function(){var e=s(this).closest("tr"),t=e.find(".wf_mattributes"),n=e.find(".attr_type"),a=e.find("td:eq(4)"),r=s("#provider").val();if(c.form.google_category.hasOwnProperty(t.val())&&"pattern"===n.val()&&d.in_array(r,c.form.google_category[t.val()])){if(0===a.find("select.selectize").length){a.find("input.wf_default").remove(),a.append('<span class="wf_default wf_attributes"><select name="default[]" class="selectize"></select></span>'),a.append('<span style="font-size:x-small;"><a style="color: red" href="http://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category" target="_blank">'.concat(c.learn_more,"</a></span>")),_||a.append('<span class="spinner is-active" style="margin: 0;"></span>');var o=a.find(".wf_attributes select");d.selectize(o,{preload:!0,placeholder:c.form.select_category,load:function(e,t){_?t(_):i.send("get_google_categories",{type:"GET",data:{_ajax_nonce:c.nonce,action:"get_google_categories",provider:r}}).then(function(e){t(_=e),a.find(".spinner").remove()}).fail(d.ajax_fail)}})}}else"current_category"!==t.val()&&0===a.find("input.wf_default").length&&(a.find("span").remove(),a.append('<input autocomplete="off" class="wf_default wf_attributes" type="text" name="default[]" value="">'),"pattern"!==n.val()&&a.find("input.wf_default").hide())}).on("change","#feedType,#provider",function(){var e=s("#feedType").val(),t=s("#provider").val(),n=s(".itemWrapper"),a=s(".wf_csvtxt");""!==e&&d.in_array(t,c.form.item_wrapper_hidden)?n.hide():"xml"===e?(n.show(),a.hide()):"csv"===e||"txt"===e?(n.hide(),a.show()):(n.hide(),a.hide())}).trigger("change")})}(jQuery,window,document,wp.ajax,wpf_ajax_obj);
2
- //# sourceMappingURL=woo-feed-admin.min.js.map
1
+ "use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}!function(s,a,t,i,c){s.fn.disabled=function(n){return s(this).each(function(){var e=s(this),t="disabled";void 0!==e.prop(t)?e.prop(t,void 0===n||!0===n):!0===n?e.addClass(t):e.removeClass(t)}),self},s.fn.isDisabled=function(){var e=s(this),t="disabled";return void 0!==e.prop(t)?e.prop(t):e.hasClass(t)};function e(e){s(e.currentTarget).removeClass(function(e,t){return(t.match(/\btooltipped-\S+/g)||[]).join(" ")}).removeClass("tooltipped").removeAttr("aria-label")}function r(e,t){s(e).addClass("tooltipped tooltipped-s").attr("aria-label",t)}function o(e,t){return s.extend(!0,{},e,t)}function n(){l=s(".toClipboard"),!ClipboardJS.isSupported()||/iPhone|iPad/i.test(navigator.userAgent)?l.find("img").hide(0):(l.each(function(){s(this).on("mouseleave",e).on("blur",e)}),new ClipboardJS(".toClipboard").on("error",function(e){var t,n;r(e.trigger,(t=e.action,n="cut"===t?"X":"C",/iPhone|iPad/i.test(navigator.userAgent)?"No support :(":/Mac/i.test(navigator.userAgent)?"Press ⌘-"+n+" to "+t:"Press Ctrl-"+n+" to "+t))}).on("success",function(e){r(e.trigger,"Copied!")}))}var l,_,d={in_array:function(e,t){try{return-1!==t.indexOf(e)}catch(e){return!1}},selectize_render_item:function(e,t){return'<div class="item wapk-selectize-item">'.concat(t(e.text),"</div>")},ajax_fail:function(e){console.warn(e),alert(e.hasOwnProperty("statusText")&&e.hasOwnProperty("status")?c.ajax.error+"\n"+e.statusText+" ("+e.status+")":e)},sortable:function(e,n,a,r){return(e||s(".sorted_table")).each(function(){var e=s(this),t=e.find("tbody > tr:eq(0) > td").length||a||9;e.wf_sortable(o({containerSelector:"table",itemPath:"> tbody",itemSelector:"tr",handle:"i.wf_sortedtable",placeholder:'<tr class="placeholder"><td colspan="'.concat(t,'"></td></tr>'),onDrop:function(e,t,n,a){e.removeClass(t.group.options.draggedClass).removeAttr("style"),s("body").removeClass(t.group.options.bodyClass),r&&"function"==typeof r&&r(e,t,n,a)}},n))})},selectize:function(e,t){return(e||s("select.selectize")).not(".selectized").each(function(){var e=s(this);e.selectize(o({create:e.data("create")||!1,plugins:e.data("plugins")?e.data("plugins").split(",").map(function(e){return e.trim()}):[],render:{item:d.selectize_render_item}},t))})},fancySelect:function(e,t){return(e||s("select.fancySelect")).not(".FancySelectInit").each(function(){s(this).fancySelect(o({maxItemShow:3},t))})},reindex_config_table:function(){s("#table-1").find("tbody tr").each(function(n,e){s(e).find("[name]").each(function(e,t){s(t).attr("name",s(t).attr("name").replace(/(\[\d\])/g,"[".concat(n,"]")))})})},common:function(){d.sortable(s(".sorted_table"),{},9,d.reindex_config_table),d.selectize(),d.fancySelect(s(".outputType"))}},f={form:null,init:function(){this.form=s(".generateFeed"),this.form.length&&(d.common(),s(t).trigger(new jQuery.Event("feedEditor.init",{target:this.form})))},renderMerchantInfo:function(n,a,r){function e(e){var t;r.hasOwnProperty(e)&&(n.find(".merchant-info-section."+e+" .data").html(r[e]),"feed_file_type"===e&&((t=r[e].split(",").map(function(e){return e.trim().toLowerCase()}).filter(function(e){return""!==e&&e!==c.na.toLowerCase()})).length?(a.find("option").removeAttr("selected").each(function(){var e=s(this);e.val()&&!d.in_array(e.val(),t)?e.disabled(!0):e.disabled(!1)}),1===t.length&&a.find('option[value="'+t[0]+'"]').attr("selected","selected")):a.find("option").disabled(!1)))}for(var t in r)e(t);n.find(".spinner").removeClass("is-active"),a.disabled(!1),a.trigger("change"),a.parent().find(".spinner").removeClass("is-active")},renderMerchantTemplate:function(n,a){function e(t){if(a.hasOwnProperty(t))if("tabs"===t)n.html(a[t]);else{var e=s('[name="'+t+'"]');e.length&&e.each(function(){var e=s(this);e.is("select")?e.find('[value="'+a[t]+'"]').prop("selected",!0):(e.is("[type=checkbox]")||e.is("[type=radio]"))&&e.val()===a[t]?e.prop("checked",!0):e.val(a[t])}).trigger("change")}}for(var t in a)e(t);f.init()}},u=[],p=[],h=function(){function e(){_classCallCheck(this,e),this._feed=c.generator.feed,this._limit=c.generator.limit,this._progress=0,this._timer=null,this._color=!1,this._total_batch=0,this._current_batch=0,this._product_ids=[],this._progress_per_batch=0,this._refresh=!0,this._regenerate=c.generator.regenerate,a.isRegenerating=!1,this._all_btn=s(".wpf_regenerate"),this._current_btn=s("#".concat(this._feed.replace("wf_config","wf_feed_"))),this._current_btn_label=""}return _createClass(e,[{key:"init",value:function(){var n=this;""!==this._feed&&this._regenerate&&!1===a.isRegenerating&&this.generate();var e=a.location.search;return"webappick-manage-feeds"===new URLSearchParams(e).get("page")&&s("body").addClass("woo-import-popup-body"),s(t).on("click",".woo-feed-campaign-close-button",function(e){e.preventDefault(),s(this).parent(".woo-feed-promotion").hide();var t=s(this).data("condition");1===t&&i.post("woo_feed_hide_promotion",{_ajax_nonce:c.nonce,condition:t}).then(function(e){n._log(e)}).fail(function(e){n._log(e),n._updateProgressStatus(e.message),n._color="red"})}),s(t).on("click",".wpf_regenerate",function(e){e.preventDefault(),n._current_btn=s(this),n._current_btn.hasClass("disabled")||!0===a.isRegenerating||(n._feed=n._current_btn.attr("id").replace("wf_feed_","wf_config"),""!==n._feed&&n.generate())}),this}},{key:"_block_button",value:function(){this._all_btn.length&&this._all_btn.addClass("disabled"),this._current_btn.length&&(this._current_btn.find("span").addClass("wpf_spin reverse_spin"),this._current_btn_label=this._current_btn.attr("title"),this._current_btn.attr("aria-label",c.regenerate).attr("title",c.regenerate))}},{key:"_unblock_button",value:function(){this._all_btn.length&&this._all_btn.removeClass("disabled"),this._current_btn.length&&(this._current_btn.find("span").removeClass("wpf_spin"),this._current_btn.find("span").removeClass("reverse_spin"),this._current_btn.attr("aria-label",this._current_btn_label).attr("title",this._current_btn_label))}},{key:"generate",value:function(){var t=this,n=this;a.isRegenerating=!0,this._block_button(),this._resetProgressBar(),this._progressBarActive(),this._log("Counting Total Products"),this._updateProgressStatus("Fetching products."),this._get_product_ids().then(function(e){t._progress=10,n._log({response:e}),e.success?(n._log("Total ".concat(e.total," Products found.")),n._product_ids=e.product,n._total_batch=t._product_ids.length,n._current_batch=0,n._progress_per_batch=(90-t._progress)/t._total_batch,n._process_batch(),n._updateProgressStatus("Processing Products...")):n._updateProgressStatus(e.data.message)}).fail(function(e){n._log(e),n._updateProgressStatus(e.message),n._color="red",setTimeout(function(){n._stopProgressBar(),n._unblock_button()},1500)})}},{key:"_get_product_ids",value:function(){return this._progress=5,i.post("get_product_information",{_ajax_nonce:c.nonce,feed:this._feed,limit:this._limit})}},{key:"_process_batch",value:function(){var t=this,e="Processing Batch ".concat(this._current_batch+1," of ").concat(this._total_batch);this._updateProgressStatus(e),this._log(e),i.post("make_batch_feed",{_ajax_nonce:c.nonce,feed:this._feed,products:this._product_ids[this._current_batch],loop:this._current_batch}).then(function(e){t._current_batch++,t._log("Batch ".concat(t._current_batch," Completed")),t._log(e),t._current_batch<t._total_batch&&(t._process_batch(),t._progress+=t._progress_per_batch),t._current_batch===t._total_batch&&t._save_feed_file()}).fail(function(e){t._log(e),t._updateProgressStatus(e.message),t._color="red",setTimeout(function(){t._stopProgressBar(),t._unblock_button()},1500)})}},{key:"_save_feed_file",value:function(){var t=this;this._log("Saving feed file"),this._updateProgressStatus("Saving feed file"),i.post("save_feed_file",{_ajax_nonce:c.nonce,feed:this._feed}).then(function(e){t._log(e),t._progress=100,t._refresh&&(a.location.href="".concat(c.pages.list.feed,"&link=").concat(e.url,"&cat=").concat(e.cat)),setTimeout(function(){t._stopProgressBar(),setTimeout(function(){t._resetProgressBar(!0),t._unblock_button()},3e3)},2500)}).fail(function(e){t._log(e),t._updateProgressStatus(e.message),t._color="red",setTimeout(function(){t._stopProgressBar(),t._unblock_button()},1500)})}},{key:"_log",value:function(e){return c.wpf_debug&&console.log(e),this}},{key:"_progressBarActive",value:function(e){var t=0<arguments.length&&void 0!==e?e:0,n=this;return this._toggleProgressBar(!0),this._timer=setInterval(function(){n._updateProgressBar()},t||1e3),this}},{key:"_stopProgressBar",value:function(){return clearInterval(this._timer),this}},{key:"_resetProgressBar",value:function(e){return this._toggleProgressBar(!1),this._updateProgressStatus(""),clearInterval(this._timer),this._color=!1,this._timer=null,this._progress=0,e&&this._updateProgressBar(),this}},{key:"_toggleProgressBar",value:function(e){var t=s("#feed_progress_table");return e?t.show():t.hide(),this}},{key:"_updateProgressStatus",value:function(e){return s(".feed-progress-status").text(e),this}},{key:"_updateProgressBar",value:function(){var e=s(".feed-progress-percentage"),t=s(".feed-progress-bar-fill"),n="".concat(Math.round(this._progress),"%");t.css({width:n}),e.text(n)}}]),e}();a.wf={helper:d,feedEditor:f,generator:h},s(a).on("load",function(){null!==s(location).attr("href").match(/webappick.*feed/g)&&s("#wpbody-content").addClass("woofeed-body-content");var e=a.location.search;"edit-feed"===new URLSearchParams(e).get("action")&&s(".itemWrapper").show(),n(),postboxes.add_postbox_toggles(pagenow),(new h).init(),""!==c.generator.feed&&c.generator.regenerate,f.init(),d.common(),s(".wfmasterTooltip").hover(function(){var e=s(this),t=e.attr("wftitle");e.data("tipText",t).removeAttr("wftitle"),s('<p class="wftooltip"></p>').text(t).appendTo("body").fadeIn("slow")},function(){var e=s(this);e.attr("wftitle",e.data("tipText")),s(".wftooltip").remove()}).mousemove(function(e){s(".wftooltip").css({top:e.pageY+10,left:e.pageX+20})}),s(".generateFeed").validate(),s(t).on("click","[data-toggle_slide]",function(e){e.preventDefault(),s(s(this).data("toggle_slide")).slideToggle("fast")}).on("click","#wf_newRow",function(){var e=s("#table-1 tbody"),t=s("#feed_config_template").text().trim().replace(/__idx__/g,e.find("tr").length);e.append(t),d.fancySelect(s(".outputType"))}).on("click",".single-feed-delete",function(e){e.preventDefault(),confirm(c.form.del_confirm)&&(a.location.href=s(this).attr("val"))}).on("click",".wf_clean_cache_wrapper",function(e){e.preventDefault();var t=s(".woo-feed-clean-cache-nonce").val(),n=s(".woo-feed-cache-loader");n.show(),i.post("clear_cache_data",{_ajax_clean_nonce:t}).then(function(e){e.success&&n.hide()}).fail(function(e){console.log("something wrong")})}).on("change",".wf_attr.wf_attributes",function(e){e.preventDefault(),s(".fancy-picker-picked").trigger("click");var t,n,a=s(this).val(),r=s(this).parents("tr").find(".outputType"),o=s(this).parents("tr").find(".fancy-picker-content .fancy-picker-option"),i=s(this).parents("tr").find(".fancy-picker-data span");""!==a&&-1!==a.indexOf("wf_taxo")&&(t="for_custom_taxo",n="parent_if_empty"),["price","current_price","sale_price","price_with_tax","current_price_with_tax","sale_price_with_tax"].includes(a)&&(t="for_price",n="Price"),o.removeClass("selected"),"for_custom_taxo"!==t&&"for_price"!==t||o.each(function(e){n===s(this).text()&&(s(this).addClass("selected"),i.text(n),r.find("option").text(n),r.find("option").val(s(this).data("value")))})}).on("click","#doaction, #doaction2",function(){return confirm(c.form.del_confirm_multi)}).on("change",".dType",function(){var e=s(this),t=e.val(),n=e.closest("tr");"pattern"===t?(n.find(".value_attribute").hide(),n.find(".value_pattern").show()):"attribute"===t?(n.find(".value_attribute").show(),n.find(".value_pattern").hide()):"remove"===t&&(n.find(".value_attribute").hide(),n.find(".value_pattern").hide())}).on("click",".delRow",function(e){e.preventDefault(),s(this).closest("tr").remove(),d.reindex_config_table()}).on("submit","#generateFeed",function(){s(this).validate(),s(this).valid()&&s(".makeFeedResponse").show().html('<b style="color: darkblue;"><i class="dashicons dashicons-sos wpf_spin"></i> '.concat(c.form.generate,"</b>"))}).on("submit","#updatefeed",function(e,t){s(this).validate(),s(this).valid()&&s(".makeFeedResponse").show().html('<b style="color: darkblue;"><i class="dashicons dashicons-sos wpf_spin"></i> '.concat(t&&t.save?c.form.save:c.form.generate,"</b>"))}).on("change",".ftporsftp",function(){var e=s(this).val(),t=s(".ssh2_status");"sftp"===e?(t.show().css("color","dodgerblue").text(c.form.sftp_checking),i.post("get_ssh2_status",{_ajax_nonce:c.nonce,server:e}).then(function(e){"exists"===e?(t.css("color","#2CC185").text(c.form.sftp_available),setTimeout(function(){t.hide()},1500)):t.show().css("color","red").text(c.form.sftp_warning)}).fail(function(e){t.hide(),d.ajax_fail(e)})):t.hide()}).on("click",'[name="save_feed_config"]',function(e){e.preventDefault(),s("#updatefeed").trigger("submit",{save:!0})}).on("change","#provider",function(e){e.preventDefault();var t=s(this).val(),n=s("#feedType"),a=s("#providerPage"),r=s("#feed_merchant_info");a.html('<h3><span style="float:none;margin: -3px 0 0;" class="spinner is-active"></span> '+c.form.loading_tmpl+"</h3>"),r.find(".spinner").addClass("is-active"),n.disabled(!0),n.parent().find(".spinner").addClass("is-active"),r.find(".merchant-info-section .data").html(""),u.hasOwnProperty(t)?f.renderMerchantInfo(r,n,u[t]):i.send("woo_feed_get_merchant_info",{type:"GET",data:{nonce:c.nonce,provider:t}}).then(function(e){u[t]=e,f.renderMerchantInfo(r,n,e)}).fail(d.ajax_fail),p.hasOwnProperty(t)?f.renderMerchantTemplate(a,p[t]):i.post("get_feed_merchant",{_ajax_nonce:c.nonce,merchant:t}).then(function(e){p[t]=e,f.renderMerchantTemplate(a,e),"bing"===t&&(s("#delimiter option").removeAttr("selected"),s('#delimiter option[value="tab"]').attr("selected","selected"),s("#enclosure option").removeAttr("selected"),s('#enclosure option[value=" "]').attr("selected","selected")),"google_product_review"!==t&&s('.wf_attributes option[value="reviewer_name"]').hide()}).fail(d.ajax_fail)}).on("change",".woo_feed_status_input",function(){var e=s(this);i.post("update_feed_status",{_ajax_nonce:c.nonce,feedName:e.val(),status:e[0].checked?1:0})}),s(t).on("change",'[name="is_outOfStock"], [name="product_visibility"]',function(){var e=s(".out-of-stock-visibility");"n"===s('[name="is_outOfStock"]:checked').val()&&"1"===s('[name="product_visibility"]:checked').val()?e.show():e.hide()}).on("change",".attr_type",function(){var e=s(this),t=e.val(),n=e.closest("tr");"pattern"===t?(n.find(".wf_attr").hide(),n.find(".wf_attr").val(""),n.find(".wf_default").show()):(n.find(".wf_attr").show(),n.find(".wf_default").hide(),n.find(".wf_default").val(""))}).on("change",".wf_mattributes, .attr_type",function(){var e=s(this).closest("tr"),t=e.find(".wf_mattributes"),n=e.find(".attr_type"),a=e.find("td:eq(4)"),r=s("#provider").val();if(c.form.google_category.hasOwnProperty(t.val())&&"pattern"===n.val()&&d.in_array(r,c.form.google_category[t.val()])){if(0===a.find("select.selectize").length){a.find("input.wf_default").remove(),a.append('<span class="wf_default wf_attributes"><select name="default[]" class="selectize"></select></span>'),a.append('<span style="font-size:x-small;"><a style="color: red" href="http://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category" target="_blank">'.concat(c.learn_more,"</a></span>")),_||a.append('<span class="spinner is-active" style="margin: 0;"></span>');var o=a.find(".wf_attributes select");d.selectize(o,{preload:!0,placeholder:c.form.select_category,load:function(e,t){_?t(_):i.send("get_google_categories",{type:"GET",data:{_ajax_nonce:c.nonce,action:"get_google_categories",provider:r}}).then(function(e){t(_=e),a.find(".spinner").remove()}).fail(d.ajax_fail)}})}}else"current_category"!==t.val()&&0===a.find("input.wf_default").length&&(a.find("span").remove(),a.append('<input autocomplete="off" class="wf_default wf_attributes" type="text" name="default[]" value="">'),"pattern"!==n.val()&&a.find("input.wf_default").hide())}).on("change","#feedType,#provider",function(){var e=s("#feedType").val(),t=s("#provider").val(),n=s(".itemWrapper"),a=s(".wf_csvtxt");""!==e&&d.in_array(t,c.form.item_wrapper_hidden)?n.hide():"xml"===e?(n.show(),a.hide()):"csv"===e||"txt"===e?(n.hide(),a.show()):(n.hide(),a.hide())}).trigger("change")})}(jQuery,window,document,wp.ajax,wpf_ajax_obj);
2
+ //# sourceMappingURL=woo-feed-admin.min.js.map
admin/partials/woo-feed-edit-filter.php CHANGED
@@ -88,7 +88,7 @@ if ( ! defined( 'ABSPATH' ) ) {
88
  <td>6. Custom Number format.</td>
89
  </tr>
90
  <tr>
91
- <td><b>Get &#8594;<a style="color: red;" href="https://webappick.com/plugin/woocommerce-product-feed-pro/?utm_source=freePlugin&utm_medium=go_premium&utm_campaign=free_to_pro&utm_term=wooFeed"> Woo Feed Pro</a></b></td>
92
  </tr>
93
  </table>
94
  </td>
88
  <td>6. Custom Number format.</td>
89
  </tr>
90
  <tr>
91
+ <td><b>Get &#8594;<a style="color: red;" href="https://webappick.com/plugin/woocommerce-product-feed-pro/?utm_source=freePlugin&utm_medium=go_premium&utm_campaign=free_to_pro&utm_term=wooFeed"> CTX Feed Pro</a></b></td>
92
  </tr>
93
  </table>
94
  </td>
admin/partials/woo-feed-settings.php CHANGED
@@ -66,7 +66,7 @@ $settings = woo_feed_get_options( 'all' );
66
  <td><label for="opt_in"><?php esc_html_e( 'Send Debug Info', 'woo-feed' ); ?></label></td>
67
  <td>
68
  <label for="opt_in">
69
- <input type="checkbox" id="opt_in" name="opt_in" value="on" <?php checked( WooFeedWebAppickAPI::getInstance()->is_tracking_allowed(), true ); ?>> <?php esc_html_e( 'Allow WooFeed To Collect Debug Info.', 'woo-feed' ); ?>
70
  </label>
71
  <p class="description"><?php esc_html_e( 'To opt out, leave this box unchecked. Your Feed Data remains un-tracked, and no data will be collected. No sensitive data is tracked.', 'woo-feed' ); ?><br><a href="#" data-toggle_slide=".tracker_collection_list"><?php esc_html_e( 'See What We Collect.', 'woo-feed' ); ?></a></p>
72
  <ul class="tracker_collection_list" style="display: none;">
@@ -80,7 +80,7 @@ $settings = woo_feed_get_options( 'all' );
80
  </td>
81
  </tr>
82
  <tr>
83
- <td><label for="cache_ttl"><?php esc_html_e( 'WooFeed Cache TTL', 'woo-feed' ); ?></label></td>
84
  <td>
85
  <select name="cache_ttl" id="cache_ttl">
86
  <?php foreach ( woo_feed_get_cache_ttl_options() as $k => $v ) { ?>
66
  <td><label for="opt_in"><?php esc_html_e( 'Send Debug Info', 'woo-feed' ); ?></label></td>
67
  <td>
68
  <label for="opt_in">
69
+ <input type="checkbox" id="opt_in" name="opt_in" value="on" <?php checked( WooFeedWebAppickAPI::getInstance()->is_tracking_allowed(), true ); ?>> <?php esc_html_e( 'Allow CTXFeed To Collect Debug Info.', 'woo-feed' ); ?>
70
  </label>
71
  <p class="description"><?php esc_html_e( 'To opt out, leave this box unchecked. Your Feed Data remains un-tracked, and no data will be collected. No sensitive data is tracked.', 'woo-feed' ); ?><br><a href="#" data-toggle_slide=".tracker_collection_list"><?php esc_html_e( 'See What We Collect.', 'woo-feed' ); ?></a></p>
72
  <ul class="tracker_collection_list" style="display: none;">
80
  </td>
81
  </tr>
82
  <tr>
83
+ <td><label for="cache_ttl"><?php esc_html_e( 'CTXFeed Cache TTL', 'woo-feed' ); ?></label></td>
84
  <td>
85
  <select name="cache_ttl" id="cache_ttl">
86
  <?php foreach ( woo_feed_get_cache_ttl_options() as $k => $v ) { ?>
admin/partials/woo-feed-status.php CHANGED
@@ -3,70 +3,73 @@
3
  * Status Page
4
  *
5
  * @link https://webappick.com/
6
- * @since 5.1.7
7
- * @version 5.1.6
8
  *
9
  * @package Woo_Feed
10
  * @subpackage Woo_Feed/admin/partial
11
- * @author Ohidul Islam <wahid@webappick.com>
12
  */
13
  ?>
14
  <div class="wrap wapk-admin">
15
  <div class="wapk-section">
16
  <h1 class="wp-heading-inline"><?php esc_html_e( 'System Status', 'woo-feed' ); ?></h1>
17
  <hr class="wp-header-end">
18
- <?php WPFFWMessage()->displayMessages(); ?>
19
- <div class="woo-feed-status-table-wrapper">
20
- <table class="woo-feed-status-table">
21
- <thead>
22
- <tr>
23
- <th><?php esc_html_e('Environment', 'woo-feed'); ?></th>
24
- <th><?php esc_html_e('Value', 'woo-feed'); ?></th>
25
- </tr>
26
- </thead>
27
- <tbody>
28
- <?php
29
- $system_datas = woo_feed_get_system_status();
30
- foreach ( $system_datas as $key => $value ) {
31
- $system_name = array_key_first($value);
 
32
 
33
- //for debug mode rename the value
34
- if ( "wp_debug_mode" === $key ) {
35
- $value = $value ? 'On' : 'Off';
36
- }
 
 
37
 
38
- //when array get the first value
39
- $system_value = is_array($value) ? array_value_first($value) : $value;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  ?>
41
  <tr data-status="<?php esc_attr($key); ?>">
42
- <?php echo sprintf('<td>%s</td>', esc_html__($system_name, 'woo-feed')); ?>
43
- <?php echo sprintf('<td>%s</td>', esc_html__($system_value, 'woo-feed')); ?>
 
44
  </tr>
45
- <?php
46
  }
47
- ?>
48
- <tr>
49
- <td><?php esc_html_e('Debug Feed File', 'woo-feed'); ?></td>
50
- <td>
51
- <form action="" method="post">
52
- <label for="woo-feed-test-options" style="display: none;">Test Option</label>
53
- <input type="text" id="woo-feed-test-options" name="woo-feed-test-options" placeholder="option name">
54
- <input type="submit" name="woo-feed-test-options-submit" value="Test">
55
- </form>
56
- </td>
57
- </tr>
58
- </tbody>
59
- </table>
60
- </div>
61
- <?php
62
- if ( isset( $_POST['woo-feed-test-options-submit'] ) ) {
63
- $option_name = sanitize_text_field(wp_unslash($_POST['woo-feed-test-options']));
64
 
65
- $get_option_val = maybe_unserialize(get_option($option_name));
66
- echo "<pre>";
67
- print_r($get_option_val);
68
- echo "</pre>";
69
- }
70
- ?>
71
  </div>
72
  </div>
3
  * Status Page
4
  *
5
  * @link https://webappick.com/
6
+ * @since 4.3.31
7
+ * @version 4.3.31
8
  *
9
  * @package Woo_Feed
10
  * @subpackage Woo_Feed/admin/partial
11
+ * @author Ohidul Islam < ceo@webappick.com >
12
  */
13
  ?>
14
  <div class="wrap wapk-admin">
15
  <div class="wapk-section">
16
  <h1 class="wp-heading-inline"><?php esc_html_e( 'System Status', 'woo-feed' ); ?></h1>
17
  <hr class="wp-header-end">
18
+ <?php
19
+
20
+ $system_data = new Woo_Feed_Status();
21
+
22
+ WPFFWMessage()->displayMessages();
23
+
24
+ $status_tab = add_query_arg([
25
+ 'tab' => 'status-tab',
26
+ ],admin_url('admin.php?page=webappick-wp-status'));
27
+
28
+ $log_tab = add_query_arg([
29
+ 'tab' => 'log-tab',
30
+ ],admin_url('admin.php?page=webappick-wp-status'));
31
+
32
+ $tab_name= isset($_GET['tab'])?sanitize_text_field($_GET['tab']):false; //phpcs:ignore
33
 
34
+ ?>
35
+
36
+ <h2 class="nav-tab-wrapper">
37
+ <a href="<?php echo esc_url($status_tab); ?>" class="nav-tab <?php echo esc_html(($tab_name && 'status-tab' === $tab_name) ? 'nav-tab-active' : ''); ?>">Status</a>
38
+ <a href="<?php echo esc_url($log_tab); ?>" class="nav-tab <?php echo esc_html((isset($tab_name) && 'log-tab' === $tab_name) ? 'nav-tab-active' : ''); ?>">Logs</a>
39
+ </h2>
40
 
41
+ <?php if ( $tab_name && 'log-tab' === $tab_name ) :?>
42
+ <br><br>
43
+ <textarea name="" id="" cols="150" rows="30"><?php echo esc_html($system_data->get_logs()); ?></textarea>
44
+ <?php else : ?>
45
+ <br><br>
46
+ <div class="woo-feed-status-table-wrapper succ">
47
+ <table class="woo-feed-status-table">
48
+ <thead>
49
+ <tr>
50
+ <th colspan="2"><?php esc_html_e('Environment', 'woo-feed'); ?></th>
51
+ <th><?php esc_html_e('Message', 'woo-feed'); ?></th>
52
+ </tr>
53
+ </thead>
54
+ <tbody>
55
+ <?php
56
+ foreach ( $system_data->get_woo_feed_status() as $key => $woo_feed_status ) {
57
+ $label = $woo_feed_status['label'];
58
+ $status_icon = $woo_feed_status['status'];
59
+ $message = $woo_feed_status['message'];
60
  ?>
61
  <tr data-status="<?php esc_attr($key); ?>">
62
+ <td style="font-weight: bold;width:40%;" ><?php echo esc_attr($label); ?></td>
63
+ <td style="width: 5%;"><?php echo $status_icon; //phpcs:ignore?></td>
64
+ <td><?php echo $message; //phpcs:ignore?></td>
65
  </tr>
66
+ <?php
67
  }
68
+ ?>
69
+ </tbody>
70
+ </table>
71
+ </div>
72
+ <?php endif; // End of tab condition. ?>
 
 
 
 
 
 
 
 
 
 
 
 
73
 
 
 
 
 
 
 
74
  </div>
75
  </div>
includes/class-woo-feed-status.php ADDED
@@ -0,0 +1,544 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Class Woo_Feed_Status
5
+ *
6
+ * @since 5.2.6
7
+ * @author Ohidul Islam [ceo@webappick.com]
8
+ *
9
+ */
10
+ class Woo_Feed_Status {
11
+
12
+ public $success = '<span style="color: #0a9581" class="dashicons dashicons-yes-alt"></span>';
13
+ public $warning = '<span style="color: #f8b82d" class="dashicons dashicons-warning"></span>';
14
+ public $danger = '<span style="color: #f65021" class="dashicons dashicons-dismiss"></span>';
15
+
16
+ /**
17
+ * Get Status Page Info
18
+ * @return array
19
+ */
20
+ public function get_woo_feed_status(){
21
+ return [
22
+ $this->woocommerce_version(), // WooCommerce Version
23
+ $this->total_products(), // Count Total Products
24
+ $this->product_per_batch(), // Product Per branch
25
+ $this->php_version(), // PHP Version
26
+ $this->php_execution_time(), // PHP Execution Version
27
+ $this->php_memory_limit(), // PHP Memory Limit
28
+ $this->multi_language(),
29
+ $this->multi_currency(),
30
+ $this->wordpress_debug(),
31
+ $this->wordpress_cron(),
32
+ $this->upload_dir_writable(),
33
+ $this->exclude_feed_caching(),
34
+ $this->wordpress_multisite(),
35
+ ];
36
+
37
+ }
38
+
39
+ /**
40
+ * Get CTX Feed Log.
41
+ */
42
+ public function get_logs( ) {
43
+ $fatal_errors = Woo_Feed_Log_Handler_File::get_log_file_path('woo-feed-fatal-errors');
44
+
45
+ if ( $fatal_errors ) {
46
+ return file_get_contents($fatal_errors); //phpcs:ignore
47
+ }
48
+
49
+ return "No Logs Found.";
50
+ }
51
+
52
+ /**
53
+ * Get Wordpress.org plugin information.
54
+ *
55
+ * @param $slug
56
+ *
57
+ * @return false|mixed
58
+ */
59
+ private function plugin_info( $slug ) {
60
+
61
+ if ( empty($slug) ) {
62
+ return false;
63
+ }
64
+
65
+ $args = (object) array(
66
+ 'slug' => $slug,
67
+ 'fields' => array(
68
+ 'sections' => false,
69
+ 'screenshots' => false,
70
+ 'versions' => false,
71
+ ),
72
+ );
73
+ $request = array(
74
+ 'action' => 'plugin_information',
75
+ 'request' => serialize( $args), //phpcs:ignore
76
+ );
77
+ $url = 'http://api.wordpress.org/plugins/info/1.0/';
78
+ $response = wp_remote_post( $url, array( 'body' => $request ) );
79
+
80
+ if ( is_wp_error($response) ) {
81
+ return false;
82
+ }
83
+ return unserialize( $response['body'] ); //phpcs:ignore
84
+
85
+ }
86
+
87
+
88
+
89
+ /**
90
+ * Check WordPress multisite status.
91
+ */
92
+ private function wordpress_multisite( ) {
93
+ $status = $this->success;
94
+ $message = 'No';
95
+
96
+ if ( defined( 'WOO_FEED_PRO_VERSION' ) && is_multisite() ) {
97
+ $message = "WordPress Multisite is enabled. If you have hosted your sites into subdomain like fr.example.com then you need a license for each site. If you have five subdomain then you need the Five site license.";
98
+ }
99
+
100
+ return [
101
+ 'label' => 'WordPress Multi Site',
102
+ 'status' => $status,
103
+ 'message' => $message,
104
+ ];
105
+ }
106
+
107
+ /**
108
+ * Get WooCommerce Version Status.
109
+ */
110
+ private function woocommerce_version( ) {
111
+ $installed_version = (function_exists('WC')) ? WC()->version : '1.0.0';
112
+ $latest_version = $this->plugin_info('woocommerce');
113
+
114
+ if ( version_compare($installed_version,'3.0','<') ) {
115
+ $status = $this->danger;
116
+ $message = $installed_version." - You are using a old version of WooCommerce. To use our plugin your WooCommerce version should be 3.0 or later.";
117
+ }elseif ( version_compare($latest_version->version,$installed_version,'>') ) {
118
+ $status = $this->warning;
119
+ $message = $installed_version." - You are not using the latest version of WooCommerce. Update WooCommerce plugin to its latest version: ".$latest_version->version;
120
+ }else {
121
+ $status = $this->success;
122
+ $message = $installed_version." - You are using the latest version of WooCommerce.";
123
+ }
124
+
125
+ return [
126
+ 'label' => 'WooCommerce Version',
127
+ 'status' => $status,
128
+ 'message' => $message,
129
+ ];
130
+ }
131
+
132
+ /**
133
+ * Get PHP Version Status.
134
+ */
135
+ private function php_version( ) {
136
+ $installed_version = PHP_VERSION;
137
+ if ( version_compare($installed_version,'5.6','<') ) {
138
+ $status = $this->danger;
139
+ $message = $installed_version." - Your PHP version is too old. Too use our plugin";
140
+ }else {
141
+ $status = $this->success;
142
+ $message = $installed_version." - Ok";
143
+ }
144
+
145
+ return [
146
+ 'label' => 'PHP Version',
147
+ 'status' => $status,
148
+ 'message' => $message,
149
+ ];
150
+ }
151
+
152
+ /**
153
+ * Get Multi Language Status.
154
+ */
155
+ private function multi_language( ) {
156
+ $status = $this->success;
157
+ $message = "No";
158
+ $doc = '';
159
+ $multi_lang_plugin = '';
160
+
161
+ /**
162
+ * polylang/polylang.php Polylang
163
+ * polylang-pro/polylang.php Polylang Pro
164
+ * gtranslate/gtranslate.php GTranslate
165
+ * translatepress-multilingual/index.php TranslatePress - Multilingual
166
+ * weglot/weglot.php Weglot Translate
167
+ * google-language-translator/google-language-translator.php Google Language Translator
168
+ * sitepress-multilingual-cms/sitepress.php WPML Multilingual CMS
169
+ */
170
+
171
+ if ( is_plugin_active('sitepress-multilingual-cms/sitepress.php') ) {
172
+ $multi_lang_plugin = 'WPML';
173
+ $doc = "<br/><br/>You can read this doc about: <a href='https://webappick.com/docs/woo-feed/miscellaneous/how-to-make-feed-for-wpml-languages/'>How to make feed for WPML languages?</a>";
174
+ }elseif ( is_plugin_active("polylang/polylang.php") ) {
175
+ $multi_lang_plugin = 'Polylang';
176
+ $doc = "<br/><br/>You can read this doc about: <a href='https://webappick.com/docs/woo-feed/faq-for-woocommerce-product-feed/how-to-make-feed-for-polylang-languages/'>How to make feed for Polylang languages?</a>";
177
+ }elseif ( is_plugin_active("polylang-pro/polylang.php") ) {
178
+ $multi_lang_plugin = 'Polylang Pro';
179
+ $doc = "<br/><br/>You can read this doc about: <a href='https://webappick.com/docs/woo-feed/faq-for-woocommerce-product-feed/how-to-make-feed-for-polylang-languages/'>How to make feed for Polylang languages?</a>";
180
+ }elseif ( is_plugin_active('gtranslate/gtranslate.php') ) {
181
+ $multi_lang_plugin = 'GTranslate';
182
+ }elseif ( is_plugin_active('translatepress-multilingual/index.php') ) {
183
+ $multi_lang_plugin = 'TranslatePress - Multilingual';
184
+ }elseif ( is_plugin_active('weglot/weglot.php') ) {
185
+ $multi_lang_plugin = 'Weglot Translate';
186
+ }elseif ( is_plugin_active('google-language-translator/google-language-translator.php') ) {
187
+ $multi_lang_plugin = 'Google Language Translator';
188
+ }
189
+
190
+ if ( ! empty($multi_lang_plugin) ) {
191
+ if ( ! in_array($multi_lang_plugin,[ 'WPML', 'Polylang', 'Polylang Pro' ],true) ) {
192
+ $status = $this->warning;
193
+ $message = "<b>$multi_lang_plugin</b> is not compatible for multi-language feed. You can not make feed for each language. Supported multi-language plugins are <b>WPML</b> & <b>Polylang</b>.";
194
+ }elseif ( is_plugin_active('webappick-product-feed-for-woocommerce/woo-feed.php') ) {
195
+ $status = $this->warning;
196
+ $message = "You are using <b>$multi_lang_plugin</b> for multi language site. But the free version of this plugin is not compatible with $multi_lang_plugin. Using <a target='_blank' href='https://webappick.com/plugin/woocommerce-product-feed-pro/'><b>Woo Feed Pro</b></a> you can make feed for each language.";
197
+ $message .= $doc;
198
+ }else {
199
+ $message = "<b>$multi_lang_plugin</b>";
200
+ }
201
+ }
202
+
203
+ return [
204
+ 'label' => 'Multi Language Site',
205
+ 'status' => $status,
206
+ 'message' => $message,
207
+ ];
208
+ }
209
+
210
+ /**
211
+ * Get Multi Currency Status.
212
+ */
213
+ private function multi_currency( ) {
214
+
215
+ $status = $this->success;
216
+ $message = "No";
217
+ $free_version = is_plugin_active( 'webappick-product-feed-for-woocommerce/woo-feed.php' );
218
+
219
+ $supported_multi_currency = "Below Multi Currency Plugins are compatible with <a target='_blank' href='https://webappick.com/plugin/woocommerce-product-feed-pro/'><b>Woo Feed Pro</b></a>. ";
220
+ $supported_multi_currency .= "<br/>";
221
+ $supported_multi_currency .= "<ul>";
222
+ $supported_multi_currency .= "<li>☞ <a href='https://aelia.co/shop/currency-switcher-woocommerce/'>Currency Switcher WooCommerce</a> by Aelia</li>";
223
+ $supported_multi_currency .= "<li>☞ <a href='https://codecanyon.net/item/woocommerce-currency-switcher/8085217'>WooCommerce Currency Switcher</a> by Realmag777</li>";
224
+ $supported_multi_currency .= "<li>☞ <a href='https://wordpress.org/plugins/woocommerce-multilingual/'>WooCommerce Multilingual</a></li>";
225
+ $supported_multi_currency .= "<li>☞ <a href='https://wordpress.org/plugins/polylang/'>Polylang</a></li>";
226
+ $supported_multi_currency .= "<ul/>";
227
+
228
+ $multi_currency_plugin = false;
229
+ if ( is_plugin_active( 'woocommerce-aelia-currencyswitcher/woocommerce-aelia-currencyswitcher.php' ) ) {
230
+ $multi_currency_plugin = 'Currency Switcher WooCommerce by Aelia';
231
+ } elseif ( is_plugin_active( 'woocommerce-currency-switcher/index.php' ) ) {
232
+ $multi_currency_plugin = 'WooCommerce Currency Switcher by Realmag777';
233
+ } elseif ( is_plugin_active( 'woocommerce-multilingual/wpml-woocommerce.php' ) ) {
234
+ $multi_currency_plugin = 'WooCommerce Multilingual';
235
+ } elseif ( is_plugin_active( 'polylang/polylang.php' ) ) {
236
+ $multi_currency_plugin = 'PolyLang';
237
+ }elseif ( is_plugin_active( 'polylang-pro/polylang.php' ) ) {
238
+ $multi_currency_plugin = 'PolyLang Pro';
239
+ }
240
+
241
+
242
+ if ( 'No' !== $this->multi_language()['message'] ) {
243
+ if ( $multi_currency_plugin && $free_version ) {
244
+ $status = $this->warning;
245
+ $message = "<b>$multi_currency_plugin</b> is installed. Free version of Woo Feed does not support multi currency feed. To make feed for individual currency, you need the <a target='_blank' href='https://webappick.com/plugin/woocommerce-product-feed-pro/'><b>Woo Feed Pro</b>.</a>";
246
+ }elseif ( $free_version ) {
247
+ $message = $supported_multi_currency;
248
+ }elseif ( $multi_currency_plugin ) {
249
+ $status = $this->success;
250
+ $message = "<b>$multi_currency_plugin</b><br/><br/>";
251
+ $message .= $supported_multi_currency;
252
+ }
253
+ }
254
+
255
+
256
+ return [
257
+ 'label' => 'Multi Currency Site',
258
+ 'status' => $status,
259
+ 'message' => $message,
260
+ ];
261
+ }
262
+
263
+ /**
264
+ * Get PHP Version Status.
265
+ */
266
+ private function wordpress_debug( ) {
267
+ $message = 'Ok';
268
+ if ( defined('WP_DEBUG') && ! WP_DEBUG ) {
269
+ $status = $this->success;
270
+ $message = "<b>WP_DEBUG</b> is <b>false</b>. If you having any issue with the plugin then set WP_DEBUG to true so that you can find the issue from logs. You can learn more about debugging in WordPress from <a href='https://wordpress.org/support/article/debugging-in-wordpress/'><b>here</b></a>. ";
271
+ }else {
272
+ $status = $this->warning;
273
+ if ( defined('WP_DEBUG_LOG') && ! WP_DEBUG_LOG ) {
274
+ $message = "<b>WP_DEBUG_LOG</b> is <b>false</b>. Plugin can not write error logs if WP_DEBUG_LOG is set to false. You can learn more about debugging in WordPress from <a href='https://wordpress.org/support/article/debugging-in-wordpress/'><b>here</b></a>";
275
+ }
276
+ }
277
+
278
+ return [
279
+ 'label' => 'WP DEBUG Status',
280
+ 'status' => $status,
281
+ 'message' => $message,
282
+ ];
283
+ }
284
+
285
+ /**
286
+ * Get PHP Version Status.
287
+ */
288
+ private function wordpress_cron( ) {
289
+ $message = 'Ok';
290
+ $status = $this->success;
291
+ if ( true === DISABLE_WP_CRON ) {
292
+ $status = $this->warning;
293
+ $message = "WordPress cron is disabled. The <b>Auto Feed Update</b> will not run if WordPress cron is Disabled.";
294
+ }
295
+
296
+ return [
297
+ 'label' => 'WP CRON',
298
+ 'status' => $status,
299
+ 'message' => $message,
300
+ ];
301
+ }
302
+
303
+ /**
304
+ * Get PHP Execution Time.
305
+ */
306
+ private function php_execution_time( ) {
307
+ $status = $this->success;
308
+ $time_limit = ini_get('max_execution_time');
309
+ $message = $time_limit; //TODO message with Detail Explanation
310
+
311
+ return [
312
+ 'label' => 'PHP Time Limit',
313
+ 'status' => $status,
314
+ 'message' => $message,
315
+ ];
316
+ }
317
+
318
+ /**
319
+ * Get PHP Memory Limit.
320
+ */
321
+ private function php_memory_limit( ) {
322
+ $status = $this->success;
323
+ $message = ini_get('memory_limit');
324
+
325
+ return [
326
+ 'label' => 'Memory Limit',
327
+ 'status' => $status,
328
+ 'message' => $message,
329
+ ];
330
+
331
+ }
332
+
333
+ /**
334
+ * Get PHP Version Status.
335
+ */
336
+ private function product_per_batch( ) {
337
+ $status = $this->success;
338
+ $settings = maybe_unserialize(get_option('woo_feed_settings'));
339
+ $message = $settings['per_batch'];
340
+ //TODO AI Message
341
+ return [
342
+ 'label' => 'Product Per Batch',
343
+ 'status' => $status,
344
+ 'message' => $message,
345
+ ];
346
+ }
347
+
348
+ /**
349
+ * Get Total Product Status.
350
+ */
351
+ private function total_products( ) {
352
+ $status = $this->success;
353
+ $message = '';
354
+
355
+ $wc_args = array(
356
+ 'limit' => -1,
357
+ 'offset' => 0,
358
+ 'status' => 'publish',
359
+ 'type' => array( 'simple', 'variable', 'grouped', 'external', 'composite', 'bundle', 'yith_bundle', 'yith-composite', 'subscription', 'variable-subscription', 'woosb' ),
360
+ 'orderby' => 'date',
361
+ 'order' => 'DESC',
362
+ 'return' => 'ids',
363
+ 'suppress_filters' => false,
364
+ );
365
+
366
+ $wp_args = array(
367
+ 'posts_per_page' => - 1,
368
+ 'post_type' => 'product',
369
+ 'post_status' => 'publish',
370
+ 'order' => 'DESC',
371
+ 'fields' => 'ids',
372
+ 'cache_results' => false,
373
+ 'update_post_meta_cache' => false,
374
+ 'update_post_term_cache' => false,
375
+ 'suppress_filters' => false,
376
+ );
377
+
378
+ $wp_query = (new WP_Query($wp_args))->get_posts();
379
+ $wc_query = (new WC_Product_Query($wc_args))->get_products();
380
+
381
+ $wc_query_total_product = count($wc_query);
382
+ $wp_query_total_product = count($wp_query);
383
+
384
+ $both_query = count(array_merge($wp_query,$wc_query));
385
+
386
+ // Total Products By WP Query.
387
+ if ( $wp_query_total_product ) {
388
+ $message .= "WP Query: ".$wp_query_total_product."<br/>";
389
+ }
390
+
391
+ // Total Products By WC Product Query.
392
+ if ( $wc_query_total_product ) {
393
+ $message .= "WC Product Query: ".$wc_query_total_product."<br/>";
394
+ }
395
+
396
+ // Total Products By Both WP Query & WC Product Query.
397
+ if ( $both_query ) {
398
+ $message .= "Both Query: ".$both_query."<br/>";
399
+ }
400
+
401
+ $message .= "<br/><b>Product Total by Types.</b><br/>";
402
+
403
+ // Product Totals by Product Type (WP Query)
404
+ $type_totals = $this->get_product_total_by_type();
405
+ if ( ! empty($type_totals) ) {
406
+ foreach ( $type_totals as $type => $total ) {
407
+ $message .= "☞ ". ucwords($type)." Product: ".$total."<br/>";
408
+ }
409
+ }
410
+
411
+ // Total Product Variations (WP Query)
412
+ $total_variations = $this->get_total_product_variation();
413
+ if ( $total_variations ) {
414
+ $message .= "☞ Product Variations: ".$total_variations."<br/>";
415
+ }
416
+
417
+ return [
418
+ 'label' => 'Total Products',
419
+ 'status' => $status,
420
+ 'message' => $message,
421
+ ];
422
+ }
423
+
424
+ /**
425
+ * Count total product variations.
426
+ * @return int
427
+ */
428
+ private function get_total_product_variation(){
429
+ $args = array(
430
+ 'posts_per_page' => - 1,
431
+ 'post_type' => 'product_variation',
432
+ 'post_status' => 'publish',
433
+ 'order' => 'DESC',
434
+ 'fields' => 'ids',
435
+ 'cache_results' => false,
436
+ 'update_post_meta_cache' => false,
437
+ 'update_post_term_cache' => false,
438
+ 'suppress_filters' => false,
439
+ );
440
+
441
+ return ( new WP_Query( $args ) )->post_count;
442
+ }
443
+
444
+ /**
445
+ * Count products by type.
446
+ * @return array
447
+ */
448
+ private function get_product_total_by_type( ) {
449
+ $product_types = get_terms( 'product_type');
450
+ $product_count = [];
451
+ $args = array(
452
+ 'posts_per_page' => - 1,
453
+ 'post_type' => 'product',
454
+ 'post_status' => 'publish',
455
+ 'order' => 'DESC',
456
+ 'fields' => 'ids',
457
+ 'cache_results' => false,
458
+ 'update_post_meta_cache' => false,
459
+ 'update_post_term_cache' => false,
460
+ 'suppress_filters' => false,
461
+ );
462
+ if ( ! empty($product_types) ) {
463
+ foreach ( $product_types as $product_type ) {
464
+ $args['tax_query'] = array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
465
+ array(
466
+ 'taxonomy' => 'product_type',
467
+ 'field' => 'name',
468
+ 'terms' => $product_type->name,
469
+ ),
470
+ );
471
+ $product_count[ $product_type->name ] = (new WP_Query($args))->post_count;
472
+ }
473
+ }
474
+
475
+ return $product_count;
476
+ }
477
+
478
+ /**
479
+ * @return array
480
+ */
481
+ public function upload_dir_writable() {
482
+ $status = $this->success;
483
+ $message = "Ok - Writable.";
484
+
485
+ $upload_dir = wp_get_upload_dir();
486
+ $feed_dir = $upload_dir['basedir']."/woo-feed";
487
+ if ( ! file_exists($feed_dir) ) {
488
+ $status = $this->danger;
489
+ $message = "Upload directory is not writable. Give the <code>wp-content/uploads/</code> directory file write permission so that the plugin can save the feed file.";
490
+ }
491
+ return [
492
+ 'label' => 'Upload Directory',
493
+ 'status' => $status,
494
+ 'message' => $message,
495
+ ];
496
+ }
497
+
498
+ /**
499
+ * Get Caching Status.
500
+ */
501
+ private function exclude_feed_caching( ) {
502
+ $status = $this->success;
503
+ $message = "No.";
504
+ $cache_plugins = array(
505
+ 'breeze/breeze.php' => 'Breeze',
506
+ 'cache-cleaner/cache-cleaner.php' => 'Cache Cleaner - Scheduled',
507
+ 'cache-enabler/cache-enabler.php' => 'Cache Enabler',
508
+ 'cloudflare/cloudflare.php' => 'Cloudflare',
509
+ 'comet-cache/comet-cache.php' => 'Comet Cache',
510
+ 'hummingbird-performance/wp-hummingbird.php' => 'Hummingbird',
511
+ 'hyper-cache/plugin.php' => 'Hyper Cache',
512
+ 'litespeed-cache/litespeed-cache.php' => 'LiteSpeed Cache',
513
+ 'speed-booster-pack/speed-booster-pack.php' => 'Speed Booster Pack',
514
+ 'swift-performance-lite/performance.php' => 'Swift Performance Lite',
515
+ 'w3-total-cache/w3-total-cache.php' => 'W3 Total Cache',
516
+ 'wp-optimize/wp-optimize.php' => 'WP-Optimize - Clean, Compress, Cache',
517
+ 'wp-cloudflare-page-cache/wp-cloudflare-super-page-cache.php' => 'WP Cloudflare Super Page Cache',
518
+ 'wp-fastest-cache/wpFastestCache.php' => 'WP Fastest Cache',
519
+ 'wp-rocket/wp-rocket.php' => 'WP Rocket',
520
+ 'wp-super-cache/wp-cache.php' => 'WP Super Cache',
521
+ );
522
+ $active_plugins = get_option('active_plugins');
523
+
524
+ $cache_plugins_installed = false;
525
+
526
+ foreach ( $active_plugins as $key => $active_plugin ) {
527
+ if ( array_key_exists($active_plugin,$cache_plugins) ) {
528
+ $cache_plugins_installed = $cache_plugins[ $active_plugin ];
529
+ }
530
+ }
531
+
532
+ if ( $cache_plugins_installed ) {
533
+ $status = $this->warning;
534
+ $message = "<b>$cache_plugins_installed</b> plugin is installed on your site. Please make sure that feed file URL or directory is excluded from caching. If not excluded, your feed file may not be updated instantly after feed update. Please read this doc about: <a href='https://webappick.com/docs/woo-feed/faq-for-woocommerce-product-feed/how-to-solve-feed-configuration-not-updating-issue/'>How to exclude feed file URL or Directory from caching?</a>";
535
+ }
536
+
537
+
538
+ return [
539
+ 'label' => 'Cache Plugin Installed',
540
+ 'status' => $status,
541
+ 'message' => $message,
542
+ ];
543
+ }
544
+ }
includes/class-woo-feed.php CHANGED
@@ -148,6 +148,11 @@ class Woo_Feed {
148
  * The class is a shipping calculation library
149
  */
150
  require_once WOO_FEED_FREE_PATH . 'includes/classes/class-woo-feed-shipping.php';
 
 
 
 
 
151
 
152
  /**
153
  * The class responsible for save feed
148
  * The class is a shipping calculation library
149
  */
150
  require_once WOO_FEED_FREE_PATH . 'includes/classes/class-woo-feed-shipping.php';
151
+
152
+ /**
153
+ * The class is a shipping calculation library
154
+ */
155
+ require_once WOO_FEED_FREE_PATH . 'includes/class-woo-feed-status.php';
156
 
157
  /**
158
  * The class responsible for save feed
includes/classes/class-woo-feed-admin-message.php CHANGED
@@ -105,7 +105,7 @@ final class Woo_Feed_Message {
105
  <?php if ( 1 !== $hide_promotion && empty($hide_promotion) ) { ?>
106
  <div class="woo-feed-promotion">
107
  <a href="https://webappick.com/plugin/woocommerce-product-feed-pro/">
108
- <img src="<?php echo WOO_FEED_PLUGIN_URL; ?>admin/images/woo-feed-black-friday.svg" alt="Woo Feed Pro Black Friday">
109
  </a>
110
  <span class="dashicons dashicons-no-alt woo-feed-campaign-close-button" data-condition="1"></span>
111
  </div>
@@ -116,8 +116,8 @@ final class Woo_Feed_Message {
116
  <tr>
117
  <th>
118
  <div class="woo-feed-top-header">
119
- <a class="get-woo-feed-pro" href="https://webappick.com/plugin/woocommerce-product-feed-pro/?utm_source=freePlugin&utm_medium=go_premium&utm_campaign=free_to_pro&utm_term=wooFeed" target="_blank" aria-label="<?php esc_attr_e( 'Get Woo Feed Pro', 'woo-feed' ); ?>">
120
- <img src="<?php echo esc_url( WOO_FEED_PLUGIN_URL ); ?>admin/images/get-woo-feed-pro.svg" alt="<?php esc_attr_e( 'Get Woo Feed Pro', 'woo-feed' ); ?>">
121
  </a>
122
  <div class="woo-feed-top-buttons">
123
  <a class="woo-feed-doc-link" href="<?php echo esc_url($doc_link); ?>" target="_blank" ><span class="dashicons dashicons-book"></span> <?php esc_html_e( 'Documentation', 'woo-feed' ); ?></a>
105
  <?php if ( 1 !== $hide_promotion && empty($hide_promotion) ) { ?>
106
  <div class="woo-feed-promotion">
107
  <a href="https://webappick.com/plugin/woocommerce-product-feed-pro/">
108
+ <img src="<?php echo WOO_FEED_PLUGIN_URL; ?>admin/images/woo-feed-black-friday.svg" alt="CTX Feed Pro Black Friday">
109
  </a>
110
  <span class="dashicons dashicons-no-alt woo-feed-campaign-close-button" data-condition="1"></span>
111
  </div>
116
  <tr>
117
  <th>
118
  <div class="woo-feed-top-header">
119
+ <a class="get-woo-feed-pro" href="https://webappick.com/plugin/woocommerce-product-feed-pro/?utm_source=freePlugin&utm_medium=go_premium&utm_campaign=free_to_pro&utm_term=wooFeed" target="_blank" aria-label="<?php esc_attr_e( 'Get CTX Feed Pro', 'woo-feed' ); ?>">
120
+ <img src="<?php echo esc_url( WOO_FEED_PLUGIN_URL ); ?>admin/images/get-woo-feed-pro.svg" alt="<?php esc_attr_e( 'Get CTX Feed Pro', 'woo-feed' ); ?>">
121
  </a>
122
  <div class="woo-feed-top-buttons">
123
  <a class="woo-feed-doc-link" href="<?php echo esc_url($doc_link); ?>" target="_blank" ><span class="dashicons dashicons-book"></span> <?php esc_html_e( 'Documentation', 'woo-feed' ); ?></a>
includes/classes/class-woo-feed-products-v3.php CHANGED
@@ -1303,7 +1303,8 @@ class Woo_Feed_Products_v3
1303
  $datetime_now = date('Y-m-d H:i:s', strtotime( current_time( 'mysql' ) ) ); // {DateTimeNow}
1304
  $blog_name = get_bloginfo('name'); // {BlogName}
1305
  $blog_url = get_bloginfo('url'); // {BlogURL}
1306
- $blog_desc = get_bloginfo('description'); // {BlogDescription}
 
1307
  $blog_email = get_bloginfo('admin_email'); // {BlogEmail}
1308
 
1309
  $this->xml_wrapper['header'] = str_replace(
1303
  $datetime_now = date('Y-m-d H:i:s', strtotime( current_time( 'mysql' ) ) ); // {DateTimeNow}
1304
  $blog_name = get_bloginfo('name'); // {BlogName}
1305
  $blog_url = get_bloginfo('url'); // {BlogURL}
1306
+ //$blog_desc = get_bloginfo('description'); // {BlogDescription}
1307
+ $blog_desc = "CTX Feed - This product feed is generated with the CTX Feed - WooCommerce Product Feed Generator plugin by WebAppick.com. For all your support questions check out our plugin Docs on https://webappick.com/docs or e-mail to: support@webappick.com"; // {BlogDescription}
1308
  $blog_email = get_bloginfo('admin_email'); // {BlogEmail}
1309
 
1310
  $this->xml_wrapper['header'] = str_replace(
includes/helper.php CHANGED
@@ -233,6 +233,45 @@ if ( ! function_exists( 'wooFeed_Admin_Notices' ) ) {
233
  }
234
  }
235
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
236
  if ( ! function_exists( 'woo_feed_progress_bar' ) ) {
237
  /**
238
  * Feed Progress Bar
@@ -2536,7 +2575,6 @@ if ( ! function_exists( 'woo_feed_filter_parsed_rules' ) ) {
2536
  return $rules;
2537
  }
2538
  }
2539
-
2540
  if ( ! function_exists( 'woo_feed_category_mapping' ) ) {
2541
  /**
2542
  * Category Mapping
@@ -2688,7 +2726,6 @@ if ( ! function_exists( 'woo_feed_get_category_mapping_value' ) ) {
2688
  }
2689
  }
2690
 
2691
-
2692
  if ( ! function_exists( 'woo_feed_add_identifier_fields' ) ) {
2693
  /**
2694
  * Add Custom fields into product inventory tab for Unique Identifier (GTIN,MPN,EAN)
@@ -2884,7 +2921,6 @@ if ( ! function_exists( 'woo_feed_save_identifier_fields_data_for_variation' ) )
2884
  add_action( 'woocommerce_save_product_variation', 'woo_feed_save_identifier_fields_data_for_variation', 10, 2 );
2885
  }
2886
 
2887
-
2888
  if ( ! function_exists( 'woo_feed_clear_cache_button' ) ) {
2889
  /**
2890
  * Clear cache button.
@@ -2957,6 +2993,7 @@ if ( ! function_exists('woo_feed_get_terms_list_hierarchical_order') ) {
2957
 
2958
  return implode(">", $product_terms_names);
2959
  } // end if terms
 
2960
  }
2961
  }
2962
 
@@ -3034,59 +3071,34 @@ if ( ! function_exists( 'woo_feed_get_approved_reviews_data' ) ) {
3034
  }
3035
  }
3036
 
3037
-
3038
- if ( ! function_exists('woo_feed_get_system_status') ) {
3039
  /**
3040
- * Get configuration system status.
3041
  *
3042
- * @since 5.1.7
3043
- * @return array
 
 
3044
  */
3045
- function woo_feed_get_system_status() {
3046
- global $wp_version;
3047
- $system_data = array();
3048
- $php_time_limit = ini_get('max_execution_time');
3049
- $wp_memory_limit = ini_get('memory_limit');
3050
-
3051
- if ( class_exists('WooCommerce') ) {
3052
- $wc_version = WooCommerce::instance()->version;
3053
-
3054
- //get total products
3055
- $args = array(
3056
- 'post_type' => 'product',
3057
- 'post_status' => 'publish',
3058
- 'posts_per_page' => -1,
3059
- );
3060
-
3061
- $products = get_posts( $args );
3062
- $total_product = count($products);
3063
-
3064
- //get variations products
3065
- $args = array(
3066
- 'post_type' => 'product_variation',
3067
- 'post_status' => array( 'publish' ),
3068
- );
3069
-
3070
- $variations = get_posts( $args );
3071
- $total_variations = count($variations);
3072
-
3073
- $system_data = array(
3074
- 'wp_version' => array( 'Wordpress Version' => $wp_version ),
3075
- 'woocommerce_version' => array( 'WooCommerce Version' => $wc_version ),
3076
- 'php_version' => array( 'PHP Version' => phpversion() ),
3077
- 'wp_memory_limit' => array( 'Wordpress Memory Limit' => $wp_memory_limit ),
3078
- 'php_time_limit' => array( 'PHP Time Limit' => $php_time_limit ),
3079
- 'wp_debug_mode' => array( 'Wordpress Debug Mode' => WP_DEBUG ),
3080
- 'plugin_version' => array( 'WooFeed Version' => WOO_FEED_FREE_VERSION ),
3081
- 'total_product' => array( 'Total Product' => $total_product ),
3082
- 'total_variation_product' => array( 'Total Variation Product' => $total_variations ),
3083
- );
3084
  }
3085
-
3086
- return apply_filters('woo_feed_config_status', $system_data);
3087
-
3088
  }
3089
  }
 
3090
 
3091
  if ( ! function_exists( 'woo_feed_hide_promotion' ) ) {
3092
  /**
@@ -3147,9 +3159,9 @@ if ( ! function_exists( 'woo_feed_brand_taxonomy' ) ) {
3147
  }
3148
 
3149
  $labels = array(
3150
- 'name' => 'Brand by Woo Feed',
3151
  'singular_name' => 'Brand',
3152
- 'menu_name' => 'Brand by Woo Feed',
3153
  'all_items' => 'All Brands',
3154
  'parent_item' => 'Parent Brand',
3155
  'parent_item_colon' => 'Parent Brand:',
233
  }
234
  }
235
  }
236
+ if ( ! function_exists( 'wooFeed_To_ctxFeed' ) ) {
237
+ /**
238
+ * Woo Feed To CTX Feed
239
+ *
240
+ * @since 4.3.31
241
+ * @author Nazrul Islam Nayan
242
+ */
243
+ function wooFeed_To_ctxFeed() {
244
+ $user_id = get_current_user_id();
245
+ if ( ! get_user_meta( $user_id, 'woo_feed_ctx_startup_notice_dismissed' ) ) {
246
+ ob_start();
247
+ ?>
248
+ <script type="text/javascript">
249
+ (function($) {
250
+ $(document).on('click', '.woo-feed-ctx-startup-notice button.notice-dismiss', function (e) {
251
+ e.preventDefault();
252
+ let nonce = $('#woo_feed_to_ctx_feed_nonce').val();
253
+
254
+ //woo feed to ctx feed notice cancel callback
255
+ wp.ajax.post( 'woo_feed_to_ctx_feed_notice', {
256
+ _wp_ajax_nonce: nonce,
257
+ clicked: true,
258
+ }).then( response => {
259
+ console.log( response );
260
+ }).fail( error => {
261
+ console.log( error );
262
+ });
263
+ });
264
+ })(jQuery)
265
+ </script>
266
+ <div class="notice woo-feed-ctx-startup-notice is-dismissible"
267
+ style="background: url(<?php echo WOO_FEED_PLUGIN_URL . "admin/images/woofeed-now-ctxfeed.png" ; ?>) no-repeat center 70%;height: 195px;background-size: cover;border: none;">
268
+ <input type="hidden" id="woo_feed_to_ctx_feed_nonce" value="<?php echo wp_create_nonce('woo-feed-to-ctx-feed-notice'); ?>">
269
+ </div>
270
+ <?php
271
+ $image = ob_get_contents();
272
+ }
273
+ }
274
+ }
275
  if ( ! function_exists( 'woo_feed_progress_bar' ) ) {
276
  /**
277
  * Feed Progress Bar
2575
  return $rules;
2576
  }
2577
  }
 
2578
  if ( ! function_exists( 'woo_feed_category_mapping' ) ) {
2579
  /**
2580
  * Category Mapping
2726
  }
2727
  }
2728
 
 
2729
  if ( ! function_exists( 'woo_feed_add_identifier_fields' ) ) {
2730
  /**
2731
  * Add Custom fields into product inventory tab for Unique Identifier (GTIN,MPN,EAN)
2921
  add_action( 'woocommerce_save_product_variation', 'woo_feed_save_identifier_fields_data_for_variation', 10, 2 );
2922
  }
2923
 
 
2924
  if ( ! function_exists( 'woo_feed_clear_cache_button' ) ) {
2925
  /**
2926
  * Clear cache button.
2993
 
2994
  return implode(">", $product_terms_names);
2995
  } // end if terms
2996
+ return false;
2997
  }
2998
  }
2999
 
3071
  }
3072
  }
3073
 
3074
+ if ( ! function_exists( 'woo_feed_to_ctx_feed_notice' ) ) {
 
3075
  /**
3076
+ * Update user meta to work ctx startup notice once.
3077
  *
3078
+ * @param int _ajax_nonce nonce number.
3079
+ *
3080
+ * @since 4.3.31
3081
+ * @author Nazrul Islam Nayan
3082
  */
3083
+ function woo_feed_to_ctx_feed_notice() {
3084
+ if ( isset( $_REQUEST['_wp_ajax_nonce'] ) && wp_verify_nonce( wp_unslash($_REQUEST['_wp_ajax_nonce']), 'woo-feed-to-ctx-feed-notice') ) { //phpcs:ignore
3085
+ $user_id = get_current_user_id();
3086
+ if ( isset( $_REQUEST['clicked'] ) ) {
3087
+ $updated_user_meta = add_user_meta( $user_id, 'woo_feed_ctx_startup_notice_dismissed', 'true', true );
3088
+
3089
+ if ( $updated_user_meta ) {
3090
+ wp_send_json_success( esc_html__( 'User meta updated successfully.', 'woo-feed' ) );
3091
+ }else {
3092
+ wp_send_json_error( esc_html__( 'Something is wrong.', 'woo-feed' ) );
3093
+ }
3094
+ }
3095
+ } else {
3096
+ wp_send_json_error( esc_html__( 'Invalid Request.', 'woo-feed' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3097
  }
3098
+ wp_die();
 
 
3099
  }
3100
  }
3101
+ add_action('wp_ajax_woo_feed_to_ctx_feed_notice', 'woo_feed_to_ctx_feed_notice');
3102
 
3103
  if ( ! function_exists( 'woo_feed_hide_promotion' ) ) {
3104
  /**
3159
  }
3160
 
3161
  $labels = array(
3162
+ 'name' => 'Brand by CTX Feed',
3163
  'singular_name' => 'Brand',
3164
+ 'menu_name' => 'Brand by CTX Feed',
3165
  'all_items' => 'All Brands',
3166
  'parent_item' => 'Parent Brand',
3167
  'parent_item_colon' => 'Parent Brand:',
includes/log-helper.php CHANGED
@@ -174,9 +174,10 @@ if ( ! function_exists( 'woo_feed_delete_log' ) ) {
174
  $log_handler = new WC_Log_Handler_File();
175
  $log_handler->remove( false === $handle ? WC_Log_Handler_File::get_log_file_name( $source ) : $source );
176
  }
177
- }
178
- $feed_log_handler = new Woo_Feed_Log_Handler_File();
179
- return $feed_log_handler->remove( false === $handle ? Woo_Feed_Log_Handler_File::get_log_file_name( $source ) : $source );
 
180
  } catch ( Exception $e ) {
181
  return false;
182
  }
174
  $log_handler = new WC_Log_Handler_File();
175
  $log_handler->remove( false === $handle ? WC_Log_Handler_File::get_log_file_name( $source ) : $source );
176
  }
177
+ }elseif ( class_exists( 'Woo_Feed_Log_Handler_File', false ) ) {
178
+ $feed_log_handler = new Woo_Feed_Log_Handler_File();
179
+ return $feed_log_handler->remove( false == $handle ? Woo_Feed_Log_Handler_File::get_log_file_name( $source ) : $source );
180
+ }
181
  } catch ( Exception $e ) {
182
  return false;
183
  }
woo-feed.php CHANGED
@@ -7,10 +7,10 @@
7
  * @package Woo_Feed
8
  *
9
  * @wordpress-plugin
10
- * Plugin Name: Product Feed for WooCommerce
11
  * Plugin URI: https://webappick.com/
12
  * Description: Easily generate woocommerce product feed for any marketing channel like Google Shopping(Merchant), Facebook Remarketing, Bing, eBay & more. Support 100+ Merchants.
13
- * Version: 4.3.30
14
  * Author: WebAppick
15
  * Author URI: https://webappick.com/
16
  * License: GPL v2
@@ -38,7 +38,7 @@ if ( ! defined( 'WOO_FEED_FREE_VERSION' ) ) {
38
  * @var string
39
  * @since 3.1.6
40
  */
41
- define( 'WOO_FEED_FREE_VERSION', '4.3.30' );
42
  }
43
 
44
  if ( ! defined( 'WOO_FEED_FREE_FILE' ) ) {
@@ -174,6 +174,7 @@ if ( ! function_exists( 'run_woo_feed' ) ) {
174
  */
175
  add_action( 'plugins_loaded', [ $plugin, 'run' ], PHP_INT_MAX );
176
  add_action( 'admin_notices', 'wooFeed_Admin_Notices' );
 
177
  WooFeedWebAppickAPI::getInstance();
178
  }
179
 
7
  * @package Woo_Feed
8
  *
9
  * @wordpress-plugin
10
+ * Plugin Name: CTX Feed
11
  * Plugin URI: https://webappick.com/
12
  * Description: Easily generate woocommerce product feed for any marketing channel like Google Shopping(Merchant), Facebook Remarketing, Bing, eBay & more. Support 100+ Merchants.
13
+ * Version: 4.3.31
14
  * Author: WebAppick
15
  * Author URI: https://webappick.com/
16
  * License: GPL v2
38
  * @var string
39
  * @since 3.1.6
40
  */
41
+ define( 'WOO_FEED_FREE_VERSION', '4.3.31' );
42
  }
43
 
44
  if ( ! defined( 'WOO_FEED_FREE_FILE' ) ) {
174
  */
175
  add_action( 'plugins_loaded', [ $plugin, 'run' ], PHP_INT_MAX );
176
  add_action( 'admin_notices', 'wooFeed_Admin_Notices' );
177
+ add_action( 'admin_notices', 'wooFeed_To_ctxFeed' );
178
  WooFeedWebAppickAPI::getInstance();
179
  }
180