Version Description
Mar 12 2021 = * Fix: Show response for all AJAX forms #2.
Download this release
Release Info
Developer | glomberg |
Plugin | Spam protection, AntiSpam, FireWall by CleanTalk |
Version | 5.153.6 |
Comparing to | |
See all releases |
Code changes from version 5.153.5 to 5.153.6
- cleantalk.php +40 -31
- js/apbct-public.min.js +1 -1
- js/apbct-public.min.js.map +1 -1
- readme.txt +4 -1
cleantalk.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Anti-Spam by CleanTalk
|
4 |
Plugin URI: https://cleantalk.org
|
5 |
Description: Max power, all-in-one, no Captcha, premium anti-spam plugin. No comment spam, no registration spam, no contact spam, protects any WordPress forms.
|
6 |
-
Version: 5.153.
|
7 |
Author: СleanTalk <welcome@cleantalk.org>
|
8 |
Author URI: https://cleantalk.org
|
9 |
Text Domain: cleantalk-spam-protect
|
@@ -909,38 +909,47 @@ function ct_sfw_update( $api_key = '', $immediate = false ){
|
|
909 |
);
|
910 |
} else {
|
911 |
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
|
924 |
-
|
925 |
-
|
926 |
-
|
927 |
-
|
928 |
-
|
929 |
-
|
930 |
-
|
931 |
-
|
932 |
-
|
933 |
-
|
934 |
-
|
935 |
-
|
936 |
-
|
937 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
938 |
|
939 |
-
|
940 |
-
|
|
|
941 |
|
942 |
-
// REMOVE AND RENAME
|
943 |
-
return $result;
|
944 |
}
|
945 |
}else
|
946 |
return $result;
|
3 |
Plugin Name: Anti-Spam by CleanTalk
|
4 |
Plugin URI: https://cleantalk.org
|
5 |
Description: Max power, all-in-one, no Captcha, premium anti-spam plugin. No comment spam, no registration spam, no contact spam, protects any WordPress forms.
|
6 |
+
Version: 5.153.6
|
7 |
Author: СleanTalk <welcome@cleantalk.org>
|
8 |
Author URI: https://cleantalk.org
|
9 |
Text Domain: cleantalk-spam-protect
|
909 |
);
|
910 |
} else {
|
911 |
|
912 |
+
$result = SFW::firewall_update__write_to_db__exclusions( DB::getInstance(), APBCT_TBL_FIREWALL_DATA . '_temp' );
|
913 |
+
|
914 |
+
if( empty( $result['error'] ) && is_int( $result ) ) {
|
915 |
+
|
916 |
+
$is_first_updating = strpos( $apbct->fw_stats['firewall_updating_id'], 'first' );
|
917 |
+
|
918 |
+
// REMOVE AND RENAME
|
919 |
+
// @todo We have to handle errors here
|
920 |
+
SFW::delete_main_data_tables( DB::getInstance() );
|
921 |
+
// @todo We have to handle errors here
|
922 |
+
SFW::rename_data_tables( DB::getInstance() );
|
923 |
+
|
924 |
+
//Files array is empty update sfw stats
|
925 |
+
$apbct->data['last_firewall_updated'] = current_time('timestamp'); // Unused
|
926 |
+
$apbct->save('data'); // Unused
|
927 |
+
$apbct->fw_stats['firewall_update_percent'] = 0;
|
928 |
+
$apbct->fw_stats['firewall_updating_id'] = null;
|
929 |
+
$apbct->save( 'fw_stats' );
|
930 |
+
|
931 |
+
//Files array is empty update sfw time
|
932 |
+
$apbct->stats['sfw']['entries'] = $wpdb->get_var('SELECT COUNT(*) FROM ' . APBCT_TBL_FIREWALL_DATA );
|
933 |
+
$apbct->stats['sfw']['last_update_time'] = time();
|
934 |
+
$apbct->save('stats');
|
935 |
+
|
936 |
+
// Running sfw update once again in 12 min if entries is < 4000
|
937 |
+
if( $is_first_updating !== false ) {
|
938 |
+
if( $apbct->stats['sfw']['entries'] < 4000 ) {
|
939 |
+
wp_schedule_single_event( time() + 720, 'ct_sfw_update' );
|
940 |
+
}
|
941 |
+
delete_option( 'sfw_sync_first' );
|
942 |
+
}
|
943 |
+
|
944 |
+
// Delete update errors
|
945 |
+
$apbct->error_delete( 'sfw_update', 'save_settings' );
|
946 |
+
|
947 |
+
return $result;
|
948 |
|
949 |
+
} else {
|
950 |
+
return array( 'error' => 'SFW_UPDATE: EXCLUSIONS: ' . $result['error'] );
|
951 |
+
}
|
952 |
|
|
|
|
|
953 |
}
|
954 |
}else
|
955 |
return $result;
|
js/apbct-public.min.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
function ctSetCookie(e,t){document.cookie=e+"="+encodeURIComponent(t)+"; path=/; samesite=lax"}function apbct_collect_visible_fields(e){var t,n=[],o="",i=0,a=[];for(t in e.elements)isNaN(+t)||(n[t]=e.elements[t]);return(n=n.filter(function(e){return"none"!==getComputedStyle(e).display&&"hidden"!==getComputedStyle(e).visibility&&"0"!==getComputedStyle(e).opacity&&"hidden"!==e.getAttribute("type")&&"submit"!==e.getAttribute("type")&&null!==e.getAttribute("name")&&-1===a.indexOf(e.getAttribute("name"))&&(i++,-1===["radio","checkbox"].indexOf(e.getAttribute("type"))||(a.push(e.getAttribute("name")),!1))})).forEach(function(e,t,n){o+=" "+e.getAttribute("name")}),{visible_fields:o=o.trim(),visible_fields_count:i}}function apbct_visible_fields_set_cookie(e){e="object"==typeof e&&null!==e?e:{};ctSetCookie("apbct_visible_fields",JSON.stringify(e))}function apbct_js_keys__set_input_value(e,t,n,o){var i;null!==document.getElementById(n.input_name)&&(i=document.getElementById(n.input_name).value,document.getElementById(n.input_name).value=document.getElementById(n.input_name).value.replace(i,e.js_key))}function apbct_public_sendAJAX(t,n,o){var i=n.callback||null,a=n.callback_context||null,c=n.callback_params||null,e=n.async||!0,s=n.notJson||null,l=n.timeout||15e3,o=o||null,r=n.button||null,u=n.spinner||null,p=n.progressbar||null,d=n.silent||null,m=n.no_nonce||null;"string"==typeof t?t=(t=!m?t+"&_ajax_nonce="+ctPublic._ajax_nonce:t)+"&no_cache="+Math.random():(m||(t._ajax_nonce=ctPublic._ajax_nonce),t.no_cache=Math.random()),r&&(r.setAttribute("disabled","disabled"),r.style.cursor="not-allowed"),u&&jQuery(u).css("display","inline"),jQuery.ajax({type:"POST",url:ctPublic._ajax_url,data:t,async:e,success:function(e){r&&(r.removeAttribute("disabled"),r.style.cursor="pointer"),u&&jQuery(u).css("display","none"),(e=!s?JSON.parse(e):e).error?(setTimeout(function(){p&&p.fadeOut("slow")},1e3),alert("Error happens: "+(e.error||"Unkown"))):i&&(c?i.apply(a,c.concat(e,t,n,o)):i(e,t,n,o))},error:function(e,t,n){r&&(r.removeAttribute("disabled"),r.style.cursor="pointer"),u&&jQuery(u).css("display","none"),n&&!d&&(console.log("APBCT_AJAX_ERROR"),console.log(e),console.log(t),console.log("Anti-spam by Cleantalk plugin error: "+n+"Please, contact Cleantalk tech support https://wordpress.org/support/plugin/cleantalk-spam-protect/"),alert("Anti-spam by Cleantalk plugin error: "+n+"Please, contact Cleantalk tech support https://wordpress.org/support/plugin/cleantalk-spam-protect/"))},timeout:l})}!function(){var e=new Date,t=(new Date).getTime(),n=!0,o=[],i=0;function a(e,t,n){"function"==typeof window.addEventListener?e.addEventListener(t,n):e.attachEvent(t,n)}function c(e,t,n){"function"==typeof window.removeEventListener?e.removeEventListener(t,n):e.detachEvent(t,n)}ctSetCookie("ct_ps_timestamp",Math.floor((new Date).getTime()/1e3)),ctSetCookie("ct_fkp_timestamp","0"),ctSetCookie("ct_pointer_data","0"),ctSetCookie("ct_timezone","0"),setTimeout(function(){ctSetCookie("ct_timezone",e.getTimezoneOffset()/60*-1)},1e3);var s=function(e){ctSetCookie("ct_fkp_timestamp",Math.floor((new Date).getTime()/1e3)),c(window,"mousedown",s),c(window,"keydown",s)},l=setInterval(function(){n=!0},150),r=setInterval(function(){ctSetCookie("ct_pointer_data",JSON.stringify(o))},1200),u=function(e){!0===n&&(o.push([Math.round(e.clientY),Math.round(e.clientX),Math.round((new Date).getTime()-t)]),n=!1,50<=++i&&(c(window,"mousemove",u),clearInterval(l),clearInterval(r)))};a(window,"mousemove",u),a(window,"mousedown",s),a(window,"keydown",s),a(window,"DOMContentLoaded",function(){ctSetCookie("apbct_visible_fields",0),setTimeout(function(){for(var e={},t=0;t<document.forms.length;t++){var n=document.forms[t];n.classList.contains("slp_search_form")||n.parentElement.classList.contains("mec-booking")||-1!==n.action.toString().indexOf("activehosted.com")||n.id&&"caspioform"==n.id||n.name.classList&&n.name.classList.contains("tinkoffPayRow")||(e[t]=apbct_collect_visible_fields(n),n.onsubmit_prev=n.onsubmit,n.onsubmit=function(e){var t={};t[0]=apbct_collect_visible_fields(this),apbct_visible_fields_set_cookie(t),e.target.onsubmit_prev instanceof Function&&setTimeout(function(){e.target.onsubmit_prev.call(e.target,e)},500)})}apbct_visible_fields_set_cookie(e)},1e3)})}();var accessor=Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype,"responseText");Object.defineProperty(XMLHttpRequest.prototype,"responseText",{get:function(){return apbct_showBlockedResponse(this.response),accessor.get.call(this)},configurable:!0}),apbct_parseJSON=function(e){try{var t=JSON.parse(e)}catch(e){return!1}return t},apbct_showBlockedResponse=function(e){var t;return
|
2 |
//# sourceMappingURL=apbct-public.min.js.map
|
1 |
+
function ctSetCookie(e,t){document.cookie=e+"="+encodeURIComponent(t)+"; path=/; samesite=lax"}function apbct_collect_visible_fields(e){var t,n=[],o="",i=0,a=[];for(t in e.elements)isNaN(+t)||(n[t]=e.elements[t]);return(n=n.filter(function(e){return"none"!==getComputedStyle(e).display&&"hidden"!==getComputedStyle(e).visibility&&"0"!==getComputedStyle(e).opacity&&"hidden"!==e.getAttribute("type")&&"submit"!==e.getAttribute("type")&&null!==e.getAttribute("name")&&-1===a.indexOf(e.getAttribute("name"))&&(i++,-1===["radio","checkbox"].indexOf(e.getAttribute("type"))||(a.push(e.getAttribute("name")),!1))})).forEach(function(e,t,n){o+=" "+e.getAttribute("name")}),{visible_fields:o=o.trim(),visible_fields_count:i}}function apbct_visible_fields_set_cookie(e){e="object"==typeof e&&null!==e?e:{};ctSetCookie("apbct_visible_fields",JSON.stringify(e))}function apbct_js_keys__set_input_value(e,t,n,o){var i;null!==document.getElementById(n.input_name)&&(i=document.getElementById(n.input_name).value,document.getElementById(n.input_name).value=document.getElementById(n.input_name).value.replace(i,e.js_key))}function apbct_public_sendAJAX(t,n,o){var i=n.callback||null,a=n.callback_context||null,c=n.callback_params||null,e=n.async||!0,s=n.notJson||null,l=n.timeout||15e3,o=o||null,r=n.button||null,u=n.spinner||null,p=n.progressbar||null,d=n.silent||null,m=n.no_nonce||null;"string"==typeof t?t=(t=!m?t+"&_ajax_nonce="+ctPublic._ajax_nonce:t)+"&no_cache="+Math.random():(m||(t._ajax_nonce=ctPublic._ajax_nonce),t.no_cache=Math.random()),r&&(r.setAttribute("disabled","disabled"),r.style.cursor="not-allowed"),u&&jQuery(u).css("display","inline"),jQuery.ajax({type:"POST",url:ctPublic._ajax_url,data:t,async:e,success:function(e){r&&(r.removeAttribute("disabled"),r.style.cursor="pointer"),u&&jQuery(u).css("display","none"),(e=!s?JSON.parse(e):e).error?(setTimeout(function(){p&&p.fadeOut("slow")},1e3),alert("Error happens: "+(e.error||"Unkown"))):i&&(c?i.apply(a,c.concat(e,t,n,o)):i(e,t,n,o))},error:function(e,t,n){r&&(r.removeAttribute("disabled"),r.style.cursor="pointer"),u&&jQuery(u).css("display","none"),n&&!d&&(console.log("APBCT_AJAX_ERROR"),console.log(e),console.log(t),console.log("Anti-spam by Cleantalk plugin error: "+n+"Please, contact Cleantalk tech support https://wordpress.org/support/plugin/cleantalk-spam-protect/"),alert("Anti-spam by Cleantalk plugin error: "+n+"Please, contact Cleantalk tech support https://wordpress.org/support/plugin/cleantalk-spam-protect/"))},timeout:l})}!function(){var e=new Date,t=(new Date).getTime(),n=!0,o=[],i=0;function a(e,t,n){"function"==typeof window.addEventListener?e.addEventListener(t,n):e.attachEvent(t,n)}function c(e,t,n){"function"==typeof window.removeEventListener?e.removeEventListener(t,n):e.detachEvent(t,n)}ctSetCookie("ct_ps_timestamp",Math.floor((new Date).getTime()/1e3)),ctSetCookie("ct_fkp_timestamp","0"),ctSetCookie("ct_pointer_data","0"),ctSetCookie("ct_timezone","0"),setTimeout(function(){ctSetCookie("ct_timezone",e.getTimezoneOffset()/60*-1)},1e3);var s=function(e){ctSetCookie("ct_fkp_timestamp",Math.floor((new Date).getTime()/1e3)),c(window,"mousedown",s),c(window,"keydown",s)},l=setInterval(function(){n=!0},150),r=setInterval(function(){ctSetCookie("ct_pointer_data",JSON.stringify(o))},1200),u=function(e){!0===n&&(o.push([Math.round(e.clientY),Math.round(e.clientX),Math.round((new Date).getTime()-t)]),n=!1,50<=++i&&(c(window,"mousemove",u),clearInterval(l),clearInterval(r)))};a(window,"mousemove",u),a(window,"mousedown",s),a(window,"keydown",s),a(window,"DOMContentLoaded",function(){ctSetCookie("apbct_visible_fields",0),setTimeout(function(){for(var e={},t=0;t<document.forms.length;t++){var n=document.forms[t];n.classList.contains("slp_search_form")||n.parentElement.classList.contains("mec-booking")||-1!==n.action.toString().indexOf("activehosted.com")||n.id&&"caspioform"==n.id||n.name.classList&&n.name.classList.contains("tinkoffPayRow")||(e[t]=apbct_collect_visible_fields(n),n.onsubmit_prev=n.onsubmit,n.onsubmit=function(e){var t={};t[0]=apbct_collect_visible_fields(this),apbct_visible_fields_set_cookie(t),e.target.onsubmit_prev instanceof Function&&setTimeout(function(){e.target.onsubmit_prev.call(e.target,e)},500)})}apbct_visible_fields_set_cookie(e)},1e3)})}();var accessor=Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype,"responseText");Object.defineProperty(XMLHttpRequest.prototype,"responseText",{get:function(){return apbct_showBlockedResponse(this.response),accessor.get.call(this)},configurable:!0}),apbct_parseJSON=function(e){try{var t=JSON.parse(e)}catch(e){return!1}return t},apbct_showBlockedResponse=function(e){var t;return(e=apbct_parseJSON(e))&&void 0!==e.apbct&&(e=e.apbct).blocked&&(document.dispatchEvent(new CustomEvent("apbctAjaxBockAlert",{bubbles:!0,detail:{message:e.comment}})),(t=document.createElement("div")).setAttribute("id","apbct-result"),t.style.display="none",t.innerHTML=e.comment,document.body.append(t),cleantalkModal.open("apbct-result"),1==+e.stop_script&&window.stop()),!0};
|
2 |
//# sourceMappingURL=apbct-public.min.js.map
|
js/apbct-public.min.js.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"file":"apbct-public.min.js","sources":["apbct-public.js"],"sourcesContent":["(function() {\n\n\tvar ct_date = new Date(),\n\t\tctTimeMs = new Date().getTime(),\n\t\tctMouseEventTimerFlag = true, //Reading interval flag\n\t\tctMouseData = [],\n\t\tctMouseDataCounter = 0;\n\n\tfunction apbct_attach_event_handler(elem, event, callback){\n\t\tif(typeof window.addEventListener === \"function\") elem.addEventListener(event, callback);\n\t\telse elem.attachEvent(event, callback);\n\t}\n\n\tfunction apbct_remove_event_handler(elem, event, callback){\n\t\tif(typeof window.removeEventListener === \"function\") elem.removeEventListener(event, callback);\n\t\telse elem.detachEvent(event, callback);\n\t}\n\n\tctSetCookie(\"ct_ps_timestamp\", Math.floor(new Date().getTime()/1000));\n\tctSetCookie(\"ct_fkp_timestamp\", \"0\");\n\tctSetCookie(\"ct_pointer_data\", \"0\");\n\tctSetCookie(\"ct_timezone\", \"0\");\n\n\tsetTimeout(function(){\n\t\tctSetCookie(\"ct_timezone\", ct_date.getTimezoneOffset()/60*(-1));\n\t},1000);\n\n\t//Writing first key press timestamp\n\tvar ctFunctionFirstKey = function output(event){\n\t\tvar KeyTimestamp = Math.floor(new Date().getTime()/1000);\n\t\tctSetCookie(\"ct_fkp_timestamp\", KeyTimestamp);\n\t\tctKeyStopStopListening();\n\t};\n\n\t//Reading interval\n\tvar ctMouseReadInterval = setInterval(function(){\n\t\tctMouseEventTimerFlag = true;\n\t}, 150);\n\n\t//Writting interval\n\tvar ctMouseWriteDataInterval = setInterval(function(){\n\t\tctSetCookie(\"ct_pointer_data\", JSON.stringify(ctMouseData));\n\t}, 1200);\n\n\t//Logging mouse position each 150 ms\n\tvar ctFunctionMouseMove = function output(event){\n\t\tif(ctMouseEventTimerFlag === true){\n\n\t\t\tctMouseData.push([\n\t\t\t\tMath.round(event.clientY),\n\t\t\t\tMath.round(event.clientX),\n\t\t\t\tMath.round(new Date().getTime() - ctTimeMs)\n\t\t\t]);\n\n\t\t\tctMouseDataCounter++;\n\t\t\tctMouseEventTimerFlag = false;\n\t\t\tif(ctMouseDataCounter >= 50){\n\t\t\t\tctMouseStopData();\n\t\t\t}\n\t\t}\n\t};\n\n\t//Stop mouse observing function\n\tfunction ctMouseStopData(){\n\t\tapbct_remove_event_handler(window, \"mousemove\", ctFunctionMouseMove);\n\t\tclearInterval(ctMouseReadInterval);\n\t\tclearInterval(ctMouseWriteDataInterval);\n\t}\n\n\t//Stop key listening function\n\tfunction ctKeyStopStopListening(){\n\t\tapbct_remove_event_handler(window, \"mousedown\", ctFunctionFirstKey);\n\t\tapbct_remove_event_handler(window, \"keydown\", ctFunctionFirstKey);\n\t}\n\n\tapbct_attach_event_handler(window, \"mousemove\", ctFunctionMouseMove);\n\tapbct_attach_event_handler(window, \"mousedown\", ctFunctionFirstKey);\n\tapbct_attach_event_handler(window, \"keydown\", ctFunctionFirstKey);\n\n\t// Ready function\n\tfunction apbct_ready(){\n\n\t\tctSetCookie(\"apbct_visible_fields\", 0);\n\n\t\tsetTimeout(function(){\n\n\t\t\tvar visible_fields_collection = {};\n\n\t\t\tfor(var i = 0; i < document.forms.length; i++){\n\t\t\t\tvar form = document.forms[i];\n\n\t\t\t\t//Exclusion for forms\n\t\t\t\tif (\n\t\t\t\t\tform.classList.contains('slp_search_form') || //StoreLocatorPlus form\n\t\t\t\t\tform.parentElement.classList.contains('mec-booking') ||\n\t\t\t\t\tform.action.toString().indexOf('activehosted.com') !== -1 || // Active Campaign\n\t\t\t\t\t(form.id && form.id == 'caspioform') || //Caspio Form\n\t\t\t\t\tform.name.classList && form.name.classList.contains('tinkoffPayRow') //TinkoffPayForm\n\t\t\t\t)\n\t\t\t\t\tcontinue;\n\n\t\t\t\tvisible_fields_collection[i] = apbct_collect_visible_fields( form );\n\n\t\t\t\tform.onsubmit_prev = form.onsubmit;\n\t\t\t\tform.onsubmit = function (event) {\n\n\t\t\t\t\tvar visible_fields = {};\n\t\t\t\t\tvisible_fields[0] = apbct_collect_visible_fields(this);\n\t\t\t\t\tapbct_visible_fields_set_cookie( visible_fields );\n\n\t\t\t\t\t// Call previous submit action\n\t\t\t\t\tif (event.target.onsubmit_prev instanceof Function) {\n\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\tevent.target.onsubmit_prev.call(event.target, event);\n\t\t\t\t\t\t}, 500);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tapbct_visible_fields_set_cookie( visible_fields_collection );\n\n\t\t}, 1000);\n\t}\n\tapbct_attach_event_handler(window, \"DOMContentLoaded\", apbct_ready);\n\n}());\n\nfunction ctSetCookie(c_name, value) {\n\tdocument.cookie = c_name + \"=\" + encodeURIComponent(value) + \"; path=/; samesite=lax\";\n}\n\nfunction apbct_collect_visible_fields( form ) {\n\n\t// Get only fields\n\tvar inputs = [],\n\t\tinputs_visible = '',\n\t\tinputs_visible_count = 0,\n\t\tinputs_with_duplicate_names = [];\n\n\tfor(var key in form.elements){\n\t\tif(!isNaN(+key))\n\t\t\tinputs[key] = form.elements[key];\n\t}\n\n\t// Filter fields\n\tinputs = inputs.filter(function(elem){\n\n\t\t// Filter fields\n\t\tif( getComputedStyle(elem).display === \"none\" || // hidden\n\t\t\tgetComputedStyle(elem).visibility === \"hidden\" || // hidden\n\t\t\tgetComputedStyle(elem).opacity === \"0\" || // hidden\n\t\t\telem.getAttribute(\"type\") === \"hidden\" || // type == hidden\n\t\t\telem.getAttribute(\"type\") === \"submit\" || // type == submit\n\t\t\t//elem.value === \"\" || // empty value\n\t\t\telem.getAttribute('name') === null ||\n\t\t\tinputs_with_duplicate_names.indexOf( elem.getAttribute('name') ) !== -1 // name already added\n\t\t){\n\t\t\treturn false;\n\t\t}\n\n\t\t// Visible fields count\n\t\tinputs_visible_count++;\n\n\t\t// Filter inputs with same names for type == radio\n\t\tif( -1 !== ['radio', 'checkbox'].indexOf( elem.getAttribute(\"type\") )){\n\t\t\tinputs_with_duplicate_names.push( elem.getAttribute('name') );\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t});\n\n\t// Visible fields\n\tinputs.forEach(function(elem, i, elements){\n\t\tinputs_visible += \" \" + elem.getAttribute(\"name\");\n\t});\n\tinputs_visible = inputs_visible.trim();\n\n\treturn {\n\t\tvisible_fields : inputs_visible,\n\t\tvisible_fields_count : inputs_visible_count,\n\t}\n\n}\n\nfunction apbct_visible_fields_set_cookie( visible_fields_collection ) {\n\n\tvar collection = typeof visible_fields_collection === 'object' && visible_fields_collection !== null ? visible_fields_collection : {};\n\n\tctSetCookie(\"apbct_visible_fields\", JSON.stringify( collection ) );\n\n}\n\nfunction apbct_js_keys__set_input_value(result, data, params, obj){\n\tif (document.getElementById(params.input_name) !== null) {\n\t\tvar ct_input_value = document.getElementById(params.input_name).value;\n\t\tdocument.getElementById(params.input_name).value = document.getElementById(params.input_name).value.replace(ct_input_value, result.js_key);\n\t}\n}\nfunction apbct_public_sendAJAX(data, params, obj){\n\n\t// Default params\n\tvar callback = params.callback || null;\n\tvar callback_context = params.callback_context || null;\n\tvar callback_params = params.callback_params || null;\n\tvar async = params.async || true;\n\tvar notJson = params.notJson || null;\n\tvar timeout = params.timeout || 15000;\n\tvar obj = obj || null;\n\tvar button = params.button || null;\n\tvar spinner = params.spinner || null;\n\tvar progressbar = params.progressbar || null;\n\tvar silent = params.silent || null;\n\tvar no_nonce = params.no_nonce || null;\n\n\tif(typeof (data) === 'string') {\n\t\tif( ! no_nonce )\n\t\t\tdata = data + '&_ajax_nonce=' + ctPublic._ajax_nonce;\n\t\tdata = data + '&no_cache=' + Math.random()\n\t} else {\n\t\tif( ! no_nonce )\n\t\t\tdata._ajax_nonce = ctPublic._ajax_nonce;\n\t\tdata.no_cache = Math.random();\n\t}\n\t// Button and spinner\n\tif(button) {button.setAttribute('disabled', 'disabled'); button.style.cursor = 'not-allowed'; }\n\tif(spinner) jQuery(spinner).css('display', 'inline');\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\turl: ctPublic._ajax_url,\n\t\tdata: data,\n\t\tasync: async,\n\t\tsuccess: function(result){\n\t\t\tif(button){ button.removeAttribute('disabled'); button.style.cursor = 'pointer'; }\n\t\t\tif(spinner) jQuery(spinner).css('display', 'none');\n\t\t\tif(!notJson) result = JSON.parse(result);\n\t\t\tif(result.error){\n\t\t\t\tsetTimeout(function(){ if(progressbar) progressbar.fadeOut('slow'); }, 1000);\n\t\t\t\talert('Error happens: ' + (result.error || 'Unkown'));\n\t\t\t}else{\n\t\t\t\tif(callback) {\n\t\t\t\t\tif (callback_params)\n\t\t\t\t\t\tcallback.apply( callback_context, callback_params.concat( result, data, params, obj ) );\n\t\t\t\t\telse\n\t\t\t\t\t\tcallback(result, data, params, obj);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\terror: function(jqXHR, textStatus, errorThrown){\n\t\t\tif(button){ button.removeAttribute('disabled'); button.style.cursor = 'pointer'; }\n\t\t\tif(spinner) jQuery(spinner).css('display', 'none');\n\t\t\tif( errorThrown && ! silent ) {\n\t\t\t\tconsole.log('APBCT_AJAX_ERROR');\n\t\t\t\tconsole.log(jqXHR);\n\t\t\t\tconsole.log(textStatus);\n\t\t\t\tconsole.log('Anti-spam by Cleantalk plugin error: ' + errorThrown + 'Please, contact Cleantalk tech support https://wordpress.org/support/plugin/cleantalk-spam-protect/');\n\t\t\t\talert('Anti-spam by Cleantalk plugin error: ' + errorThrown + 'Please, contact Cleantalk tech support https://wordpress.org/support/plugin/cleantalk-spam-protect/');\n\t\t\t}\n\t\t},\n\t\ttimeout: timeout,\n\t});\n}\n\n// Capturing responses and output block message for unknown AJAX forms\nvar accessor = Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype, 'responseText');\nObject.defineProperty(XMLHttpRequest.prototype, 'responseText', {\n\n\tget: function(){\n\t\tapbct_showBlockedResponse( this.response );\n\t\treturn accessor.get.call(this);\n\t},\n\tconfigurable: true\n\n});\n\napbct_parseJSON = function( string ){\n\ttry{\n\t\tvar result = JSON.parse( string );\n\t}catch( e ){\n\t\treturn false;\n\t}\n\treturn result;\n};\n\napbct_showBlockedResponse = function( response ){\n\n\tvar response = apbct_parseJSON( response );\n\n\tif (response !== false && typeof response.apbct !== 'undefined') {\n\t\tresponse = response.apbct;\n\t\tif (response.blocked) {\n\t\t\tdocument.dispatchEvent(\n\t\t\t\tnew CustomEvent( \"apbctAjaxBockAlert\", {\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tdetail: { message: response.comment }\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\t// Create hidden element contains result.\n\t\t\tvar apbct_result = document.createElement( 'div' );\n\t\t\tapbct_result.setAttribute( 'id', 'apbct-result' );\n\t\t\tapbct_result.style.display = 'none';\n\t\t\tapbct_result.innerHTML = response.comment;\n\t\t\tdocument.body.append( apbct_result );\n\n\t\t\t// Show the element\n\t\t\tcleantalkModal.open('apbct-result');\n\n\t\t\tif(+response.stop_script == 1)\n\t\t\t\twindow.stop();\n\t\t}\n\t}\n\n\treturn true;\n\n};"],"names":["ctSetCookie","c_name","value","document","cookie","encodeURIComponent","apbct_collect_visible_fields","form","key","inputs","inputs_visible","inputs_visible_count","inputs_with_duplicate_names","elements","isNaN","filter","elem","getComputedStyle","display","visibility","opacity","getAttribute","indexOf","push","forEach","i","visible_fields","trim","visible_fields_count","apbct_visible_fields_set_cookie","visible_fields_collection","collection","JSON","stringify","apbct_js_keys__set_input_value","result","data","params","obj","ct_input_value","getElementById","input_name","replace","js_key","apbct_public_sendAJAX","callback","callback_context","callback_params","async","notJson","timeout","button","spinner","progressbar","silent","no_nonce","ctPublic","_ajax_nonce","Math","random","no_cache","setAttribute","style","cursor","jQuery","css","ajax","type","url","_ajax_url","success","removeAttribute","parse","error","setTimeout","fadeOut","alert","apply","concat","jqXHR","textStatus","errorThrown","console","log","ct_date","Date","ctTimeMs","getTime","ctMouseEventTimerFlag","ctMouseData","ctMouseDataCounter","apbct_attach_event_handler","event","window","addEventListener","attachEvent","apbct_remove_event_handler","removeEventListener","detachEvent","floor","getTimezoneOffset","ctFunctionFirstKey","ctMouseReadInterval","setInterval","ctMouseWriteDataInterval","ctFunctionMouseMove","round","clientY","clientX","clearInterval","forms","length","classList","contains","parentElement","action","toString","id","name","onsubmit_prev","onsubmit","this","target","Function","call","accessor","Object","getOwnPropertyDescriptor","XMLHttpRequest","prototype","defineProperty","get","apbct_showBlockedResponse","response","configurable","apbct_parseJSON","string","e","apbct_result","apbct","blocked","dispatchEvent","CustomEvent","bubbles","detail","message","comment","createElement","innerHTML","body","append","cleantalkModal","open","stop_script","stop"],"mappings":"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"}
|
1 |
+
{"version":3,"file":"apbct-public.min.js","sources":["apbct-public.js"],"sourcesContent":["(function() {\n\n\tvar ct_date = new Date(),\n\t\tctTimeMs = new Date().getTime(),\n\t\tctMouseEventTimerFlag = true, //Reading interval flag\n\t\tctMouseData = [],\n\t\tctMouseDataCounter = 0;\n\n\tfunction apbct_attach_event_handler(elem, event, callback){\n\t\tif(typeof window.addEventListener === \"function\") elem.addEventListener(event, callback);\n\t\telse elem.attachEvent(event, callback);\n\t}\n\n\tfunction apbct_remove_event_handler(elem, event, callback){\n\t\tif(typeof window.removeEventListener === \"function\") elem.removeEventListener(event, callback);\n\t\telse elem.detachEvent(event, callback);\n\t}\n\n\tctSetCookie(\"ct_ps_timestamp\", Math.floor(new Date().getTime()/1000));\n\tctSetCookie(\"ct_fkp_timestamp\", \"0\");\n\tctSetCookie(\"ct_pointer_data\", \"0\");\n\tctSetCookie(\"ct_timezone\", \"0\");\n\n\tsetTimeout(function(){\n\t\tctSetCookie(\"ct_timezone\", ct_date.getTimezoneOffset()/60*(-1));\n\t},1000);\n\n\t//Writing first key press timestamp\n\tvar ctFunctionFirstKey = function output(event){\n\t\tvar KeyTimestamp = Math.floor(new Date().getTime()/1000);\n\t\tctSetCookie(\"ct_fkp_timestamp\", KeyTimestamp);\n\t\tctKeyStopStopListening();\n\t};\n\n\t//Reading interval\n\tvar ctMouseReadInterval = setInterval(function(){\n\t\tctMouseEventTimerFlag = true;\n\t}, 150);\n\n\t//Writting interval\n\tvar ctMouseWriteDataInterval = setInterval(function(){\n\t\tctSetCookie(\"ct_pointer_data\", JSON.stringify(ctMouseData));\n\t}, 1200);\n\n\t//Logging mouse position each 150 ms\n\tvar ctFunctionMouseMove = function output(event){\n\t\tif(ctMouseEventTimerFlag === true){\n\n\t\t\tctMouseData.push([\n\t\t\t\tMath.round(event.clientY),\n\t\t\t\tMath.round(event.clientX),\n\t\t\t\tMath.round(new Date().getTime() - ctTimeMs)\n\t\t\t]);\n\n\t\t\tctMouseDataCounter++;\n\t\t\tctMouseEventTimerFlag = false;\n\t\t\tif(ctMouseDataCounter >= 50){\n\t\t\t\tctMouseStopData();\n\t\t\t}\n\t\t}\n\t};\n\n\t//Stop mouse observing function\n\tfunction ctMouseStopData(){\n\t\tapbct_remove_event_handler(window, \"mousemove\", ctFunctionMouseMove);\n\t\tclearInterval(ctMouseReadInterval);\n\t\tclearInterval(ctMouseWriteDataInterval);\n\t}\n\n\t//Stop key listening function\n\tfunction ctKeyStopStopListening(){\n\t\tapbct_remove_event_handler(window, \"mousedown\", ctFunctionFirstKey);\n\t\tapbct_remove_event_handler(window, \"keydown\", ctFunctionFirstKey);\n\t}\n\n\tapbct_attach_event_handler(window, \"mousemove\", ctFunctionMouseMove);\n\tapbct_attach_event_handler(window, \"mousedown\", ctFunctionFirstKey);\n\tapbct_attach_event_handler(window, \"keydown\", ctFunctionFirstKey);\n\n\t// Ready function\n\tfunction apbct_ready(){\n\n\t\tctSetCookie(\"apbct_visible_fields\", 0);\n\n\t\tsetTimeout(function(){\n\n\t\t\tvar visible_fields_collection = {};\n\n\t\t\tfor(var i = 0; i < document.forms.length; i++){\n\t\t\t\tvar form = document.forms[i];\n\n\t\t\t\t//Exclusion for forms\n\t\t\t\tif (\n\t\t\t\t\tform.classList.contains('slp_search_form') || //StoreLocatorPlus form\n\t\t\t\t\tform.parentElement.classList.contains('mec-booking') ||\n\t\t\t\t\tform.action.toString().indexOf('activehosted.com') !== -1 || // Active Campaign\n\t\t\t\t\t(form.id && form.id == 'caspioform') || //Caspio Form\n\t\t\t\t\tform.name.classList && form.name.classList.contains('tinkoffPayRow') //TinkoffPayForm\n\t\t\t\t)\n\t\t\t\t\tcontinue;\n\n\t\t\t\tvisible_fields_collection[i] = apbct_collect_visible_fields( form );\n\n\t\t\t\tform.onsubmit_prev = form.onsubmit;\n\t\t\t\tform.onsubmit = function (event) {\n\n\t\t\t\t\tvar visible_fields = {};\n\t\t\t\t\tvisible_fields[0] = apbct_collect_visible_fields(this);\n\t\t\t\t\tapbct_visible_fields_set_cookie( visible_fields );\n\n\t\t\t\t\t// Call previous submit action\n\t\t\t\t\tif (event.target.onsubmit_prev instanceof Function) {\n\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\tevent.target.onsubmit_prev.call(event.target, event);\n\t\t\t\t\t\t}, 500);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tapbct_visible_fields_set_cookie( visible_fields_collection );\n\n\t\t}, 1000);\n\t}\n\tapbct_attach_event_handler(window, \"DOMContentLoaded\", apbct_ready);\n\n}());\n\nfunction ctSetCookie(c_name, value) {\n\tdocument.cookie = c_name + \"=\" + encodeURIComponent(value) + \"; path=/; samesite=lax\";\n}\n\nfunction apbct_collect_visible_fields( form ) {\n\n\t// Get only fields\n\tvar inputs = [],\n\t\tinputs_visible = '',\n\t\tinputs_visible_count = 0,\n\t\tinputs_with_duplicate_names = [];\n\n\tfor(var key in form.elements){\n\t\tif(!isNaN(+key))\n\t\t\tinputs[key] = form.elements[key];\n\t}\n\n\t// Filter fields\n\tinputs = inputs.filter(function(elem){\n\n\t\t// Filter fields\n\t\tif( getComputedStyle(elem).display === \"none\" || // hidden\n\t\t\tgetComputedStyle(elem).visibility === \"hidden\" || // hidden\n\t\t\tgetComputedStyle(elem).opacity === \"0\" || // hidden\n\t\t\telem.getAttribute(\"type\") === \"hidden\" || // type == hidden\n\t\t\telem.getAttribute(\"type\") === \"submit\" || // type == submit\n\t\t\t//elem.value === \"\" || // empty value\n\t\t\telem.getAttribute('name') === null ||\n\t\t\tinputs_with_duplicate_names.indexOf( elem.getAttribute('name') ) !== -1 // name already added\n\t\t){\n\t\t\treturn false;\n\t\t}\n\n\t\t// Visible fields count\n\t\tinputs_visible_count++;\n\n\t\t// Filter inputs with same names for type == radio\n\t\tif( -1 !== ['radio', 'checkbox'].indexOf( elem.getAttribute(\"type\") )){\n\t\t\tinputs_with_duplicate_names.push( elem.getAttribute('name') );\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t});\n\n\t// Visible fields\n\tinputs.forEach(function(elem, i, elements){\n\t\tinputs_visible += \" \" + elem.getAttribute(\"name\");\n\t});\n\tinputs_visible = inputs_visible.trim();\n\n\treturn {\n\t\tvisible_fields : inputs_visible,\n\t\tvisible_fields_count : inputs_visible_count,\n\t}\n\n}\n\nfunction apbct_visible_fields_set_cookie( visible_fields_collection ) {\n\n\tvar collection = typeof visible_fields_collection === 'object' && visible_fields_collection !== null ? visible_fields_collection : {};\n\n\tctSetCookie(\"apbct_visible_fields\", JSON.stringify( collection ) );\n\n}\n\nfunction apbct_js_keys__set_input_value(result, data, params, obj){\n\tif (document.getElementById(params.input_name) !== null) {\n\t\tvar ct_input_value = document.getElementById(params.input_name).value;\n\t\tdocument.getElementById(params.input_name).value = document.getElementById(params.input_name).value.replace(ct_input_value, result.js_key);\n\t}\n}\nfunction apbct_public_sendAJAX(data, params, obj){\n\n\t// Default params\n\tvar callback = params.callback || null;\n\tvar callback_context = params.callback_context || null;\n\tvar callback_params = params.callback_params || null;\n\tvar async = params.async || true;\n\tvar notJson = params.notJson || null;\n\tvar timeout = params.timeout || 15000;\n\tvar obj = obj || null;\n\tvar button = params.button || null;\n\tvar spinner = params.spinner || null;\n\tvar progressbar = params.progressbar || null;\n\tvar silent = params.silent || null;\n\tvar no_nonce = params.no_nonce || null;\n\n\tif(typeof (data) === 'string') {\n\t\tif( ! no_nonce )\n\t\t\tdata = data + '&_ajax_nonce=' + ctPublic._ajax_nonce;\n\t\tdata = data + '&no_cache=' + Math.random()\n\t} else {\n\t\tif( ! no_nonce )\n\t\t\tdata._ajax_nonce = ctPublic._ajax_nonce;\n\t\tdata.no_cache = Math.random();\n\t}\n\t// Button and spinner\n\tif(button) {button.setAttribute('disabled', 'disabled'); button.style.cursor = 'not-allowed'; }\n\tif(spinner) jQuery(spinner).css('display', 'inline');\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\turl: ctPublic._ajax_url,\n\t\tdata: data,\n\t\tasync: async,\n\t\tsuccess: function(result){\n\t\t\tif(button){ button.removeAttribute('disabled'); button.style.cursor = 'pointer'; }\n\t\t\tif(spinner) jQuery(spinner).css('display', 'none');\n\t\t\tif(!notJson) result = JSON.parse(result);\n\t\t\tif(result.error){\n\t\t\t\tsetTimeout(function(){ if(progressbar) progressbar.fadeOut('slow'); }, 1000);\n\t\t\t\talert('Error happens: ' + (result.error || 'Unkown'));\n\t\t\t}else{\n\t\t\t\tif(callback) {\n\t\t\t\t\tif (callback_params)\n\t\t\t\t\t\tcallback.apply( callback_context, callback_params.concat( result, data, params, obj ) );\n\t\t\t\t\telse\n\t\t\t\t\t\tcallback(result, data, params, obj);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\terror: function(jqXHR, textStatus, errorThrown){\n\t\t\tif(button){ button.removeAttribute('disabled'); button.style.cursor = 'pointer'; }\n\t\t\tif(spinner) jQuery(spinner).css('display', 'none');\n\t\t\tif( errorThrown && ! silent ) {\n\t\t\t\tconsole.log('APBCT_AJAX_ERROR');\n\t\t\t\tconsole.log(jqXHR);\n\t\t\t\tconsole.log(textStatus);\n\t\t\t\tconsole.log('Anti-spam by Cleantalk plugin error: ' + errorThrown + 'Please, contact Cleantalk tech support https://wordpress.org/support/plugin/cleantalk-spam-protect/');\n\t\t\t\talert('Anti-spam by Cleantalk plugin error: ' + errorThrown + 'Please, contact Cleantalk tech support https://wordpress.org/support/plugin/cleantalk-spam-protect/');\n\t\t\t}\n\t\t},\n\t\ttimeout: timeout,\n\t});\n}\n\n// Capturing responses and output block message for unknown AJAX forms\nvar accessor = Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype, 'responseText');\nObject.defineProperty(XMLHttpRequest.prototype, 'responseText', {\n\n\tget: function(){\n\t\tapbct_showBlockedResponse( this.response );\n\t\treturn accessor.get.call(this);\n\t},\n\tconfigurable: true\n\n});\n\napbct_parseJSON = function( string ){\n\ttry{\n\t\tvar result = JSON.parse( string );\n\t}catch( e ){\n\t\treturn false;\n\t}\n\treturn result;\n};\n\napbct_showBlockedResponse = function( response ){\n\n\tvar response = apbct_parseJSON( response );\n\n\tif ( response && typeof response.apbct !== 'undefined' ) {\n\t\tresponse = response.apbct;\n\t\tif (response.blocked) {\n\t\t\tdocument.dispatchEvent(\n\t\t\t\tnew CustomEvent( \"apbctAjaxBockAlert\", {\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tdetail: { message: response.comment }\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\t// Create hidden element contains result.\n\t\t\tvar apbct_result = document.createElement( 'div' );\n\t\t\tapbct_result.setAttribute( 'id', 'apbct-result' );\n\t\t\tapbct_result.style.display = 'none';\n\t\t\tapbct_result.innerHTML = response.comment;\n\t\t\tdocument.body.append( apbct_result );\n\n\t\t\t// Show the element\n\t\t\tcleantalkModal.open('apbct-result');\n\n\t\t\tif(+response.stop_script == 1)\n\t\t\t\twindow.stop();\n\t\t}\n\t}\n\n\treturn true;\n\n};"],"names":["ctSetCookie","c_name","value","document","cookie","encodeURIComponent","apbct_collect_visible_fields","form","key","inputs","inputs_visible","inputs_visible_count","inputs_with_duplicate_names","elements","isNaN","filter","elem","getComputedStyle","display","visibility","opacity","getAttribute","indexOf","push","forEach","i","visible_fields","trim","visible_fields_count","apbct_visible_fields_set_cookie","visible_fields_collection","collection","JSON","stringify","apbct_js_keys__set_input_value","result","data","params","obj","ct_input_value","getElementById","input_name","replace","js_key","apbct_public_sendAJAX","callback","callback_context","callback_params","async","notJson","timeout","button","spinner","progressbar","silent","no_nonce","ctPublic","_ajax_nonce","Math","random","no_cache","setAttribute","style","cursor","jQuery","css","ajax","type","url","_ajax_url","success","removeAttribute","parse","error","setTimeout","fadeOut","alert","apply","concat","jqXHR","textStatus","errorThrown","console","log","ct_date","Date","ctTimeMs","getTime","ctMouseEventTimerFlag","ctMouseData","ctMouseDataCounter","apbct_attach_event_handler","event","window","addEventListener","attachEvent","apbct_remove_event_handler","removeEventListener","detachEvent","floor","getTimezoneOffset","ctFunctionFirstKey","ctMouseReadInterval","setInterval","ctMouseWriteDataInterval","ctFunctionMouseMove","round","clientY","clientX","clearInterval","forms","length","classList","contains","parentElement","action","toString","id","name","onsubmit_prev","onsubmit","this","target","Function","call","accessor","Object","getOwnPropertyDescriptor","XMLHttpRequest","prototype","defineProperty","get","apbct_showBlockedResponse","response","configurable","apbct_parseJSON","string","e","apbct_result","apbct","blocked","dispatchEvent","CustomEvent","bubbles","detail","message","comment","createElement","innerHTML","body","append","cleantalkModal","open","stop_script","stop"],"mappings":"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"}
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Tags: spam, antispam, anti-spam, comments, firewall
|
|
4 |
Requires at least: 3.0
|
5 |
Tested up to: 5.7
|
6 |
Requires PHP: 5.4
|
7 |
-
Stable tag: 5.153.
|
8 |
License: GPLv2
|
9 |
|
10 |
Spam protection, anti-spam, firewall, premium plugin. No spam comments & users, no spam contact form & WooCommerce anti-spam.
|
@@ -580,6 +580,9 @@ If your website has forms that send data to external sources, you can enable opt
|
|
580 |
|
581 |
== Changelog ==
|
582 |
|
|
|
|
|
|
|
583 |
= 5.153.5 Mar 10 2021 =
|
584 |
* Fix: Show response for all AJAX forms.
|
585 |
|
4 |
Requires at least: 3.0
|
5 |
Tested up to: 5.7
|
6 |
Requires PHP: 5.4
|
7 |
+
Stable tag: 5.153.6
|
8 |
License: GPLv2
|
9 |
|
10 |
Spam protection, anti-spam, firewall, premium plugin. No spam comments & users, no spam contact form & WooCommerce anti-spam.
|
580 |
|
581 |
== Changelog ==
|
582 |
|
583 |
+
= 5.153.6 Mar 12 2021 =
|
584 |
+
* Fix: Show response for all AJAX forms #2.
|
585 |
+
|
586 |
= 5.153.5 Mar 10 2021 =
|
587 |
* Fix: Show response for all AJAX forms.
|
588 |
|