CTX Feed – WooCommerce Product Feed Manager Plugin - Version 4.3.54

Version Description

(2021-03-25) = * Added: Compatibility for Dynamic Pricing With Discount Rules by Acowebs. * Fixed: Pattern label updated.

Download this release

Release Info

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

Code changes from version 4.3.53 to 4.3.54

README.txt CHANGED
@@ -5,7 +5,7 @@ Tags: Product Feed, WooCommerce, Google Shopping, Google Merchant, Facebook Cata
5
  Requires at least: 3.6
6
  Tested Up To: 5.7
7
  Requires PHP: 5.6
8
- Stable tag: 4.3.53
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -498,6 +498,10 @@ Using pro version:
498
 
499
  == Changelog ==
500
 
 
 
 
 
501
  = 4.3.53 (2021-03-24) =
502
  * Added: Custom fields feature, custom fields should be found in the dropdown list.
503
  * Added: Taxonomies feature, taxonomies should be found in the dropdown list.
5
  Requires at least: 3.6
6
  Tested Up To: 5.7
7
  Requires PHP: 5.6
8
+ Stable tag: 4.3.54
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
498
 
499
  == Changelog ==
500
 
501
+ = 4.3.54 (2021-03-25) =
502
+ * Added: Compatibility for Dynamic Pricing With Discount Rules by Acowebs.
503
+ * Fixed: Pattern label updated.
504
+
505
  = 4.3.53 (2021-03-24) =
506
  * Added: Custom fields feature, custom fields should be found in the dropdown list.
507
  * Added: Taxonomies feature, taxonomies should be found in the dropdown list.
admin/css/woo-feed-admin.css CHANGED
@@ -1444,11 +1444,11 @@ input[type="submit"][data-id="wf_action_submit"] {
1444
 
1445
  /* Woo Feed Notice Style */
1446
  .woo-feed-notice .woo-feed-review-notice-logo {
1447
- width: 60px;
1448
- height: 75px;
1449
  float: left;
1450
  margin-right: 5px;
1451
- background: url("../images/woo-feed-icon.svg") no-repeat; }
1452
 
1453
  /* Status Page Style */
1454
  .woo-feed-status-table-wrapper .woo-feed-status-table {
1444
 
1445
  /* Woo Feed Notice Style */
1446
  .woo-feed-notice .woo-feed-review-notice-logo {
1447
+ width: 90px;
1448
+ height: 90px;
1449
  float: left;
1450
  margin-right: 5px;
1451
+ background: url("../images/woo-feed-logo.svg") no-repeat; }
1452
 
1453
  /* Status Page Style */
1454
  .woo-feed-status-table-wrapper .woo-feed-status-table {
admin/css/woo-feed-admin.min.css CHANGED
@@ -1 +1 @@
1
- .wpf_spin{-webkit-animation:spin 1s infinite linear;animation:spin 1s infinite linear}.wpf_spin.reverse_spin{animation-direction:reverse}.wpf_regenerate.disabled{color:#737373;box-shadow:none;cursor:not-allowed}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.wfbtn{background:#3498db;background-image:linear-gradient(125deg,#3cb0fd 0,#152f8c 140%);border-radius:17px;box-shadow:inset 0 1px 3px #666;font-family:Arial,sans-serif;color:#fff;font-size:20px;padding:10px 20px 10px 20px;border:solid #2b698f 0;text-decoration:none}.wfbtn:hover{background:#3cb0fd;background-image:linear-gradient(to bottom,#3cb0fd,#3498db);text-decoration:none}.woo_feed_manage_list_table .wf_update_interval_btn{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%);border:none}.woo_feed_manage_list_table .wf_update_interval_btn:hover{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%)}.woo-feed-promotion{position:relative;display:none}.woo-feed-promotion .woo-feed-campaign-close-button{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);right:15px;width:24px;height:24px;border-radius:12px;background:#595d6b;line-height:24px;color:#fff;cursor:pointer;transition:.3s ease}.woo-feed-promotion .woo-feed-campaign-close-button:hover{background:#fff;color:#d61e48}.wftooltip{display:none;position:absolute;border:1px solid #333;background-color:#161616;border-radius:5px;padding:10px;color:#fff;font-size:12px}.feed-actions .makeFeedResponse{width:70%;color:green}.woo-feed-mapping-input{width:100%}.requiredIn{color:red}.generalInput{width:200px}.generalInput:not(.selectize-control){margin:5px auto}.error{color:red}.widefat td input,.widefat td select{max-width:100%}#wf_newRow{margin-left:0}.mtable tbody tr{height:25px;border:1px solid #ccc;text-align:left;-ms-flex-align:baseline;align-items:baseline;font-weight:700}.mtable th:nth-child(1){width:17px}.mtable th:nth-child(2){width:160px}.mtable th:nth-child(3){width:100px}.mtable th:nth-child(4){width:100px}.mtable th:nth-child(5){width:150px}.mtable th:nth-child(6){width:100px}.mtable th:nth-child(7){width:150px}.mtable th:nth-child(8){width:90px}.mtable th:nth-child(9){width:29px}.mtable2 tbody tr{height:25px;border:1px solid #ccc;text-align:left;-ms-flex-align:baseline;align-items:baseline;font-weight:700}.mtable2 th:nth-child(1){width:30px}.mtable2 th:nth-child(2){width:150px}.mtable2 th:nth-child(3){width:230px}.mtable2 th:nth-child(4){width:220px}.mtable2 th:nth-child(7){width:50px}.mtable2 th:nth-child(8){width:50px}.mtable2 th:nth-child(9){width:29px}.wp-admin select.wf_mattributes{width:150px;left:0;height:25px}div#wf-tab-content1 select:not([name^=output_type]){width:100%}div#wf-tab-content1 input{width:100%}div#wf-tab-content1 .dashicons{vertical-align:middle}.wf_attributes{width:150px;left:0}.wf_compare{max-width:245px;left:0}.wf_ps{width:100px;left:0}.wf_sortedtable{cursor:move}.sorted_table{position:relative}.sorted_table .dragged{position:absolute;opacity:.8;z-index:9999;background:#fff;width:100%;display:table}.sorted_table tbody tr.placeholder td{border:1px dashed #2cc185;height:46px}.wfnoempty{width:120px}p{color:#222}.wf_tabs{position:relative;margin:0 auto;width:100%;list-style:none}.wf_tabs:after{display:table;clear:both;content:""}.wf_tabs li{float:left;width:20%;display:block;border:2px solid #ccc}.wf_tabs li>input[type=radio][name=wf_tabs]{position:absolute;top:auto;left:-9999px}.wf-tab-name{display:block;padding:15px;font-size:15px;font-weight:700;line-height:1;background:#fff;cursor:pointer;position:relative;text-align:center;text-transform:uppercase;color:#2cc185}.wf-tab-name:hover{background:#2cc185;color:#fff}.wf_tabs [id^=tab]:checked+label{background:#2cc185;color:#fff}.wf_tabs .wf-tab-content{z-index:2;display:none;width:100%;font-size:.9rem;position:absolute;left:0;background:#fff;border:2px solid #ccc}.wf_tabs [id^=tab]:checked~[id^=wf-tab-content]{display:block}[id^=wf-tab-content]{margin-bottom:40px}div#wf-tab-content2 table:first-child{padding:10px 0}div#wf-tab-content2 table:first-child td:nth-child(1){width:260px}div#wf-tab-content2 table:first-child td:nth-child(2){width:260px}table.feed-actions tr td:last-child{text-align:right}select.selectize{display:none}body.no-js select.selectize{display:block!important}.wp-list-table .option_name .wf_feed_option_name_link{font-weight:700;color:#30336b}.wp-list-table #option_name a{color:#32373c}.selectize-dropdown .active{background-color:#edf9ff}.selectize-dropdown .create{padding:5px 8px}.wapk-selectize-item{background:#0073aa!important;color:#f1f1f1!important;font-weight:700!important;border-color:#0073aa!important;padding-left:5px;padding-right:5px}.selectize-input.full #googleTaxonomyId-selectized{opacity:0;position:absolute;left:-10000px}.selectize-dropdown [data-selectable].option{cursor:default}.selectize-control.plugin-remove_button [data-value] .remove{border-left:1px solid #f1f1f1!important}.selectize-dropdown .optgroup-header{font-weight:700;background:#efefef;color:#5a5a5a}.selectize-dropdown [data-selectable].option{cursor:pointer}.wf_status_wrap label{width:55px;height:28px;box-sizing:border-box;float:left;border-radius:100px;position:relative;cursor:pointer;transition:.3s ease;background:linear-gradient(125deg,#e2e2e2 0,#ccc 140%)}input[class=woo_feed_status_input]:checked+label{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%)}input[class=woo_feed_status_input]:checked+label:before{left:29px}.wf_status_wrap label:before{transition:.3s ease;content:'';width:20px;height:20px;position:absolute;background:#fff;left:6px;top:4px;box-sizing:border-box;color:#000;border-radius:100px;box-shadow:0 1.5px 2px 0 #000}.view span.dashicons.dashicons-external{color:#22a6b3}.view span.dashicons.dashicons-sos{color:#22a6b3}.view span.dashicons.dashicons-download{color:#ee5253}.view span.dashicons.dashicons-media-code{color:#576574}.column-url,.widefat td.column-url,.widefat th.column-url{color:#1e8f9a;font-weight:700}.feed-progress-container{width:100%;color:#fff;text-align:center;font-weight:300}.feed-progress-bar{width:100%;background:#eee;padding:3px;border-radius:50px;box-shadow:inset 0 1px 3px rgba(0,0,0,.2)}.feed-progress-bar-fill{height:20px;display:block;background:linear-gradient(to right top,#10ac84,#13b389,#15ba8f,#18c194,#1ac89a,#13cba1,#0acfa9,#00d2b0,#00d2ba,#00d2c3,#00d2cb,#00d2d3);width:0;border-radius:50px;transition:width .8s ease}.feed-progress-status{float:left;font-weight:700;color:#00008b}.feed-progress-percentage{text-align:right;font-weight:bolder;color:#1dd1a1;font-family:'Arial Black',sans-serif;font-size:large}#wpbody-content.woofeed-body-content{overflow:visible!important}.clippy{position:relative;width:13px;margin-top:-3px;margin-left:3px;top:3px}.column-url .clippy{display:none}.column-url:hover .clippy{display:inline-block}.tooltipped{position:relative}.tooltipped:after{position:absolute;z-index:1000000;display:none;padding:5px 8px;font:normal normal 11px/1.5 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";color:#fff;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:rgba(0,0,0,.8);border-radius:3px;-webkit-font-smoothing:subpixel-antialiased}.tooltipped:before{position:absolute;z-index:1000001;display:none;width:0;height:0;color:rgba(0,0,0,.8);pointer-events:none;content:"";border:5px solid transparent}.tooltipped:hover:before{display:inline-block;text-decoration:none}.tooltipped:hover:after{display:inline-block;text-decoration:none}.tooltipped:active:before{display:inline-block;text-decoration:none}.tooltipped:active:after{display:inline-block;text-decoration:none}.tooltipped:focus:before{display:inline-block;text-decoration:none}.tooltipped:focus:after{display:inline-block;text-decoration:none}.tooltipped-multiline:hover:after{display:table-cell}.tooltipped-multiline:active:after{display:table-cell}.tooltipped-multiline:focus:after{display:table-cell}.tooltipped-multiline:after{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;word-break:break-word;word-wrap:normal;white-space:pre-line;border-collapse:separate}.tooltipped-s:after{top:100%;right:50%;margin-top:5px;-webkit-transform:translateX(50%);transform:translateX(50%)}.tooltipped-s:before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.tooltipped-se:after{top:100%;margin-top:5px;right:auto;left:50%;margin-left:-15px}.tooltipped-se:before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.tooltipped-sw:after{top:100%;right:50%;margin-top:5px;margin-right:-15px}.tooltipped-sw:before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.tooltipped-n:after{right:50%;bottom:100%;margin-bottom:5px;-webkit-transform:translateX(50%);transform:translateX(50%)}.tooltipped-n:before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.tooltipped-ne:after{bottom:100%;margin-bottom:5px;right:auto;left:50%;margin-left:-15px}.tooltipped-ne:before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.tooltipped-nw:after{right:50%;bottom:100%;margin-bottom:5px;margin-right:-15px}.tooltipped-nw:before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.tooltipped-w:after{right:100%;bottom:50%;margin-right:5px;-webkit-transform:translateY(50%);transform:translateY(50%)}.tooltipped-w:before{top:50%;bottom:50%;left:-5px;margin-top:-5px;border-left-color:rgba(0,0,0,.8)}.tooltipped-e:after{bottom:50%;left:100%;margin-left:5px;-webkit-transform:translateY(50%);transform:translateY(50%)}.tooltipped-e:before{top:50%;right:-5px;bottom:50%;margin-top:-5px;border-right-color:rgba(0,0,0,.8)}.tooltipped-multiline.tooltipped-s:after{right:auto;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltipped-multiline.tooltipped-n:after{right:auto;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltipped-multiline.tooltipped-w:after{right:100%}.tooltipped-multiline.tooltipped-e:after{right:100%}.tooltipped-sticky:before{display:inline-block}.tooltipped-sticky:after{display:inline-block}.tooltipped-sticky.tooltipped-multiline:after{display:table-cell}.fullscreen-overlay-enabled.dark-theme .tooltipped:after{color:#000;background:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-s:before{border-bottom-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-se:before{border-bottom-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-sw:before{border-bottom-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-n:before{border-top-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-ne:before{border-top-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-nw:before{border-top-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-e:before{border-right-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-w:before{border-left-color:rgba(255,255,255,.8)}@media screen and (min-width:0\0){.tooltipped-multiline:after{width:250px}}ul.tracker_collection_list{list-style:initial;padding:initial;margin:-10px 0 0 30px;font-size:11px!important}ul.tracker_collection_list li{margin:0}table.wf-info-table,table.wf-rate-table{vertical-align:middle;text-align:center;max-width:100%;font-weight:500}table.wf-info-table th,table.wf-rate-table th{text-align:center}table.wf-info-table th .woo-feed-top-header,table.wf-rate-table th .woo-feed-top-header{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}table.wf-info-table th .woo-feed-top-header .get-woo-feed-pro,table.wf-rate-table th .woo-feed-top-header .get-woo-feed-pro{margin-left:20px}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons{float:right;display:-ms-flexbox;display:flex;border-radius:7px;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a{padding:8px 20px;background:#576574;color:#fff;box-sizing:border-box;display:inline-block;transition:.3s ease}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-doc-link,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-doc-link{background:#576574;border-top-left-radius:5px;border-bottom-left-radius:5px}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-video-link,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-video-link{background:#ee5253}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-support-link,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-support-link{background:#22a6b3;border-top-right-radius:5px;border-bottom-right-radius:5px}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a span.dashicons,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a span.dashicons{font-size:18px;line-height:1.2}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a:hover,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a:hover{background:#30336b;box-shadow:0 0 33px 0 rgba(0,0,0,.12)}table.wf-info-table strong,table.wf-rate-table strong{font-weight:700}table.wf-info-table th:first-child img{margin:0 0 -5px 5px}table.wf-rate-table a{color:#0073aa}table.wf-rate-table a.review-star:after{content:"\f155\f155\f155\f155\f155"!important;font-family:dashicons;font-size:10px;font-weight:100;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#0073aa;text-decoration:underline}#adminmenu #toplevel_page_webappick-manage-feeds div.wp-menu-image::before{content:"";background:url(../images/woo-feed-icon.svg) no-repeat center center;background-size:20px 20px;opacity:.6}#adminmenu #toplevel_page_webappick-manage-feeds:hover div.wp-menu-image::before{opacity:1}#adminmenu #toplevel_page_webappick-manage-feeds.wp-has-current-submenu div.wp-menu-image::before{opacity:1}.wapk-admin,.wapk-admin *{box-sizing:border-box}.wapk-admin{position:relative;display:block;-webkit-hyphens:manual;-ms-hyphens:manual;-moz-hyphens:manual;hyphens:manual;color:#1b2730;margin:0 0 0 -10px}@media screen and (min-width:783px){.wapk-admin{margin:0 0 0 -20px}}.text-center{text-align:center}.wapk-admin h1,.wapk-admin h2,.wapk-admin h3,.wapk-admin h4,.wapk-admin h5,.wapk-admin h6,.wapk-admin p{color:#1b2730}.wapk-admin sup{vertical-align:baseline;position:relative;top:-6px}.wapk-admin sub{vertical-align:baseline;position:relative;top:4px}.wapk-admin .wapk-section{margin:10px 20px 0 22px;position:relative;display:block}.wapk-admin .wapk-section [class$=icon32]+h2{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px 0;line-height:1.3}.wapk-admin .wapk-section h1{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px 0;line-height:1.3}.wapk-admin .wapk-section>h2:first-child{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px 0;line-height:1.3}.wapk-admin>.notice{margin:10px 20px 0 22px;position:relative;display:block}.wapk-admin span.help{display:block;float:left;width:100%;font-size:.9em;color:#636363;margin-top:5px;font-weight:500}.wapk-admin span.help .dashicons{width:11px;height:12px;font-size:inherit;vertical-align:middle}.clear:after{content:"";display:table;clear:both}.wapk-feed-docs .postbox{width:355px;margin-right:20px;display:inline-block;vertical-align:top}.wapk-feed-docs .postbox .hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4;cursor:pointer}.wapk-feed-docs .postbox .dashicons{color:#ccc}.wapk-feed-docs .postbox a{text-decoration:none}.wapk-feed-docs .postbox .inside{margin-bottom:0}.wapk-feed-docs .postbox ul{margin-bottom:0}.wapk-feed-docs .postbox .toggle-indicator:before{content:"\F142";display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.wapk-feed-docs .postbox li{width:100%;display:block;float:left}.wapk-feed-docs .postbox li span{display:inline-block;float:left;margin-right:4px}.wapk-feed-docs .postbox li a{display:inline-block;float:left;width:calc(100% - 24px)}.wapk-feed-docs .postbox.closed .toggle-indicator:before{content:"\F140"}.wapk-section #post-body.columns-2 #side-sortables{min-height:196px}#poststuff #feed_merchant_info .inside{margin:0;padding:0}#feed_merchant_info ul.data{margin-left:24px;margin-top:5px}#feed_merchant_info ul.data li{margin-bottom:5px}.merchant-info-section{padding:6px 10px 8px}.merchant-info-section.woo-feed-open-file{text-align:center}.merchant-info-section.woo-feed-open-file a{line-height:1.5;text-decoration:none}.generateFeed .wf-tab-content table:first-child{border:none;box-shadow:none}.generateFeed table th{font-weight:700}@media only screen and (max-width:850px){.wapk-feed-docs .postbox{display:block;width:auto;float:none;margin-right:auto}}.wp-submenu li span.woo-feed-docs{font-weight:700;color:#f18500}.wp-submenu li:hover span.woo-feed-docs{color:#ce7304}.wp-submenu li.current span.woo-feed-docs{color:#ce7304}.wapk-admin .wapk-feed-docs .postbox .hndle{cursor:default}.wapk-cta{position:relative;display:-ms-flexbox;display:flex;width:100%;padding:100px 15px;background:linear-gradient(45deg,#6cd5ff 33%,#c2efef 100%);-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.wapk-cta-icon .dashicons{font-size:100px;width:100px;height:auto;margin:0 10px -8px 0;color:#02658c}.wapk-cta-content{width:50%}.wapk-cta-content h2{font-size:2em;margin:.5em 0}.wapk-cta-action a.wapk-button{font-size:24px;height:auto!important;padding:10px 20px}@media (max-width:600px){.wapk-cta{display:block;text-align:center;padding:4em 0}.wapk-cta-content{width:100%;margin:2em 0}}.wapk-button{color:#00d4d4;border-color:#00d4d4;display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wapk-button>svg{width:15px;margin-left:5px;fill:#00d4d4}.wapk-button>.dashicons{color:#00d4d4}.wapk-button:hover{border-color:#0bb;color:#0bb}.wapk-button:hover>svg{fill:#0bb}.wapk-button:hover>.dashicons{color:#0bb}.wapk-button:focus{border-color:#00d4d4;color:#0bb;box-shadow:0 0 0 1px #00d4d4}.wapk-button:focus>svg{fill:#0bb}.wapk-button:focus>.dashicons{color:#0bb}.wapk-button:active{background:#0bb;border-color:#0bb}.wapk-button-secondary{color:#00d4d4;border-color:#00d4d4;display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wapk-button-secondary>svg{width:15px;margin-left:5px;fill:#00d4d4}.wapk-button-secondary>.dashicons{color:#00d4d4}.wapk-button-secondary:hover{border-color:#0bb;color:#0bb}.wapk-button-secondary:hover>svg{fill:#0bb}.wapk-button-secondary:hover>.dashicons{color:#0bb}.wapk-button-secondary:focus{border-color:#00d4d4;color:#0bb;box-shadow:0 0 0 1px #00d4d4}.wapk-button-secondary:focus>svg{fill:#0bb}.wapk-button-secondary:focus>.dashicons{color:#0bb}.wapk-button-primary{display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box;background:#00d4d4;border-color:#00d4d4;color:#fff;box-shadow:0 1px 0 #0bb;text-shadow:0 -1px 1px #0bb,1px 0 1px #0bb,0 1px 1px #0bb,-1px 0 1px #0bb}.wapk-button-primary>svg{fill:#fff}.wapk-button-primary:hover{background:#00e3e3;border-color:#00c5c5;color:#fff}.wapk-button-primary:hover>svg{fill:#fff}.wapk-button-primary:focus{background:#00e3e3;border-color:#00c5c5;color:#fff;box-shadow:0 0 0 1px #fff,0 0 0 3px #00d4d4}.wapk-button-primary:focus>svg{fill:#fff}.wapk-button-primary:active{background:#0bb;border-color:#0bb;color:#fff}.wapk-button-primary:active>svg{fill:#fff}.wapk-button-primary:disabled{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary:disabled>svg{fill:#c7d1d1!important}.wapk-button.hover{border-color:#0bb;color:#0bb}.wapk-button.hover>svg{fill:#0bb}.wapk-button.hover>.dashicons{color:#0bb}.wapk-button.focus{border-color:#00d4d4;color:#0bb;box-shadow:0 0 0 1px #00d4d4}.wapk-button.focus>svg{fill:#0bb}.wapk-button.focus>.dashicons{color:#0bb}.wapk-button.active{border-color:#0bb;color:#0bb;box-shadow:inset 0 2px 5px -3px #0bb}.wapk-button.active:focus{border-color:#0bb;color:#0bb;box-shadow:inset 0 2px 5px -3px #0bb}.wapk-button.active:focus>svg{fill:#0bb}.wapk-button.active:focus>.dashicons{color:#0bb}.wapk-button.active:hover{border-color:#0bb;color:#0bb;box-shadow:inset 0 2px 5px -3px #0bb}.wapk-button.active:hover>svg{fill:#0bb}.wapk-button.active:hover>.dashicons{color:#0bb}.wapk-button.active>svg{fill:#0bb}.wapk-button.active>.dashicons{color:#0bb}.wapk-button-primary.active{background:#00d4d4;color:#fff;border-color:#088;box-shadow:inset 0 2px 5px -3px #000}.wapk-button-primary.active:focus{background:#00d4d4;color:#fff;border-color:#088;box-shadow:inset 0 2px 5px -3px #000}.wapk-button-primary.active:focus>svg{fill:#fff}.wapk-button-primary.active:hover{background:#00d4d4;color:#fff;border-color:#088;box-shadow:inset 0 2px 5px -3px #000}.wapk-button-primary.active:hover>svg{fill:#fff}.wapk-button-primary.active>svg{fill:#fff}.wapk-button-primary[disabled]{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary[disabled]>svg{fill:#c7d1d1!important}.wapk-button-primary.wapk-button-primary-disabled{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary.wapk-button-primary-disabled>svg{fill:#c7d1d1!important}.wapk-button-primary.disabled{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary.disabled>svg{fill:#c7d1d1!important}.wapk-button-primary.wapk-button-hero{box-shadow:0 2px 0 #0bb}.wapk-button-primary.wapk-button-hero:focus{box-shadow:0 2px 0 #0bb,0 1px 0 #00c5c5,0 0 2px 1px #0ee}.wapk-button-primary.wapk-button-hero:active{box-shadow:inset 0 3px 0 #00a1a1}.wapk-button-primary.wapk-button-hero.active{box-shadow:inset 0 3px 0 #00a1a1}.wapk-button-primary.wapk-button-hero.active:focus,.wapk-button-primary.wapk-button-hero.active:hover{box-shadow:inset 0 3px 0 #00a1a1}.wapk-button-group>.wapk-button.active{border-color:#00d4d4}.wapk-button.wapk-button-xl{height:30px;line-height:28px;padding:0 12px 2px}.wapk-button-group.wapk-button-xl .wapk-button{height:30px;line-height:28px;padding:0 12px 2px}.wapk-button.wapk-button-hero{font-size:18px;height:50px;line-height:48px;padding:0 36px;min-height:46px}.wapk-button-group.wapk-button-hero .wapk-button{font-size:18px;height:50px;line-height:48px;padding:0 36px;min-height:46px}@media screen and (min-width:782px){th#provider,th#status{width:80px}th#type{width:50px}th#option_name{width:100px}td.option_name.column-option_name>span:first-child{display:none}th#last_updated{width:90px}th#view{width:111px}}@media screen and (min-width:960px){th#provider,th#status{width:100px}th#type{width:80px}th#option_name{width:150px}th#last_updated{width:140px}}@media screen and (max-width:782px){table.wf-info-table{margin-top:10px}table.wf-info-table th:first-child img{margin:0 auto;display:block}.wapk-button.wapk-button-xl{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}}.wapk-feed-docs .wapk-feed-cta{margin:0}.campaign_configurator{background:#fff;padding:20px 0}.campaign_configurator table{margin:0 auto;width:51%;min-width:574px;border:none;box-shadow:none}.campaign_configurator th{min-width:120px}@media screen and (max-width:782px){.campaign_configurator{padding:0}.campaign_configurator table{width:auto;min-width:auto;max-width:100%}.campaign_configurator th{min-width:auto}}#wf-tab-content-config td>input:not([type=checkbox]):not([type=radio]),#wf-tab-content-config td>select,#wf-tab-content-config td>textarea{width:100%!important}.woo-feed-filters td>div:nth-child(2n):not(.clear):not(.selectize){width:120px;display:block}.woo-feed-filters td>div:not(.clear){float:left;margin-right:10px}.woo-feed-filters tr>td:first-child{width:290px;padding-left:40px}.woo-feed-filters,.woo-feed-ftp{margin:15px auto 25px}.wf_clean_cache_wrapper{display:-ms-flexbox;display:flex;margin-left:auto}@-webkit-keyframes LoaderClockWise{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes LoaderClockWise{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.woo-feed-cache-loader{width:18px;margin-right:5px;animation:LoaderClockWise 1s linear infinite;-webkit-animation:LoaderClockWise 1s linear infinite;display:none}.woo-feed-table-heading .woo-feed-table-heading-title{float:left;margin-right:auto;display:inline-block;line-height:30px}.woo-feed-table-heading .wf_clean_cache_wrapper{float:right;font-weight:400}.wf_clean_cache_wrapper button{background:linear-gradient(125deg,#eb4d4b 0,#ff9671 130%);color:#fff;border:none;font-weight:500;display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;border-radius:3px;cursor:pointer;outline:0}.wf_clean_cache_wrapper button:hover{background:#ff7979;color:#fff}input[type=submit][data-id=wf_action_submit]{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%);color:#fff;border:1px;padding:0 20px}input[type=submit][data-id=wf_action_submit]:hover{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%);color:#fff}.woo-import-popup-body #TB_window{width:500px!important}.woo-import-popup-body #TB_window #TB_title{border:none;background:#fff;text-align:center;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;height:35px!important}.woo-import-popup-body #TB_window #TB_title #TB_ajaxWindowTitle{color:#30336b;font-weight:700}.woo-import-popup-body #TB_window #TB_closeWindowButton{top:-14.5px;right:-14.5px;border:none;outline:0}.woo-import-popup-body #TB_window #TB_closeWindowButton .tb-close-icon{background:#ff5e55;color:#fff;border-radius:50%}.woo-import-popup-body #TB_window #TB_closeWindowButton:focus{outline:0;border:0}.woo-import-popup-body #TB_window #TB_ajaxContent{position:relative;width:100%!important;height:auto!important;border:none;box-sizing:border-box;overflow:hidden;background:#f7fcff;padding:30px 20px}.woo-import-popup-body #TB_window #TB_ajaxContent:before{content:'';width:115%;display:block;background:#4bcffa;position:absolute;height:130%;z-index:0;left:-36%;top:-85px;-webkit-transform:rotate(115deg);transform:rotate(115deg)}.woo-import-popup-body #TB_window #TB_ajaxContent table{border:none;position:relative;z-index:1;border-radius:3px;text-align:center;padding:20px;box-shadow:0 12px 20px -17px #000}.woo-import-popup-body #TB_window #TB_ajaxContent table input{width:60%}.woo-import-popup-body #TB_window #TB_ajaxContent table input:focus{outline:2px solid #68b8f7}.woo-import-popup-body #TB_window #TB_ajaxContent table input[type=file]{padding:3px 0;cursor:pointer}.woo-import-popup-body #TB_window #TB_ajaxContent table input[type=text]{border-radius:25px;font-size:14px;padding:1px 20px;text-align:center}.woo-import-popup-body #TB_window #TB_ajaxContent table input[type=submit]{background:#17c0eb;border-radius:25px;border:0;box-shadow:1px 4px 7px -3px #45364a;font-weight:600;transition:.3s ease}.woo-import-popup-body #TB_window #TB_ajaxContent table input[type=submit]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px)}.woo-feed-notice .woo-feed-review-notice-logo{width:60px;height:75px;float:left;margin-right:5px;background:url(../images/woo-feed-icon.svg) no-repeat}.woo-feed-status-table-wrapper .woo-feed-status-table{width:100%;max-width:900px;border-collapse:collapse;border-spacing:.5rem;box-shadow:0 0 20px rgba(0,0,0,.1)}.woo-feed-status-table-wrapper .woo-feed-status-table tr:nth-child(even){background:#f1f1f1}.woo-feed-status-table-wrapper .woo-feed-status-table tr:nth-child(odd){background:#fafafc}.woo-feed-status-table-wrapper .woo-feed-status-table tr th{background:#353b48;color:#fff}.woo-feed-status-table-wrapper .woo-feed-status-table tr td,.woo-feed-status-table-wrapper .woo-feed-status-table tr th{padding:.5rem 20px;text-align:left}#taxonomy-woo-feed-brand #newwoo-feed-brand_parent,.taxonomy-woo-feed-brand .form-field.term-parent-wrap{display:none}
1
+ .wpf_spin{-webkit-animation:spin 1s infinite linear;animation:spin 1s infinite linear}.wpf_spin.reverse_spin{animation-direction:reverse}.wpf_regenerate.disabled{color:#737373;box-shadow:none;cursor:not-allowed}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.wfbtn{background:#3498db;background-image:linear-gradient(125deg,#3cb0fd 0,#152f8c 140%);border-radius:17px;box-shadow:inset 0 1px 3px #666;font-family:Arial,sans-serif;color:#fff;font-size:20px;padding:10px 20px 10px 20px;border:solid #2b698f 0;text-decoration:none}.wfbtn:hover{background:#3cb0fd;background-image:linear-gradient(to bottom,#3cb0fd,#3498db);text-decoration:none}.woo_feed_manage_list_table .wf_update_interval_btn{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%);border:none}.woo_feed_manage_list_table .wf_update_interval_btn:hover{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%)}.woo-feed-promotion{position:relative;display:none}.woo-feed-promotion .woo-feed-campaign-close-button{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);right:15px;width:24px;height:24px;border-radius:12px;background:#595d6b;line-height:24px;color:#fff;cursor:pointer;transition:.3s ease}.woo-feed-promotion .woo-feed-campaign-close-button:hover{background:#fff;color:#d61e48}.wftooltip{display:none;position:absolute;border:1px solid #333;background-color:#161616;border-radius:5px;padding:10px;color:#fff;font-size:12px}.feed-actions .makeFeedResponse{width:70%;color:green}.woo-feed-mapping-input{width:100%}.requiredIn{color:red}.generalInput{width:200px}.generalInput:not(.selectize-control){margin:5px auto}.error{color:red}.widefat td input,.widefat td select{max-width:100%}#wf_newRow{margin-left:0}.mtable tbody tr{height:25px;border:1px solid #ccc;text-align:left;-ms-flex-align:baseline;align-items:baseline;font-weight:700}.mtable th:nth-child(1){width:17px}.mtable th:nth-child(2){width:160px}.mtable th:nth-child(3){width:100px}.mtable th:nth-child(4){width:100px}.mtable th:nth-child(5){width:150px}.mtable th:nth-child(6){width:100px}.mtable th:nth-child(7){width:150px}.mtable th:nth-child(8){width:90px}.mtable th:nth-child(9){width:29px}.mtable2 tbody tr{height:25px;border:1px solid #ccc;text-align:left;-ms-flex-align:baseline;align-items:baseline;font-weight:700}.mtable2 th:nth-child(1){width:30px}.mtable2 th:nth-child(2){width:150px}.mtable2 th:nth-child(3){width:230px}.mtable2 th:nth-child(4){width:220px}.mtable2 th:nth-child(7){width:50px}.mtable2 th:nth-child(8){width:50px}.mtable2 th:nth-child(9){width:29px}.wp-admin select.wf_mattributes{width:150px;left:0;height:25px}div#wf-tab-content1 select:not([name^=output_type]){width:100%}div#wf-tab-content1 input{width:100%}div#wf-tab-content1 .dashicons{vertical-align:middle}.wf_attributes{width:150px;left:0}.wf_compare{max-width:245px;left:0}.wf_ps{width:100px;left:0}.wf_sortedtable{cursor:move}.sorted_table{position:relative}.sorted_table .dragged{position:absolute;opacity:.8;z-index:9999;background:#fff;width:100%;display:table}.sorted_table tbody tr.placeholder td{border:1px dashed #2cc185;height:46px}.wfnoempty{width:120px}p{color:#222}.wf_tabs{position:relative;margin:0 auto;width:100%;list-style:none}.wf_tabs:after{display:table;clear:both;content:""}.wf_tabs li{float:left;width:20%;display:block;border:2px solid #ccc}.wf_tabs li>input[type=radio][name=wf_tabs]{position:absolute;top:auto;left:-9999px}.wf-tab-name{display:block;padding:15px;font-size:15px;font-weight:700;line-height:1;background:#fff;cursor:pointer;position:relative;text-align:center;text-transform:uppercase;color:#2cc185}.wf-tab-name:hover{background:#2cc185;color:#fff}.wf_tabs [id^=tab]:checked+label{background:#2cc185;color:#fff}.wf_tabs .wf-tab-content{z-index:2;display:none;width:100%;font-size:.9rem;position:absolute;left:0;background:#fff;border:2px solid #ccc}.wf_tabs [id^=tab]:checked~[id^=wf-tab-content]{display:block}[id^=wf-tab-content]{margin-bottom:40px}div#wf-tab-content2 table:first-child{padding:10px 0}div#wf-tab-content2 table:first-child td:nth-child(1){width:260px}div#wf-tab-content2 table:first-child td:nth-child(2){width:260px}table.feed-actions tr td:last-child{text-align:right}select.selectize{display:none}body.no-js select.selectize{display:block!important}.wp-list-table .option_name .wf_feed_option_name_link{font-weight:700;color:#30336b}.wp-list-table #option_name a{color:#32373c}.selectize-dropdown .active{background-color:#edf9ff}.selectize-dropdown .create{padding:5px 8px}.wapk-selectize-item{background:#0073aa!important;color:#f1f1f1!important;font-weight:700!important;border-color:#0073aa!important;padding-left:5px;padding-right:5px}.selectize-input.full #googleTaxonomyId-selectized{opacity:0;position:absolute;left:-10000px}.selectize-dropdown [data-selectable].option{cursor:default}.selectize-control.plugin-remove_button [data-value] .remove{border-left:1px solid #f1f1f1!important}.selectize-dropdown .optgroup-header{font-weight:700;background:#efefef;color:#5a5a5a}.selectize-dropdown [data-selectable].option{cursor:pointer}.wf_status_wrap label{width:55px;height:28px;box-sizing:border-box;float:left;border-radius:100px;position:relative;cursor:pointer;transition:.3s ease;background:linear-gradient(125deg,#e2e2e2 0,#ccc 140%)}input[class=woo_feed_status_input]:checked+label{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%)}input[class=woo_feed_status_input]:checked+label:before{left:29px}.wf_status_wrap label:before{transition:.3s ease;content:'';width:20px;height:20px;position:absolute;background:#fff;left:6px;top:4px;box-sizing:border-box;color:#000;border-radius:100px;box-shadow:0 1.5px 2px 0 #000}.view span.dashicons.dashicons-external{color:#22a6b3}.view span.dashicons.dashicons-sos{color:#22a6b3}.view span.dashicons.dashicons-download{color:#ee5253}.view span.dashicons.dashicons-media-code{color:#576574}.column-url,.widefat td.column-url,.widefat th.column-url{color:#1e8f9a;font-weight:700}.feed-progress-container{width:100%;color:#fff;text-align:center;font-weight:300}.feed-progress-bar{width:100%;background:#eee;padding:3px;border-radius:50px;box-shadow:inset 0 1px 3px rgba(0,0,0,.2)}.feed-progress-bar-fill{height:20px;display:block;background:linear-gradient(to right top,#10ac84,#13b389,#15ba8f,#18c194,#1ac89a,#13cba1,#0acfa9,#00d2b0,#00d2ba,#00d2c3,#00d2cb,#00d2d3);width:0;border-radius:50px;transition:width .8s ease}.feed-progress-status{float:left;font-weight:700;color:#00008b}.feed-progress-percentage{text-align:right;font-weight:bolder;color:#1dd1a1;font-family:'Arial Black',sans-serif;font-size:large}#wpbody-content.woofeed-body-content{overflow:visible!important}.clippy{position:relative;width:13px;margin-top:-3px;margin-left:3px;top:3px}.column-url .clippy{display:none}.column-url:hover .clippy{display:inline-block}.tooltipped{position:relative}.tooltipped:after{position:absolute;z-index:1000000;display:none;padding:5px 8px;font:normal normal 11px/1.5 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";color:#fff;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:rgba(0,0,0,.8);border-radius:3px;-webkit-font-smoothing:subpixel-antialiased}.tooltipped:before{position:absolute;z-index:1000001;display:none;width:0;height:0;color:rgba(0,0,0,.8);pointer-events:none;content:"";border:5px solid transparent}.tooltipped:hover:before{display:inline-block;text-decoration:none}.tooltipped:hover:after{display:inline-block;text-decoration:none}.tooltipped:active:before{display:inline-block;text-decoration:none}.tooltipped:active:after{display:inline-block;text-decoration:none}.tooltipped:focus:before{display:inline-block;text-decoration:none}.tooltipped:focus:after{display:inline-block;text-decoration:none}.tooltipped-multiline:hover:after{display:table-cell}.tooltipped-multiline:active:after{display:table-cell}.tooltipped-multiline:focus:after{display:table-cell}.tooltipped-multiline:after{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;word-break:break-word;word-wrap:normal;white-space:pre-line;border-collapse:separate}.tooltipped-s:after{top:100%;right:50%;margin-top:5px;-webkit-transform:translateX(50%);transform:translateX(50%)}.tooltipped-s:before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.tooltipped-se:after{top:100%;margin-top:5px;right:auto;left:50%;margin-left:-15px}.tooltipped-se:before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.tooltipped-sw:after{top:100%;right:50%;margin-top:5px;margin-right:-15px}.tooltipped-sw:before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.tooltipped-n:after{right:50%;bottom:100%;margin-bottom:5px;-webkit-transform:translateX(50%);transform:translateX(50%)}.tooltipped-n:before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.tooltipped-ne:after{bottom:100%;margin-bottom:5px;right:auto;left:50%;margin-left:-15px}.tooltipped-ne:before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.tooltipped-nw:after{right:50%;bottom:100%;margin-bottom:5px;margin-right:-15px}.tooltipped-nw:before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.tooltipped-w:after{right:100%;bottom:50%;margin-right:5px;-webkit-transform:translateY(50%);transform:translateY(50%)}.tooltipped-w:before{top:50%;bottom:50%;left:-5px;margin-top:-5px;border-left-color:rgba(0,0,0,.8)}.tooltipped-e:after{bottom:50%;left:100%;margin-left:5px;-webkit-transform:translateY(50%);transform:translateY(50%)}.tooltipped-e:before{top:50%;right:-5px;bottom:50%;margin-top:-5px;border-right-color:rgba(0,0,0,.8)}.tooltipped-multiline.tooltipped-s:after{right:auto;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltipped-multiline.tooltipped-n:after{right:auto;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltipped-multiline.tooltipped-w:after{right:100%}.tooltipped-multiline.tooltipped-e:after{right:100%}.tooltipped-sticky:before{display:inline-block}.tooltipped-sticky:after{display:inline-block}.tooltipped-sticky.tooltipped-multiline:after{display:table-cell}.fullscreen-overlay-enabled.dark-theme .tooltipped:after{color:#000;background:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-s:before{border-bottom-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-se:before{border-bottom-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-sw:before{border-bottom-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-n:before{border-top-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-ne:before{border-top-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-nw:before{border-top-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-e:before{border-right-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-w:before{border-left-color:rgba(255,255,255,.8)}@media screen and (min-width:0\0){.tooltipped-multiline:after{width:250px}}ul.tracker_collection_list{list-style:initial;padding:initial;margin:-10px 0 0 30px;font-size:11px!important}ul.tracker_collection_list li{margin:0}table.wf-info-table,table.wf-rate-table{vertical-align:middle;text-align:center;max-width:100%;font-weight:500}table.wf-info-table th,table.wf-rate-table th{text-align:center}table.wf-info-table th .woo-feed-top-header,table.wf-rate-table th .woo-feed-top-header{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}table.wf-info-table th .woo-feed-top-header .get-woo-feed-pro,table.wf-rate-table th .woo-feed-top-header .get-woo-feed-pro{margin-left:20px}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons{float:right;display:-ms-flexbox;display:flex;border-radius:7px;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a{padding:8px 20px;background:#576574;color:#fff;box-sizing:border-box;display:inline-block;transition:.3s ease}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-doc-link,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-doc-link{background:#576574;border-top-left-radius:5px;border-bottom-left-radius:5px}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-video-link,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-video-link{background:#ee5253}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-support-link,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a.woo-feed-support-link{background:#22a6b3;border-top-right-radius:5px;border-bottom-right-radius:5px}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a span.dashicons,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a span.dashicons{font-size:18px;line-height:1.2}table.wf-info-table th .woo-feed-top-header .woo-feed-top-buttons a:hover,table.wf-rate-table th .woo-feed-top-header .woo-feed-top-buttons a:hover{background:#30336b;box-shadow:0 0 33px 0 rgba(0,0,0,.12)}table.wf-info-table strong,table.wf-rate-table strong{font-weight:700}table.wf-info-table th:first-child img{margin:0 0 -5px 5px}table.wf-rate-table a{color:#0073aa}table.wf-rate-table a.review-star:after{content:"\f155\f155\f155\f155\f155"!important;font-family:dashicons;font-size:10px;font-weight:100;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#0073aa;text-decoration:underline}#adminmenu #toplevel_page_webappick-manage-feeds div.wp-menu-image::before{content:"";background:url(../images/woo-feed-icon.svg) no-repeat center center;background-size:20px 20px;opacity:.6}#adminmenu #toplevel_page_webappick-manage-feeds:hover div.wp-menu-image::before{opacity:1}#adminmenu #toplevel_page_webappick-manage-feeds.wp-has-current-submenu div.wp-menu-image::before{opacity:1}.wapk-admin,.wapk-admin *{box-sizing:border-box}.wapk-admin{position:relative;display:block;-webkit-hyphens:manual;-ms-hyphens:manual;-moz-hyphens:manual;hyphens:manual;color:#1b2730;margin:0 0 0 -10px}@media screen and (min-width:783px){.wapk-admin{margin:0 0 0 -20px}}.text-center{text-align:center}.wapk-admin h1,.wapk-admin h2,.wapk-admin h3,.wapk-admin h4,.wapk-admin h5,.wapk-admin h6,.wapk-admin p{color:#1b2730}.wapk-admin sup{vertical-align:baseline;position:relative;top:-6px}.wapk-admin sub{vertical-align:baseline;position:relative;top:4px}.wapk-admin .wapk-section{margin:10px 20px 0 22px;position:relative;display:block}.wapk-admin .wapk-section [class$=icon32]+h2{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px 0;line-height:1.3}.wapk-admin .wapk-section h1{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px 0;line-height:1.3}.wapk-admin .wapk-section>h2:first-child{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px 0;line-height:1.3}.wapk-admin>.notice{margin:10px 20px 0 22px;position:relative;display:block}.wapk-admin span.help{display:block;float:left;width:100%;font-size:.9em;color:#636363;margin-top:5px;font-weight:500}.wapk-admin span.help .dashicons{width:11px;height:12px;font-size:inherit;vertical-align:middle}.clear:after{content:"";display:table;clear:both}.wapk-feed-docs .postbox{width:355px;margin-right:20px;display:inline-block;vertical-align:top}.wapk-feed-docs .postbox .hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4;cursor:pointer}.wapk-feed-docs .postbox .dashicons{color:#ccc}.wapk-feed-docs .postbox a{text-decoration:none}.wapk-feed-docs .postbox .inside{margin-bottom:0}.wapk-feed-docs .postbox ul{margin-bottom:0}.wapk-feed-docs .postbox .toggle-indicator:before{content:"\F142";display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.wapk-feed-docs .postbox li{width:100%;display:block;float:left}.wapk-feed-docs .postbox li span{display:inline-block;float:left;margin-right:4px}.wapk-feed-docs .postbox li a{display:inline-block;float:left;width:calc(100% - 24px)}.wapk-feed-docs .postbox.closed .toggle-indicator:before{content:"\F140"}.wapk-section #post-body.columns-2 #side-sortables{min-height:196px}#poststuff #feed_merchant_info .inside{margin:0;padding:0}#feed_merchant_info ul.data{margin-left:24px;margin-top:5px}#feed_merchant_info ul.data li{margin-bottom:5px}.merchant-info-section{padding:6px 10px 8px}.merchant-info-section.woo-feed-open-file{text-align:center}.merchant-info-section.woo-feed-open-file a{line-height:1.5;text-decoration:none}.generateFeed .wf-tab-content table:first-child{border:none;box-shadow:none}.generateFeed table th{font-weight:700}@media only screen and (max-width:850px){.wapk-feed-docs .postbox{display:block;width:auto;float:none;margin-right:auto}}.wp-submenu li span.woo-feed-docs{font-weight:700;color:#f18500}.wp-submenu li:hover span.woo-feed-docs{color:#ce7304}.wp-submenu li.current span.woo-feed-docs{color:#ce7304}.wapk-admin .wapk-feed-docs .postbox .hndle{cursor:default}.wapk-cta{position:relative;display:-ms-flexbox;display:flex;width:100%;padding:100px 15px;background:linear-gradient(45deg,#6cd5ff 33%,#c2efef 100%);-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.wapk-cta-icon .dashicons{font-size:100px;width:100px;height:auto;margin:0 10px -8px 0;color:#02658c}.wapk-cta-content{width:50%}.wapk-cta-content h2{font-size:2em;margin:.5em 0}.wapk-cta-action a.wapk-button{font-size:24px;height:auto!important;padding:10px 20px}@media (max-width:600px){.wapk-cta{display:block;text-align:center;padding:4em 0}.wapk-cta-content{width:100%;margin:2em 0}}.wapk-button{color:#00d4d4;border-color:#00d4d4;display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wapk-button>svg{width:15px;margin-left:5px;fill:#00d4d4}.wapk-button>.dashicons{color:#00d4d4}.wapk-button:hover{border-color:#0bb;color:#0bb}.wapk-button:hover>svg{fill:#0bb}.wapk-button:hover>.dashicons{color:#0bb}.wapk-button:focus{border-color:#00d4d4;color:#0bb;box-shadow:0 0 0 1px #00d4d4}.wapk-button:focus>svg{fill:#0bb}.wapk-button:focus>.dashicons{color:#0bb}.wapk-button:active{background:#0bb;border-color:#0bb}.wapk-button-secondary{color:#00d4d4;border-color:#00d4d4;display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wapk-button-secondary>svg{width:15px;margin-left:5px;fill:#00d4d4}.wapk-button-secondary>.dashicons{color:#00d4d4}.wapk-button-secondary:hover{border-color:#0bb;color:#0bb}.wapk-button-secondary:hover>svg{fill:#0bb}.wapk-button-secondary:hover>.dashicons{color:#0bb}.wapk-button-secondary:focus{border-color:#00d4d4;color:#0bb;box-shadow:0 0 0 1px #00d4d4}.wapk-button-secondary:focus>svg{fill:#0bb}.wapk-button-secondary:focus>.dashicons{color:#0bb}.wapk-button-primary{display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box;background:#00d4d4;border-color:#00d4d4;color:#fff;box-shadow:0 1px 0 #0bb;text-shadow:0 -1px 1px #0bb,1px 0 1px #0bb,0 1px 1px #0bb,-1px 0 1px #0bb}.wapk-button-primary>svg{fill:#fff}.wapk-button-primary:hover{background:#00e3e3;border-color:#00c5c5;color:#fff}.wapk-button-primary:hover>svg{fill:#fff}.wapk-button-primary:focus{background:#00e3e3;border-color:#00c5c5;color:#fff;box-shadow:0 0 0 1px #fff,0 0 0 3px #00d4d4}.wapk-button-primary:focus>svg{fill:#fff}.wapk-button-primary:active{background:#0bb;border-color:#0bb;color:#fff}.wapk-button-primary:active>svg{fill:#fff}.wapk-button-primary:disabled{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary:disabled>svg{fill:#c7d1d1!important}.wapk-button.hover{border-color:#0bb;color:#0bb}.wapk-button.hover>svg{fill:#0bb}.wapk-button.hover>.dashicons{color:#0bb}.wapk-button.focus{border-color:#00d4d4;color:#0bb;box-shadow:0 0 0 1px #00d4d4}.wapk-button.focus>svg{fill:#0bb}.wapk-button.focus>.dashicons{color:#0bb}.wapk-button.active{border-color:#0bb;color:#0bb;box-shadow:inset 0 2px 5px -3px #0bb}.wapk-button.active:focus{border-color:#0bb;color:#0bb;box-shadow:inset 0 2px 5px -3px #0bb}.wapk-button.active:focus>svg{fill:#0bb}.wapk-button.active:focus>.dashicons{color:#0bb}.wapk-button.active:hover{border-color:#0bb;color:#0bb;box-shadow:inset 0 2px 5px -3px #0bb}.wapk-button.active:hover>svg{fill:#0bb}.wapk-button.active:hover>.dashicons{color:#0bb}.wapk-button.active>svg{fill:#0bb}.wapk-button.active>.dashicons{color:#0bb}.wapk-button-primary.active{background:#00d4d4;color:#fff;border-color:#088;box-shadow:inset 0 2px 5px -3px #000}.wapk-button-primary.active:focus{background:#00d4d4;color:#fff;border-color:#088;box-shadow:inset 0 2px 5px -3px #000}.wapk-button-primary.active:focus>svg{fill:#fff}.wapk-button-primary.active:hover{background:#00d4d4;color:#fff;border-color:#088;box-shadow:inset 0 2px 5px -3px #000}.wapk-button-primary.active:hover>svg{fill:#fff}.wapk-button-primary.active>svg{fill:#fff}.wapk-button-primary[disabled]{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary[disabled]>svg{fill:#c7d1d1!important}.wapk-button-primary.wapk-button-primary-disabled{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary.wapk-button-primary-disabled>svg{fill:#c7d1d1!important}.wapk-button-primary.disabled{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary.disabled>svg{fill:#c7d1d1!important}.wapk-button-primary.wapk-button-hero{box-shadow:0 2px 0 #0bb}.wapk-button-primary.wapk-button-hero:focus{box-shadow:0 2px 0 #0bb,0 1px 0 #00c5c5,0 0 2px 1px #0ee}.wapk-button-primary.wapk-button-hero:active{box-shadow:inset 0 3px 0 #00a1a1}.wapk-button-primary.wapk-button-hero.active{box-shadow:inset 0 3px 0 #00a1a1}.wapk-button-primary.wapk-button-hero.active:focus,.wapk-button-primary.wapk-button-hero.active:hover{box-shadow:inset 0 3px 0 #00a1a1}.wapk-button-group>.wapk-button.active{border-color:#00d4d4}.wapk-button.wapk-button-xl{height:30px;line-height:28px;padding:0 12px 2px}.wapk-button-group.wapk-button-xl .wapk-button{height:30px;line-height:28px;padding:0 12px 2px}.wapk-button.wapk-button-hero{font-size:18px;height:50px;line-height:48px;padding:0 36px;min-height:46px}.wapk-button-group.wapk-button-hero .wapk-button{font-size:18px;height:50px;line-height:48px;padding:0 36px;min-height:46px}@media screen and (min-width:782px){th#provider,th#status{width:80px}th#type{width:50px}th#option_name{width:100px}td.option_name.column-option_name>span:first-child{display:none}th#last_updated{width:90px}th#view{width:111px}}@media screen and (min-width:960px){th#provider,th#status{width:100px}th#type{width:80px}th#option_name{width:150px}th#last_updated{width:140px}}@media screen and (max-width:782px){table.wf-info-table{margin-top:10px}table.wf-info-table th:first-child img{margin:0 auto;display:block}.wapk-button.wapk-button-xl{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}}.wapk-feed-docs .wapk-feed-cta{margin:0}.campaign_configurator{background:#fff;padding:20px 0}.campaign_configurator table{margin:0 auto;width:51%;min-width:574px;border:none;box-shadow:none}.campaign_configurator th{min-width:120px}@media screen and (max-width:782px){.campaign_configurator{padding:0}.campaign_configurator table{width:auto;min-width:auto;max-width:100%}.campaign_configurator th{min-width:auto}}#wf-tab-content-config td>input:not([type=checkbox]):not([type=radio]),#wf-tab-content-config td>select,#wf-tab-content-config td>textarea{width:100%!important}.woo-feed-filters td>div:nth-child(2n):not(.clear):not(.selectize){width:120px;display:block}.woo-feed-filters td>div:not(.clear){float:left;margin-right:10px}.woo-feed-filters tr>td:first-child{width:290px;padding-left:40px}.woo-feed-filters,.woo-feed-ftp{margin:15px auto 25px}.wf_clean_cache_wrapper{display:-ms-flexbox;display:flex;margin-left:auto}@-webkit-keyframes LoaderClockWise{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes LoaderClockWise{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.woo-feed-cache-loader{width:18px;margin-right:5px;animation:LoaderClockWise 1s linear infinite;-webkit-animation:LoaderClockWise 1s linear infinite;display:none}.woo-feed-table-heading .woo-feed-table-heading-title{float:left;margin-right:auto;display:inline-block;line-height:30px}.woo-feed-table-heading .wf_clean_cache_wrapper{float:right;font-weight:400}.wf_clean_cache_wrapper button{background:linear-gradient(125deg,#eb4d4b 0,#ff9671 130%);color:#fff;border:none;font-weight:500;display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;border-radius:3px;cursor:pointer;outline:0}.wf_clean_cache_wrapper button:hover{background:#ff7979;color:#fff}input[type=submit][data-id=wf_action_submit]{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%);color:#fff;border:1px;padding:0 20px}input[type=submit][data-id=wf_action_submit]:hover{background:linear-gradient(125deg,#3cb0fd 0,#6c5ce7 140%);color:#fff}.woo-import-popup-body #TB_window{width:500px!important}.woo-import-popup-body #TB_window #TB_title{border:none;background:#fff;text-align:center;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;height:35px!important}.woo-import-popup-body #TB_window #TB_title #TB_ajaxWindowTitle{color:#30336b;font-weight:700}.woo-import-popup-body #TB_window #TB_closeWindowButton{top:-14.5px;right:-14.5px;border:none;outline:0}.woo-import-popup-body #TB_window #TB_closeWindowButton .tb-close-icon{background:#ff5e55;color:#fff;border-radius:50%}.woo-import-popup-body #TB_window #TB_closeWindowButton:focus{outline:0;border:0}.woo-import-popup-body #TB_window #TB_ajaxContent{position:relative;width:100%!important;height:auto!important;border:none;box-sizing:border-box;overflow:hidden;background:#f7fcff;padding:30px 20px}.woo-import-popup-body #TB_window #TB_ajaxContent:before{content:'';width:115%;display:block;background:#4bcffa;position:absolute;height:130%;z-index:0;left:-36%;top:-85px;-webkit-transform:rotate(115deg);transform:rotate(115deg)}.woo-import-popup-body #TB_window #TB_ajaxContent table{border:none;position:relative;z-index:1;border-radius:3px;text-align:center;padding:20px;box-shadow:0 12px 20px -17px #000}.woo-import-popup-body #TB_window #TB_ajaxContent table input{width:60%}.woo-import-popup-body #TB_window #TB_ajaxContent table input:focus{outline:2px solid #68b8f7}.woo-import-popup-body #TB_window #TB_ajaxContent table input[type=file]{padding:3px 0;cursor:pointer}.woo-import-popup-body #TB_window #TB_ajaxContent table input[type=text]{border-radius:25px;font-size:14px;padding:1px 20px;text-align:center}.woo-import-popup-body #TB_window #TB_ajaxContent table input[type=submit]{background:#17c0eb;border-radius:25px;border:0;box-shadow:1px 4px 7px -3px #45364a;font-weight:600;transition:.3s ease}.woo-import-popup-body #TB_window #TB_ajaxContent table input[type=submit]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px)}.woo-feed-notice .woo-feed-review-notice-logo{width:90px;height:90px;float:left;margin-right:5px;background:url(../images/woo-feed-logo.svg) no-repeat}.woo-feed-status-table-wrapper .woo-feed-status-table{width:100%;max-width:900px;border-collapse:collapse;border-spacing:.5rem;box-shadow:0 0 20px rgba(0,0,0,.1)}.woo-feed-status-table-wrapper .woo-feed-status-table tr:nth-child(even){background:#f1f1f1}.woo-feed-status-table-wrapper .woo-feed-status-table tr:nth-child(odd){background:#fafafc}.woo-feed-status-table-wrapper .woo-feed-status-table tr th{background:#353b48;color:#fff}.woo-feed-status-table-wrapper .woo-feed-status-table tr td,.woo-feed-status-table-wrapper .woo-feed-status-table tr th{padding:.5rem 20px;text-align:left}#taxonomy-woo-feed-brand #newwoo-feed-brand_parent,.taxonomy-woo-feed-brand .form-field.term-parent-wrap{display:none}
admin/css/woo-feed-admin.scss CHANGED
@@ -1973,15 +1973,14 @@ input {
1973
  /* Woo Feed Notice Style */
1974
  .woo-feed-notice {
1975
  .woo-feed-review-notice-logo {
1976
- width: 60px;
1977
- height: 75px;
1978
  float: left;
1979
  margin-right: 5px;
1980
- background: url("../images/woo-feed-icon.svg") no-repeat;
1981
  }
1982
  }
1983
 
1984
-
1985
  /* Status Page Style */
1986
  .woo-feed-status-table-wrapper {
1987
  .woo-feed-status-table {
1973
  /* Woo Feed Notice Style */
1974
  .woo-feed-notice {
1975
  .woo-feed-review-notice-logo {
1976
+ width: 90px;
1977
+ height: 90px;
1978
  float: left;
1979
  margin-right: 5px;
1980
+ background: url("../images/woo-feed-logo.svg") no-repeat;
1981
  }
1982
  }
1983
 
 
1984
  /* Status Page Style */
1985
  .woo-feed-status-table-wrapper {
1986
  .woo-feed-status-table {
admin/images/woo-feed-logo.svg ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 23.0.3, 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 128 128" style="enable-background:new 0 0 128 128;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#FFFFFF;}
7
+ .st1{fill:#464D56;}
8
+ .st2{fill:#59C1E8;}
9
+ </style>
10
+ <rect x="-0.1" class="st0" width="128" height="128"/>
11
+ <g>
12
+ <g>
13
+ <g>
14
+ <path class="st1" d="M20.5,115.2c-2.8,0-4.9-0.8-6.3-2.3c-1.5-1.5-2.2-3.7-2.2-6.6c0-1.4,0.2-2.7,0.7-3.8c0.4-1.1,1-2,1.8-2.8
15
+ s1.7-1.3,2.8-1.7c1.1-0.4,2.2-0.6,3.5-0.6c0.7,0,1.4,0.1,2,0.2s1.1,0.2,1.6,0.4c0.4,0.1,0.8,0.3,1.1,0.4c0.3,0.1,0.5,0.3,0.6,0.3
16
+ l-1.1,3.1c-0.5-0.3-1.1-0.5-1.8-0.7c-0.7-0.2-1.5-0.3-2.4-0.3c-0.6,0-1.2,0.1-1.7,0.3c-0.6,0.2-1.1,0.5-1.5,0.9s-0.8,1-1,1.7
17
+ c-0.3,0.7-0.4,1.5-0.4,2.5c0,0.8,0.1,1.5,0.3,2.2c0.2,0.7,0.5,1.3,0.8,1.8c0.4,0.5,0.9,0.9,1.5,1.2c0.6,0.3,1.4,0.4,2.3,0.4
18
+ c0.6,0,1.1,0,1.5-0.1s0.8-0.1,1.2-0.2c0.3-0.1,0.6-0.2,0.9-0.3c0.3-0.1,0.5-0.2,0.7-0.3l1.1,3.1c-0.5,0.3-1.3,0.6-2.3,0.9
19
+ C23,115.1,21.8,115.2,20.5,115.2z"/>
20
+ <path class="st1" d="M41.9,97.8v3.3h-5.1v13.8H33v-13.8h-5.1v-3.3H41.9z"/>
21
+ <path class="st1" d="M54.8,114.9c-0.5-1-1-1.9-1.6-2.9s-1.2-1.8-2-2.5c-0.2,0.3-0.5,0.6-0.9,1.1s-0.7,0.9-1.1,1.4
22
+ c-0.4,0.5-0.7,1-1,1.6c-0.3,0.5-0.5,1-0.7,1.3h-4.4c0.7-1.3,1.6-2.7,2.5-4.1c1-1.4,2.1-2.9,3.3-4.5l-5.6-8.4H48l3.3,4.9l3.3-4.9
23
+ H59l-5.5,8.2c1.5,1.8,2.6,3.5,3.6,5s1.7,2.8,2.2,3.8H54.8z"/>
24
+ <path class="st2" d="M61.6,114.9V97.8H73v3.2h-7.6v3.6h6.7v3.2h-6.7v7h-3.8V114.9z"/>
25
+ <path class="st2" d="M74.6,108.5c0-1.1,0.2-2.2,0.5-3c0.4-0.9,0.8-1.6,1.4-2.2s1.2-1,2-1.3c0.7-0.3,1.5-0.4,2.3-0.4
26
+ c1.8,0,3.3,0.6,4.4,1.7s1.6,2.8,1.6,5c0,0.2,0,0.4,0,0.7c0,0.3,0,0.5,0,0.7h-8.3c0.1,0.8,0.4,1.4,1.1,1.8
27
+ c0.6,0.4,1.5,0.7,2.5,0.7c0.7,0,1.3-0.1,2-0.2s1.2-0.3,1.6-0.5l0.5,3c-0.2,0.1-0.5,0.2-0.8,0.3c-0.3,0.1-0.7,0.2-1.1,0.3
28
+ c-0.4,0.1-0.8,0.1-1.3,0.2c-0.5,0-0.9,0.1-1.4,0.1c-1.2,0-2.2-0.2-3-0.5c-0.9-0.3-1.6-0.8-2.1-1.4c-0.6-0.6-1-1.3-1.3-2.1
29
+ S74.6,109.5,74.6,108.5z M83.2,107.1c0-0.3-0.1-0.6-0.2-0.9s-0.2-0.6-0.4-0.8c-0.2-0.2-0.4-0.4-0.7-0.6c-0.3-0.1-0.6-0.2-1.1-0.2
30
+ c-0.4,0-0.8,0.1-1.1,0.2c-0.3,0.1-0.5,0.3-0.7,0.6c-0.2,0.2-0.3,0.5-0.5,0.8c-0.1,0.3-0.2,0.6-0.2,0.9H83.2z"/>
31
+ <path class="st2" d="M89,108.5c0-1.1,0.2-2.2,0.5-3c0.4-0.9,0.8-1.6,1.4-2.2s1.2-1,2-1.3c0.7-0.3,1.5-0.4,2.3-0.4
32
+ c1.8,0,3.3,0.6,4.4,1.7s1.6,2.8,1.6,5c0,0.2,0,0.4,0,0.7c0,0.3,0,0.5,0,0.7h-8.3c0.1,0.8,0.4,1.4,1.1,1.8
33
+ c0.6,0.4,1.5,0.7,2.5,0.7c0.7,0,1.3-0.1,2-0.2s1.2-0.3,1.6-0.5l0.5,3c-0.2,0.1-0.5,0.2-0.8,0.3c-0.3,0.1-0.7,0.2-1.1,0.3
34
+ c-0.4,0.1-0.8,0.1-1.3,0.2c-0.5,0-0.9,0.1-1.4,0.1c-1.2,0-2.2-0.2-3-0.5c-0.9-0.3-1.6-0.8-2.1-1.4c-0.6-0.6-1-1.3-1.3-2.1
35
+ S89,109.5,89,108.5z M97.6,107.1c0-0.3-0.1-0.6-0.2-0.9s-0.2-0.6-0.4-0.8c-0.2-0.2-0.4-0.4-0.7-0.6c-0.3-0.1-0.6-0.2-1.1-0.2
36
+ c-0.4,0-0.8,0.1-1.1,0.2c-0.3,0.1-0.5,0.3-0.7,0.6c-0.2,0.2-0.3,0.5-0.5,0.8c-0.1,0.3-0.2,0.6-0.2,0.9H97.6z"/>
37
+ <path class="st2" d="M115.4,114.5c-0.3,0.1-0.7,0.2-1.1,0.3c-0.4,0.1-0.9,0.2-1.3,0.2c-0.5,0.1-0.9,0.1-1.4,0.2
38
+ c-0.5,0-0.9,0.1-1.4,0.1c-1.1,0-2-0.2-2.9-0.5s-1.5-0.8-2.1-1.3c-0.6-0.6-1-1.3-1.3-2.1c-0.3-0.8-0.5-1.8-0.5-2.8s0.1-2,0.4-2.8
39
+ s0.6-1.6,1.1-2.2s1.1-1,1.8-1.4s1.5-0.5,2.4-0.5c0.5,0,1,0,1.4,0.1s0.8,0.2,1.2,0.4v-5.9l3.7-0.6
40
+ C115.4,95.7,115.4,114.5,115.4,114.5z M107.1,108.3c0,1.1,0.3,2,0.8,2.7s1.3,1,2.3,1c0.3,0,0.6,0,0.9,0s0.5-0.1,0.7-0.1v-6.7
41
+ c-0.2-0.1-0.5-0.3-0.9-0.4s-0.7-0.1-1.1-0.1C108,104.8,107.1,106,107.1,108.3z"/>
42
+ </g>
43
+ </g>
44
+ <g>
45
+ <path class="st2" d="M41.2,12.1h40.3c2.4,0,4.7,0.9,6.3,2.6c1.7,1.7,2.6,4,2.6,6.3v53.8c0,1.5-0.6,3-1.7,4.1s-2.5,1.7-4.1,1.7
46
+ H42.8C41.4,80.6,40,80,39,79s-1.6-2.4-1.6-3.8V15.8c0-1,0.4-1.9,1.1-2.6C39.3,12.5,40.2,12.1,41.2,12.1L41.2,12.1z"/>
47
+ <path class="st0" d="M90.5,24.2h-6.3c-1.7,0-3.3-0.7-4.5-1.9c-1.2-1.2-1.9-2.8-1.9-4.5v-6.3c3.3,0,6.6,1.3,8.9,3.7
48
+ C89.1,17.6,90.5,20.8,90.5,24.2L90.5,24.2z"/>
49
+ <path class="st0" d="M71.5,22.3H56.4c-0.5,0-0.9,0.3-1.2,0.6c-0.3,0.3-0.5,0.8-0.5,1.3s0.2,0.9,0.5,1.3c0.3,0.3,0.7,0.6,1.2,0.6
50
+ h15.2c0.5,0,0.9-0.3,1.2-0.6c0.3-0.3,0.5-0.8,0.5-1.3s-0.2-0.9-0.5-1.3C72.4,22.5,72,22.3,71.5,22.3z M68.3,57.2H50.1
51
+ c-0.5,0-1,0.2-1.3,0.6c-0.4,0.4-0.6,0.8-0.6,1.3s0.2,1,0.6,1.3c0.4,0.4,0.8,0.6,1.3,0.6h18.2c0.5,0,1-0.2,1.3-0.6
52
+ c0.4-0.4,0.6-0.8,0.6-1.3s-0.2-1-0.6-1.3C69.3,57.4,68.8,57.2,68.3,57.2z M77.8,49.3H50.1c-0.5,0-0.9,0.3-1.2,0.6
53
+ s-0.5,0.8-0.5,1.3s0.2,0.9,0.5,1.3c0.3,0.3,0.7,0.6,1.2,0.6h27.8c0.5,0,0.9-0.3,1.2-0.6c0.3-0.3,0.5-0.8,0.5-1.3s-0.2-0.9-0.5-1.3
54
+ C78.7,49.6,78.3,49.3,77.8,49.3L77.8,49.3z M77.8,41.2H50.1c-0.5,0-0.9,0.3-1.2,0.6s-0.5,0.8-0.5,1.3s0.2,0.9,0.5,1.3
55
+ c0.3,0.3,0.7,0.6,1.2,0.6h27.8c0.5,0,0.9-0.3,1.2-0.6c0.3-0.4,0.5-0.8,0.5-1.3s-0.2-0.9-0.5-1.3C78.7,41.5,78.3,41.3,77.8,41.2
56
+ L77.8,41.2z"/>
57
+ <path class="st1" d="M84.2,26h6.3c0.4,0,0.7-0.1,1-0.3c0.3-0.2,0.6-0.5,0.7-0.8c0.1-0.2,0.2-0.5,0.2-0.8V24
58
+ c-0.1-3-1.1-5.9-2.9-8.4v-0.1l-0.3-0.4c-0.3-0.3-0.6-0.7-0.9-1c-1.3-1.4-2.9-2.4-4.7-3.2C81.8,10.2,80,9.8,78,9.8H43.7
59
+ c-2.2,0-4.2,0.9-5.8,2.4c-1.5,1.5-2.4,3.6-2.4,5.8v56.8c0,4.6,3.7,8.2,6.9,8.2h40.3c5.5,0,9.5-3.5,9.5-8.2v-22V32.4
60
+ c0-0.2,0-0.5-0.1-0.7s-0.2-0.4-0.4-0.6c-0.2-0.2-0.4-0.3-0.6-0.4s-0.5-0.1-0.7-0.1l0,0c-0.2,0-0.5,0-0.7,0.1s-0.4,0.2-0.6,0.4
61
+ c-0.2,0.2-0.3,0.4-0.4,0.6s-0.1,0.5-0.1,0.7v20.5v21.8c0,2.6-2.3,4.4-5.7,4.4H42.5c-0.9-0.3-1.7-0.9-2.3-1.7
62
+ c-0.6-0.8-0.9-1.8-0.8-2.7V17.8c0-0.6,0.1-1.2,0.3-1.7s0.5-1,1-1.4c0.4-0.4,0.9-0.7,1.4-1c0.5-0.2,1.1-0.3,1.7-0.3H76v4.4
63
+ c0,1.1,0.2,2.1,0.6,3.1s1,1.9,1.8,2.7c0.8,0.8,1.7,1.4,2.7,1.8C82,25.8,83.1,26,84.2,26L84.2,26z M84.2,22.2
64
+ c-0.6,0-1.2-0.1-1.7-0.3c-0.5-0.2-1-0.5-1.4-1s-0.7-0.9-1-1.4c-0.2-0.5-0.3-1.1-0.3-1.7v-4.2c2.2,0.4,4.1,1.4,5.7,3
65
+ c1.5,1.5,2.6,3.5,3,5.7L84.2,22.2z"/>
66
+ <circle class="st0" cx="74.4" cy="58.8" r="2"/>
67
+ </g>
68
+ </g>
69
+ </svg>
admin/partials/woo-feed-edit-config.php CHANGED
@@ -51,7 +51,7 @@ if ( ! defined( 'ABSPATH' ) ) {
51
  <td>
52
  <select name="type[<?php echo esc_attr( $k ); ?>]" class="attr_type wfnoempty">
53
  <option <?php echo ( 'attribute' == $attr_type[ $k ] ) ? 'selected="selected" ' : ''; ?>value="attribute"><?php esc_html_e( 'Attribute', 'woo-feed' ); ?></option>
54
- <option <?php echo ( 'pattern' == $attr_type[ $k ] ) ? 'selected="selected" ' : ''; ?> value="pattern"><?php esc_html_e( 'Pattern', 'woo-feed' ); ?></option>
55
  </select>
56
  </td>
57
  <td>
@@ -122,7 +122,7 @@ if ( ! defined( 'ABSPATH' ) ) {
122
  <td>
123
  <select name="type[__idx__]" class="attr_type wfnoempty">
124
  <option value="attribute"><?php esc_html_e( 'Attribute', 'woo-feed' ); ?></option>
125
- <option value="pattern"><?php esc_html_e( 'Pattern', 'woo-feed' ); ?></option>
126
  </select>
127
  </td>
128
  <td>
51
  <td>
52
  <select name="type[<?php echo esc_attr( $k ); ?>]" class="attr_type wfnoempty">
53
  <option <?php echo ( 'attribute' == $attr_type[ $k ] ) ? 'selected="selected" ' : ''; ?>value="attribute"><?php esc_html_e( 'Attribute', 'woo-feed' ); ?></option>
54
+ <option <?php echo ( 'pattern' == $attr_type[ $k ] ) ? 'selected="selected" ' : ''; ?> value="pattern"><?php esc_html_e( 'Pattern (Static Value)', 'woo-feed' ); ?></option>
55
  </select>
56
  </td>
57
  <td>
122
  <td>
123
  <select name="type[__idx__]" class="attr_type wfnoempty">
124
  <option value="attribute"><?php esc_html_e( 'Attribute', 'woo-feed' ); ?></option>
125
+ <option value="pattern"><?php esc_html_e( 'Pattern (Static Value)', 'woo-feed' ); ?></option>
126
  </select>
127
  </td>
128
  <td>
includes/classes/class-woo-feed-products-v3.php CHANGED
@@ -2566,7 +2566,7 @@ class Woo_Feed_Products_v3
2566
  $price = $product->get_regular_price();
2567
  }
2568
 
2569
- return apply_filters('woo_feed_filter_product_price', $price, $product, $this->config);
2570
  }
2571
 
2572
  /**
@@ -2593,10 +2593,7 @@ class Woo_Feed_Products_v3
2593
  $current_price = $product->get_price();
2594
  }
2595
 
2596
- //get dynamic discounted prices
2597
- $current_price = $this->get_dynamic_discounted_product_price($product, $current_price);
2598
-
2599
- return apply_filters('woo_feed_filter_product_regular_price', $current_price, $product, $this->config);
2600
  }
2601
 
2602
  /**
@@ -2625,10 +2622,7 @@ class Woo_Feed_Products_v3
2625
  $sale_price = $price > 0 ? $price : '';
2626
  }
2627
 
2628
- //get dynamic discounted prices
2629
- $sale_price = $this->get_dynamic_discounted_product_price($product, $sale_price);
2630
-
2631
- return apply_filters('woo_feed_filter_product_sale_price', $sale_price, $product, $this->config);
2632
  }
2633
 
2634
  /**
@@ -2655,7 +2649,7 @@ class Woo_Feed_Products_v3
2655
  $price) : $price;
2656
  }
2657
 
2658
- return apply_filters('woo_feed_filter_product_price_with_tax', $price_with_tax, $product, $this->config);
2659
  }
2660
 
2661
  /**
@@ -2682,10 +2676,7 @@ class Woo_Feed_Products_v3
2682
  $price) : $price;
2683
  }
2684
 
2685
- //get dynamic discounted prices
2686
- $current_price_with_tax = $this->get_dynamic_discounted_product_price($product, $current_price_with_tax, true);
2687
-
2688
- return apply_filters('woo_feed_filter_product_regular_price_with_tax', $current_price_with_tax, $product, $this->config);
2689
  }
2690
 
2691
  /**
@@ -2713,10 +2704,7 @@ class Woo_Feed_Products_v3
2713
  $sale_price_with_tax = $price > 0 ? $price : '';
2714
  }
2715
 
2716
- //get dynamic discounted prices
2717
- $sale_price_with_tax = $this->get_dynamic_discounted_product_price($product, $sale_price_with_tax, true);
2718
-
2719
- return apply_filters('woo_feed_filter_product_sale_price_with_tax', $sale_price_with_tax, $product, $this->config);
2720
  }
2721
 
2722
  /**
@@ -2835,52 +2823,6 @@ class Woo_Feed_Products_v3
2835
  }
2836
  }
2837
 
2838
- /**
2839
- * Get price with dynamic discount
2840
- *
2841
- * @param WC_Product $product product object
2842
- * @param $price
2843
- * @param bool $tax product taxable or not
2844
- *
2845
- * @author Nazrul Islam Nayan
2846
- * @since 4.3.52
2847
- * @return mixed $price
2848
- */
2849
- private function get_dynamic_discounted_product_price($product, $price, $tax = false) {
2850
- // When discount rules plugin by flycart is activated, bring the discounted price
2851
- if ( is_plugin_active('woo-discount-rules/woo-discount-rules.php') ) {
2852
-
2853
- if( class_exists('Wdr\App\Controllers\Configuration') ) {
2854
- $config = Wdr\App\Controllers\Configuration::getInstance()->getConfig('calculate_discount_from', 'sale_price');
2855
-
2856
- if( isset($config) && !empty($config) ) {
2857
- if( 'regular_price' === $config ) {
2858
- $price = $product->get_regular_price();
2859
- }else {
2860
- $price = $product->get_sale_price();
2861
- }
2862
- } else {
2863
- $price = $product->get_regular_price();
2864
- }
2865
-
2866
- //when tax is enabled
2867
- if( $tax ) {
2868
- $price = ( $product->is_taxable() && ! empty( $price ) ) ? $this->get_price_with_tax(
2869
- $product,
2870
- $price
2871
- ) : $price;
2872
- }
2873
-
2874
- $discounted_price = apply_filters('advanced_woo_discount_rules_get_product_discount_price_from_custom_price', false, $product, 1, $price, 'discounted_price', true, true);
2875
- if(false !== $discounted_price) {
2876
- return $discounted_price;
2877
- }
2878
- }
2879
- }
2880
-
2881
- return $price;
2882
- }
2883
-
2884
  /**
2885
  * Get price for Iconic woocommerce-bundled-products
2886
  *
2566
  $price = $product->get_regular_price();
2567
  }
2568
 
2569
+ return apply_filters('woo_feed_filter_product_price', $price, $product, $this->config, false);
2570
  }
2571
 
2572
  /**
2593
  $current_price = $product->get_price();
2594
  }
2595
 
2596
+ return apply_filters('woo_feed_filter_product_regular_price', $current_price, $product, $this->config, false);
 
 
 
2597
  }
2598
 
2599
  /**
2622
  $sale_price = $price > 0 ? $price : '';
2623
  }
2624
 
2625
+ return apply_filters('woo_feed_filter_product_sale_price', $sale_price, $product, $this->config, false);
 
 
 
2626
  }
2627
 
2628
  /**
2649
  $price) : $price;
2650
  }
2651
 
2652
+ return apply_filters('woo_feed_filter_product_price_with_tax', $price_with_tax, $product, $this->config, true);
2653
  }
2654
 
2655
  /**
2676
  $price) : $price;
2677
  }
2678
 
2679
+ return apply_filters('woo_feed_filter_product_regular_price_with_tax', $current_price_with_tax, $product, $this->config, true);
 
 
 
2680
  }
2681
 
2682
  /**
2704
  $sale_price_with_tax = $price > 0 ? $price : '';
2705
  }
2706
 
2707
+ return apply_filters('woo_feed_filter_product_sale_price_with_tax', $sale_price_with_tax, $product, $this->config, true);
 
 
 
2708
  }
2709
 
2710
  /**
2823
  }
2824
  }
2825
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2826
  /**
2827
  * Get price for Iconic woocommerce-bundled-products
2828
  *
includes/helper.php CHANGED
@@ -4323,4 +4323,80 @@ if ( ! function_exists( 'woo_feed_wp_options' ) ) {
4323
  }
4324
 
4325
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4326
  // End of file helper.php.
4323
  }
4324
 
4325
 
4326
+ if( ! function_exists('woo_feed_get_dynamic_discounted_product_price') ) {
4327
+
4328
+ /**
4329
+ * Get price with dynamic discount
4330
+ *
4331
+ * @param WC_Product $product product object
4332
+ * @param $price
4333
+ * @param $config
4334
+ * @param bool $tax product taxable or not
4335
+ * @return mixed $price
4336
+ */
4337
+ function woo_feed_get_dynamic_discounted_product_price($price, $product, $config, $tax) {
4338
+ // When discount rules plugin by flycart is activated, bring the discounted price
4339
+ if ( is_plugin_active('woo-discount-rules/woo-discount-rules.php') ) {
4340
+ if( class_exists('Wdr\App\Controllers\Configuration') ) {
4341
+ $config = Wdr\App\Controllers\Configuration::getInstance()->getConfig('calculate_discount_from', 'sale_price');
4342
+
4343
+ if( isset($config) && !empty($config) ) {
4344
+ if( 'regular_price' === $config ) {
4345
+ $price = $product->get_regular_price();
4346
+ }else {
4347
+ $price = $product->get_sale_price();
4348
+ }
4349
+ } else {
4350
+ $price = $product->get_regular_price();
4351
+ }
4352
+
4353
+ //when tax is enabled
4354
+ if( $tax ) {
4355
+ $price = ( $product->is_taxable() && ! empty( $price ) ) ? woo_feed_get_price_with_tax(
4356
+ $product,
4357
+ $price
4358
+ ) : $price;
4359
+ }
4360
+
4361
+ $discounted_price = apply_filters('advanced_woo_discount_rules_get_product_discount_price_from_custom_price', false, $product, 1, $price, 'discounted_price', true, true);
4362
+ if(false !== $discounted_price) {
4363
+ return $discounted_price;
4364
+ }
4365
+ }
4366
+ }
4367
+
4368
+
4369
+ // When dynamic discount pricing plugin by Acowebs is activated, bring the discounted price
4370
+ if( is_plugin_active('aco-woo-dynamic-pricing/start.php') ) {
4371
+ if( class_exists('AWDP_Discount') ) {
4372
+ if( !$tax ) {
4373
+ $price = AWDP_Discount::instance()->calculate_discount($product->get_price(), $product);
4374
+ if ($product->is_taxable()) {
4375
+ if (!wc_prices_include_tax()) {
4376
+ $tax_rates = WC_Tax::get_rates($product->get_tax_class());
4377
+ $taxes = WC_Tax::calc_tax($product->get_price(), $tax_rates, false);
4378
+ $tax_amount = WC_Tax::get_tax_total($taxes);
4379
+
4380
+ return $price - ( $price * $tax_amount ) / 100;
4381
+ }
4382
+ }
4383
+ } else {
4384
+ $slug_as_id = $product->get_data()['slug'];
4385
+ if( isset ( AWDP_Discount::instance()->wdp_discounted_price ) ) {
4386
+ $wdp_discount = AWDP_Discount::instance()->wdp_discounted_price;
4387
+
4388
+ if( isset( $wdp_discount[$slug_as_id] ) ) {
4389
+ $discounted_regular_price = $wdp_discount[$slug_as_id];
4390
+ $price = abs(wc_remove_number_precision($discounted_regular_price) );
4391
+ }
4392
+ }
4393
+ }
4394
+ }
4395
+ }
4396
+
4397
+ return $price;
4398
+ }
4399
+ }
4400
+
4401
+
4402
  // End of file helper.php.
includes/hooks.php CHANGED
@@ -31,6 +31,10 @@ add_filter( 'woo_feed_product_type_separator', 'woo_feed_product_taxonomy_term_s
31
  add_filter( 'woo_feed_tags_separator', 'woo_feed_product_taxonomy_term_separator', 10, 2 );
32
  add_filter( 'woo_feed_get_availability_attribute', 'woo_feed_get_availability_attribute_filter', 10, 3 );
33
 
 
 
 
 
34
  // Product Loop End.
35
  add_action( 'woo_feed_after_product_loop', 'woo_feed_remove_hooks_before_product_loop', 10, 2 );
36
 
31
  add_filter( 'woo_feed_tags_separator', 'woo_feed_product_taxonomy_term_separator', 10, 2 );
32
  add_filter( 'woo_feed_get_availability_attribute', 'woo_feed_get_availability_attribute_filter', 10, 3 );
33
 
34
+ // Discounted price filter
35
+ add_filter( 'woo_feed_filter_product_sale_price', 'woo_feed_get_dynamic_discounted_product_price', 9, 4 );
36
+ add_filter( 'woo_feed_filter_product_sale_price_with_tax', 'woo_feed_get_dynamic_discounted_product_price', 9, 4 );
37
+
38
  // Product Loop End.
39
  add_action( 'woo_feed_after_product_loop', 'woo_feed_remove_hooks_before_product_loop', 10, 2 );
40
 
woo-feed.php CHANGED
@@ -10,7 +10,7 @@
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.53
14
  * Author: WebAppick
15
  * Author URI: https://webappick.com/
16
  * License: GPL v2
@@ -35,15 +35,17 @@ if ( ! defined( 'ABSPATH' ) ) {
35
  if ( ! defined( 'WOO_FEED_FREE_VERSION' ) ) {
36
  /**
37
  * Plugin Version
 
38
  * @var string
39
  * @since 3.1.6
40
  */
41
- define( 'WOO_FEED_FREE_VERSION', '4.3.53' );
42
  }
43
 
44
  if ( ! defined( 'WOO_FEED_FREE_FILE' ) ) {
45
  /**
46
  * Plugin Base File
 
47
  * @since 3.1.41
48
  * @var string
49
  */
@@ -52,6 +54,7 @@ if ( ! defined( 'WOO_FEED_FREE_FILE' ) ) {
52
  if ( ! defined( 'WOO_FEED_FREE_PATH' ) ) {
53
  /**
54
  * Plugin Path with trailing slash
 
55
  * @var string dirname( __FILE__ )
56
  * * @since 3.1.6
57
  */
@@ -61,6 +64,7 @@ if ( ! defined( 'WOO_FEED_FREE_PATH' ) ) {
61
  if ( ! defined( 'WOO_FEED_FREE_ADMIN_PATH' ) ) {
62
  /**
63
  * Admin File Path with trailing slash
 
64
  * @var string
65
  * @since 3.1.6
66
  */
@@ -70,6 +74,7 @@ if ( ! defined( 'WOO_FEED_FREE_ADMIN_PATH' ) ) {
70
  if ( ! defined( 'WOO_FEED_LIBS_PATH' ) ) {
71
  /**
72
  * Admin File Path with trailing slash
 
73
  * @var string
74
  */
75
  define( 'WOO_FEED_LIBS_PATH', WOO_FEED_FREE_PATH . 'libs/' );
@@ -77,6 +82,7 @@ if ( ! defined( 'WOO_FEED_LIBS_PATH' ) ) {
77
  if ( ! defined( 'WOO_FEED_PLUGIN_URL' ) ) {
78
  /**
79
  * Plugin Directory URL
 
80
  * @var string
81
  * @since 3.1.37
82
  */
@@ -85,6 +91,7 @@ if ( ! defined( 'WOO_FEED_PLUGIN_URL' ) ) {
85
  if ( ! defined( 'WOO_FEED_MIN_PHP_VERSION' ) ) {
86
  /**
87
  * Minimum PHP Version Supported
 
88
  * @var string
89
  * @since 3.1.41
90
  */
@@ -93,6 +100,7 @@ if ( ! defined( 'WOO_FEED_MIN_PHP_VERSION' ) ) {
93
  if ( ! defined( 'WOO_FEED_MIN_WC_VERSION' ) ) {
94
  /**
95
  * Minimum WooCommerce Version Supported
 
96
  * @var string
97
  * @since 3.1.45
98
  */
@@ -101,6 +109,7 @@ if ( ! defined( 'WOO_FEED_MIN_WC_VERSION' ) ) {
101
  if ( ! defined( 'WOO_FEED_PLUGIN_BASE_NAME' ) ) {
102
  /**
103
  * Plugin Base name..
 
104
  * @var string
105
  * @since 3.1.41
106
  */
@@ -111,6 +120,7 @@ if ( ! defined( 'WOO_FEED_LOG_DIR' ) ) {
111
  $upload_dir = wp_get_upload_dir();
112
  /**
113
  * Log Directory
 
114
  * @var string
115
  * @since 3.2.1
116
  */
@@ -119,9 +129,10 @@ if ( ! defined( 'WOO_FEED_LOG_DIR' ) ) {
119
  }
120
 
121
  if ( ! defined( 'WOO_FEED_CACHE_TTL' ) ) {
122
- $_cache_ttl = get_option( 'woo_feed_settings', [ 'cache_ttl' => 6 * HOUR_IN_SECONDS ] );
123
  /**
124
  * Cache TTL
 
125
  * @var int
126
  * @since 3.3.11
127
  */
@@ -165,19 +176,20 @@ if ( ! function_exists( 'run_woo_feed' ) ) {
165
  */
166
  function run_woo_feed() {
167
  $plugin = new Woo_Feed();
168
- register_activation_hook( WOO_FEED_FREE_FILE, [ 'Woo_Feed_installer', 'install' ] );
169
  register_shutdown_function( 'woo_feed_log_errors_at_shutdown' );
170
  add_action( 'woo_feed_cleanup_logs', 'woo_feed_cleanup_logs' );
171
  /**
172
  * Ensure Feed Plugin runs only if WooCommerce loaded (installed and activated)
 
173
  * @since 3.1.41
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
-
181
  run_woo_feed();
182
  }
183
 
@@ -207,7 +219,7 @@ if ( ! function_exists( 'woo_feed_get_product_information' ) ) {
207
  $feed = woo_feed_extract_feed_option_name( $feed );
208
  $limit = isset( $_REQUEST['limit'] ) ? absint( $_REQUEST['limit'] ) : 200;
209
  $getConfig = maybe_unserialize( get_option( 'wf_config' . $feed ) );
210
-
211
  if ( woo_feed_wc_version_check( 3.2 ) ) {
212
  if ( woo_feed_is_debugging_enabled() ) {
213
  // clear log, set the pointer to the beginning of the file.
@@ -225,7 +237,7 @@ if ( ! function_exists( 'woo_feed_get_product_information' ) ) {
225
  do_action( 'after_woo_feed_get_product_information', $getConfig );
226
  woo_feed_log_feed_process( $getConfig['filename'], sprintf( 'Total %d product found', is_array( $ids ) && ! empty( $ids ) ? count( $ids ) : 0 ) );
227
  if ( is_array( $ids ) && ! empty( $ids ) ) {
228
- rsort($ids); //sorting ids in descending order
229
  if ( count( $ids ) > $limit ) {
230
  $batches = array_chunk( $ids, $limit );
231
  } else {
@@ -233,19 +245,19 @@ if ( ! function_exists( 'woo_feed_get_product_information' ) ) {
233
  }
234
  woo_feed_log_feed_process( $getConfig['filename'], sprintf( 'Total %d batches', count( $batches ) ) );
235
  wp_send_json_success(
236
- [
237
  'product' => $batches,
238
  'total' => count( $ids ),
239
  'success' => true,
240
- ]
241
  );
242
  wp_die();
243
  } else {
244
  wp_send_json_error(
245
- [
246
  'message' => esc_html__( 'No products found. Add product or change feed config before generate the feed.', 'woo-feed' ),
247
  'success' => false,
248
- ]
249
  );
250
  wp_die();
251
  }
@@ -256,10 +268,10 @@ if ( ! function_exists( 'woo_feed_get_product_information' ) ) {
256
  woo_feed_log_fatal_error( $message, $e );
257
  }
258
  wp_send_json_error(
259
- [
260
  'message' => esc_html__( 'Failed to fetch products.', 'woo-feed' ),
261
  'success' => false,
262
- ]
263
  );
264
  wp_die();
265
  }
@@ -270,18 +282,18 @@ if ( ! function_exists( 'woo_feed_get_product_information' ) ) {
270
  if ( $products->publish > 0 ) {
271
  $data['success'] = true;
272
  wp_send_json_success(
273
- [
274
  'product' => $products->publish,
275
  'success' => false,
276
- ]
277
  );
278
  wp_die();
279
  } else {
280
  wp_send_json_error(
281
- [
282
  'message' => esc_html__( 'No products found. Add product or change feed config before generate the feed.', 'woo-feed' ),
283
  'success' => false,
284
- ]
285
  );
286
  wp_die();
287
  }
@@ -292,6 +304,7 @@ if ( ! function_exists( 'woo_feed_make_batch_feed' ) ) {
292
  add_action( 'wp_ajax_make_batch_feed', 'woo_feed_make_batch_feed' );
293
  /**
294
  * Ajax Batch Callback
 
295
  * @return void
296
  */
297
  function woo_feed_make_batch_feed() {
@@ -305,16 +318,16 @@ if ( ! function_exists( 'woo_feed_make_batch_feed' ) ) {
305
  wp_send_json_error( esc_html__( 'Invalid Request.', 'woo-feed' ) );
306
  die();
307
  }
308
-
309
  $feedName = woo_feed_extract_feed_option_name( sanitize_text_field( wp_unslash( $_REQUEST['feed'] ) ) );
310
  $feedInfo = get_option( 'wf_config' . $feedName, false );
311
-
312
  if ( ! $feedInfo ) {
313
  $getFeedConfig = maybe_unserialize( get_option( 'wf_feed_' . $feedName ) );
314
  $feedInfo = $getFeedConfig['feedrules'];
315
  }
316
-
317
- $feedInfo['productIds'] = isset( $_REQUEST['products'] ) ? array_map( 'absint', $_REQUEST['products'] ) : [];
318
  $offset = isset( $_REQUEST['loop'] ) ? absint( $_REQUEST['loop'] ) : 0;
319
  if ( woo_feed_is_debugging_enabled() ) {
320
  if ( 0 === $offset ) {
@@ -329,7 +342,7 @@ if ( ! function_exists( 'woo_feed_make_batch_feed' ) ) {
329
  woo_feed_log_feed_process( $feedInfo['filename'], $m );
330
  }
331
  }
332
-
333
  if ( 0 === $offset ) {
334
  woo_feed_unlink_tempFiles( $feedInfo, $feedName );
335
  }
@@ -337,19 +350,19 @@ if ( ! function_exists( 'woo_feed_make_batch_feed' ) ) {
337
  if ( $feed_data ) {
338
  woo_feed_log_feed_process( $feedInfo['filename'], sprintf( 'Done Processing Loop %d.', ( $offset + 1 ) ) );
339
  wp_send_json_success(
340
- [
341
  'success' => true,
342
  'products' => 'yes',
343
- ]
344
  );
345
  } else {
346
  woo_feed_log_feed_process( $feedInfo['filename'], sprintf( 'No Products found @ Loop %d.', $offset ) );
347
  wp_send_json_success(
348
- [
349
  'success' => true,
350
  'products' => 'no',
351
  'config' => $feedInfo,
352
- ]
353
  );
354
  }
355
  wp_die();
@@ -359,6 +372,7 @@ if ( ! function_exists( 'woo_feed_save_feed_file' ) ) {
359
  add_action( 'wp_ajax_save_feed_file', 'woo_feed_save_feed_file' );
360
  /**
361
  * Ajax Response for Save Feed File
 
362
  * @throws Exception
363
  * @return void
364
  */
@@ -373,15 +387,15 @@ if ( ! function_exists( 'woo_feed_save_feed_file' ) ) {
373
  wp_send_json_error( esc_html__( 'Invalid Feed.', 'woo-feed' ) );
374
  die();
375
  }
376
-
377
  $feedName = woo_feed_extract_feed_option_name( sanitize_text_field( wp_unslash( $_REQUEST['feed'] ) ) );
378
  $info = get_option( 'wf_config' . $feedName, false );
379
-
380
  if ( ! $info ) {
381
  $getFeedConfig = maybe_unserialize( get_option( 'wf_feed_' . $feedName ) );
382
- $info = $getFeedConfig['feedrules'];
383
  }
384
-
385
  $feedService = $info['provider'];
386
  $type = $info['feedType'];
387
  woo_feed_log_feed_process( $info['filename'], sprintf( 'Preparing Final Feed (%s) File...', $type ) );
@@ -399,28 +413,28 @@ if ( ! function_exists( 'woo_feed_save_feed_file' ) ) {
399
  woo_feed_log_feed_process( $info['filename'], 'Unable to Get Footer Chunk' );
400
  }
401
 
402
- //make file xml string
403
- if ( isset($info['provider']) && 'googlereview' === $info['provider'] ) {
404
- //review template xml string
405
- $string = $feedHeader . $feedBody . $feedFooter;
406
-
407
- }else {
408
- if ( 'csv' === $type || 'tsv' === $type || 'xls' === $type ) {
409
- $csvHead[0] = $feedHeader;
410
- if ( ! empty( $csvHead ) && ! empty( $feedBody ) ) {
411
- $string = array_merge( $csvHead, $feedBody );
412
- } else {
413
- $string = array();
414
- }
415
- } else {
416
- $string = $feedHeader . $feedBody . $feedFooter;
417
- }
418
- }
419
-
420
  $upload_dir = wp_get_upload_dir();
421
  $path = $upload_dir['basedir'] . '/woo-feed/' . $feedService . '/' . $type;
422
  $saveFile = false;
423
- $file = '';
424
  // Check If any products founds
425
  if ( $string && ! empty( $string ) ) {
426
  // Save File
@@ -429,7 +443,7 @@ if ( ! function_exists( 'woo_feed_save_feed_file' ) ) {
429
  $save = new Woo_Feed_Savefile();
430
  if ( 'csv' === $type || 'tsv' === $type || 'xls' === $type ) {
431
  $saveFile = $save->saveValueFile( $path, $file, $string, $info, $type );
432
- }else {
433
  $saveFile = $save->saveFile( $path, $file, $string );
434
  }
435
  if ( $saveFile ) {
@@ -446,26 +460,26 @@ if ( ! function_exists( 'woo_feed_save_feed_file' ) ) {
446
  } else {
447
  woo_feed_log_feed_process( $info['filename'], 'No Product Found... Exiting File Save Process...' );
448
  if ( isset( $info['fattribute'] ) && count( $info['fattribute'] ) ) {
449
- $data = [
450
  'success' => false,
451
  'message' => esc_html__( 'Products not found with your filtering condition.', 'woo-feed' ),
452
- ];
453
  } else {
454
- $data = [
455
  'success' => false,
456
  'message' => esc_html__( 'No Product Found with your feed configuration. Please Update And Generate the feed again.', 'woo-feed' ),
457
- ];
458
  }
459
  wp_send_json_error( $data );
460
  wp_die();
461
  }
462
-
463
  $feed_URL = woo_feed_get_file_url( $feedName, $feedService, $type );
464
  // Save Info into database.
465
- $feedInfo = array(
466
  'feedrules' => $info,
467
  'url' => $feed_URL,
468
- 'last_updated' => date('Y-m-d H:i:s', strtotime( current_time( 'mysql' ) ) ),
469
  );
470
  $feedOldInfo = maybe_unserialize( get_option( 'wf_feed_' . $feedName ) );
471
  if ( isset( $feedOldInfo['status'] ) ) {
@@ -473,23 +487,23 @@ if ( ! function_exists( 'woo_feed_save_feed_file' ) ) {
473
  } else {
474
  $feedInfo['status'] = 1;
475
  }
476
-
477
  woo_feed_unlink_tempFiles( $info, $feedName );
478
-
479
  woo_feed_log_feed_process( $info['filename'], 'Updating Feed Information.' );
480
-
481
  update_option( 'wf_feed_' . $feedName, serialize( $feedInfo ), false ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize
482
-
483
  if ( $saveFile ) {
484
  // FTP File Upload Info
485
  $ftpEnabled = sanitize_text_field( $info['ftpenabled'] );
486
-
487
  if ( $ftpEnabled ) {
488
  woo_feed_handle_file_transfer( $file, $feedName . '.' . $type, $info );
489
  }
490
-
491
- $cat = woo_feed_check_google_category( $feedInfo );
492
- $data = array(
493
  'info' => $feedInfo,
494
  'url' => $feed_URL,
495
  'cat' => $cat,
@@ -535,8 +549,8 @@ if ( ! function_exists( 'woo_feed_generate_batch_data' ) ) {
535
  woo_feed_log_feed_process( $info['filename'], sprintf( 'Initializing merchant Class %s for %s', $feedService, $info['provider'] ) );
536
  $feed = $products->getProducts();
537
  if ( ! empty( $feed['body'] ) ) {
538
- $feedBody = 'wf_store_feed_body_info_' . $feedSlug;
539
- $prevFeed = woo_feed_get_batch_feed_info( $feedService, $type, $feedBody );
540
  if ( $prevFeed ) {
541
  if ( 'csv' === $type || 'tsv' === $type || 'xls' === $type ) {
542
  if ( ! empty( $prevFeed ) ) {
@@ -580,26 +594,26 @@ if ( ! function_exists( 'woo_feed_generate_new_feed' ) ) {
580
  wp_die( esc_html__( 'Failed security check', 'woo-feed' ), 403 );
581
  }
582
  // Check feed type (file ext).
583
- if ( ! woo_feed_check_valid_extension( sanitize_text_field( wp_unslash( $_POST['feedType'] ) ) ) ) {
584
  wp_die( esc_html__( 'Invalid Feed Type!', 'woo-feed' ), 400 );
585
  }
586
-
587
  $fileName = woo_feed_save_feed_config_data( $_POST );
588
-
589
  wp_safe_redirect(
590
  add_query_arg(
591
- [
592
  'feed_created' => (int) false !== $fileName,
593
  'feed_regenerate' => 1,
594
  'feed_name' => $fileName ? $fileName : '',
595
- ],
596
  admin_url( 'admin.php?page=webappick-manage-feeds' )
597
  )
598
  );
599
- die();
600
- } else {
601
- require WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-admin-display.php';
602
  }
 
 
603
  }
604
  }
605
  if ( ! function_exists( 'woo_feed_manage_feed' ) ) {
@@ -611,7 +625,9 @@ if ( ! function_exists( 'woo_feed_manage_feed' ) ) {
611
  // @TODO use admin_post_ action for form handling.
612
  // Manage action for category mapping.
613
  if ( isset( $_GET['action'] ) && 'edit-feed' === $_GET['action'] ) {
614
- if ( ! defined( 'WOO_FEED_EDIT_CONFIG' ) ) define( 'WOO_FEED_EDIT_CONFIG', true );
 
 
615
  if ( count( $_POST ) && isset( $_POST['provider'], $_POST['feed_id'], $_POST['feed_option_name'], $_POST['filename'], $_POST['feedType'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
616
  $nonce = isset( $_POST['_wpnonce'] ) && ! empty( $_POST['_wpnonce'] ) ? sanitize_text_field( wp_unslash( $_POST['_wpnonce'] ) ) : '';
617
  if ( ! wp_verify_nonce( $nonce, 'wf_edit_feed' ) ) {
@@ -621,26 +637,25 @@ if ( ! function_exists( 'woo_feed_manage_feed' ) ) {
621
  if ( ! woo_feed_check_valid_extension( sanitize_text_field( wp_unslash( $_POST['feedType'] ) ) ) ) {
622
  wp_die( esc_html__( 'Invalid Feed Type!', 'woo-feed' ), 400 );
623
  }
624
-
625
-
626
- // check if name is changed... save as new, rename feed isn't implemented ... it can be...
627
- // delete old feed save data as new feed.
628
- $feed_option_name = ( isset( $_POST['feed_option_name'] ) && ! empty( $_POST['feed_option_name'] ) ) ? sanitize_text_field( wp_unslash( $_POST['feed_option_name'] ) ) : null;
629
- // if ( $_POST['filename'] !== $_POST['feed_option_name'] ) {
630
- // $feed_option_name = ( isset( $_POST['filename'] ) && ! empty( $_POST['filename'] ) ) ? sanitize_text_field( $_POST['filename'] ) : null;
631
- // // Delete old feed info & file
632
- // delete_option( 'wf_feed_' . $_POST['feed_option_name'] );
633
- // delete_option( 'wf_config' . $_POST['feed_option_name'] );
634
- //
635
- // $upload_dir = wp_get_upload_dir();
636
- // $feedService = $_POST['provider'];
637
- // $type = $_POST['feedType'];
638
- // $old_name = $_POST['feed_option_name'];
639
- // $path = $upload_dir['basedir'] . '/woo-feed/' . $feedService . '/' . $type . '/' . $old_name . '.' . $type;
640
- // if ( file_exists( $path ) ) {
641
- // unlink( $path );
642
- // }
643
- // }
644
  // if form submitted via $_POST['edit-feed'] then only config and regenerate otherwise only update the config...
645
  // no need to check other submit button ... eg. $_POST['save_feed_config']
646
  $fileName = woo_feed_save_feed_config_data( $_POST, $feed_option_name, isset( $_POST['edit-feed'] ) );
@@ -648,11 +663,11 @@ if ( ! function_exists( 'woo_feed_manage_feed' ) ) {
648
  // @TODO this should be handled in admin_init action for proper redirection to work...
649
  wp_safe_redirect(
650
  add_query_arg(
651
- [
652
  'feed_updated' => (int) false !== $fileName,
653
  'feed_regenerate' => (int) isset( $_POST['edit-feed'] ),
654
  'feed_name' => $fileName ? $fileName : '',
655
- ],
656
  admin_url( 'admin.php?page=webappick-manage-feeds' )
657
  )
658
  );
@@ -688,7 +703,7 @@ if ( ! function_exists( 'woo_feed_manage_feed' ) ) {
688
  if ( update_option( 'wf_schedule', sanitize_text_field( wp_unslash( $_POST['wf_schedule'] ) ), false ) ) {
689
  wp_clear_scheduled_hook( 'woo_feed_update' );
690
  add_filter( 'cron_schedules', 'Woo_Feed_installer::cron_schedules' ); // phpcs:ignore
691
- //wp_schedule_event( time(), 'woo_feed_corn', 'woo_feed_update' );
692
  $update = 1; // success.
693
  } else {
694
  $update = 2; // db fail.
@@ -699,7 +714,7 @@ if ( ! function_exists( 'woo_feed_manage_feed' ) ) {
699
  } else {
700
  $update = 4; // invalid nonce.
701
  }
702
- wp_safe_redirect( add_query_arg( [ 'schedule_updated' => $update ], admin_url( 'admin.php?page=webappick-manage-feeds' ) ) );
703
  die();
704
  }
705
  require WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-manage-list.php';
@@ -713,6 +728,7 @@ if ( ! function_exists( 'feed_merchant_view' ) ) {
713
  add_action( 'wp_ajax_get_feed_merchant', 'feed_merchant_view' );
714
  /**
715
  * Ajax response for Create/Add Feed config table for selected Merchant/Provider
 
716
  * @return void
717
  */
718
  function feed_merchant_view() {
@@ -728,20 +744,22 @@ if ( ! function_exists( 'feed_merchant_view' ) ) {
728
  wp_send_json_error( esc_html__( 'Invalid Merchant', 'woo-feed' ) );
729
  wp_die();
730
  }
731
- $merchant = new Woo_Feed_Merchant( $provider );
732
- $feedRules = $merchant->get_template();
733
  $wooFeedDropDown = new Woo_Feed_Dropdown();
734
  ob_start();
735
  require_once WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-edit-tabs.php';
736
- wp_send_json_success( [
737
- 'tabs' => ob_get_clean(),
738
- 'feedType' => strtolower( $merchant->get_feed_types( true ) ),
739
- 'itemsWrapper' => $feedRules['itemsWrapper'],
740
- 'itemWrapper' => $feedRules['itemWrapper'],
741
- 'delimiter' => $feedRules['delimiter'],
742
- 'enclosure' => $feedRules['enclosure'],
743
- 'extraHeader' => $feedRules['extraHeader'],
744
- ] );
 
 
745
  wp_die();
746
  }
747
  }
@@ -750,6 +768,7 @@ if ( ! function_exists( 'woo_feed_get_google_categories' ) ) {
750
  add_action( 'wp_ajax_get_google_categories', 'woo_feed_get_google_categories' );
751
  /**
752
  * Ajax Response for Google Category Dropdown Data
 
753
  * @return void
754
  */
755
  function woo_feed_get_google_categories() {
@@ -769,6 +788,7 @@ if ( ! function_exists( 'woo_feed_get_ssh2_status' ) ) {
769
  add_action( 'wp_ajax_get_ssh2_status', 'woo_feed_get_ssh2_status' );
770
  /**
771
  * Ajax Response for ssh2 status check
 
772
  * @return void
773
  */
774
  function woo_feed_get_ssh2_status() {
@@ -794,6 +814,7 @@ if ( ! function_exists( 'woo_feed_update_feed_status' ) ) {
794
  add_action( 'wp_ajax_update_feed_status', 'woo_feed_update_feed_status' );
795
  /**
796
  * Ajax Response for Update Feed Status
 
797
  * @return void
798
  */
799
  function woo_feed_update_feed_status() {
@@ -809,14 +830,14 @@ if ( ! function_exists( 'woo_feed_update_feed_status' ) ) {
809
  $feedInfo = maybe_unserialize( get_option( $feedName ) );
810
  $feedInfo['status'] = isset( $_POST['status'] ) && 1 === (int) $_POST['status'] ? 1 : 0;
811
 
812
- $feed_slug = str_replace('wf_feed_','wf_config',$feedName);
813
  if ( 1 === $feedInfo['status'] ) {
814
- if ( ! wp_next_scheduled('woo_feed_update_single_feed',[ $feed_slug ]) ) {
815
- wp_schedule_event( time(), 'woo_feed_corn', 'woo_feed_update_single_feed', [ $feed_slug ] );
816
- }
817
- }else {
818
- wp_clear_scheduled_hook( 'woo_feed_update_single_feed',[ $feed_slug ]);
819
- }
820
 
821
  update_option( $feedName, serialize( $feedInfo ), false ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize
822
  wp_send_json_success( array( 'status' => true ) );
@@ -829,46 +850,47 @@ if ( ! function_exists( 'woo_feed_update_feed_status' ) ) {
829
 
830
  // Render and handle status page options.
831
  if ( ! function_exists( 'woo_feed_system_status' ) ) {
832
- /**
833
- * Feed Status Page
834
- *
835
- * @return void
836
- */
837
- function woo_feed_system_status() {
838
- require WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-status.php';
839
- }
840
  }
841
 
842
  // Render and handle settings page options.
843
  if ( ! function_exists( 'woo_feed_config_feed' ) ) {
844
  /**
845
  * Feed Settings Page
 
846
  * @return void
847
  */
848
- function woo_feed_config_feed(){
849
  if ( isset( $_POST['wa_woo_feed_config'], $_POST['_wpnonce'] ) ) {
850
  check_admin_referer( 'woo-feed-config' );
851
-
852
- $data = [
853
- 'per_batch' => isset( $_POST['batch_limit'] ) ? absint( $_POST['batch_limit'] ) : '',
854
- 'product_query_type' => isset( $_POST['product_query_type'] ) ? sanitize_text_field( wp_unslash( $_POST['product_query_type'] ) ) : '',
855
- 'enable_error_debugging' => isset( $_POST['enable_error_debugging'] ) ? sanitize_text_field( wp_unslash( $_POST['enable_error_debugging'] ) ) : '',
856
- 'cache_ttl' => isset( $_POST['cache_ttl'] ) ? absint( $_POST['cache_ttl'] ) : '',
857
- 'overridden_structured_data' => isset( $_POST['overridden_structured_data'] ) ? sanitize_text_field( wp_unslash($_POST['overridden_structured_data']) ) : '',
858
- 'disable_mpn' => isset( $_POST['disable_mpn'] ) ? sanitize_text_field( wp_unslash($_POST['disable_mpn']) ) : '',
859
- 'disable_brand' => isset( $_POST['disable_brand'] ) ? sanitize_text_field( wp_unslash($_POST['disable_brand']) ) : '',
860
- 'disable_pixel' => isset( $_POST['disable_pixel'] ) ? sanitize_text_field( $_POST['disable_pixel'] ) : '',
861
- 'pixel_id' => isset( $_POST['pixel_id'] ) ? sanitize_text_field( $_POST['pixel_id'] ) : '',
862
- 'allow_all_shipping' => isset( $_POST['allow_all_shipping'] ) ? sanitize_text_field( wp_unslash($_POST['allow_all_shipping']) ) : '',
863
- 'only_free_shipping' => isset( $_POST['only_free_shipping'] ) ? sanitize_text_field( wp_unslash($_POST['only_free_shipping']) ) : '',
864
- 'only_local_pickup_shipping' => isset( $_POST['only_local_pickup_shipping'] ) ? sanitize_text_field( wp_unslash($_POST['only_local_pickup_shipping']) ) : '',
865
- ];
866
-
867
  woo_feed_save_options( $data );
868
 
869
- // $currencyAPI = isset( $_POST['currency_api_code'] ) ? sanitize_text_field( $_POST['currency_api_code'] ) : '';
870
- // update_option( 'woo_feed_currency_api_code', $currencyAPI, false );
871
-
872
  if ( isset( $_POST['opt_in'] ) && 'on' === $_POST['opt_in'] ) {
873
  WooFeedWebAppickAPI::getInstance()->trackerOptIn();
874
  } else {
@@ -881,93 +903,98 @@ if ( ! function_exists( 'woo_feed_config_feed' ) ) {
881
  if ( isset( $_POST['purge_feed_cache'] ) ) {
882
  woo_feed_flush_cache_data();
883
  }
884
-
885
  wp_safe_redirect( admin_url( 'admin.php?page=webappick-feed-settings&settings_updated=1' ) );
886
  die();
887
  }
888
-
889
  require WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-settings.php';
890
  }
891
  }
892
  if ( ! function_exists( 'woo_feed_flash_cache_action' ) ) {
893
- /**
894
- * Flash cache after specific actions
895
- * @return void
896
- */
897
- function woo_feed_flash_cache_action(){
898
- woo_feed_flush_cache_data();
899
- }
 
900
  }
901
 
902
- //add_action('woocommerce_after_add_attribute_fields','woo_feed_flash_cache_action');
903
- //add_action('woocommerce_after_edit_attribute_fields','woo_feed_flash_cache_action');
904
 
905
 
906
  // Suggest other plugins of webappick.
907
- if ( ! class_exists('webappick_suggest_plugin') ) {
908
- class webappick_suggest_plugin
909
- {
910
- static function init() {
911
- if ( is_admin() ) {
912
- add_filter('install_plugins_table_api_args_featured', array( __CLASS__, 'featured_plugins_tab' ));
913
- }
914
- } // init
915
- // add our plugins to recommended list
916
- static function plugins_api_result( $res, $action, $args ) {
917
- remove_filter('plugins_api_result', array( __CLASS__, 'plugins_api_result' ), 10, 1);
918
- $res = self::add_plugin_favs('webappick-pdf-invoice-for-woocommerce', $res);
919
- return $res;
920
- } // plugins_api_result
921
- // helper function for adding plugins to fav list
922
- static function featured_plugins_tab( $args ) {
923
- add_filter('plugins_api_result', array( __CLASS__, 'plugins_api_result' ), 10, 3);
924
- return $args;
925
- } // featured_plugins_tab
926
- // add single plugin to list of favs
927
- static function add_plugin_favs( $plugin_slug, $res ) {
928
- if ( ! empty($res->plugins) && is_array($res->plugins) ) {
929
- foreach ( $res->plugins as $plugin ) {
930
- if ( is_object($plugin) && ! empty($plugin->slug) && $plugin->slug === $plugin_slug ) {
931
- return $res;
932
- }
933
- } // foreach
934
- }
935
- $plugin_info = get_transient('wf-plugin-info-' . $plugin_slug);
936
- if ( $plugin_info ) {
937
- array_unshift($res->plugins, $plugin_info);
938
- } else {
939
- $plugin_info = plugins_api('plugin_information', array(
940
- 'slug' => $plugin_slug,
941
- 'is_ssl' => is_ssl(),
942
- 'fields' => array(
943
- 'banners' => true,
944
- 'reviews' => true,
945
- 'downloaded' => true,
946
- 'active_installs' => true,
947
- 'icons' => true,
948
- 'short_description' => true,
949
- ),
950
- ));
951
- if ( ! is_wp_error($plugin_info) ) {
952
- $res->plugins[] = $plugin_info;
953
- set_transient('wf-plugin-info-' . $plugin_slug, $plugin_info, DAY_IN_SECONDS * 7);
954
- }
955
- }
956
- return $res;
957
- } // add_plugin_favs
958
- }
959
- add_action('init', array( 'webappick_suggest_plugin', 'init' ));
 
 
 
960
  }
961
 
962
  register_deactivation_hook( __FILE__, 'woo_feed_deactivate' );
963
  if ( ! function_exists( 'woo_feed_deactivate' ) ) {
964
- /**
965
- * Flash cache purged after plugin deactivation
966
- * @return void
967
- */
968
- function woo_feed_deactivate() {
969
- woo_feed_flush_cache_data(); //clean caches.
970
- }
 
971
  }
972
 
973
 
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.54
14
  * Author: WebAppick
15
  * Author URI: https://webappick.com/
16
  * License: GPL v2
35
  if ( ! defined( 'WOO_FEED_FREE_VERSION' ) ) {
36
  /**
37
  * Plugin Version
38
+ *
39
  * @var string
40
  * @since 3.1.6
41
  */
42
+ define( 'WOO_FEED_FREE_VERSION', '4.3.54' );
43
  }
44
 
45
  if ( ! defined( 'WOO_FEED_FREE_FILE' ) ) {
46
  /**
47
  * Plugin Base File
48
+ *
49
  * @since 3.1.41
50
  * @var string
51
  */
54
  if ( ! defined( 'WOO_FEED_FREE_PATH' ) ) {
55
  /**
56
  * Plugin Path with trailing slash
57
+ *
58
  * @var string dirname( __FILE__ )
59
  * * @since 3.1.6
60
  */
64
  if ( ! defined( 'WOO_FEED_FREE_ADMIN_PATH' ) ) {
65
  /**
66
  * Admin File Path with trailing slash
67
+ *
68
  * @var string
69
  * @since 3.1.6
70
  */
74
  if ( ! defined( 'WOO_FEED_LIBS_PATH' ) ) {
75
  /**
76
  * Admin File Path with trailing slash
77
+ *
78
  * @var string
79
  */
80
  define( 'WOO_FEED_LIBS_PATH', WOO_FEED_FREE_PATH . 'libs/' );
82
  if ( ! defined( 'WOO_FEED_PLUGIN_URL' ) ) {
83
  /**
84
  * Plugin Directory URL
85
+ *
86
  * @var string
87
  * @since 3.1.37
88
  */
91
  if ( ! defined( 'WOO_FEED_MIN_PHP_VERSION' ) ) {
92
  /**
93
  * Minimum PHP Version Supported
94
+ *
95
  * @var string
96
  * @since 3.1.41
97
  */
100
  if ( ! defined( 'WOO_FEED_MIN_WC_VERSION' ) ) {
101
  /**
102
  * Minimum WooCommerce Version Supported
103
+ *
104
  * @var string
105
  * @since 3.1.45
106
  */
109
  if ( ! defined( 'WOO_FEED_PLUGIN_BASE_NAME' ) ) {
110
  /**
111
  * Plugin Base name..
112
+ *
113
  * @var string
114
  * @since 3.1.41
115
  */
120
  $upload_dir = wp_get_upload_dir();
121
  /**
122
  * Log Directory
123
+ *
124
  * @var string
125
  * @since 3.2.1
126
  */
129
  }
130
 
131
  if ( ! defined( 'WOO_FEED_CACHE_TTL' ) ) {
132
+ $_cache_ttl = get_option( 'woo_feed_settings', array( 'cache_ttl' => 6 * HOUR_IN_SECONDS ) );
133
  /**
134
  * Cache TTL
135
+ *
136
  * @var int
137
  * @since 3.3.11
138
  */
176
  */
177
  function run_woo_feed() {
178
  $plugin = new Woo_Feed();
179
+ register_activation_hook( WOO_FEED_FREE_FILE, array( 'Woo_Feed_installer', 'install' ) );
180
  register_shutdown_function( 'woo_feed_log_errors_at_shutdown' );
181
  add_action( 'woo_feed_cleanup_logs', 'woo_feed_cleanup_logs' );
182
  /**
183
  * Ensure Feed Plugin runs only if WooCommerce loaded (installed and activated)
184
+ *
185
  * @since 3.1.41
186
  */
187
+ add_action( 'plugins_loaded', array( $plugin, 'run' ), PHP_INT_MAX );
188
  add_action( 'admin_notices', 'wooFeed_Admin_Notices' );
189
  add_action( 'admin_notices', 'wooFeed_To_ctxFeed' );
190
  WooFeedWebAppickAPI::getInstance();
191
  }
192
+
193
  run_woo_feed();
194
  }
195
 
219
  $feed = woo_feed_extract_feed_option_name( $feed );
220
  $limit = isset( $_REQUEST['limit'] ) ? absint( $_REQUEST['limit'] ) : 200;
221
  $getConfig = maybe_unserialize( get_option( 'wf_config' . $feed ) );
222
+
223
  if ( woo_feed_wc_version_check( 3.2 ) ) {
224
  if ( woo_feed_is_debugging_enabled() ) {
225
  // clear log, set the pointer to the beginning of the file.
237
  do_action( 'after_woo_feed_get_product_information', $getConfig );
238
  woo_feed_log_feed_process( $getConfig['filename'], sprintf( 'Total %d product found', is_array( $ids ) && ! empty( $ids ) ? count( $ids ) : 0 ) );
239
  if ( is_array( $ids ) && ! empty( $ids ) ) {
240
+ rsort( $ids ); // sorting ids in descending order
241
  if ( count( $ids ) > $limit ) {
242
  $batches = array_chunk( $ids, $limit );
243
  } else {
245
  }
246
  woo_feed_log_feed_process( $getConfig['filename'], sprintf( 'Total %d batches', count( $batches ) ) );
247
  wp_send_json_success(
248
+ array(
249
  'product' => $batches,
250
  'total' => count( $ids ),
251
  'success' => true,
252
+ )
253
  );
254
  wp_die();
255
  } else {
256
  wp_send_json_error(
257
+ array(
258
  'message' => esc_html__( 'No products found. Add product or change feed config before generate the feed.', 'woo-feed' ),
259
  'success' => false,
260
+ )
261
  );
262
  wp_die();
263
  }
268
  woo_feed_log_fatal_error( $message, $e );
269
  }
270
  wp_send_json_error(
271
+ array(
272
  'message' => esc_html__( 'Failed to fetch products.', 'woo-feed' ),
273
  'success' => false,
274
+ )
275
  );
276
  wp_die();
277
  }
282
  if ( $products->publish > 0 ) {
283
  $data['success'] = true;
284
  wp_send_json_success(
285
+ array(
286
  'product' => $products->publish,
287
  'success' => false,
288
+ )
289
  );
290
  wp_die();
291
  } else {
292
  wp_send_json_error(
293
+ array(
294
  'message' => esc_html__( 'No products found. Add product or change feed config before generate the feed.', 'woo-feed' ),
295
  'success' => false,
296
+ )
297
  );
298
  wp_die();
299
  }
304
  add_action( 'wp_ajax_make_batch_feed', 'woo_feed_make_batch_feed' );
305
  /**
306
  * Ajax Batch Callback
307
+ *
308
  * @return void
309
  */
310
  function woo_feed_make_batch_feed() {
318
  wp_send_json_error( esc_html__( 'Invalid Request.', 'woo-feed' ) );
319
  die();
320
  }
321
+
322
  $feedName = woo_feed_extract_feed_option_name( sanitize_text_field( wp_unslash( $_REQUEST['feed'] ) ) );
323
  $feedInfo = get_option( 'wf_config' . $feedName, false );
324
+
325
  if ( ! $feedInfo ) {
326
  $getFeedConfig = maybe_unserialize( get_option( 'wf_feed_' . $feedName ) );
327
  $feedInfo = $getFeedConfig['feedrules'];
328
  }
329
+
330
+ $feedInfo['productIds'] = isset( $_REQUEST['products'] ) ? array_map( 'absint', $_REQUEST['products'] ) : array();
331
  $offset = isset( $_REQUEST['loop'] ) ? absint( $_REQUEST['loop'] ) : 0;
332
  if ( woo_feed_is_debugging_enabled() ) {
333
  if ( 0 === $offset ) {
342
  woo_feed_log_feed_process( $feedInfo['filename'], $m );
343
  }
344
  }
345
+
346
  if ( 0 === $offset ) {
347
  woo_feed_unlink_tempFiles( $feedInfo, $feedName );
348
  }
350
  if ( $feed_data ) {
351
  woo_feed_log_feed_process( $feedInfo['filename'], sprintf( 'Done Processing Loop %d.', ( $offset + 1 ) ) );
352
  wp_send_json_success(
353
+ array(
354
  'success' => true,
355
  'products' => 'yes',
356
+ )
357
  );
358
  } else {
359
  woo_feed_log_feed_process( $feedInfo['filename'], sprintf( 'No Products found @ Loop %d.', $offset ) );
360
  wp_send_json_success(
361
+ array(
362
  'success' => true,
363
  'products' => 'no',
364
  'config' => $feedInfo,
365
+ )
366
  );
367
  }
368
  wp_die();
372
  add_action( 'wp_ajax_save_feed_file', 'woo_feed_save_feed_file' );
373
  /**
374
  * Ajax Response for Save Feed File
375
+ *
376
  * @throws Exception
377
  * @return void
378
  */
387
  wp_send_json_error( esc_html__( 'Invalid Feed.', 'woo-feed' ) );
388
  die();
389
  }
390
+
391
  $feedName = woo_feed_extract_feed_option_name( sanitize_text_field( wp_unslash( $_REQUEST['feed'] ) ) );
392
  $info = get_option( 'wf_config' . $feedName, false );
393
+
394
  if ( ! $info ) {
395
  $getFeedConfig = maybe_unserialize( get_option( 'wf_feed_' . $feedName ) );
396
+ $info = $getFeedConfig['feedrules'];
397
  }
398
+
399
  $feedService = $info['provider'];
400
  $type = $info['feedType'];
401
  woo_feed_log_feed_process( $info['filename'], sprintf( 'Preparing Final Feed (%s) File...', $type ) );
413
  woo_feed_log_feed_process( $info['filename'], 'Unable to Get Footer Chunk' );
414
  }
415
 
416
+ // make file xml string
417
+ if ( isset( $info['provider'] ) && 'googlereview' === $info['provider'] ) {
418
+ // review template xml string
419
+ $string = $feedHeader . $feedBody . $feedFooter;
420
+
421
+ } else {
422
+ if ( 'csv' === $type || 'tsv' === $type || 'xls' === $type ) {
423
+ $csvHead[0] = $feedHeader;
424
+ if ( ! empty( $csvHead ) && ! empty( $feedBody ) ) {
425
+ $string = array_merge( $csvHead, $feedBody );
426
+ } else {
427
+ $string = array();
428
+ }
429
+ } else {
430
+ $string = $feedHeader . $feedBody . $feedFooter;
431
+ }
432
+ }
433
+
434
  $upload_dir = wp_get_upload_dir();
435
  $path = $upload_dir['basedir'] . '/woo-feed/' . $feedService . '/' . $type;
436
  $saveFile = false;
437
+ $file = '';
438
  // Check If any products founds
439
  if ( $string && ! empty( $string ) ) {
440
  // Save File
443
  $save = new Woo_Feed_Savefile();
444
  if ( 'csv' === $type || 'tsv' === $type || 'xls' === $type ) {
445
  $saveFile = $save->saveValueFile( $path, $file, $string, $info, $type );
446
+ } else {
447
  $saveFile = $save->saveFile( $path, $file, $string );
448
  }
449
  if ( $saveFile ) {
460
  } else {
461
  woo_feed_log_feed_process( $info['filename'], 'No Product Found... Exiting File Save Process...' );
462
  if ( isset( $info['fattribute'] ) && count( $info['fattribute'] ) ) {
463
+ $data = array(
464
  'success' => false,
465
  'message' => esc_html__( 'Products not found with your filtering condition.', 'woo-feed' ),
466
+ );
467
  } else {
468
+ $data = array(
469
  'success' => false,
470
  'message' => esc_html__( 'No Product Found with your feed configuration. Please Update And Generate the feed again.', 'woo-feed' ),
471
+ );
472
  }
473
  wp_send_json_error( $data );
474
  wp_die();
475
  }
476
+
477
  $feed_URL = woo_feed_get_file_url( $feedName, $feedService, $type );
478
  // Save Info into database.
479
+ $feedInfo = array(
480
  'feedrules' => $info,
481
  'url' => $feed_URL,
482
+ 'last_updated' => date( 'Y-m-d H:i:s', strtotime( current_time( 'mysql' ) ) ),
483
  );
484
  $feedOldInfo = maybe_unserialize( get_option( 'wf_feed_' . $feedName ) );
485
  if ( isset( $feedOldInfo['status'] ) ) {
487
  } else {
488
  $feedInfo['status'] = 1;
489
  }
490
+
491
  woo_feed_unlink_tempFiles( $info, $feedName );
492
+
493
  woo_feed_log_feed_process( $info['filename'], 'Updating Feed Information.' );
494
+
495
  update_option( 'wf_feed_' . $feedName, serialize( $feedInfo ), false ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize
496
+
497
  if ( $saveFile ) {
498
  // FTP File Upload Info
499
  $ftpEnabled = sanitize_text_field( $info['ftpenabled'] );
500
+
501
  if ( $ftpEnabled ) {
502
  woo_feed_handle_file_transfer( $file, $feedName . '.' . $type, $info );
503
  }
504
+
505
+ $cat = woo_feed_check_google_category( $feedInfo );
506
+ $data = array(
507
  'info' => $feedInfo,
508
  'url' => $feed_URL,
509
  'cat' => $cat,
549
  woo_feed_log_feed_process( $info['filename'], sprintf( 'Initializing merchant Class %s for %s', $feedService, $info['provider'] ) );
550
  $feed = $products->getProducts();
551
  if ( ! empty( $feed['body'] ) ) {
552
+ $feedBody = 'wf_store_feed_body_info_' . $feedSlug;
553
+ $prevFeed = woo_feed_get_batch_feed_info( $feedService, $type, $feedBody );
554
  if ( $prevFeed ) {
555
  if ( 'csv' === $type || 'tsv' === $type || 'xls' === $type ) {
556
  if ( ! empty( $prevFeed ) ) {
594
  wp_die( esc_html__( 'Failed security check', 'woo-feed' ), 403 );
595
  }
596
  // Check feed type (file ext).
597
+ if ( ! woo_feed_check_valid_extension( sanitize_text_field( wp_unslash( $_POST['feedType'] ) ) ) ) {
598
  wp_die( esc_html__( 'Invalid Feed Type!', 'woo-feed' ), 400 );
599
  }
600
+
601
  $fileName = woo_feed_save_feed_config_data( $_POST );
602
+
603
  wp_safe_redirect(
604
  add_query_arg(
605
+ array(
606
  'feed_created' => (int) false !== $fileName,
607
  'feed_regenerate' => 1,
608
  'feed_name' => $fileName ? $fileName : '',
609
+ ),
610
  admin_url( 'admin.php?page=webappick-manage-feeds' )
611
  )
612
  );
613
+ wp_die();
 
 
614
  }
615
+
616
+ require WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-admin-display.php';
617
  }
618
  }
619
  if ( ! function_exists( 'woo_feed_manage_feed' ) ) {
625
  // @TODO use admin_post_ action for form handling.
626
  // Manage action for category mapping.
627
  if ( isset( $_GET['action'] ) && 'edit-feed' === $_GET['action'] ) {
628
+ if ( ! defined( 'WOO_FEED_EDIT_CONFIG' ) ) {
629
+ define( 'WOO_FEED_EDIT_CONFIG', true );
630
+ }
631
  if ( count( $_POST ) && isset( $_POST['provider'], $_POST['feed_id'], $_POST['feed_option_name'], $_POST['filename'], $_POST['feedType'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
632
  $nonce = isset( $_POST['_wpnonce'] ) && ! empty( $_POST['_wpnonce'] ) ? sanitize_text_field( wp_unslash( $_POST['_wpnonce'] ) ) : '';
633
  if ( ! wp_verify_nonce( $nonce, 'wf_edit_feed' ) ) {
637
  if ( ! woo_feed_check_valid_extension( sanitize_text_field( wp_unslash( $_POST['feedType'] ) ) ) ) {
638
  wp_die( esc_html__( 'Invalid Feed Type!', 'woo-feed' ), 400 );
639
  }
640
+
641
+ // check if name is changed... save as new, rename feed isn't implemented ... it can be...
642
+ // delete old feed save data as new feed.
643
+ $feed_option_name = ( isset( $_POST['feed_option_name'] ) && ! empty( $_POST['feed_option_name'] ) ) ? sanitize_text_field( wp_unslash( $_POST['feed_option_name'] ) ) : null;
644
+ // if ( $_POST['filename'] !== $_POST['feed_option_name'] ) {
645
+ // $feed_option_name = ( isset( $_POST['filename'] ) && ! empty( $_POST['filename'] ) ) ? sanitize_text_field( $_POST['filename'] ) : null;
646
+ // Delete old feed info & file
647
+ // delete_option( 'wf_feed_' . $_POST['feed_option_name'] );
648
+ // delete_option( 'wf_config' . $_POST['feed_option_name'] );
649
+ //
650
+ // $upload_dir = wp_get_upload_dir();
651
+ // $feedService = $_POST['provider'];
652
+ // $type = $_POST['feedType'];
653
+ // $old_name = $_POST['feed_option_name'];
654
+ // $path = $upload_dir['basedir'] . '/woo-feed/' . $feedService . '/' . $type . '/' . $old_name . '.' . $type;
655
+ // if ( file_exists( $path ) ) {
656
+ // unlink( $path );
657
+ // }
658
+ // }
 
659
  // if form submitted via $_POST['edit-feed'] then only config and regenerate otherwise only update the config...
660
  // no need to check other submit button ... eg. $_POST['save_feed_config']
661
  $fileName = woo_feed_save_feed_config_data( $_POST, $feed_option_name, isset( $_POST['edit-feed'] ) );
663
  // @TODO this should be handled in admin_init action for proper redirection to work...
664
  wp_safe_redirect(
665
  add_query_arg(
666
+ array(
667
  'feed_updated' => (int) false !== $fileName,
668
  'feed_regenerate' => (int) isset( $_POST['edit-feed'] ),
669
  'feed_name' => $fileName ? $fileName : '',
670
+ ),
671
  admin_url( 'admin.php?page=webappick-manage-feeds' )
672
  )
673
  );
703
  if ( update_option( 'wf_schedule', sanitize_text_field( wp_unslash( $_POST['wf_schedule'] ) ), false ) ) {
704
  wp_clear_scheduled_hook( 'woo_feed_update' );
705
  add_filter( 'cron_schedules', 'Woo_Feed_installer::cron_schedules' ); // phpcs:ignore
706
+ // wp_schedule_event( time(), 'woo_feed_corn', 'woo_feed_update' );
707
  $update = 1; // success.
708
  } else {
709
  $update = 2; // db fail.
714
  } else {
715
  $update = 4; // invalid nonce.
716
  }
717
+ wp_safe_redirect( add_query_arg( array( 'schedule_updated' => $update ), admin_url( 'admin.php?page=webappick-manage-feeds' ) ) );
718
  die();
719
  }
720
  require WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-manage-list.php';
728
  add_action( 'wp_ajax_get_feed_merchant', 'feed_merchant_view' );
729
  /**
730
  * Ajax response for Create/Add Feed config table for selected Merchant/Provider
731
+ *
732
  * @return void
733
  */
734
  function feed_merchant_view() {
744
  wp_send_json_error( esc_html__( 'Invalid Merchant', 'woo-feed' ) );
745
  wp_die();
746
  }
747
+ $merchant = new Woo_Feed_Merchant( $provider );
748
+ $feedRules = $merchant->get_template();
749
  $wooFeedDropDown = new Woo_Feed_Dropdown();
750
  ob_start();
751
  require_once WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-edit-tabs.php';
752
+ wp_send_json_success(
753
+ array(
754
+ 'tabs' => ob_get_clean(),
755
+ 'feedType' => strtolower( $merchant->get_feed_types( true ) ),
756
+ 'itemsWrapper' => $feedRules['itemsWrapper'],
757
+ 'itemWrapper' => $feedRules['itemWrapper'],
758
+ 'delimiter' => $feedRules['delimiter'],
759
+ 'enclosure' => $feedRules['enclosure'],
760
+ 'extraHeader' => $feedRules['extraHeader'],
761
+ )
762
+ );
763
  wp_die();
764
  }
765
  }
768
  add_action( 'wp_ajax_get_google_categories', 'woo_feed_get_google_categories' );
769
  /**
770
  * Ajax Response for Google Category Dropdown Data
771
+ *
772
  * @return void
773
  */
774
  function woo_feed_get_google_categories() {
788
  add_action( 'wp_ajax_get_ssh2_status', 'woo_feed_get_ssh2_status' );
789
  /**
790
  * Ajax Response for ssh2 status check
791
+ *
792
  * @return void
793
  */
794
  function woo_feed_get_ssh2_status() {
814
  add_action( 'wp_ajax_update_feed_status', 'woo_feed_update_feed_status' );
815
  /**
816
  * Ajax Response for Update Feed Status
817
+ *
818
  * @return void
819
  */
820
  function woo_feed_update_feed_status() {
830
  $feedInfo = maybe_unserialize( get_option( $feedName ) );
831
  $feedInfo['status'] = isset( $_POST['status'] ) && 1 === (int) $_POST['status'] ? 1 : 0;
832
 
833
+ $feed_slug = str_replace( 'wf_feed_', 'wf_config', $feedName );
834
  if ( 1 === $feedInfo['status'] ) {
835
+ if ( ! wp_next_scheduled( 'woo_feed_update_single_feed', array( $feed_slug ) ) ) {
836
+ wp_schedule_event( time(), 'woo_feed_corn', 'woo_feed_update_single_feed', array( $feed_slug ) );
837
+ }
838
+ } else {
839
+ wp_clear_scheduled_hook( 'woo_feed_update_single_feed', array( $feed_slug ) );
840
+ }
841
 
842
  update_option( $feedName, serialize( $feedInfo ), false ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize
843
  wp_send_json_success( array( 'status' => true ) );
850
 
851
  // Render and handle status page options.
852
  if ( ! function_exists( 'woo_feed_system_status' ) ) {
853
+ /**
854
+ * Feed Status Page
855
+ *
856
+ * @return void
857
+ */
858
+ function woo_feed_system_status() {
859
+ require WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-status.php';
860
+ }
861
  }
862
 
863
  // Render and handle settings page options.
864
  if ( ! function_exists( 'woo_feed_config_feed' ) ) {
865
  /**
866
  * Feed Settings Page
867
+ *
868
  * @return void
869
  */
870
+ function woo_feed_config_feed() {
871
  if ( isset( $_POST['wa_woo_feed_config'], $_POST['_wpnonce'] ) ) {
872
  check_admin_referer( 'woo-feed-config' );
873
+
874
+ $data = array(
875
+ 'per_batch' => isset( $_POST['batch_limit'] ) ? absint( $_POST['batch_limit'] ) : '',
876
+ 'product_query_type' => isset( $_POST['product_query_type'] ) ? sanitize_text_field( wp_unslash( $_POST['product_query_type'] ) ) : '',
877
+ 'enable_error_debugging' => isset( $_POST['enable_error_debugging'] ) ? sanitize_text_field( wp_unslash( $_POST['enable_error_debugging'] ) ) : '',
878
+ 'cache_ttl' => isset( $_POST['cache_ttl'] ) ? absint( $_POST['cache_ttl'] ) : '',
879
+ 'overridden_structured_data' => isset( $_POST['overridden_structured_data'] ) ? sanitize_text_field( wp_unslash( $_POST['overridden_structured_data'] ) ) : '',
880
+ 'disable_mpn' => isset( $_POST['disable_mpn'] ) ? sanitize_text_field( wp_unslash( $_POST['disable_mpn'] ) ) : '',
881
+ 'disable_brand' => isset( $_POST['disable_brand'] ) ? sanitize_text_field( wp_unslash( $_POST['disable_brand'] ) ) : '',
882
+ 'disable_pixel' => isset( $_POST['disable_pixel'] ) ? sanitize_text_field( wp_unslash( $_POST['disable_pixel'] )) : '',
883
+ 'pixel_id' => isset( $_POST['pixel_id'] ) ? sanitize_text_field( wp_unslash( $_POST['pixel_id'] )) : '',
884
+ 'allow_all_shipping' => isset( $_POST['allow_all_shipping'] ) ? sanitize_text_field( wp_unslash( $_POST['allow_all_shipping'] ) ) : '',
885
+ 'only_free_shipping' => isset( $_POST['only_free_shipping'] ) ? sanitize_text_field( wp_unslash( $_POST['only_free_shipping'] ) ) : '',
886
+ 'only_local_pickup_shipping' => isset( $_POST['only_local_pickup_shipping'] ) ? sanitize_text_field( wp_unslash( $_POST['only_local_pickup_shipping'] ) ) : '',
887
+ );
888
+
889
  woo_feed_save_options( $data );
890
 
891
+ // $currencyAPI = isset( $_POST['currency_api_code'] ) ? sanitize_text_field( $_POST['currency_api_code'] ) : '';
892
+ // update_option( 'woo_feed_currency_api_code', $currencyAPI, false );
893
+
894
  if ( isset( $_POST['opt_in'] ) && 'on' === $_POST['opt_in'] ) {
895
  WooFeedWebAppickAPI::getInstance()->trackerOptIn();
896
  } else {
903
  if ( isset( $_POST['purge_feed_cache'] ) ) {
904
  woo_feed_flush_cache_data();
905
  }
906
+
907
  wp_safe_redirect( admin_url( 'admin.php?page=webappick-feed-settings&settings_updated=1' ) );
908
  die();
909
  }
910
+
911
  require WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-settings.php';
912
  }
913
  }
914
  if ( ! function_exists( 'woo_feed_flash_cache_action' ) ) {
915
+ /**
916
+ * Flash cache after specific actions
917
+ *
918
+ * @return void
919
+ */
920
+ function woo_feed_flash_cache_action() {
921
+ woo_feed_flush_cache_data();
922
+ }
923
  }
924
 
925
+ // add_action('woocommerce_after_add_attribute_fields','woo_feed_flash_cache_action');
926
+ // add_action('woocommerce_after_edit_attribute_fields','woo_feed_flash_cache_action');
927
 
928
 
929
  // Suggest other plugins of webappick.
930
+ if ( ! class_exists( 'webappick_suggest_plugin' ) ) {
931
+ class webappick_suggest_plugin {
932
+
933
+ static function init() {
934
+ if ( is_admin() ) {
935
+ add_filter( 'install_plugins_table_api_args_featured', array( __CLASS__, 'featured_plugins_tab' ) );
936
+ }
937
+ } // init
938
+ // add our plugins to recommended list
939
+ static function plugins_api_result( $res, $action, $args ) {
940
+ remove_filter( 'plugins_api_result', array( __CLASS__, 'plugins_api_result' ), 10, 1 );
941
+ $res = self::add_plugin_favs( 'webappick-pdf-invoice-for-woocommerce', $res );
942
+ return $res;
943
+ } // plugins_api_result
944
+ // helper function for adding plugins to fav list
945
+ static function featured_plugins_tab( $args ) {
946
+ add_filter( 'plugins_api_result', array( __CLASS__, 'plugins_api_result' ), 10, 3 );
947
+ return $args;
948
+ } // featured_plugins_tab
949
+ // add single plugin to list of favs
950
+ static function add_plugin_favs( $plugin_slug, $res ) {
951
+ if ( ! empty( $res->plugins ) && is_array( $res->plugins ) ) {
952
+ foreach ( $res->plugins as $plugin ) {
953
+ if ( is_object( $plugin ) && ! empty( $plugin->slug ) && $plugin->slug === $plugin_slug ) {
954
+ return $res;
955
+ }
956
+ } // foreach
957
+ }
958
+ $plugin_info = get_transient( 'wf-plugin-info-' . $plugin_slug );
959
+ if ( $plugin_info ) {
960
+ array_unshift( $res->plugins, $plugin_info );
961
+ } else {
962
+ $plugin_info = plugins_api(
963
+ 'plugin_information',
964
+ array(
965
+ 'slug' => $plugin_slug,
966
+ 'is_ssl' => is_ssl(),
967
+ 'fields' => array(
968
+ 'banners' => true,
969
+ 'reviews' => true,
970
+ 'downloaded' => true,
971
+ 'active_installs' => true,
972
+ 'icons' => true,
973
+ 'short_description' => true,
974
+ ),
975
+ )
976
+ );
977
+ if ( ! is_wp_error( $plugin_info ) ) {
978
+ $res->plugins[] = $plugin_info;
979
+ set_transient( 'wf-plugin-info-' . $plugin_slug, $plugin_info, DAY_IN_SECONDS * 7 );
980
+ }
981
+ }
982
+ return $res;
983
+ } // add_plugin_favs
984
+ }
985
+ add_action( 'init', array( 'webappick_suggest_plugin', 'init' ) );
986
  }
987
 
988
  register_deactivation_hook( __FILE__, 'woo_feed_deactivate' );
989
  if ( ! function_exists( 'woo_feed_deactivate' ) ) {
990
+ /**
991
+ * Flash cache purged after plugin deactivation
992
+ *
993
+ * @return void
994
+ */
995
+ function woo_feed_deactivate() {
996
+ woo_feed_flush_cache_data(); // clean caches.
997
+ }
998
  }
999
 
1000