Spam protection, AntiSpam, FireWall by CleanTalk - Version 5.170

Version Description

Jan 13 2022 =

One integration added, CleanTalk pixel functionality fixed and minor issues fixed.

  • Mod: Added Ova Login Integration. Registrations under protection
  • Fix. Common. is_trackback() notice fixed.
  • Fix: Removed the exeption for Quick Contact Form from ct_contact_form_validate()
  • Fix: Moved the function apbct_settings__get_ajax_type() to cleantalk-pluggable.php to fix the plugin activation error via the CLI
  • Fix: Fixed errors in apbct-public.js
  • Fix: Cleared notice_incompatibility if SFW disabled
  • Fix. AC. Antibot cookie fixed.
  • Fix. Pixel. Auto mode fixed.
  • Fix. JS. Checking JS via ajax fixed.
  • Fix. Pixel. Getting pixel url from backend fixed.
Download this release

Release Info

Developer glomberg
Plugin Icon 128x128 Spam protection, AntiSpam, FireWall by CleanTalk
Version 5.170
Comparing to
See all releases

Code changes from version 5.169.1 to 5.170

changelog.txt CHANGED
@@ -1,5 +1,847 @@
1
  == Changelog ==
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
  = 5.151.2 Dec 30 2020 =
5
  * Fix: Prevent skip checking UltimateMember register.
1
  == Changelog ==
2
 
3
+ = 5.169.1 Dec 29 2021 =
4
+ #### Comments protection fixed.
5
+ * Fix. Comments. Comments form without email field protection fixed.
6
+ * Fix. Pluggable. Is trackback checking function added.
7
+ * Fix. Exception arg. Not set the flag to the comments and trackbacks.
8
+ * Fix. Forms protection. Prevent handle the trackback request by contact_form_validate.
9
+
10
+ = 5.169 Dec 28 2021 =
11
+ #### Improved compatibility with Varnish cache, visible_fields cookies fixed and some minor issues fixed.
12
+ * New. Options. Set cookie option "Auto" mode added.
13
+ * New. State. New property data[cookies_type] added.
14
+ * Fix. State. Set cookie option set on "Auto" by default.
15
+ * Fix. Activation. Select ajax handler during the plugin activation.
16
+ * Fix. API. Async logic added.
17
+ * Fix. State. Varnish cache detection fixed.
18
+ * Fix. API. Method calling service_update_local_settings is async now.
19
+ * Fix. Visible fields. Prevent generating more than 10 visible fields cookies.
20
+ * Fix: Disabling the cache when activating the plugin
21
+ * Fix: Setting the parameter of ipMaskLongToNumber to an integer
22
+ * Fix: fixed error in js script
23
+
24
+ = 5.168.1 Dec 22 2021 =
25
+ #### Direct integrations protection fixed.
26
+ * Fix: Prevent logging excluded requests on the direct integrations.
27
+ * Fix: Integration. Comment type The7 integration fixed.
28
+ * Fix. Log excluded. Skip logging PopUp Builder service action.
29
+ * Fix. Log excluded. Skip logging Cleantalk Security service action.
30
+
31
+ = 5.168 Dec 16 2021 =
32
+ #### One integrations added, some skipped requests will be logged, cookies optimized and minor issues fixed.
33
+ * New. Get key. A filter to changing an email to get the key implemented.
34
+ * New. Log exclusions. Option for logging excluded request implemented.
35
+ * New. Integration. Formidable Pro integration added.
36
+ * New. Integration. Smart forms integration added.
37
+ * Upd. Get key. email_filtered parameter added.
38
+ * Upd: Antispam. Prevent skip requests without emails.
39
+ * Upd: Antispam. Prevent skip requests trusted users.
40
+ * Mod: Implementation of sending plugin settings to service_update_local_settings
41
+ * Fix. Antispam. Exception action argument fixed.
42
+ * Fix. Antispam. Preventing catch RC requests.
43
+ * Fix. Antispam. Preventing catch website search requests.
44
+ * Fix. Setting templates. Get templates only after manual getting key.
45
+ * Fix. Admin notices. Notice about getting key removed.
46
+ * Fix. Getting key. Get the right email for gathering the key.
47
+ * Fix. Exception action. Send ajax requests without email to the cloud.
48
+ * Fix. Exception action. Prevent catching admin-side requests.
49
+ * Fix. Exception action. Send ajax requests without email to the cloud.
50
+ * Fix. Exception action. Prevent catching admin-side requests.
51
+ * Fix. Log exclusions. Skip checking excepted requests if the "Log excluded requests" option is disabled.
52
+ * Fix. Antispam. Remove unnecessary cookie from requests.
53
+ * Fix. Visible fields. Collecting visible fields only for unique forms on the page.
54
+ * Fix: excluded some action for Ninja Form from spamtest.
55
+
56
+ = 5.167 Dec 06 2021 =
57
+ * Fix. Comment scanner. Scanning loop fixed.
58
+ * Fix. Comment scanner. Scan only not spam comments.
59
+ * Mod: Launching a suitable ajax handler for checking email before POST
60
+ * Upd. RC. Remote calls checking moved to the root of the main file.
61
+ * New. Activation. Hook for getting key auto added.
62
+ * Fix. Admin notices. Errors about getting key fixed.
63
+ * Fix. Visible fields. Getting visible fields collection method moved to the Cookie class
64
+ * Fix. Visible fields. Getting visible fields collection method moved
65
+ * Fix. Settings. Getting key button fixed.
66
+ * Fix: Removed ajax_type from apbct_email_check_before_post
67
+ * Fixed Ajax.php errors with apbct_email_check_before_post
68
+ * Fix: Add integration for CalculatedFieldsForm and fixed scripts
69
+
70
+ = 5.166 Nov 18 2021 =
71
+ * Fix: skip ult-forgot-password action.
72
+ * Fix: Uncanny toolkit skip.
73
+ * Fix: SFW. Clearing FW stats fixed.
74
+ * Fix: SFW. Updating fallback fixed.
75
+ * Fix: SFW. Updating FW stats fixed.
76
+ * Mod: Changed the type of verification on check_message during registration in BuddyPress
77
+ * Fix: register_settings for wp < 4.7.
78
+ * Fix: Comment scanners. Getting cookie fixed.
79
+ * Fix: check if errors exists in state.
80
+ * Fix: update sfw after enabled.
81
+ * Fix: WPMS. Settings validating fixed.
82
+ * Fix: wpforms skip remove token validation.
83
+ * Fix. Text. Feedback description fixed.
84
+ * Fix: WPMS. Delete api key from settings template used.
85
+ * Fix. Updater. Notice fixed.
86
+ * Fix: WPMS. Setting transferring to the sub sites fixed.
87
+
88
+ = 5.165.1 Nov 09 2021 =
89
+ * Fix. Settings. Saving settings fixed.
90
+
91
+ = 5.165 Nov 08 2021 =
92
+ * New: Public. Mouse moved flag implemented.
93
+ * Upd: State. Errors adding method updated.
94
+ * Upd: Settings. Errors show function updated.
95
+ * Upd: Updater. Clean errors options for new errors structure.
96
+ * Upd: Public. Cookies aggregation.
97
+ * Mod: Improving the functionality of checking comments for spam.
98
+ * Mod: CommentsChecker - updated functionality and refactoring
99
+ * Mod: merged inc/cleantalk-updater.php
100
+ * Mod: merged UpdatePlugin dir
101
+ * Mod: merged Schema.php
102
+ * Mod: merged SchemaTest.php
103
+ * Mod: merged cleantalk.php
104
+ * Mod: merged State.php, Activator.php
105
+ * Fix: SFW. Directory for FW files moved to wordpress uploads directory.
106
+ * Fix: Settings. GDPR link fixed.
107
+ * Fix: testrequesttohost error handle.
108
+ * Fix: check ctsetcookie before call.
109
+ * Fix: Settings. Save button padding fixed.
110
+ * Fix: add console.log if ctSetcookie is not defined.
111
+ * Fix: SFW. Skip if sfw not updated yet.
112
+ * Fix: change console output if apbct-public-functions.js is not loaded.
113
+ * Fix: Added secure and samesite in cookie
114
+ * Fix: Renamed field apbct_wc_honeypot to wc_apbct_email_id
115
+ * Fix.Users.Feedback about deleting user implemented.
116
+ * Fix. SFW. Deleting table fixed.
117
+ * Fix: set buffer type to string if epico theme is active.
118
+ * Fix: Integration. Jetpack contact forms hooks fixed.
119
+ * Fix: SFW. Separating the end of update stage into several stages.
120
+ * Fix: SFW. Fallback function on SFW updating errors implemented.
121
+ * Fix. Integration. WP Forms hooks fixed.
122
+ * Fix. SFW. Auto updating for new users fixed.
123
+ * Fix. Comment. Set meta fixed.
124
+ * Fix: WPMS. Settings saving fixed.
125
+
126
+ = 5.164.1 Oct 21 2021 =
127
+ * Fix. SFW. Incompatibility WP-Rocket notice removed.
128
+
129
+ = 5.164 Oct 21 2021 =
130
+ * New: Integration. UsersWP plugin integration implemented.
131
+ * New. SFW. Incompatibility WP-Rocket notice added.
132
+ * New: Settings. Advanced settings navigation implemented.
133
+ * New: Server variables. isSSL method added.
134
+ * Mod: Added the functionality of changing the mail when receiving the key during the initial installation.
135
+ * Mod: Custom admin email. Added minified js and css files
136
+ * Mod: validate api key before save settings for new accounts
137
+ * Mod: Antispam. Comments check. Send feedback with hash:01:url data only if post_info->post_url is empty.
138
+ * Fix: State. Option prefix field is public now.
139
+ * Fix: Using get_option('home') for getting the blog url instead get_option('siteurl').
140
+ * Fix: State. Magic __get notice fixed.
141
+ * Fix. State. Exclamation mark fixed.
142
+ * Fix. Common. Getting REST url fixed.
143
+ * Fix: SFW. Update percents fixed.
144
+ * Fix: DB. isTableExists method fixed.
145
+ * Fix. State. $errors field added.
146
+ * Fix: Server::getDomain(). Fixed regexp.
147
+ * Fix: skip log-in request wpstg.
148
+ * Fix: SFW. Work on hosting licenses fixed.
149
+ * Fix: set prefix_name for cleantalk-icons css.
150
+ * Fix: Helper. Hard use https for the curl requests.
151
+ * Fix: Helper. Home url slash added.
152
+ * Fix: SFW. Using direct updating if remote calls not working.
153
+ * Fix: Settings. Save button z-index added.
154
+ * Fix: Admin bar. Exclamation mark style fixed.
155
+ * Fix: Settings. Api key description on active IP license added.
156
+ * Fix: Sender info. Getting page_url on ajax/rest requests fixed.
157
+
158
+ = 5.163.1 Oct 12 2021 =
159
+ * Fix: Queue. Errors of each try fixed.
160
+ * Fix: SFW. Sleep before deleting tables was reduced.
161
+ * Fix: Queue. Accepted tries argument implemented.
162
+
163
+ = 5.163 Oct 07 2021 =
164
+ * New: State. errorExists method implemented.
165
+ * New: SFW. Disabling SFW when the database was outdated.
166
+ * New: Settings templates. Saving template to the several blogs implemented.
167
+ * New: Settings. WPMS settings always show now.
168
+ * New: WPMS. No show any sub-sites errors on wpms mode 2.
169
+ * New: WPMS. Plugin settings are disabled on sub-sites on wpms mode 2.
170
+ * Mod: Remote Calls using POST instead of GET request type.
171
+ * Mod: Helper. No cache GET parameter renamed.
172
+ * Mod: Cron. Transactions implemented #2.
173
+ * Mod: Settings. "URL Exclusions" description updated.
174
+ * Upd: Getting JS. AJAX handler type selecting updated.
175
+ * Fix: Added lost info about total comments in CommentChecker::ctAjaxInfo
176
+ * Fix: add subscriber to skip list.
177
+ * Fix: Changed the plugin name in the list of plugins when enabling White Label
178
+ * Fix: Changed the plugin name in the admin bar when enabling White Label
179
+ * Fix: Feedback. Comments feedback description fixed.
180
+ * Fix: Hide information about Security in admin bar if it is not main site.
181
+ * Fix: SFW. Error toggle used instead of error add/delete.
182
+ * Fix: Alt cookies. Selecting type of alt cookies bug fixed.
183
+ * Fix: protect logged users in gravity.
184
+ * Fix: Updated the condition for showing a link to the security installation in the admin bar.
185
+ * Fix: reverse condition for WL security link.
186
+ * Fix: WPMS. Addition WL info link fixed.
187
+ * Changed plugin name in plugin settings multisite__white_label__plugin_name.
188
+ * Fix: rename plugin name after search plugins if WL is on.
189
+ * Fix: Renamed Antispam by Cleantalk to Anti-spam by Cleantalk
190
+ * Fix: add elementor-pro to skip save action.
191
+ * Fix: WPMS. Sanitize api key during getting key fixed.
192
+ * Fix: Cron. Cron results errors handling fixed.
193
+ * Fix: WPMS. Migrate old WPMS to the new wpms mode.
194
+ * Fix: WPMS. Using main site data on wpms_mode=2.
195
+ * Fix: Helper. Hard use https for the curl requests.
196
+ * Fix: WPMS. Sanitize network settings fixed.
197
+ * Fix: WPMS. Applying settings for selected blogs fixed.
198
+ * Fix: Getting key. Sync after getting key fixed.
199
+
200
+ = 5.162 Sep 23 2021 =
201
+ * New. SFW. Fall back updating system implemented.
202
+ * New: Integration. Added honeypot wc.
203
+ * New: SFW. Added new status PASS_SFW__BY_STATUS for showing die_page.
204
+ * Upd: Cookies. Alternative cookies types was updated.
205
+ * Upd: Ajax. Finding the right WP directory implemented.
206
+ * Fix: Updater fixed.
207
+ * Fix: Firewall update. Not existing FW table.
208
+ * Fix: State. DB prefix fixed.
209
+ * Fix: WPForms. Excluding from the custom contact forms check.
210
+ * Fix. State. DB prefix definition fixed.
211
+ * Fix: SpamFirewall update. Increasing delay in queue transactions, adding time of the queue task start
212
+ * Fix: State. Show notices fixed.
213
+ * Fix: State. Some logic moved from a loop.
214
+ * Fix: Adding a error if Common/Helper::http_request() couldn't get HTTP code via get_headers().
215
+ * Fix: SFW. Do not AC checking, if cookies were disabled.
216
+ * Fix: http_request() with preset 'get_code' using GET HTTP method instead of HEAD now.
217
+ * Fix: SFW. Direct update DB errors handled.
218
+ * Fix: SFW. Direct update creating temp table errors handled.
219
+ * Fix: SpamFirewall update. SFW_IS_DISABLED is not a error. apbct_sfw_update__init() returns false in this case.
220
+ * Fix: Extended header. Cache-Control: max-age=0 in the /Common/Helper::httpRequest()
221
+ * Fix: Updater. Fixed data__use_static_js_key settings name.
222
+ * Fix: Updater. start ct_account_status_check() if main site in 5.127+ versions
223
+ * Fix: Adding error handling to DB::execute() in ApbctWP\SFW.
224
+ * Fix: Cron. Cron last start flag improved.
225
+ * Fix: Cron. Cron execution cooldown decreased to 2 min.
226
+ * Fix: Adding more info in 'Unknown' type error.
227
+ * Fix: Exclude Forminator double requests on multipage form.
228
+ * Fix: Settings. Alt cookies types validating fixed.
229
+ * Fix: Ajax. WP core dir parsing fixed.
230
+ * Fix: Settings. Ajax handler title fixed.
231
+
232
+ = 5.161.1 Sep 14 2021 =
233
+ * Fix. State. Checking empty errors fixed.
234
+
235
+ = 5.161 Sep 09 2021 =
236
+ * Fix: Cleantalk.php. dns_get_record() error handling.
237
+ * Fix: Search form integration. PHP Notice.
238
+ * Fix: Default value for "Alternative Cookie Type" setting.
239
+ * Fix: SpamFirewall. Updating percent output.
240
+ * Fix: SpamFirewall. Omit SFW_IS_DISABLED error.
241
+ * Mod: Admin-bar.
242
+ * Fix: SpamFirewall update.
243
+ * Fix: apbct_log(). Log time.
244
+ * Mod: Debug RC. Servers_connection item added.
245
+ * Mod: apbct_test_connection() moved to cleantalk.php.
246
+ * Fix: skip elementor save template.
247
+ * Fix: skip formidable base check.
248
+ * Fix: remove limit for request in delete all spam users.
249
+ * Mod: apbct_test_connection() improvements.
250
+ * Fix: Helper::http__request() timeout is 15 seconds.
251
+ * New: Helper::http__request() low speed time is 10 seconds.
252
+ * Fix: decbin int type in helper.
253
+ * Fix: add apbct_get_rest_url func.
254
+ * Fix: Error report form Cleantalk.php.
255
+ * Fix: skip sfw check if sfw not updated.
256
+ * Fix. Integration. Enfold theme saving options skip protection.
257
+ * Fix. Integration. Cartflows saving cart skip protection.
258
+ * Fix: getOption return variable.
259
+ * Fix: skip sfw if last_update_time is zero.
260
+ * Fix: skip last_update_time sfw check.
261
+ * Fix: add priority to comment_form_default_fields hook.
262
+ * New. Helper. IP detecting improved.
263
+ * Fix. Helper. Multi-curl timeout added.
264
+ * Upd. SFW. SFW block page updated.
265
+ * Upd. SFW. AC block page updated.
266
+ * Upd. Settings. SFW features settings moved to the separated block.
267
+ * Fix. SFW. Random get parameter for redirecting block page updated.
268
+ * Fix. Settings. SFW features settings description fixed.
269
+ * New: Queue. Transaction system.
270
+ * Fix: skip siteorigin pagebuilder save widget.
271
+ * New: Readme. Hide «Website» field for comments added.
272
+ * Fix. Helper. Async curl timeout increased.
273
+ * Fix. Integration. Blogvault requests skipped.
274
+ * Fix: skip classfields check_email action.
275
+ * Mod: Show real HTTP code in a error during downloading GZ file.
276
+ * Mod: Debug call extended.
277
+ * Mod: Admin notices. Added the ability to hide a banner with notifications for each individual administrator for two weeks.
278
+ * Fix. Settings. Long description output fixed.
279
+ * Fix. Settings. JS debug data removed.
280
+ * Fix. SFW. Deleting fw files folder.
281
+ * Fix: api error handle.
282
+ * Fix: SFW. Added update mode if sfw-updater works with tables.
283
+ * New. WPMS. New multisite logic implemented.
284
+ * Fix: Setting. Select field type fixed.
285
+ * Fix: Сhanged the function delete_all_options() of removing plugin options when fully uninstalled.
286
+ * Fix. WPMS. Hoster API key description fixed.
287
+ * Fix: Admin notices. get_option expression is checking more strictly.
288
+ * New: Helper. Added method for validate date format as 'Y-m-d'.
289
+ * Fix: SFW. Default FW folder fixed.
290
+ * Fix: SFW. FW folder on the first sync fixed.
291
+ * Fix: SFW. Remove wrong FW folders.
292
+ * Fix: SFW. Refactoring apbct_sfw_update__end_of_update().
293
+ * Mod: apbct_test_connection().
294
+ * Fix: /ApbctWP/API::send_request() with empty result.
295
+
296
+ = 5.160.3 Aug 31 2021 =
297
+ * New: Queue. Transaction system.
298
+ * Fix. SFW. Updating for the new clients fixed.
299
+ * Fix. SFW. Deleting UA file fixed.
300
+ * Fix. SFW. Updating via cron fixed.
301
+ * Fix. SFW. Updating process for multisite fixed.
302
+
303
+ = 5.160.2 Aug 26 2021 =
304
+ * Fix. Pixel. Auto mode fixed.
305
+
306
+ = 5.160.1 Aug 6 2021 =
307
+ * Fix: SpamFirewall update.
308
+
309
+ = 5.160 Jul 29 2021 =
310
+ * New: SFW. SFW alternative cookie implemented.
311
+ * New: SFW. AC alternative cookie implemented.
312
+ * New: SFW. AF alternative cookie implemented.
313
+ * New: Helper. Curl multi wrapper added.
314
+ * New: Queue class implemented.
315
+ * Mod: Changed the processing of the honeypot_field for standard comment.
316
+ * Mod: Added integration for Wishlist Members registration form.
317
+ * Mod: Store visited URLs amount reduces to 5 with 128 symbols by URL.
318
+ * Upd: Public js scripts separated.
319
+ * Upd: SFW. Updating process modified.
320
+ * Fix: Moderate rotating fixed.
321
+ * Fix: SFW. Process file errors handling fixed.
322
+ * Fix: Pluggable. Expression fixed.
323
+ * Fix: Ajax. User detection fixed..
324
+ * Fix: Ajax. Ajax handlers fixed.
325
+ * Fix: IP-detection for Cloudflare CDN.
326
+ * Fix: Skip test for ajax alt_session request.
327
+ * Fix: Set cookies on dashboard pages even if the setting is off.
328
+ * Fix: Ajax. Ajax class fixed.
329
+ * Fix: Users scanner. Remove redundant menu.
330
+ * Fix: Added an exception for the action edd_process_checkout Easy Didgital Downloads plugi
331
+ * Fix: SFW. Changed method for getting addr ip.
332
+ * Fix: Integration. WPForms names gathering fixed.
333
+ * Fix: SFW. Min update interval decreased to 14400 seconds.
334
+ * Fix: Integration. WPForms names gathering fixed.
335
+ * Fix: Cleantalk.php. dns_get_record() error handling.
336
+ * Fix: Search form integration. PHP Notice.
337
+ * Fix: Default value for "Alternative Cookie Type" setting.
338
+ * Fix: SpamFirewall. Omit SFW_IS_DISABLED error.
339
+ * Fix: SpamFirewall. Updating percent output.
340
+ * Fix. Settings templates. Sync after template loading.
341
+ * Fix. SFW. Updating process percents fixed.
342
+ * Fix. Antispam. All headers parameter fixed.
343
+
344
+ = 5.159.9 Jul 15 2021 =
345
+ * Fix. SFW. Updating cooldown increased up to 15 min.
346
+ * Fix. Cron. Next call time set by task updating fixed.
347
+ * Fix. SFW. Reset blacklist array before processing.
348
+ * Fix. SFW. Some errors handling fixed.
349
+ * Fix. SFW. Getting update period from dns fixed.
350
+ * Fix. Ajax. Checking nonce for logged in users fixed.
351
+
352
+ = 5.159.8 Jul 07 2021 =
353
+ * Fix: Fixed the connection error Ajax.php when the site files are in a subfolder.
354
+ * Fix. SFW. Anticrawler redirect detection fixed.
355
+ * Fix. Checking sql before the tables creating.
356
+ * Fix. Updater fixed.
357
+ * Fix: Set alt cookies if sg optimizer is enabled.
358
+ * Fix: Exclusion for GiveWP plugin in apbct-public.js. #2
359
+
360
+ = 5.159.7 Jul 01 2021 =
361
+ * Fix. Updater fixed.
362
+
363
+ = 5.159.6 Jun 30 2021 =
364
+ * New. Rest API request detecting implemented.
365
+ * Upd. SFW. AntiCrawler was disabled for the new installations.
366
+ * Upd. SFW. AntiCrawler option moved to the advanced settings section.
367
+ * Mod: email is taken only from visible fields
368
+ * Mod: remove error message about firewall updating
369
+ * Mod: excluded for test WC_Gateway_Tpay_Basic
370
+ * Fix: Added exclude for happyforms.php in apbct_is_skip_request.
371
+ * Fix: Added an error message in the form response
372
+ * Fix: Skip wpforms general requests because of direct integration.
373
+ * Fix. Integration. Autonami Marketing Automations service request kipped.
374
+ * Fix. Cron. Update task method fixed.
375
+ * Fix. SFW. Prevent updating while SFW is disabled.
376
+ * Fix. Cron. Restoring cron tasks during plugin updating.
377
+ * Fix. SFW. Logs sending used limit.
378
+ * Fix: set correct api_key value for ajax calls.
379
+ * Fix. Frontend widget. The widget layout fixed.
380
+ * Fix. Integration. Formidable preparing data for checking.
381
+
382
+ = 5.159.5 Jun 24 2021 =
383
+ * New: Admin bar. Attention mark added.
384
+ * Upd: Admin notices have been rebuilt.
385
+ * Upd: Integrations with HappyForms updated.
386
+ * Fix: Skip fluentform multistep request.
387
+ * Fix: Correct fluent_form skip name.
388
+ * Fix: Admin notices. Trial and renew notices ID attributes renamed.
389
+ * Fix: Admin bar. Trial notice font color changed.
390
+ * Fix: Admin bar. Show admin bar without api key.
391
+ * Fix: Admin bar. Show attention badge if the api key is empty.
392
+ * Fix: AC. Skip checking on 302 redirects.
393
+ * Fix: Added IF NOT EXISTS after ADD COLUMN in cleantalk-updater.php
394
+ * Fix: Removed ADD PRIMARY KEY from apbct_update_to_5_146_4
395
+ * Fix: Removed apbct_update_to_5_146_4
396
+ * Fix: Checking output parameters of API-method get_2s_blacklists_db.
397
+ * Fix: SFW. Writing exclusions fixed.
398
+ * Fix: Integration. GF names detection fixed.
399
+ * Fix: Integration. WPForms nicknames detecting fixed.
400
+ * Fix. SFW. Updating fixed.
401
+ * Fix: Excluding REST API requests from check.
402
+ * Fix. Admin notices. Incompatibility notice fixed.
403
+ * Fix. Compatibility. Notice saving fixed.
404
+ * Fix. Compatibility. Prevent disabling SFW on incompatibility detected.
405
+ * Fix. Compatibility. SFW option is no longer disabled on incompatibility detected.
406
+ * Fix. Admin bar. Reset counters fixed.
407
+
408
+ = 5.159.4 Jun 17 2021 =
409
+ * Fix: Admin bar. PHP error.
410
+
411
+ = 5.159.3 Jun 15 2021 =
412
+ * Fix: Admin bar. Conflict with previous version of Security by Cleantalk.
413
+
414
+ = 5.159.2 Jun 15 2021 =
415
+ * Fix. Renew notice banner shows only on cleantalk pages.
416
+ * Fix. SFW updating. Getting remote data error handling fixed.
417
+ * Upd. Readme updated.
418
+ * Fix. SFW. Auto-updating fixed.
419
+ * Fix: Admin bar style. Install link is no longer highlighted.
420
+ * Fix: Admin bar style. Style for security icon.
421
+ * Fix: Admin bar. Reset buttons counters leads to the same page.
422
+ * Fix. Manual register link fixed.
423
+ * Fix: do not display errors on subsites when wl is enabled.
424
+ * Fix: Admin bar. Rapid fix.
425
+ * Fix. Skipping. WPForms check restricted email request skipped.
426
+ * Fix. Helper. CURL request timeout increased.
427
+ * Fix. Comments/users checker. Description fixed.
428
+ * Fix. Get fields any. Preset nickname parameter fixed.
429
+ * Fix: wpms settings.
430
+
431
+ = 5.159.1 Jun 10 2021 =
432
+ * Fix: Cron. Cron calling in cleantalk-updater.php fixed.
433
+
434
+ = 5.159 Jun 10 2021 =
435
+ * New. Admin Bar. Common admin bar implemented.
436
+ * New: email check before post.
437
+ * New: New admin bar style.
438
+ * New. SFW. Updating integrity control implemented.
439
+ * New. Custom Ajax. Email checking before post.
440
+ * New. Custom Ajax. Getting JS key.
441
+ * New. Custom Ajax. Alternative cookies.
442
+ * Upd. Integrations. Support multiple non-ajax hooks.
443
+ * Upd. Cron. Cron class and cron usage updated.
444
+ * Upd. Pixel. Pixel setting is "auto" for the new installations.
445
+ * Upd. Users checker. Users with completed WC orders no checked.
446
+ * Upd. WPMS settings.
447
+ * Mod. limiting the size of an array top5_spam_ip to five elements in widget.
448
+ * Mod. update data__pixel title.
449
+ * Mod. Update data__use_static_js_key title.
450
+ * Mod. add 'relative' parameter in admin_url() for getting ajaxurl.
451
+ * Mod. update field name honeypot_field, reverse logic
452
+ * Mod. changed website field from comments form: type text, display none.
453
+ * Fix. resolve conflict with wiloke theme and unknown plugin, that removes standard authorization cookies.
454
+ * Fix. moved the wiloke_theme options_ajax_save_skip check to apbct_is_skip_request function.
455
+ * Fix. added a theme check along with a hook wiloke_themeoptions_ajax_save_skip.
456
+ * Fix. Integration. Essentials addons for elementor integration fixed.
457
+ * Fix. AC/AF. Clearing AC table via cron fixed.
458
+ * Fix. SFW. Obtaining the count of the networks was fixed.
459
+ * Fix. Cron. Last cron start fixed.
460
+ * Fix. cookies for login page.
461
+ * Fix. Firewall. Update. Filtering bad data.
462
+ * Fix. Custom Ajax. Localized login scripts.
463
+ * Fix. API. Cleantalk\ApbctWP\API fixed to work on SHORTINIT mode.
464
+ * Fix. Custom Ajax. Getting JS key - removed WP ajax hooks.
465
+ * Fix. GetFieldsAny. Bypassing collecting email and names logic fixed.
466
+ * Fix. New admin bar style. Sorting plugins by Alphabet.
467
+ * Fix. ct_get_admin_email return network email if set.
468
+ * Fix. Fixed the name of the key containing the file address to check the number of records.
469
+ * Fix. Comments checker. Non-checkable users tab removed.
470
+ * Fix. Visible fields. Formidable visible fields collecting fixed.
471
+ * Fix. Get fields any fixed.
472
+ * Fix. empty key error for hosting.
473
+ * Fix. WPMS. Api key saving fixed.
474
+ * Fix. WPMS. Network settings saving fixed.
475
+ * Fix. WPMS. Plugin name setting field is not required now.
476
+ * Fix. Alt sessions js fixed.
477
+
478
+ = 5.158 May 27 2021 =
479
+ * Fix: Firewall. SQL-request error.
480
+
481
+ = 5.158 May 26 2021 =
482
+ * New. Integration. WP Foro register system integration.
483
+ * New. Integration. Elementor essentials LoginRegister integration implemented.
484
+ * New: SQL-schema and updater for extended SpamFirewall logs.
485
+ * New: Extended SpamFirewall logs.
486
+ * New: Pixel.
487
+ * Mod: Few improvements to SFW update.
488
+ * Mod: add settings for hidding website field from comment form.
489
+ * Mod: Few improvements to SFW update #2.
490
+ * Mod: Possibility to send empty JSON object in API.
491
+ * Mod: Extended SpamFirewall logs for AntiCrawler module.
492
+ * Upd: SFW. Direct updating method implemented.
493
+ * Upd. Settings. Network settings templates updated.
494
+ * Upd: Firewall. Improvements to update system.
495
+ * Upd: Firewall. Improvements to update system.
496
+ * Fix: replace wp_die to die in ct_die(), refactoring ct_die()
497
+ * Fix. Forms. Exclude field wp-editor-area from collecting visible fields.
498
+ * Fix. Widget. Widget content logic fixed.
499
+ * Fix: Forms. Nicknames detecting fixed #2.
500
+ * Fix: Forms. Getting check_js key fixed.
501
+ * Fix: update ct_die_extended() as ct_die().
502
+ * Fix. Code. Getting delay before js code get if async option enabled.
503
+ * Fix. WPMU. Blog id added in settings templates list.
504
+ * Fix. Integration. Elementor essentials LoginRegister login form protection skipped.
505
+ * Fix. WPMU. Blog id added in settings templates list.
506
+ * Fix. Readme. Required PHP version increased to 5.6.
507
+ * Fix. Updater. 5_157_10 updating fixed #2.
508
+ * Fix. JS. DOMContentLoaded used instead jQuery(document).ready().
509
+ * Fix: SpamFirewall. Update. "FW UPDATE INIT: KEY_EMPTY", "SFW UPDATE INIT: KEY_IS_NOT_VALID" errors.
510
+ * Fix. Users checker. Export to the csv fixed.
511
+ * Fix: SpamFirewall. Update. Error "WRONG_UPDATE_ID".
512
+ * Fix: SpamFirewall. Update. "FW UPDATE INIT: KEY_EMPTY", "SFW UPDATE INIT: KEY_IS_NOT_VALID" errors.
513
+ * Fix: SpamFirewall. Update. Error "WRONG_UPDATE_ID".
514
+ * Fix: \Cleantalk\Common\Helper::http__request() consider only boolean false (empty string '' considering as good) as bad response.
515
+ * Fix: SpamFirewall. Update.
516
+ * Fix: SpamFirewall. Update #2.
517
+ * Fix: WPMS empty apikey in options
518
+ * Fix: "Mod: add settings for hidding website field from comment form".
519
+ * Fix: Common/Helper::http__get_headers() fixed.
520
+ * Fix: SpamFirewall admin bar counter.
521
+ * Fix: "Fix: Common/Helper::http__get_headers() fixed."
522
+ * Fix: Pixel.
523
+ * Fix: "Pixel" setting description.
524
+ * Fix: Extended SpamFirewall logs for AntiCrawler module.
525
+ * Fix: Extended SpamFirewall logs for AntiCrawler module #2.
526
+ * Fix: WPFroms. PHP notice.
527
+ * Fix: Gravity Forms. PHP notice.
528
+ * Revert: Fix: Code. get_fields_any() notice fixed.
529
+
530
+ = 5.157.2 May 05 2021 =
531
+ * Fix: Code. get_fields_any() notice fixed.
532
+ * Fix: Integration. Gravity Forms integration fixed.
533
+ * Fix: Forms. Nicknames detecting fixed.
534
+
535
+ = 5.157.1 Apr 29 2021 =
536
+ * Mod: \Cleantalk\ApbctWP\Variables\Cookie::get() now has 'cast_to' param. If defined trying to cast to a given type.
537
+ * Fix: \Cleantalk\ApbctWP\Variables\Cookie::get() calls using 'cast_to' param if needed.
538
+
539
+ = 5.157 Apr 28 2021 =
540
+ * New: Invisible fields collecting implemented.
541
+ * New: A dev and a fix version suffix support.
542
+ * New: Variables. Cookie::set() method added.
543
+ * New: Split Cleantalk\Common\DB::method__private_list_add__sfw_wl() in two Cleantalk\Common\DB::method__private_list_add() and Cleantalk\ApbctWP\DB::method__private_list_add__sfw_wl().
544
+ * New: Split Cleantalk\ApbctWP\Helper::http__request__rc_to_host() in two Cleantalk\ApbctWP\Helper::http__request__rc_to_host() and Cleantalk\ApbctWP\Helper::http__request__rc_to_host__test().
545
+ * New: Updater script for 5.157.
546
+ * New: Update/delete SpamFireWall database when it enable/disable. Improvements.
547
+ * New: \Cleantalk\ApbctWP\Variables::AltSessions class.
548
+ * New: "Set cookies" setting now has 3 options "On", "Off" and "Use alternative mechanism for cookies".
549
+ * New: REST API route '/alt_sessions' and callbacks.
550
+ * Mod: Compatibility with Thrive Leads - remove deleted the modal window about successful sending when blocking the user.
551
+ * Mod: changed the handling of gravityform fields, added a check for the visibility of the field when processing the name.
552
+ * Mod: Added a setting for Woocommerce, which includes checking the un-logged user when adding an item to the cart. If the user does not pass the verification, the product is not added to the cart.
553
+ * Mod: Added a settings for Woocommerce - correction.
554
+ * Mod: WC add to cart - change settings description.
555
+ * Mod: Cleantalk\ApbctWP\RemoteCalls::debug() improved.
556
+ * Mod: SpaFirewall update.
557
+ * Mod: add buddypress integration for user account personal data.
558
+ * Mod: Moving \Cleantalk\Common\Helper::apbct_cookie__set() to \Cleantalk\ApbctWP\Variables::set() function.
559
+ * Mod: Using \Cleantalk\ApbctWP\Variables::set() instead of \Cleantalk\Common\Helper::apbct_cookie__set().
560
+ * Mod: Extend \Cleantalk\ApbctWP\Variables to use alternative sessions.
561
+ * Mod: Using \Cleantalk\ApbctWP\Variables\AltSessions class instead of set of "apbct_alt_sessions__" functions.
562
+ * Mod: added loading of country flags from the plugin.
563
+ * Mod: added styles for the widget with anti-spam statistics.
564
+ * Mod: Improving ct_enqueue_scripts_public().
565
+ * Mod: Update for JS ctSetCookie().
566
+ * Mod: AltSessions and Cookie using 'data__set_cookies' and 'data__set_cookies' settings.
567
+ * Mod: Minified JS updated.
568
+ * Upd: Setting cookies updating.
569
+ * Upd: Setting cookies by JS updating.
570
+ * Fix: SFW. DB result handling.
571
+ * Fix: Integration. Avada theme settings saving fixed.
572
+ * Fix: Cleantalk modal. Layout fixed.
573
+ * Fix: Possible use an html on ajax forms blocking message.
574
+ * Fix: Include JS logic fixed.
575
+ * Fix: Refactoring. Collecting details about browser refactored.
576
+ * Fix: Refactoring. Alert replacing by console log on REST request handling.
577
+ * Fix: Integration. Gravity Forms integration fixed.
578
+ * Fix: ignoring the hidden fields with name if visible fields exists.
579
+ * Fix: Integration. Formidable multi-step form protection fixed.
580
+ * Fix: add max z-index for #cleantalk-modal-overlay.
581
+ * Fix: Cannot read property 'response_type' of undefined - xhr.responseJSON - undefined where action wc_add_to_cart_block.
582
+ * Fix: Helper. Set cookies method is deprecated now.
583
+ * Fix: Adding admin IP to whitelist during the login in and plugin activation.
584
+ * Fix: SpamFirewall. Don't set cookies if option is disabled.
585
+ * Fix: Sorting methods modifiers in \Cleantalk\Common\Helper and \Cleantalk\ApbctWP\Helper classes.
586
+ * Fix: Using \Cleantalk\ApbctWP\Variables\Cookies.
587
+ * Fix: A dev and a fix version suffix support.
588
+ * Fix: Adding admin IP to whitelist during the login in and plugin activation.
589
+ * Fix: New setting 'Alternative cookies handler type'.
590
+ * Fix: sender_info params.
591
+ * Fix: SpamFirewall deleting 127.0.0.1 from local base during update on local website.
592
+ * Fix: apbct_js_test() considering "Alternative cookie" setting.
593
+ * Fix: Cleantalk\ApbctWP\VariablesCookie::set() automatically set secure flag if null passed.
594
+ * Fix: Check JS via Cookie with the Alternative Cookie on.
595
+ * Fix: Automatically set "secure" param when setcookie() called.
596
+ * Fix: 'Alternative cookies handler type' setting layout.
597
+ * Fix: For legacy apbct__hook__wp_logout__delete_trial_notice_cookie().
598
+ * Fix: Cleantalk\ApbctWP\Variables::set_fromRemote(), Cleantalk\ApbctWP\Variables::get_fromRemote() fix parameter type.
599
+ * Fix: SpamFirewall add admin IP when login in or activate plugin.
600
+ * Fix: Dashboard widget. Showing default Cleantalk's flag if country not found.
601
+ * Fix: Dashboard widget. Showing 'Unknown' country name if country not found.
602
+ * Del: Unused apbct_cookie__set() function.
603
+ * Del: "Use alternative mechanism for cookies" setting.
604
+ * Del: "Use cookies less sessions" setting.
605
+
606
+ = 5.156 Apr 15 2021 =
607
+ * New: ApbctWP\RemoteCalls::action__debug().
608
+ * New: ApbctWP\Helper::http__get_data_from_remote_gz__and_parse_csv();
609
+ * New: ApbctWP\Helper::http__get_data_from_remote_gz();
610
+ * New: Update/delete SpamFireWall database when it enable/disable.
611
+ * New: \Cleantalk\Common\DNS class. Allows to get with DNS records and theirs different parameters.
612
+ * New: No cookies if disabled from frontend. Alternative cookies if enabled from frontend.
613
+ * New: \Cleantalk\ApbctWP\Variables\Cookie extends Cleantalk\Common\Variables\Cookie and automatically supports alternative cookies.
614
+ * Mod: Don't use alternative cookies for JS cookies for now.
615
+ * Mod: ApbctWP\State default data.
616
+ * Mod: Small code improvements.
617
+ * Mod: Minor code improvements.
618
+ * Mod: Using apbct_sfw_update__init instead() of ct_sfw_update().
619
+ * Mod: Updater script to 5.156.
620
+ * Upd: \Cleantalk\ApbctWP\RemoteCalls.
621
+ * Upd: *.min. files update.
622
+ * Upd: Current moderate*.cleantalk.org IP servers update.
623
+ * Refactor: SpamFireWall update.
624
+ * Fix: ApbctWP\RemoteCalls::action__sfw_update().
625
+ * Fix: \Cleantalk\Common\DNS could request specific DNS type record.
626
+ * Fix: Anti Spam. External forms protection capturing buffer fixed.
627
+ * Fix: SFW. Notices disabled on blocking pages.
628
+ * Fix: Admin ajax handler fixed - alert removed.
629
+ * Fix: No alert when error fires.
630
+ * Fix: Notice. change 'wpms__allow_custom_settings' to 'multisite__allow_custom_settings' in cleantalk-admin.php.
631
+ * Fix: Getting JS key by ajax fixed.
632
+ * Fix: No alert when AJAX fails.
633
+ * Fix: Send plugin version as parameter when apbct-public.min.js script attaching.
634
+ * Fix: The AJAX REST API error text unique.
635
+ * Fix: No alert message when AJAX (REST) error happens.
636
+ * Fix: Skip. MyListing theme service requests skip.
637
+ * Fix: \Cleantalk\ApbctWP\Helper::http__request__rc_to_host(). Considering empty response as error.
638
+ * Fix: \Cleantalk\Common\Helper::http__request(). Empty error while SFW update.
639
+ * Fix: REST API. Required parameter added.
640
+ * Fix: PHP Notices and Warnings.
641
+ * Fix: AntiCrawler UA update.
642
+ * Fix: JS and CSS minified.
643
+ * Fix: ApbctWP\State __get using &. *
644
+
645
+ = 5.155.2 Apr 6 2021 =
646
+ * Fix: Renaming setting to their original names in old update scripts.
647
+ * Fix: Ajax forms protection response fixed.
648
+ * Fix: No alert message when AJAX error happens.
649
+
650
+ = 5.155.1 Apr 2 2021 =
651
+ * Fix: Using WP Rest API.
652
+ * Rollback: Show response for all AJAX forms.
653
+
654
+ = 5.155 Mar 31 2021 =
655
+ * New: Debug. Check connection to API servers.
656
+ * New: Integration. Avada Form Builder.
657
+ * New: Integration. Forminator integration implemented.
658
+ * New: Users checker. Non-checked users tab added.
659
+ * New: SFW. Admin IP will be whitelisted automatically.
660
+ * Mod: Replace "bad" users/comments to "non-checkable".
661
+ * Mod: DisableComments. Disable all comments means disable all comments for any post type.
662
+ * Udp: Setting templates. Product ID support implemented.
663
+ * Udp: Settings. Reorder links actions buttons.
664
+ * Upd: Common. Getting check_js updated.
665
+ * Upd: SFW. Description updated.
666
+ * Fix: Reversed URL exclusions.
667
+ * Fix: Settings. Sync button success ico fixed.
668
+ * Fix: Show response for all AJAX forms #3.
669
+ * Fix: GDPR. Warning text output.
670
+ * Fix: Integration class consider settings.
671
+ * Fix: Exclusions. URL exclusions fixed.
672
+ * Fix: Services Templates. Getting templates optimized.
673
+ * Fix: Services Templates. Possible XSS fixed.
674
+ * Fix: Services Templates. Design layout fixed.
675
+ * Fix: Family of settings comments__disable_comments__* dependencies.
676
+ * Fix: DisableComments class. Media post type includes 'attachment' type.
677
+ * Fix: Exclusion for Thrive Ultimatum.
678
+ * Fix: Common/Helper::http__get_headers() ignores empty header name parts.
679
+ * Fix: Exclusion for GiveWP plugin in apbct-public.js.
680
+ * Fix: Do not consider 501 as correct HTTP response code when getting FW data files.
681
+ * Fix: AntiCrawler::update(). Correct error codes.
682
+ * Fix: ApbctWP\Firewall\SFW::update(). Correct URLs for FILE with protocol.
683
+ * Fix: PHP 8 deprecated notices.
684
+ * Fix: Settings. Reversed dependencies. Applies to WooCommerce and Disable Comments settings.
685
+ * Fix: DisableComments::template__check() returns the correct number of comments for enabled types of posts.
686
+ * Fix: DisableComments class. Visibility of some methods.
687
+ * Exception: Paid Memberships Pro - Login Form.
688
+ * Fix: Exception the SFW check for queries with '/favicon.ico' string.
689
+
690
+ = 5.154 Mar 17 2021 =
691
+ * New: Settings Templates functionality implemented.
692
+ * New: SFW. Anti-flood protection uses UA lists for filtration.
693
+ * Fix: Forms. Getting check_js delay removed.
694
+ * Fix: Forms. Rotation check_js fixed.
695
+ * Fix: Integration. Newspaper-theme login form protection skipped.
696
+ * Fix: Integration. Newspaper-theme reset password form protection skipped.
697
+ * Fix: Forms. Gravity Forms paypal addon processing skipped.
698
+ * Fix: Exclusion for wpDiscuz - Online Users Addon.
699
+ * Fix: Remote Calls. Wrapper http__request__rc_to_host() don't get an array
700
+ * Fix: JS. Modal window fixed.
701
+ * Fix: JS. Show AJAX result fixed.
702
+ * Fix: Skip. Save abandoned cart checking skip.
703
+ * Fix: Skip. SUMODISCOUNT discout request skip.
704
+ * Fix: Skip. WP eMember login form skip.
705
+ * Fix: SFW. Do not cache constants added.
706
+ * Fix: SFW. AC/AF logging fixed.
707
+
708
+ = 5.153.7 Mar 15 2021 =
709
+ * Fix: SFW. Updating fixed.
710
+
711
+ = 5.153.6 Mar 12 2021 =
712
+ * Fix: Show response for all AJAX forms #2.
713
+
714
+ = 5.153.5 Mar 10 2021 =
715
+ * Fix: Show response for all AJAX forms.
716
+
717
+ = 5.153.4 Mar 10 2021 =
718
+ * New: SFW. Log could be sent not more often than 3 minutes.
719
+ * New: SFW. Possibility to use DELETE instead of TRUNCATE to delete SFW log.
720
+ * New: Show response for all AJAX forms.
721
+ * Fix: SFW. Sending log. Committing transaction after TRUNCATE log table.
722
+ * Fix: Integration. CF7 different versions compatibility fixed.
723
+ * Fix: Exclusion for WooCommerce.
724
+ * Fix: Possible SQL-injections fixed.
725
+
726
+ = 5.153.3 Feb 25 2021 =
727
+ * Fix: Security. Preparing UA string for writing to the DB.
728
+
729
+ = 5.153.2 Feb 25 2021 =
730
+ * Fix: Integration. Registration on WICITY theme.
731
+ * Fix: Integration. Registration on Paid Memberships Pro
732
+ * Fix: IP detection.
733
+ * Fix: Error: SFW_DISABLED.
734
+ * Fix: Formidable form. Error with sophisticated field types.
735
+ * Fix: Remote Calls. Cooldown checking for the SFW update fixed.
736
+ * Fix: easy-login-woocommerce requests exclusion fixed.
737
+ * Fix: Jackmail plugin. Skip all admin-side actions.
738
+ * Fix: Remote Calls. Unused deactivation option removed.
739
+ * Fix: Users checker. Last check date fixed.
740
+ * Fix: Users checker. Total users count description fixed.
741
+
742
+ = 5.153.1 Feb 20 2021 =
743
+ * Fix: CF7. Modified spam hook #2
744
+
745
+ = 5.153 Feb 17 2021 =
746
+ * New: Integrations. WPDiscuz integration implemented.
747
+ * New: Using custom modal message instead allert.
748
+ * New: JS cleantalk-modal added.
749
+ * New: Cleantalk\ApbctWP\RemoteCalls class.
750
+ * New: Remote calls using Cleantalk\ApbctWP\RemoteCalls class.
751
+ * New: Cleantalk\ApbctWP\Helper::http__request__rc_to_host(). Wrapper to using RC to the website itself. Makes testing RC before make main.
752
+ * New: Cleantalk\ApbctWP\State::error_toggle().
753
+ * New: SFW update. Make test RC before main.
754
+ * Udp: Integrations. Support several hooks for one integration.
755
+ * Fix: Users. Feedback sending via deleting user fixed.
756
+ * Fix: Users checker. Feedback sending via deleting user fixed.
757
+ * Fix: IP detection.
758
+ * Fix: Users scan. Confirmation message fixed.
759
+ * Fix: SFW. The anti-flood option moved to the advanced settings.
760
+ * Fix: SFW. Show the right url on block page for WPMS.
761
+ * Fix: SFW. The anti-crawler option description fixed.
762
+ * Fix: SFW. The anti-flood option description fixed.
763
+ * Fix: SFW. AC checking on login page fixed.
764
+ * Fix: CF7. Modified spam hook.
765
+ * Fix: SFW. send_logs returning error.
766
+ * Fix: Cleantalk class fixed.
767
+ * Fix: Clearing errors storage before sync.
768
+ * Fix: Clearing SFW errors on updating to 5.151.6.
769
+ * Fix: Updater. Support updating for versions without fix number implemented.
770
+ * Fix: "Email Before Download" plugin request will be skipped.
771
+ * Fix: SFW. Auto-updating option fixed for multisite activation.
772
+ * Fix: Exception for Xoo login form.
773
+ * Fix: Users deleting feedback fixed.
774
+
775
+ = 5.152.5 Feb 04 2021 =
776
+ * Fix: SFW. Auto-updating interval decreased to 5 mins.
777
+ * Fix: Divi. Skip saving epanel.
778
+ * New: Find users/comments table. Add footer description.
779
+ * Fix: SFW. UA option removed.
780
+ * Fix: SFW. AC checking by UA enabled by default.
781
+ * Fix: SFW. AF disabled by default for the new installations.
782
+
783
+ = 5.152.4 Feb 01 2021 =
784
+ * Fix: Cron tasks compare fixed.
785
+
786
+ = 5.152.3 Jan 31 2021 =
787
+ * Fix: Error: SFW_DISABLED.
788
+ * Fix: Moderate connection timeout increased to 6sec.
789
+ * Fix: SFW uses the right API class.
790
+
791
+ = 5.152.2 Jan 30 2021 =
792
+ * Fix: API-requests.
793
+
794
+ = 5.152.1 Jan 29 2021 =
795
+ * Fix: Errors in IP detection.
796
+
797
+ = 5.152 Jan 29 2021 =
798
+ * Fix: Using server protocol for AC checking.
799
+ * Fix: Prevent caching db queries for SFW.
800
+ * Fix: mgm registration temp fix.
801
+ * Upd: Checking skipped request replaced.
802
+ * Fix: Bookly plugin service requests checking skipped.
803
+ * Fix: Youzier login form skipped.
804
+ * Fix: InJob theme lost password skipped.
805
+ * Upd: Showing plugin version on SFW block page.
806
+ * Fix: fix request id rotation.
807
+ * Mod: Show "Insert users" button only for local web servers.
808
+ * Upd: Checking skipped request replaced for non-ajax requests.
809
+ * Fix: BuddyPress edit profile checking skippped.
810
+ * Fix: Unused code removed.
811
+ * Upd: Helper::ip__get() method updated.
812
+ * Fix: UltimateMember password reset skipped.
813
+ * Del: Unused code removed.
814
+ * New: Server::get() now can accept 'URI' as an parameter. Returns full URI like 'http://domain.net/request/path?parameter=value#fragment
815
+ * Mod: apbct_exclusions_check__url__reversed() simplifed and PHPDoc'ed.
816
+ * Mod: apbct_base_call exclusions revised.
817
+ * Mod: $cleantalk_executed chaos simplified.
818
+ * Upd: Shedule sfw update once again if it failed.
819
+ * Fix: Delete cleantalk options via uninstalling.
820
+ * Fix: Deleting table for network sites fixed.
821
+ * Fix: Using host header for AC checking.
822
+ * Fix: Expression formatting fixed.
823
+ * Mod: Cron. Do not runs when it already runs.
824
+ * Mod: Cron class updated.
825
+
826
+ = 5.151.4 Jan 18 2021 =
827
+ * Fix: Users checking performance fix.
828
+ * Fix: AC disabled if SFW contains less than 50 entries.
829
+
830
+ = 5.151.3 Jan 15 2021 =
831
+ * Fix: Prevent logging false blocking for whitelisted networks.
832
+ * Integration: Rafflepress integration implemented.
833
+ * Fix: AF limit increased to 20 by default.
834
+ * Fix: skip Sumo waitlist internal request.
835
+ * Fix: skip raq internal request.
836
+ * Fix: check comments number if comment email exists.
837
+ * New: Schema class added.
838
+ * Fix: SFW - Creation sfw table if not exist.
839
+ * Fix: Updater - Creation sfw table if not exist.
840
+ * New: Schema class used.
841
+ * New: AC disabled if networks count is 0.
842
+ * Fix: SFW updating id getting fixed.
843
+ * Fix: SFW networks counter fixed.
844
+ * Fix: Deleting options fixed.
845
 
846
  = 5.151.2 Dec 30 2020 =
847
  * Fix: Prevent skip checking UltimateMember register.
cleantalk.php CHANGED
@@ -4,7 +4,7 @@
4
  Plugin Name: Anti-Spam by CleanTalk
5
  Plugin URI: https://cleantalk.org
6
  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.
7
- Version: 5.169.1
8
  Author: СleanTalk <welcome@cleantalk.org>
9
  Author URI: https://cleantalk.org
10
  Text Domain: cleantalk-spam-protect
@@ -154,6 +154,10 @@ function apbct_alt_session__save__WP_AJAX()
154
  add_action('wp_ajax_nopriv_apbct_js_keys__get', 'apbct_js_keys__get__ajax');
155
  add_action('wp_ajax_apbct_js_keys__get', 'apbct_js_keys__get__ajax');
156
 
 
 
 
 
157
  // Checking email before POST
158
  add_action('wp_ajax_nopriv_apbct_email_check_before_post', 'apbct_email_check_before_post');
159
 
@@ -315,6 +319,11 @@ $apbct_active_integrations = array(
315
  'setting' => 'forms__general_contact_forms_test',
316
  'ajax' => false
317
  ),
 
 
 
 
 
318
  );
319
  new \Cleantalk\Antispam\Integrations($apbct_active_integrations, (array)$apbct->settings);
320
 
@@ -1079,7 +1088,7 @@ function apbct_sfw_update__create_tables()
1079
  {
1080
  global $apbct;
1081
  // Preparing database infrastructure
1082
- // Creating SFW tables to make sure that they are exist
1083
  $db_tables_creator = new DbTablesCreator();
1084
  $table_name = $apbct->db_prefix . Schema::getSchemaTablePrefix() . 'sfw';
1085
  $db_tables_creator->createTable($table_name);
4
  Plugin Name: Anti-Spam by CleanTalk
5
  Plugin URI: https://cleantalk.org
6
  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.
7
+ Version: 5.170
8
  Author: СleanTalk <welcome@cleantalk.org>
9
  Author URI: https://cleantalk.org
10
  Text Domain: cleantalk-spam-protect
154
  add_action('wp_ajax_nopriv_apbct_js_keys__get', 'apbct_js_keys__get__ajax');
155
  add_action('wp_ajax_apbct_js_keys__get', 'apbct_js_keys__get__ajax');
156
 
157
+ // Get Pixel URL via WP ajax handler
158
+ add_action('wp_ajax_nopriv_apbct_get_pixel_url', 'apbct_get_pixel_url__ajax');
159
+ add_action('wp_ajax_apbct_apbct_get_pixel_url', 'apbct_get_pixel_url__ajax');
160
+
161
  // Checking email before POST
162
  add_action('wp_ajax_nopriv_apbct_email_check_before_post', 'apbct_email_check_before_post');
163
 
319
  'setting' => 'forms__general_contact_forms_test',
320
  'ajax' => false
321
  ),
322
+ 'OvaLogin' => array(
323
+ 'hook' => 'login_form_register',
324
+ 'setting' => 'forms__registrations_test',
325
+ 'ajax' => false
326
+ ),
327
  );
328
  new \Cleantalk\Antispam\Integrations($apbct_active_integrations, (array)$apbct->settings);
329
 
1088
  {
1089
  global $apbct;
1090
  // Preparing database infrastructure
1091
+ // Creating SFW tables to make sure that they are exists
1092
  $db_tables_creator = new DbTablesCreator();
1093
  $table_name = $apbct->db_prefix . Schema::getSchemaTablePrefix() . 'sfw';
1094
  $db_tables_creator->createTable($table_name);
inc/cleantalk-ajax-handlers.php CHANGED
@@ -37,6 +37,14 @@ function apbct_js_keys__get()
37
  apbct_js_keys__get__ajax();
38
  }
39
 
 
 
 
 
 
 
 
 
40
  function apbct_alt_session__save__AJAX()
41
  {
42
  Cleantalk\ApbctWP\Variables\AltSessions::setFromRemote();
37
  apbct_js_keys__get__ajax();
38
  }
39
 
40
+ function apbct_get_pixel_url()
41
+ {
42
+ require_once(__DIR__ . '/cleantalk-common.php');
43
+ require_once(__DIR__ . '/cleantalk-pluggable.php');
44
+ apbct_get_pixel_url__ajax();
45
+ }
46
+
47
+
48
  function apbct_alt_session__save__AJAX()
49
  {
50
  Cleantalk\ApbctWP\Variables\AltSessions::setFromRemote();
inc/cleantalk-common.php CHANGED
@@ -187,7 +187,7 @@ function apbct_base_call($params = array(), $reg_flag = false)
187
  ! empty($params['post_info']['comment_type']) &&
188
  strpos($params['post_info']['comment_type'], 'contact_form_wordpress_') === false &&
189
  ! preg_match('/comment$/', $params['post_info']['comment_type']) &&
190
- ! is_trackback()
191
  ) {
192
  $params['exception_action'] = 1;
193
  }
@@ -620,6 +620,27 @@ function apbct_js_keys__get__ajax()
620
  die(json_encode(array('js_key' => ct_get_checkjs_value())));
621
  }
622
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
623
  /**
624
  * Checking email before POST
625
  */
187
  ! empty($params['post_info']['comment_type']) &&
188
  strpos($params['post_info']['comment_type'], 'contact_form_wordpress_') === false &&
189
  ! preg_match('/comment$/', $params['post_info']['comment_type']) &&
190
+ ! apbct_is_trackback()
191
  ) {
192
  $params['exception_action'] = 1;
193
  }
620
  die(json_encode(array('js_key' => ct_get_checkjs_value())));
621
  }
622
 
623
+ function apbct_get_pixel_url__ajax($direct_call = false)
624
+ {
625
+ global $apbct;
626
+ $pixel_hash = md5(
627
+ Helper::ipGet()
628
+ . $apbct->api_key
629
+ . Helper::timeGetIntervalStart(3600 * 3) // Unique for every 3 hours
630
+ );
631
+
632
+ $server = get_option('cleantalk_server');
633
+ $server_url = isset($server['ct_work_url']) ? $apbct->server['ct_work_url'] : APBCT_MODERATE_URL;
634
+ $pixel = '/pixel/' . $pixel_hash . '.gif';
635
+ $pixel_url = str_replace('http://', 'https://', $server_url) . $pixel;
636
+
637
+ if ( $direct_call ) {
638
+ return $pixel_url ;
639
+ }
640
+
641
+ die($pixel_url);
642
+ }
643
+
644
  /**
645
  * Checking email before POST
646
  */
inc/cleantalk-pluggable.php CHANGED
@@ -1,5 +1,6 @@
1
  <?php
2
 
 
3
  use Cleantalk\ApbctWP\RemoteCalls;
4
  use Cleantalk\Variables\Get;
5
  use Cleantalk\Variables\Post;
@@ -467,6 +468,23 @@ function apbct_is_direct_trackback()
467
  isset($_POST['title']) && ! empty($_POST['title']);
468
  }
469
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
470
  /**
471
  * Checking if the request must be skipped.
472
  *
@@ -753,3 +771,31 @@ function apbct_is_skip_request($ajax = false)
753
 
754
  return false;
755
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
2
 
3
+ use Cleantalk\ApbctWP\Helper;
4
  use Cleantalk\ApbctWP\RemoteCalls;
5
  use Cleantalk\Variables\Get;
6
  use Cleantalk\Variables\Post;
468
  isset($_POST['title']) && ! empty($_POST['title']);
469
  }
470
 
471
+ /**
472
+ * Determines whether the query is for a trackback endpoint call.
473
+ * @see is_trackback()
474
+ *
475
+ * @return bool
476
+ */
477
+ function apbct_is_trackback()
478
+ {
479
+ global $wp_query;
480
+
481
+ if ( ! isset($wp_query) ) {
482
+ return false;
483
+ }
484
+
485
+ return $wp_query->is_trackback();
486
+ }
487
+
488
  /**
489
  * Checking if the request must be skipped.
490
  *
771
 
772
  return false;
773
  }
774
+
775
+ /**
776
+ * Checking availability of the handlers and return ajax type
777
+ *
778
+ * @return string|false
779
+ */
780
+ function apbct_settings__get_ajax_type()
781
+ {
782
+ // Check custom ajax availability - 1
783
+ $res_custom_ajax = Helper::httpRequestGetResponseCode(esc_url(APBCT_URL_PATH . '/lib/Cleantalk/ApbctWP/Ajax.php'));
784
+ if ( $res_custom_ajax == 400 ) {
785
+ return 'custom_ajax';
786
+ }
787
+
788
+ // Check rest availability - 0
789
+ $res_rest = Helper::httpRequestGetResponseCode(esc_url(apbct_get_rest_url()));
790
+ if ( $res_rest == 200 ) {
791
+ return 'rest';
792
+ }
793
+
794
+ // Check WP ajax availability - 2
795
+ $res_ajax = Helper::httpRequestGetResponseCode(admin_url('admin-ajax.php'));
796
+ if ( $res_ajax == 400 ) {
797
+ return 'admin_ajax';
798
+ }
799
+
800
+ return false;
801
+ }
inc/cleantalk-public-validate.php CHANGED
@@ -79,7 +79,6 @@ function ct_contact_form_validate()
79
  (isset($_POST['password']) && ! apbct_custom_forms_trappings()) || // Exception for login form. From Analysis uid=406596
80
  (isset($_POST['action']) && $_POST['action'] == 'wilcity_reset_password') || // Exception for reset password form. From Analysis uid=430898
81
  (isset($_POST['action']) && $_POST['action'] == 'wilcity_login') || // Exception for login form. From Analysis uid=430898
82
- (isset($_POST['qcfsubmit'])) || //Exception for submit quick forms - duplicates with qcfvalidate
83
  apbct_is_in_uri('tin-canny-learndash-reporting/src/h5p-xapi/process-xapi-statement.php?v=asd') || //Skip Tin Canny plugin
84
  (isset($_POST['na'], $_POST['ts'], $_POST['nhr']) && ! apbct_is_in_uri('?na=s')) || // The Newsletter Plugin double requests fix. Ticket #14772
85
  (isset($_POST['spl_action']) && $_POST['spl_action'] == 'register') || //Skip interal action with empty params
79
  (isset($_POST['password']) && ! apbct_custom_forms_trappings()) || // Exception for login form. From Analysis uid=406596
80
  (isset($_POST['action']) && $_POST['action'] == 'wilcity_reset_password') || // Exception for reset password form. From Analysis uid=430898
81
  (isset($_POST['action']) && $_POST['action'] == 'wilcity_login') || // Exception for login form. From Analysis uid=430898
 
82
  apbct_is_in_uri('tin-canny-learndash-reporting/src/h5p-xapi/process-xapi-statement.php?v=asd') || //Skip Tin Canny plugin
83
  (isset($_POST['na'], $_POST['ts'], $_POST['nhr']) && ! apbct_is_in_uri('?na=s')) || // The Newsletter Plugin double requests fix. Ticket #14772
84
  (isset($_POST['spl_action']) && $_POST['spl_action'] == 'register') || //Skip interal action with empty params
inc/cleantalk-public.php CHANGED
@@ -16,16 +16,7 @@ function apbct_init()
16
 
17
  // Pixel
18
  if ( $apbct->settings['data__pixel'] ) {
19
- $pixel_hash = md5(
20
- Helper::ipGet()
21
- . $apbct->api_key
22
- . Helper::timeGetIntervalStart(3600 * 3) // Unique for every 3 hours
23
- );
24
-
25
- $server = get_option('cleantalk_server');
26
- $server_url = isset($server['ct_work_url']) ? $apbct->server['ct_work_url'] : APBCT_MODERATE_URL;
27
- $pixel = '/pixel/' . $pixel_hash . '.gif';
28
- $apbct->pixel_url = str_replace('http://', 'https://', $server_url) . $pixel;
29
  }
30
 
31
  //Check internal forms with such "action" http://wordpress.loc/contact-us/some_script.php
@@ -498,7 +489,7 @@ function apbct_hook__wp_footer()
498
  // Pixel
499
  if (
500
  $apbct->settings['data__pixel'] === '1' ||
501
- ($apbct->settings['data__pixel'] === '3' && apbct_is_cache_plugins_exists())
502
  ) {
503
  echo '<img alt="Cleantalk Pixel" id="apbct_pixel" style="display: none;" src="' . $apbct->pixel_url . '">';
504
  }
@@ -522,7 +513,7 @@ function apbct_hook__wp_footer()
522
  });
523
  </script>";
524
  } else {
525
- $use_cleantalk_ajax = $apbct->data['ajax_type'] == 'custom_ajax' ? 'custom_ajax' : 'rest';
526
  $html =
527
  "<script type=\"text/javascript\" " . (class_exists('Cookiebot_WP') ? 'data-cookieconsent="ignore"' : '')
528
  . ">
@@ -531,7 +522,7 @@ function apbct_hook__wp_footer()
531
  if( document.querySelectorAll('[name^=ct_checkjs]').length > 0 ) {
532
  apbct_public_sendAJAX(
533
  { action: 'apbct_js_keys__get' },
534
- { callback: apbct_js_keys__set_input_value, apbct_ajax: '" . $use_cleantalk_ajax . "' }
535
  )
536
  }
537
  }," . $timeout . ")
16
 
17
  // Pixel
18
  if ( $apbct->settings['data__pixel'] ) {
19
+ $apbct->pixel_url = apbct_get_pixel_url__ajax(true);
 
 
 
 
 
 
 
 
 
20
  }
21
 
22
  //Check internal forms with such "action" http://wordpress.loc/contact-us/some_script.php
489
  // Pixel
490
  if (
491
  $apbct->settings['data__pixel'] === '1' ||
492
+ ($apbct->settings['data__pixel'] === '3' && ! apbct_is_cache_plugins_exists())
493
  ) {
494
  echo '<img alt="Cleantalk Pixel" id="apbct_pixel" style="display: none;" src="' . $apbct->pixel_url . '">';
495
  }
513
  });
514
  </script>";
515
  } else {
516
+ $use_cleantalk_ajax = $apbct->data['ajax_type'] == 'custom_ajax' ? 1 : 0;
517
  $html =
518
  "<script type=\"text/javascript\" " . (class_exists('Cookiebot_WP') ? 'data-cookieconsent="ignore"' : '')
519
  . ">
522
  if( document.querySelectorAll('[name^=ct_checkjs]').length > 0 ) {
523
  apbct_public_sendAJAX(
524
  { action: 'apbct_js_keys__get' },
525
+ { callback: apbct_js_keys__set_input_value, apbct_ajax: " . $use_cleantalk_ajax . " }
526
  )
527
  }
528
  }," . $timeout . ")
inc/cleantalk-settings.php CHANGED
@@ -1,6 +1,5 @@
1
  <?php
2
 
3
- use Cleantalk\ApbctWP\Helper;
4
  use Cleantalk\Variables\Post;
5
  use Cleantalk\ApbctWP\Cron;
6
  use Cleantalk\Variables\Server;
@@ -2604,34 +2603,6 @@ function apbct_settings__check_renew_banner()
2604
  );
2605
  }
2606
 
2607
- /**
2608
- * Checking availability of the handlers and return ajax type
2609
- *
2610
- * @return string|false
2611
- */
2612
- function apbct_settings__get_ajax_type()
2613
- {
2614
- // Check custom ajax availability - 1
2615
- $res_custom_ajax = Helper::httpRequestGetResponseCode(esc_url(APBCT_URL_PATH . '/lib/Cleantalk/ApbctWP/Ajax.php'));
2616
- if ( $res_custom_ajax == 400 ) {
2617
- return 'custom_ajax';
2618
- }
2619
-
2620
- // Check rest availability - 0
2621
- $res_rest = Helper::httpRequestGetResponseCode(esc_url(apbct_get_rest_url()));
2622
- if ( $res_rest == 200 ) {
2623
- return 'rest';
2624
- }
2625
-
2626
- // Check WP ajax availability - 2
2627
- $res_ajax = Helper::httpRequestGetResponseCode(admin_url('admin-ajax.php'));
2628
- if ( $res_ajax == 400 ) {
2629
- return 'admin_ajax';
2630
- }
2631
-
2632
- return false;
2633
- }
2634
-
2635
  function apbct_settings__check_alt_cookies_types()
2636
  {
2637
  global $apbct;
1
  <?php
2
 
 
3
  use Cleantalk\Variables\Post;
4
  use Cleantalk\ApbctWP\Cron;
5
  use Cleantalk\Variables\Server;
2603
  );
2604
  }
2605
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2606
  function apbct_settings__check_alt_cookies_types()
2607
  {
2608
  global $apbct;
js/apbct-public.min.js CHANGED
@@ -1,2 +1,2 @@
1
- function apbct_collect_visible_fields(e){var t=[],n="",o=0,c="",a=0,i=[];for(var l in e.elements)isNaN(+l)||(t[l]=e.elements[l]);return(t=t.filter(function(e){return-1===i.indexOf(e.getAttribute("name"))&&(-1===["radio","checkbox"].indexOf(e.getAttribute("type"))||(i.push(e.getAttribute("name")),!1))})).forEach(function(e,t,i){"submit"!==e.getAttribute("type")&&null!==e.getAttribute("name")&&"ct_checkjs"!==e.getAttribute("name")&&("none"!==getComputedStyle(e).display&&"hidden"!==getComputedStyle(e).visibility&&"0"!==getComputedStyle(e).opacity&&"hidden"!==e.getAttribute("type")||e.classList.contains("wp-editor-area")?(n+=" "+e.getAttribute("name"),o++):(c+=" "+e.getAttribute("name"),a++))}),c=c.trim(),{visible_fields:n=n.trim(),visible_fields_count:o,invisible_fields:c,invisible_fields_count:a}}function apbct_visible_fields_set_cookie(e,t){var i="object"==typeof e&&null!==e?e:{};if("native"===ctPublic.data__cookies_type)for(var n in i){if(10<n)return;ctSetCookie("apbct_visible_fields_"+(void 0!==t?t:n),JSON.stringify(i[n]))}else ctSetCookie("apbct_visible_fields",JSON.stringify(i))}function apbct_visible_fields_already_collected(e,t){if(0<e.length&&0<t.elements.length){var i=t.method,n=(t.action,t.elements.length),o=[];for(var c in t.elements)isNaN(+c)||(o[c]=t.elements[c]);for(var a=0;a<e.length;a++){if(e[a].method!==i)return!1;if(e[a].action,e[a].fields_count!==n)return!1;var l=e[a].fields_names;for(var s in l){if(0<o.filter(function(e,t,i){var n=e.name,o=e.type;if(l[s].fieldName===n&&l[s].fieldType===o)return!0}).length)return!0}}return!1}return!1}function apbct_get_form_details(e){if(0<e.elements.length){var t={},n=e.elements;for(i=0;i<n.length;i++){var o=n[i].name,c=n[i].type;t[i]={fieldName:o,fieldType:c}}return{method:e.method,action:e.action,fields_count:e.elements.length,fields_names:t}}return!1}function apbct_js_keys__set_input_value(e,t,i,n){if(0<document.querySelectorAll("[name^=ct_checkjs]").length)for(var o=document.querySelectorAll("[name^=ct_checkjs]"),c=0;c<o.length;c++)o[c].value=e.js_key}function apbctGetScreenInfo(){return JSON.stringify({fullWidth:document.documentElement.scrollWidth,fullHeight:Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight),visibleWidth:document.documentElement.clientWidth,visibleHeight:document.documentElement.clientHeight})}!function(){var o=new Date,t=(new Date).getTime(),i=!0,n=[],c=0,a={},e=!1,l=!1;function s(e,t,i){"function"==typeof window.addEventListener?e.addEventListener(t,i):e.attachEvent(t,i)}function r(e,t,i){"function"==typeof window.removeEventListener?e.removeEventListener(t,i):e.detachEvent(t,i)}var d=function(){var e=Math.floor((new Date).getTime()/1e3);ctSetCookie("ct_fkp_timestamp",e),r(window,"mousedown",d),r(window,"keydown",d)},u=setInterval(function(){i=!0},150),_=setInterval(function(){ctSetCookie("ct_pointer_data",JSON.stringify(n))},1200),m=function(e){l||(ctSetCookie("ct_mouse_moved","true"),l=!0),!0===i&&(n.push([Math.round(e.clientY),Math.round(e.clientX),Math.round((new Date).getTime()-t)]),i=!1,50<=++c&&(r(window,"mousemove",m),clearInterval(u),clearInterval(_)))};function f(e){var t=e.target.value;!t||t in a||("rest"===ctPublicFunctions.data__ajax_type?apbct_public_sendREST("check_email_before_post",{method:"POST",data:{email:t},callback:function(e){e.result&&(a[t]={result:e.result,timestamp:Date.now()/1e3|0},ctSetCookie("ct_checked_emails",JSON.stringify(a)))}}):"custom_ajax"===ctPublicFunctions.data__ajax_type?apbct_public_sendAJAX({action:"apbct_email_check_before_post",email:t},{apbct_ajax:1,callback:function(e){e.result&&(a[t]={result:e.result,timestamp:Date.now()/1e3|0},ctSetCookie("ct_checked_emails",JSON.stringify(a)))}}):"admin_ajax"===ctPublicFunctions.data__ajax_type&&apbct_public_sendAJAX({action:"apbct_email_check_before_post",email:t},{callback:function(e){e.result&&(a[t]={result:e.result,timestamp:Date.now()/1e3|0},ctSetCookie("ct_checked_emails",JSON.stringify(a)))}}))}s(window,"mousemove",m),s(window,"mousedown",d),s(window,"keydown",d),s(window,"scroll",function(){e||(ctSetCookie("ct_has_scrolled","true"),e=!0)}),s(window,"DOMContentLoaded",function(){var e=[["ct_ps_timestamp",Math.floor((new Date).getTime()/1e3)],["ct_fkp_timestamp","0"],["ct_pointer_data","0"],["ct_timezone",o.getTimezoneOffset()/60*-1],["ct_screen_info",apbctGetScreenInfo()],["ct_has_scrolled","false"],["ct_mouse_moved","false"]];if("native"!==ctPublic.data__cookies_type)e.push(["apbct_visible_fields","0"]);else{var t=document.cookie.split(";");if(0!==t.length)for(var i=0;i<t.length;i++){var n=t[i].trim().split("=")[0];0===n.indexOf("apbct_visible_fields_")&&ctDeleteCookie(n)}}+ctPublic.pixel__setting&&(e.push(["apbct_pixel_url",ctPublic.pixel__url]),+ctPublic.pixel__enabled&&(document.getElementById("apbct_pixel")||jQuery("body").append('<img alt="Cleantalk Pixel" id="apbct_pixel" style="display: none; left: 99999px;" src="'+ctPublic.pixel__url+'">'))),+ctPublic.data__email_check_before_post&&(e.push(["ct_checked_emails","0"]),jQuery("input[type = 'email'], #email").blur(f)),ctSetCookie(e),setTimeout(function(){for(var e={},t=[],i=0;i<document.forms.length;i++){var n=document.forms[i];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")||n.name.classList&&n.name.classList.contains("give-form")||n.id&&"ult-forgot-password-form"===n.id||n.id&&-1!==n.id.toString().indexOf("calculatedfields")||(apbct_visible_fields_already_collected(t,n)||(e[i]=apbct_collect_visible_fields(n),t.push(apbct_get_form_details(n))),n.onsubmit_prev=n.onsubmit,n.ctFormIndex=i,n.onsubmit=function(e){var t;"native"!==ctPublic.data__cookies_type&&void 0!==e.target.ctFormIndex&&((t={})[0]=apbct_collect_visible_fields(this),apbct_visible_fields_set_cookie(t,e.target.ctFormIndex)),e.target.onsubmit_prev instanceof Function&&setTimeout(function(){e.target.onsubmit_prev.call(e.target,e)},500)})}apbct_visible_fields_set_cookie(e)},1e3)})}(),"undefined"!=typeof jQuery&&jQuery(document).ajaxComplete(function(e,t,i){var n;!t.responseText||-1===t.responseText.indexOf('"apbct')||void 0!==(n=JSON.parse(t.responseText)).apbct&&(n=n.apbct).blocked&&(document.dispatchEvent(new CustomEvent("apbctAjaxBockAlert",{bubbles:!0,detail:{message:n.comment}})),cleantalkModal.loaded=n.comment,cleantalkModal.open(),1==+n.stop_script&&window.stop())});
2
  //# sourceMappingURL=apbct-public.min.js.map
1
+ function apbct_collect_visible_fields(e){var t=[],n="",c=0,o="",a=0,i=[];for(var l in e.elements)isNaN(+l)||(t[l]=e.elements[l]);return(t=t.filter(function(e){return-1===i.indexOf(e.getAttribute("name"))&&(-1===["radio","checkbox"].indexOf(e.getAttribute("type"))||(i.push(e.getAttribute("name")),!1))})).forEach(function(e,t,i){"submit"!==e.getAttribute("type")&&null!==e.getAttribute("name")&&"ct_checkjs"!==e.getAttribute("name")&&("none"!==getComputedStyle(e).display&&"hidden"!==getComputedStyle(e).visibility&&"0"!==getComputedStyle(e).opacity&&"hidden"!==e.getAttribute("type")||e.classList.contains("wp-editor-area")?(n+=" "+e.getAttribute("name"),c++):(o+=" "+e.getAttribute("name"),a++))}),o=o.trim(),{visible_fields:n=n.trim(),visible_fields_count:c,invisible_fields:o,invisible_fields_count:a}}function apbct_visible_fields_set_cookie(e,t){var i="object"==typeof e&&null!==e?e:{};if("native"===ctPublic.data__cookies_type)for(var n in i){if(10<n)return;ctSetCookie("apbct_visible_fields_"+(void 0!==t?t:n),JSON.stringify(i[n]))}else ctSetCookie("apbct_visible_fields",JSON.stringify(i))}function apbct_visible_fields_already_collected(e,t){if(0<e.length&&0<t.elements.length){var i=t.method,n=(t.action,t.elements.length),c=[];for(var o in t.elements)isNaN(+o)||(c[o]=t.elements[o]);for(var a=0;a<e.length;a++){if(e[a].method!==i)return!1;if(e[a].action,e[a].fields_count!==n)return!1;var l=e[a].fields_names;for(var s in l){if(0<c.filter(function(e,t,i){var n=e.name,c=e.type;if(l[s].fieldName===n&&l[s].fieldType===c)return!0}).length)return!0}}return!1}return!1}function apbct_get_form_details(e){if(0<e.elements.length){var t={},n=e.elements;for(i=0;i<n.length;i++){var c=n[i].name,o=n[i].type;t[i]={fieldName:c,fieldType:o}}return{method:e.method,action:e.action,fields_count:e.elements.length,fields_names:t}}return!1}function apbct_js_keys__set_input_value(e,t,i,n){if(0<document.querySelectorAll("[name^=ct_checkjs]").length)for(var c=document.querySelectorAll("[name^=ct_checkjs]"),o=0;o<c.length;o++)c[o].value=e.js_key}function apbctGetScreenInfo(){return JSON.stringify({fullWidth:document.documentElement.scrollWidth,fullHeight:Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight),visibleWidth:document.documentElement.clientWidth,visibleHeight:document.documentElement.clientHeight})}!function(){var o=new Date,t=(new Date).getTime(),i=!0,n=[],c=0,a={},e=!1,l=!1;function s(e,t,i){"function"==typeof window.addEventListener?e.addEventListener(t,i):e.attachEvent(t,i)}function r(e,t,i){"function"==typeof window.removeEventListener?e.removeEventListener(t,i):e.detachEvent(t,i)}var _=function(){var e=Math.floor((new Date).getTime()/1e3);ctSetCookie("ct_fkp_timestamp",e),r(window,"mousedown",_),r(window,"keydown",_)},u=setInterval(function(){i=!0},150),d=setInterval(function(){ctSetCookie("ct_pointer_data",JSON.stringify(n))},1200),m=function(e){l||(ctSetCookie("ct_mouse_moved","true"),l=!0),!0===i&&(n.push([Math.round(e.clientY),Math.round(e.clientX),Math.round((new Date).getTime()-t)]),i=!1,50<=++c&&(r(window,"mousemove",m),clearInterval(u),clearInterval(d)))};function f(e){var t=e.target.value;!t||t in a||("rest"===ctPublicFunctions.data__ajax_type?apbct_public_sendREST("check_email_before_post",{method:"POST",data:{email:t},callback:function(e){e.result&&(a[t]={result:e.result,timestamp:Date.now()/1e3|0},ctSetCookie("ct_checked_emails",JSON.stringify(a)))}}):"custom_ajax"===ctPublicFunctions.data__ajax_type?apbct_public_sendAJAX({action:"apbct_email_check_before_post",email:t},{apbct_ajax:1,callback:function(e){e.result&&(a[t]={result:e.result,timestamp:Date.now()/1e3|0},ctSetCookie("ct_checked_emails",JSON.stringify(a)))}}):"admin_ajax"===ctPublicFunctions.data__ajax_type&&apbct_public_sendAJAX({action:"apbct_email_check_before_post",email:t},{callback:function(e){e.result&&(a[t]={result:e.result,timestamp:Date.now()/1e3|0},ctSetCookie("ct_checked_emails",JSON.stringify(a)))}}))}function p(e){ctSetCookie("apbct_pixel_url",e),+ctPublic.pixel__enabled&&(document.getElementById("apbct_pixel")||jQuery("body").append('<img alt="Cleantalk Pixel" id="apbct_pixel" style="display: none; left: 99999px;" src="'+e+'">'))}s(window,"mousemove",m),s(window,"mousedown",_),s(window,"keydown",_),s(window,"scroll",function(){e||(ctSetCookie("ct_has_scrolled","true"),e=!0)}),s(window,"DOMContentLoaded",function(){var e,t=[["ct_ps_timestamp",Math.floor((new Date).getTime()/1e3)],["ct_fkp_timestamp","0"],["ct_pointer_data","0"],["ct_timezone",o.getTimezoneOffset()/60*-1],["ct_screen_info",apbctGetScreenInfo()],["ct_has_scrolled","false"],["ct_mouse_moved","false"]];if("native"!==ctPublic.data__cookies_type)t.push(["apbct_visible_fields","0"]);else{var i=document.cookie.split(";");if(0!==i.length)for(var n=0;n<i.length;n++){var c=i[n].trim().split("=")[0];0===c.indexOf("apbct_visible_fields_")&&ctDeleteCookie(c)}}+ctPublic.pixel__setting&&(+ctPublic.pixel__enabled?"rest"===ctPublicFunctions.data__ajax_type?apbct_public_sendREST("apbct_get_pixel_url",{method:"POST",callback:function(e){e&&p(e)}}):(e="custom_ajax"===ctPublicFunctions.data__ajax_type?1:0,apbct_public_sendAJAX({action:"apbct_get_pixel_url"},{apbct_ajax:e,notJson:!0,callback:function(e){e&&p(e)}})):t.push(["apbct_pixel_url",ctPublic.pixel__url])),+ctPublic.data__email_check_before_post&&(t.push(["ct_checked_emails","0"]),jQuery("input[type = 'email'], #email").blur(f)),ctSetCookie(t),setTimeout(function(){for(var e={},t=[],i=0;i<document.forms.length;i++){var n=document.forms[i];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.classList&&n.classList.contains("tinkoffPayRow")||n.classList&&n.classList.contains("give-form")||n.id&&"ult-forgot-password-form"===n.id||n.id&&-1!==n.id.toString().indexOf("calculatedfields")||(apbct_visible_fields_already_collected(t,n)||(e[i]=apbct_collect_visible_fields(n),t.push(apbct_get_form_details(n))),n.onsubmit_prev=n.onsubmit,n.ctFormIndex=i,n.onsubmit=function(e){var t;"native"!==ctPublic.data__cookies_type&&void 0!==e.target.ctFormIndex&&((t={})[0]=apbct_collect_visible_fields(this),apbct_visible_fields_set_cookie(t,e.target.ctFormIndex)),e.target.onsubmit_prev instanceof Function&&setTimeout(function(){e.target.onsubmit_prev.call(e.target,e)},500)})}apbct_visible_fields_set_cookie(e)},1e3)})}(),"undefined"!=typeof jQuery&&jQuery(document).ajaxComplete(function(e,t,i){var n;!t.responseText||-1===t.responseText.indexOf('"apbct')||void 0!==(n=JSON.parse(t.responseText)).apbct&&(n=n.apbct).blocked&&(document.dispatchEvent(new CustomEvent("apbctAjaxBockAlert",{bubbles:!0,detail:{message:n.comment}})),cleantalkModal.loaded=n.comment,cleantalkModal.open(),1==+n.stop_script&&window.stop())});
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\t\tctCheckedEmails = {},\n\t\tctScrollCollected = false,\n\t\tctMouseMovedCollected = false;\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\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\tctSetMouseMoved();\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\tfunction checkEmail(e) {\n\t\tvar current_email = e.target.value;\n\t\tif (current_email && !(current_email in ctCheckedEmails)) {\n\t\t\t// Using REST API handler\n\t\t\tif( ctPublicFunctions.data__ajax_type === 'rest' ){\n\t\t\t\tapbct_public_sendREST(\n\t\t\t\t\t'check_email_before_post',\n\t\t\t\t\t{\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\tdata: {'email' : current_email},\n\t\t\t\t\t\tcallback: function (result) {\n\t\t\t\t\t\t\tif (result.result) {\n\t\t\t\t\t\t\t\tctCheckedEmails[current_email] = {'result' : result.result, 'timestamp': Date.now() / 1000 |0};\n\t\t\t\t\t\t\t\tctSetCookie('ct_checked_emails', JSON.stringify(ctCheckedEmails));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\t// Using AJAX request and handler\n\t\t\t}else if( ctPublicFunctions.data__ajax_type === 'custom_ajax' ) {\n\t\t\t\tapbct_public_sendAJAX(\n\t\t\t\t\t{\n\t\t\t\t\t\taction: 'apbct_email_check_before_post',\n\t\t\t\t\t\temail : current_email,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tapbct_ajax: 1,\n\t\t\t\t\t\tcallback: function (result) {\n\t\t\t\t\t\t\tif (result.result) {\n\t\t\t\t\t\t\t\tctCheckedEmails[current_email] = {'result' : result.result, 'timestamp': Date.now() / 1000 |0};\n\t\t\t\t\t\t\t\tctSetCookie('ct_checked_emails', JSON.stringify(ctCheckedEmails));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t} else if( ctPublicFunctions.data__ajax_type === 'admin_ajax' ) {\n\t\t\t\tapbct_public_sendAJAX(\n\t\t\t\t\t{\n\t\t\t\t\t\taction: 'apbct_email_check_before_post',\n\t\t\t\t\t\temail : current_email,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcallback: function (result) {\n\t\t\t\t\t\t\tif (result.result) {\n\t\t\t\t\t\t\t\tctCheckedEmails[current_email] = {'result' : result.result, 'timestamp': Date.now() / 1000 |0};\n\t\t\t\t\t\t\t\tctSetCookie('ct_checked_emails', JSON.stringify(ctCheckedEmails));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction ctSetHasScrolled() {\n\t\tif( ! ctScrollCollected ) {\n\t\t\tctSetCookie(\"ct_has_scrolled\", 'true');\n\t\t\tctScrollCollected = true;\n\t\t}\n\t}\n\n\tfunction ctSetMouseMoved() {\n\t\tif( ! ctMouseMovedCollected ) {\n\t\t\tctSetCookie(\"ct_mouse_moved\", 'true');\n\t\t\tctMouseMovedCollected = true;\n\t\t}\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\tapbct_attach_event_handler(window, \"scroll\", ctSetHasScrolled);\n\n\t// Ready function\n\tfunction apbct_ready(){\n\n\t\t// Collect scrolling info\n\t\tvar initCookies = [\n\t\t\t[\"ct_ps_timestamp\", Math.floor(new Date().getTime() / 1000)],\n\t\t\t[\"ct_fkp_timestamp\", \"0\"],\n\t\t\t[\"ct_pointer_data\", \"0\"],\n\t\t\t[\"ct_timezone\", ct_date.getTimezoneOffset()/60*(-1) ],\n\t\t\t[\"ct_screen_info\", apbctGetScreenInfo()],\n\t\t\t[\"ct_has_scrolled\", 'false'],\n\t\t\t[\"ct_mouse_moved\", 'false'],\n\t\t];\n\n\t\tif( ctPublic.data__cookies_type !== 'native' ) {\n\t\t\tinitCookies.push(['apbct_visible_fields', '0']);\n\t\t} else {\n\t\t\t// Delete all visible fields cookies on load the page\n\t\t\tvar cookiesArray = document.cookie.split(\";\");\n\t\t\tif( cookiesArray.length !== 0 ) {\n\t\t\t\tfor ( var i = 0; i < cookiesArray.length; i++ ) {\n\t\t\t\t\tvar currentCookie = cookiesArray[i].trim();\n\t\t\t\t\tvar cookieName = currentCookie.split(\"=\")[0];\n\t\t\t\t\tif( cookieName.indexOf(\"apbct_visible_fields_\") === 0 ) {\n\t\t\t\t\t\tctDeleteCookie(cookieName);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif( +ctPublic.pixel__setting ){\n\t\t\tinitCookies.push(['apbct_pixel_url', ctPublic.pixel__url]);\n\t\t\tif( +ctPublic.pixel__enabled ){\n\t\t\t\tif( ! document.getElementById('apbct_pixel') ) {\n\t\t\t\t\tjQuery('body').append( '<img alt=\"Cleantalk Pixel\" id=\"apbct_pixel\" style=\"display: none; left: 99999px;\" src=\"' + ctPublic.pixel__url + '\">' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( +ctPublic.data__email_check_before_post) {\n\t\t\tinitCookies.push(['ct_checked_emails', '0']);\n\t\t\tjQuery(\"input[type = 'email'], #email\").blur(checkEmail);\n\t\t}\n\n\t\tctSetCookie(initCookies);\n\n\t\tsetTimeout(function(){\n\n\t\t\tvar visible_fields_collection = {};\n\t\t\tvar processedForms = [];\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\t(form.name.classList && form.name.classList.contains('tinkoffPayRow')) || // TinkoffPayForm\n\t\t\t\t\t(form.name.classList && form.name.classList.contains('give-form')) || // GiveWP\n\t\t\t\t\t(form.id && form.id === 'ult-forgot-password-form') || //ult forgot password\n\t\t\t\t\t(form.id && form.id.toString().indexOf('calculatedfields') !== -1) // CalculatedFieldsForm\n\t\t\t\t)\n\t\t\t\t\tcontinue;\n\n\t\t\t\tif( ! apbct_visible_fields_already_collected( processedForms, form ) ) {\n\t\t\t\t\tvisible_fields_collection[i] = apbct_collect_visible_fields( form );\n\t\t\t\t\tprocessedForms.push( apbct_get_form_details( form ) );\n\t\t\t\t}\n\n\t\t\t\tform.onsubmit_prev = form.onsubmit;\n\n\t\t\t\tform.ctFormIndex = i;\n\t\t\t\tform.onsubmit = function (event) {\n\n\t\t\t\t\tif ( ctPublic.data__cookies_type !== 'native' && typeof event.target.ctFormIndex !== 'undefined' ) {\n\n\t\t\t\t\t\tvar visible_fields = {};\n\t\t\t\t\t\tvisible_fields[0] = apbct_collect_visible_fields(this);\n\t\t\t\t\t\tapbct_visible_fields_set_cookie( visible_fields, event.target.ctFormIndex );\n\t\t\t\t\t}\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 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_invisible = '',\n\t\tinputs_invisible_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 already added fields\n\t\tif( inputs_with_duplicate_names.indexOf( elem.getAttribute('name') ) !== -1 ){\n\t\t\treturn false;\n\t\t}\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\t\treturn true;\n\t});\n\n\t// Visible fields\n\tinputs.forEach(function(elem, i, elements){\n\t\t// Unnecessary fields\n\t\tif(\n\t\t\telem.getAttribute(\"type\") === \"submit\" || // type == submit\n\t\t\telem.getAttribute('name') === null ||\n\t\t\telem.getAttribute('name') === 'ct_checkjs'\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\t// Invisible fields\n\t\tif(\n\t\t\tgetComputedStyle(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) {\n\t\t\tif( elem.classList.contains(\"wp-editor-area\") ) {\n\t\t\t\tinputs_visible += \" \" + elem.getAttribute(\"name\");\n\t\t\t\tinputs_visible_count++;\n\t\t\t} else {\n\t\t\t\tinputs_invisible += \" \" + elem.getAttribute(\"name\");\n\t\t\t\tinputs_invisible_count++;\n\t\t\t}\n\t\t}\n\t\t// Visible fields\n\t\telse {\n\t\t\tinputs_visible += \" \" + elem.getAttribute(\"name\");\n\t\t\tinputs_visible_count++;\n\t\t}\n\n\t});\n\n\tinputs_invisible = inputs_invisible.trim();\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\tinvisible_fields : inputs_invisible,\n\t\tinvisible_fields_count : inputs_invisible_count,\n\t}\n\n}\n\nfunction apbct_visible_fields_set_cookie( visible_fields_collection, form_id ) {\n\n\tvar collection = typeof visible_fields_collection === 'object' && visible_fields_collection !== null ? visible_fields_collection : {};\n\n\tif( ctPublic.data__cookies_type === 'native' ) {\n\t\tfor ( var i in collection ) {\n\t\t\tif ( i > 10 ) {\n\t\t\t\t// Do not generate more than 10 cookies\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar collectionIndex = form_id !== undefined ? form_id : i;\n\t\t\tctSetCookie(\"apbct_visible_fields_\" + collectionIndex, JSON.stringify( collection[i] ) );\n\t\t}\n\t} else {\n\t\tctSetCookie(\"apbct_visible_fields\", JSON.stringify( collection ) );\n\t}\n}\n\nfunction apbct_visible_fields_already_collected( formsProcessed, form ) {\n\n\tif ( formsProcessed.length > 0 && form.elements.length > 0 ) {\n\n\t\tvar formMethod = form.method;\n\t\tvar formAction = form.action;\n\t\tvar formFieldsCount = form.elements.length;\n\t\tvar formInputs = [];\n\n\t\t// Getting only input elements from HTMLFormControlsCollection and putting these into the simple array.\n\t\tfor( var key in form.elements ){\n\t\t\tif( ! isNaN( +key ) ) {\n\t\t\t\tformInputs[key] = form.elements[key];\n\t\t\t}\n\t\t}\n\n\t\tfor ( var i = 0; i < formsProcessed.length; i++ ) {\n\t\t\t// The form with the same METHOD has not processed.\n\t\t\tif ( formsProcessed[i].method !== formMethod ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// The form with the same ACTION has not processed.\n\t\t\tif ( formsProcessed[i].action !== formAction ) {\n\t\t\t\t// @ToDo actions often are different in the similar forms\n\t\t\t\t//return false;\n\t\t\t}\n\t\t\t// The form with the same FIELDS COUNT has not processed.\n\t\t\tif ( formsProcessed[i].fields_count !== formFieldsCount ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Compare every form fields by their TYPE and NAME\n\t\t\tvar fieldsNames = formsProcessed[i].fields_names;\n\t\t\tfor ( var field in fieldsNames ) {\n\t\t\t\tvar res = formInputs.filter(function(item, index, array){\n\t\t\t\t\tvar fieldName = item.name;\n\t\t\t\t\tvar fieldType = item.type;\n\t\t\t\t\tif( fieldsNames[field].fieldName === fieldName && fieldsNames[field].fieldType === fieldType ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif( res.length > 0 ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\treturn false;\n}\n\nfunction apbct_get_form_details( form ) {\n\n\tif( form.elements.length > 0 ) {\n\n\t\tvar fieldsNames = {};\n\n\t\t// Collecting fields and their names\n\t\tvar inputs = form.elements;\n\t\tfor (i = 0; i < inputs.length; i++) {\n\t\t\tvar fieldName = inputs[i].name;\n\t\t\tvar fieldType = inputs[i].type;\n\t\t\tfieldsNames[i] = {\n\t\t\t\tfieldName : fieldName,\n\t\t\t\tfieldType : fieldType,\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t'method' : form.method,\n\t\t\t'action' : form.action,\n\t\t\t'fields_count' : form.elements.length,\n\t\t\t'fields_names' : fieldsNames,\n\t\t};\n\t}\n\n\treturn false;\n}\n\nfunction apbct_js_keys__set_input_value(result, data, params, obj){\n\tif( document.querySelectorAll('[name^=ct_checkjs]').length > 0 ) {\n\t\tvar elements = document.querySelectorAll('[name^=ct_checkjs]');\n\t\tfor ( var i = 0; i < elements.length; i++ ) {\n\t\t\telements[i].value = result.js_key;\n\t\t}\n\t}\n}\n\nfunction apbctGetScreenInfo() {\n\treturn JSON.stringify({\n\t\tfullWidth : document.documentElement.scrollWidth,\n\t\tfullHeight : Math.max(\n\t\t\tdocument.body.scrollHeight, document.documentElement.scrollHeight,\n\t\t\tdocument.body.offsetHeight, document.documentElement.offsetHeight,\n\t\t\tdocument.body.clientHeight, document.documentElement.clientHeight\n\t\t),\n\t\tvisibleWidth : document.documentElement.clientWidth,\n\t\tvisibleHeight : document.documentElement.clientHeight,\n\t});\n}\n\nif(typeof jQuery !== 'undefined') {\n\n\t// Capturing responses and output block message for unknown AJAX forms\n\tjQuery(document).ajaxComplete(function (event, xhr, settings) {\n\t\tif (xhr.responseText && xhr.responseText.indexOf('\"apbct') !== -1) {\n\t\t\tvar response = JSON.parse(xhr.responseText);\n\t\t\tif (typeof response.apbct !== 'undefined') {\n\t\t\t\tresponse = response.apbct;\n\t\t\t\tif (response.blocked) {\n\t\t\t\t\tdocument.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent( \"apbctAjaxBockAlert\", {\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tdetail: { message: response.comment }\n\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\n\t\t\t\t\t// Show the result by modal\n\t\t\t\t\tcleantalkModal.loaded = response.comment;\n\t\t\t\t\tcleantalkModal.open();\n\n\t\t\t\t\tif(+response.stop_script == 1)\n\t\t\t\t\t\twindow.stop();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n}"],"names":["apbct_collect_visible_fields","form","inputs","inputs_visible","inputs_visible_count","inputs_invisible","inputs_invisible_count","inputs_with_duplicate_names","key","elements","isNaN","filter","elem","indexOf","getAttribute","push","forEach","i","getComputedStyle","display","visibility","opacity","classList","contains","trim","visible_fields","visible_fields_count","invisible_fields","invisible_fields_count","apbct_visible_fields_set_cookie","visible_fields_collection","form_id","collection","ctPublic","data__cookies_type","ctSetCookie","undefined","JSON","stringify","apbct_visible_fields_already_collected","formsProcessed","length","formMethod","method","formFieldsCount","action","formInputs","fields_count","fieldsNames","fields_names","field","item","index","array","fieldName","name","fieldType","type","apbct_get_form_details","apbct_js_keys__set_input_value","result","data","params","obj","document","querySelectorAll","value","js_key","apbctGetScreenInfo","fullWidth","documentElement","scrollWidth","fullHeight","Math","max","body","scrollHeight","offsetHeight","clientHeight","visibleWidth","clientWidth","visibleHeight","ct_date","Date","ctTimeMs","getTime","ctMouseEventTimerFlag","ctMouseData","ctMouseDataCounter","ctCheckedEmails","ctScrollCollected","ctMouseMovedCollected","apbct_attach_event_handler","event","callback","window","addEventListener","attachEvent","apbct_remove_event_handler","removeEventListener","detachEvent","ctFunctionFirstKey","KeyTimestamp","floor","ctMouseReadInterval","setInterval","ctMouseWriteDataInterval","ctFunctionMouseMove","round","clientY","clientX","clearInterval","checkEmail","e","current_email","target","ctPublicFunctions","data__ajax_type","apbct_public_sendREST","email","timestamp","now","apbct_public_sendAJAX","apbct_ajax","initCookies","getTimezoneOffset","cookiesArray","cookie","split","cookieName","ctDeleteCookie","pixel__setting","pixel__url","pixel__enabled","getElementById","jQuery","append","data__email_check_before_post","blur","setTimeout","processedForms","forms","parentElement","toString","id","onsubmit_prev","onsubmit","ctFormIndex","this","Function","call","ajaxComplete","xhr","settings","response","responseText","parse","apbct","blocked","dispatchEvent","CustomEvent","bubbles","detail","message","comment","cleantalkModal","loaded","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\t\tctCheckedEmails = {},\n\t\tctScrollCollected = false,\n\t\tctMouseMovedCollected = false;\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\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\tctSetMouseMoved();\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\tfunction checkEmail(e) {\n\t\tvar current_email = e.target.value;\n\t\tif (current_email && !(current_email in ctCheckedEmails)) {\n\t\t\t// Using REST API handler\n\t\t\tif( ctPublicFunctions.data__ajax_type === 'rest' ){\n\t\t\t\tapbct_public_sendREST(\n\t\t\t\t\t'check_email_before_post',\n\t\t\t\t\t{\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\tdata: {'email' : current_email},\n\t\t\t\t\t\tcallback: function (result) {\n\t\t\t\t\t\t\tif (result.result) {\n\t\t\t\t\t\t\t\tctCheckedEmails[current_email] = {'result' : result.result, 'timestamp': Date.now() / 1000 |0};\n\t\t\t\t\t\t\t\tctSetCookie('ct_checked_emails', JSON.stringify(ctCheckedEmails));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\t// Using AJAX request and handler\n\t\t\t}else if( ctPublicFunctions.data__ajax_type === 'custom_ajax' ) {\n\t\t\t\tapbct_public_sendAJAX(\n\t\t\t\t\t{\n\t\t\t\t\t\taction: 'apbct_email_check_before_post',\n\t\t\t\t\t\temail : current_email,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tapbct_ajax: 1,\n\t\t\t\t\t\tcallback: function (result) {\n\t\t\t\t\t\t\tif (result.result) {\n\t\t\t\t\t\t\t\tctCheckedEmails[current_email] = {'result' : result.result, 'timestamp': Date.now() / 1000 |0};\n\t\t\t\t\t\t\t\tctSetCookie('ct_checked_emails', JSON.stringify(ctCheckedEmails));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t} else if( ctPublicFunctions.data__ajax_type === 'admin_ajax' ) {\n\t\t\t\tapbct_public_sendAJAX(\n\t\t\t\t\t{\n\t\t\t\t\t\taction: 'apbct_email_check_before_post',\n\t\t\t\t\t\temail : current_email,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcallback: function (result) {\n\t\t\t\t\t\t\tif (result.result) {\n\t\t\t\t\t\t\t\tctCheckedEmails[current_email] = {'result' : result.result, 'timestamp': Date.now() / 1000 |0};\n\t\t\t\t\t\t\t\tctSetCookie('ct_checked_emails', JSON.stringify(ctCheckedEmails));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction ctSetPixelImg(pixelUrl) {\n\t\tctSetCookie('apbct_pixel_url', pixelUrl);\n\t\tif( +ctPublic.pixel__enabled ){\n\t\t\tif( ! document.getElementById('apbct_pixel') ) {\n\t\t\t\tjQuery('body').append( '<img alt=\"Cleantalk Pixel\" id=\"apbct_pixel\" style=\"display: none; left: 99999px;\" src=\"' + pixelUrl + '\">' );\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction ctGetPixelUrl() {\n\t\t// Using REST API handler\n\t\tif( ctPublicFunctions.data__ajax_type === 'rest' ){\n\t\t\tapbct_public_sendREST(\n\t\t\t\t'apbct_get_pixel_url',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tcallback: function (result) {\n\t\t\t\t\t\tif (result) {\n\t\t\t\t\t\t\tctSetPixelImg(result);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t);\n\t\t// Using AJAX request and handler\n\t\t}else{\n\t\t\tvar ajaxType = ctPublicFunctions.data__ajax_type === 'custom_ajax' ? 1 : 0;\n\t\t\tapbct_public_sendAJAX(\n\t\t\t\t{\n\t\t\t\t\taction: 'apbct_get_pixel_url',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tapbct_ajax: ajaxType,\n\t\t\t\t\tnotJson: true,\n\t\t\t\t\tcallback: function (result) {\n\t\t\t\t\t\tif (result) {\n\t\t\t\t\t\t\tctSetPixelImg(result);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction ctSetHasScrolled() {\n\t\tif( ! ctScrollCollected ) {\n\t\t\tctSetCookie(\"ct_has_scrolled\", 'true');\n\t\t\tctScrollCollected = true;\n\t\t}\n\t}\n\n\tfunction ctSetMouseMoved() {\n\t\tif( ! ctMouseMovedCollected ) {\n\t\t\tctSetCookie(\"ct_mouse_moved\", 'true');\n\t\t\tctMouseMovedCollected = true;\n\t\t}\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\tapbct_attach_event_handler(window, \"scroll\", ctSetHasScrolled);\n\n\t// Ready function\n\tfunction apbct_ready(){\n\n\t\t// Collect scrolling info\n\t\tvar initCookies = [\n\t\t\t[\"ct_ps_timestamp\", Math.floor(new Date().getTime() / 1000)],\n\t\t\t[\"ct_fkp_timestamp\", \"0\"],\n\t\t\t[\"ct_pointer_data\", \"0\"],\n\t\t\t[\"ct_timezone\", ct_date.getTimezoneOffset()/60*(-1) ],\n\t\t\t[\"ct_screen_info\", apbctGetScreenInfo()],\n\t\t\t[\"ct_has_scrolled\", 'false'],\n\t\t\t[\"ct_mouse_moved\", 'false'],\n\t\t];\n\n\t\tif( ctPublic.data__cookies_type !== 'native' ) {\n\t\t\tinitCookies.push(['apbct_visible_fields', '0']);\n\t\t} else {\n\t\t\t// Delete all visible fields cookies on load the page\n\t\t\tvar cookiesArray = document.cookie.split(\";\");\n\t\t\tif( cookiesArray.length !== 0 ) {\n\t\t\t\tfor ( var i = 0; i < cookiesArray.length; i++ ) {\n\t\t\t\t\tvar currentCookie = cookiesArray[i].trim();\n\t\t\t\t\tvar cookieName = currentCookie.split(\"=\")[0];\n\t\t\t\t\tif( cookieName.indexOf(\"apbct_visible_fields_\") === 0 ) {\n\t\t\t\t\t\tctDeleteCookie(cookieName);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif( +ctPublic.pixel__setting ){\n\t\t\tif( +ctPublic.pixel__enabled ){\n\t\t\t\tctGetPixelUrl();\n\t\t\t} else {\n\t\t\t\tinitCookies.push(['apbct_pixel_url', ctPublic.pixel__url]);\n\t\t\t}\n\t\t}\n\n\t\tif ( +ctPublic.data__email_check_before_post) {\n\t\t\tinitCookies.push(['ct_checked_emails', '0']);\n\t\t\tjQuery(\"input[type = 'email'], #email\").blur(checkEmail);\n\t\t}\n\n\t\tctSetCookie(initCookies);\n\n\t\tsetTimeout(function(){\n\n\t\t\tvar visible_fields_collection = {};\n\t\t\tvar processedForms = [];\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\t(form.classList && form.classList.contains('tinkoffPayRow')) || // TinkoffPayForm\n\t\t\t\t\t(form.classList && form.classList.contains('give-form')) || // GiveWP\n\t\t\t\t\t(form.id && form.id === 'ult-forgot-password-form') || //ult forgot password\n\t\t\t\t\t(form.id && form.id.toString().indexOf('calculatedfields') !== -1) // CalculatedFieldsForm\n\t\t\t\t)\n\t\t\t\t\tcontinue;\n\n\t\t\t\tif( ! apbct_visible_fields_already_collected( processedForms, form ) ) {\n\t\t\t\t\tvisible_fields_collection[i] = apbct_collect_visible_fields( form );\n\t\t\t\t\tprocessedForms.push( apbct_get_form_details( form ) );\n\t\t\t\t}\n\n\t\t\t\tform.onsubmit_prev = form.onsubmit;\n\n\t\t\t\tform.ctFormIndex = i;\n\t\t\t\tform.onsubmit = function (event) {\n\n\t\t\t\t\tif ( ctPublic.data__cookies_type !== 'native' && typeof event.target.ctFormIndex !== 'undefined' ) {\n\n\t\t\t\t\t\tvar visible_fields = {};\n\t\t\t\t\t\tvisible_fields[0] = apbct_collect_visible_fields(this);\n\t\t\t\t\t\tapbct_visible_fields_set_cookie( visible_fields, event.target.ctFormIndex );\n\t\t\t\t\t}\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 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_invisible = '',\n\t\tinputs_invisible_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 already added fields\n\t\tif( inputs_with_duplicate_names.indexOf( elem.getAttribute('name') ) !== -1 ){\n\t\t\treturn false;\n\t\t}\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\t\treturn true;\n\t});\n\n\t// Visible fields\n\tinputs.forEach(function(elem, i, elements){\n\t\t// Unnecessary fields\n\t\tif(\n\t\t\telem.getAttribute(\"type\") === \"submit\" || // type == submit\n\t\t\telem.getAttribute('name') === null ||\n\t\t\telem.getAttribute('name') === 'ct_checkjs'\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\t// Invisible fields\n\t\tif(\n\t\t\tgetComputedStyle(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) {\n\t\t\tif( elem.classList.contains(\"wp-editor-area\") ) {\n\t\t\t\tinputs_visible += \" \" + elem.getAttribute(\"name\");\n\t\t\t\tinputs_visible_count++;\n\t\t\t} else {\n\t\t\t\tinputs_invisible += \" \" + elem.getAttribute(\"name\");\n\t\t\t\tinputs_invisible_count++;\n\t\t\t}\n\t\t}\n\t\t// Visible fields\n\t\telse {\n\t\t\tinputs_visible += \" \" + elem.getAttribute(\"name\");\n\t\t\tinputs_visible_count++;\n\t\t}\n\n\t});\n\n\tinputs_invisible = inputs_invisible.trim();\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\tinvisible_fields : inputs_invisible,\n\t\tinvisible_fields_count : inputs_invisible_count,\n\t}\n\n}\n\nfunction apbct_visible_fields_set_cookie( visible_fields_collection, form_id ) {\n\n\tvar collection = typeof visible_fields_collection === 'object' && visible_fields_collection !== null ? visible_fields_collection : {};\n\n\tif( ctPublic.data__cookies_type === 'native' ) {\n\t\tfor ( var i in collection ) {\n\t\t\tif ( i > 10 ) {\n\t\t\t\t// Do not generate more than 10 cookies\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar collectionIndex = form_id !== undefined ? form_id : i;\n\t\t\tctSetCookie(\"apbct_visible_fields_\" + collectionIndex, JSON.stringify( collection[i] ) );\n\t\t}\n\t} else {\n\t\tctSetCookie(\"apbct_visible_fields\", JSON.stringify( collection ) );\n\t}\n}\n\nfunction apbct_visible_fields_already_collected( formsProcessed, form ) {\n\n\tif ( formsProcessed.length > 0 && form.elements.length > 0 ) {\n\n\t\tvar formMethod = form.method;\n\t\tvar formAction = form.action;\n\t\tvar formFieldsCount = form.elements.length;\n\t\tvar formInputs = [];\n\n\t\t// Getting only input elements from HTMLFormControlsCollection and putting these into the simple array.\n\t\tfor( var key in form.elements ){\n\t\t\tif( ! isNaN( +key ) ) {\n\t\t\t\tformInputs[key] = form.elements[key];\n\t\t\t}\n\t\t}\n\n\t\tfor ( var i = 0; i < formsProcessed.length; i++ ) {\n\t\t\t// The form with the same METHOD has not processed.\n\t\t\tif ( formsProcessed[i].method !== formMethod ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// The form with the same ACTION has not processed.\n\t\t\tif ( formsProcessed[i].action !== formAction ) {\n\t\t\t\t// @ToDo actions often are different in the similar forms\n\t\t\t\t//return false;\n\t\t\t}\n\t\t\t// The form with the same FIELDS COUNT has not processed.\n\t\t\tif ( formsProcessed[i].fields_count !== formFieldsCount ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Compare every form fields by their TYPE and NAME\n\t\t\tvar fieldsNames = formsProcessed[i].fields_names;\n\t\t\tfor ( var field in fieldsNames ) {\n\t\t\t\tvar res = formInputs.filter(function(item, index, array){\n\t\t\t\t\tvar fieldName = item.name;\n\t\t\t\t\tvar fieldType = item.type;\n\t\t\t\t\tif( fieldsNames[field].fieldName === fieldName && fieldsNames[field].fieldType === fieldType ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif( res.length > 0 ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\treturn false;\n}\n\nfunction apbct_get_form_details( form ) {\n\n\tif( form.elements.length > 0 ) {\n\n\t\tvar fieldsNames = {};\n\n\t\t// Collecting fields and their names\n\t\tvar inputs = form.elements;\n\t\tfor (i = 0; i < inputs.length; i++) {\n\t\t\tvar fieldName = inputs[i].name;\n\t\t\tvar fieldType = inputs[i].type;\n\t\t\tfieldsNames[i] = {\n\t\t\t\tfieldName : fieldName,\n\t\t\t\tfieldType : fieldType,\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t'method' : form.method,\n\t\t\t'action' : form.action,\n\t\t\t'fields_count' : form.elements.length,\n\t\t\t'fields_names' : fieldsNames,\n\t\t};\n\t}\n\n\treturn false;\n}\n\nfunction apbct_js_keys__set_input_value(result, data, params, obj){\n\tif( document.querySelectorAll('[name^=ct_checkjs]').length > 0 ) {\n\t\tvar elements = document.querySelectorAll('[name^=ct_checkjs]');\n\t\tfor ( var i = 0; i < elements.length; i++ ) {\n\t\t\telements[i].value = result.js_key;\n\t\t}\n\t}\n}\n\nfunction apbctGetScreenInfo() {\n\treturn JSON.stringify({\n\t\tfullWidth : document.documentElement.scrollWidth,\n\t\tfullHeight : Math.max(\n\t\t\tdocument.body.scrollHeight, document.documentElement.scrollHeight,\n\t\t\tdocument.body.offsetHeight, document.documentElement.offsetHeight,\n\t\t\tdocument.body.clientHeight, document.documentElement.clientHeight\n\t\t),\n\t\tvisibleWidth : document.documentElement.clientWidth,\n\t\tvisibleHeight : document.documentElement.clientHeight,\n\t});\n}\n\nif(typeof jQuery !== 'undefined') {\n\n\t// Capturing responses and output block message for unknown AJAX forms\n\tjQuery(document).ajaxComplete(function (event, xhr, settings) {\n\t\tif (xhr.responseText && xhr.responseText.indexOf('\"apbct') !== -1) {\n\t\t\tvar response = JSON.parse(xhr.responseText);\n\t\t\tif (typeof response.apbct !== 'undefined') {\n\t\t\t\tresponse = response.apbct;\n\t\t\t\tif (response.blocked) {\n\t\t\t\t\tdocument.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent( \"apbctAjaxBockAlert\", {\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tdetail: { message: response.comment }\n\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\n\t\t\t\t\t// Show the result by modal\n\t\t\t\t\tcleantalkModal.loaded = response.comment;\n\t\t\t\t\tcleantalkModal.open();\n\n\t\t\t\t\tif(+response.stop_script == 1)\n\t\t\t\t\t\twindow.stop();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n}"],"names":["apbct_collect_visible_fields","form","inputs","inputs_visible","inputs_visible_count","inputs_invisible","inputs_invisible_count","inputs_with_duplicate_names","key","elements","isNaN","filter","elem","indexOf","getAttribute","push","forEach","i","getComputedStyle","display","visibility","opacity","classList","contains","trim","visible_fields","visible_fields_count","invisible_fields","invisible_fields_count","apbct_visible_fields_set_cookie","visible_fields_collection","form_id","collection","ctPublic","data__cookies_type","ctSetCookie","undefined","JSON","stringify","apbct_visible_fields_already_collected","formsProcessed","length","formMethod","method","formFieldsCount","action","formInputs","fields_count","fieldsNames","fields_names","field","item","index","array","fieldName","name","fieldType","type","apbct_get_form_details","apbct_js_keys__set_input_value","result","data","params","obj","document","querySelectorAll","value","js_key","apbctGetScreenInfo","fullWidth","documentElement","scrollWidth","fullHeight","Math","max","body","scrollHeight","offsetHeight","clientHeight","visibleWidth","clientWidth","visibleHeight","ct_date","Date","ctTimeMs","getTime","ctMouseEventTimerFlag","ctMouseData","ctMouseDataCounter","ctCheckedEmails","ctScrollCollected","ctMouseMovedCollected","apbct_attach_event_handler","event","callback","window","addEventListener","attachEvent","apbct_remove_event_handler","removeEventListener","detachEvent","ctFunctionFirstKey","KeyTimestamp","floor","ctMouseReadInterval","setInterval","ctMouseWriteDataInterval","ctFunctionMouseMove","round","clientY","clientX","clearInterval","checkEmail","e","current_email","target","ctPublicFunctions","data__ajax_type","apbct_public_sendREST","email","timestamp","now","apbct_public_sendAJAX","apbct_ajax","ctSetPixelImg","pixelUrl","pixel__enabled","getElementById","jQuery","append","ajaxType","initCookies","getTimezoneOffset","cookiesArray","cookie","split","cookieName","ctDeleteCookie","pixel__setting","notJson","pixel__url","data__email_check_before_post","blur","setTimeout","processedForms","forms","parentElement","toString","id","onsubmit_prev","onsubmit","ctFormIndex","this","Function","call","ajaxComplete","xhr","settings","response","responseText","parse","apbct","blocked","dispatchEvent","CustomEvent","bubbles","detail","message","comment","cleantalkModal","loaded","open","stop_script","stop"],"mappings":"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"}
lib/Cleantalk/Antispam/Integrations/OvaLogin.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Cleantalk\Antispam\Integrations;
4
+
5
+ class OvaLogin extends IntegrationBase
6
+ {
7
+ public function getDataForChecking($argument)
8
+ {
9
+ if ( apbct_is_plugin_active('ova-login/ova-login.php')
10
+ && !empty($_POST)
11
+ && isset($_POST['email'])
12
+ && isset($_POST['username'])
13
+ ) {
14
+ /**
15
+ * Filter for POST
16
+ */
17
+ $input_array = apply_filters('apbct__filter_post', $_POST);
18
+
19
+ $data = ct_get_fields_any($input_array);
20
+ $data['register'] = true;
21
+
22
+ return $data;
23
+ }
24
+
25
+ return null;
26
+ }
27
+
28
+ /**
29
+ * @param $message
30
+ *
31
+ * @psalm-suppress UnusedVariable
32
+ */
33
+ public function doBlock($message)
34
+ {
35
+ global $ct_comment;
36
+ $ct_comment = $message;
37
+ ct_die(null, null);
38
+ }
39
+ }
lib/Cleantalk/ApbctWP/AdminNotices.php CHANGED
@@ -209,10 +209,14 @@ class AdminNotices
209
  */
210
  public function notice_incompatibility() // phpcs:ignore PSR1.Methods.CamelCapsMethodName.NotCamelCaps
211
  {
 
212
  if ( ! empty($this->apbct->data['notice_incompatibility']) && $this->is_cleantalk_page && $this->apbct->settings['sfw__enabled'] ) {
213
  foreach ( $this->apbct->data['notice_incompatibility'] as $notice ) {
214
  $this->generateNoticeHtml($notice);
215
  }
 
 
 
216
  }
217
  }
218
 
209
  */
210
  public function notice_incompatibility() // phpcs:ignore PSR1.Methods.CamelCapsMethodName.NotCamelCaps
211
  {
212
+ global $apbct;
213
  if ( ! empty($this->apbct->data['notice_incompatibility']) && $this->is_cleantalk_page && $this->apbct->settings['sfw__enabled'] ) {
214
  foreach ( $this->apbct->data['notice_incompatibility'] as $notice ) {
215
  $this->generateNoticeHtml($notice);
216
  }
217
+ } else {
218
+ $apbct->data['notice_incompatibility'] = array();
219
+ $apbct->saveData();
220
  }
221
  }
222
 
lib/Cleantalk/ApbctWP/Ajax.php CHANGED
@@ -69,6 +69,9 @@ class Ajax
69
  case 'apbct_js_keys__get':
70
  apbct_js_keys__get();
71
  break;
 
 
 
72
  case 'apbct_email_check_before_post':
73
  if ( $apbct->settings['data__email_check_before_post'] ) {
74
  apbct_email_check_before_post_from_custom_ajax();
69
  case 'apbct_js_keys__get':
70
  apbct_js_keys__get();
71
  break;
72
+ case 'apbct_get_pixel_url':
73
+ apbct_get_pixel_url();
74
+ break;
75
  case 'apbct_email_check_before_post':
76
  if ( $apbct->settings['data__email_check_before_post'] ) {
77
  apbct_email_check_before_post_from_custom_ajax();
lib/Cleantalk/ApbctWP/Firewall/AntiCrawler.php CHANGED
@@ -354,10 +354,14 @@ class AntiCrawler extends \Cleantalk\Common\Firewall\FirewallModule
354
  return;
355
  }
356
 
357
- echo '<script>ctSetCookie( "wordpress_apbct_antibot", "' . hash(
358
- 'sha256',
359
- $apbct->api_key . $apbct->data['salt']
360
- ) . '", 0 );</script>';
 
 
 
 
361
  }
362
 
363
  /**
354
  return;
355
  }
356
 
357
+ $script =
358
+ "<script>
359
+ window.addEventListener('DOMContentLoaded', function () {
360
+ ctSetCookie( 'wordpress_apbct_antibot', '" . hash('sha256', $apbct->api_key . $apbct->data['salt']) . "', 0 );
361
+ });
362
+ </script>";
363
+
364
+ echo $script;
365
  }
366
 
367
  /**
lib/Cleantalk/ApbctWP/RestController.php CHANGED
@@ -19,6 +19,14 @@ class RestController extends \WP_REST_Controller
19
  )
20
  ));
21
 
 
 
 
 
 
 
 
 
22
  register_rest_route($this->namespace, "/alt_sessions", array(
23
  array(
24
  'methods' => 'POST',
19
  )
20
  ));
21
 
22
+ register_rest_route($this->namespace, "/apbct_get_pixel_url", array(
23
+ array(
24
+ 'methods' => 'POST',
25
+ 'callback' => 'apbct_get_pixel_url__ajax',
26
+ 'permission_callback' => '__return_true',
27
+ )
28
+ ));
29
+
30
  register_rest_route($this->namespace, "/alt_sessions", array(
31
  array(
32
  'methods' => 'POST',
readme.txt CHANGED
@@ -2,9 +2,9 @@
2
  Contributors: safronik
3
  Tags: spam, antispam, anti-spam, comments, firewall
4
  Requires at least: 3.0
5
- Tested up to: 5.8
6
  Requires PHP: 5.6
7
- Stable tag: 5.169.1
8
  License: GPLv2
9
 
10
  Spam protection, anti-spam, firewall, premium plugin. No spam comments & users, no spam contact form & WooCommerce anti-spam.
@@ -595,847 +595,17 @@ If your website has forms that send data to external sources, you can enable opt
595
 
596
  == Changelog ==
597
 
598
- = 5.169.1 Dec 29 2021 =
599
- #### Comments protection fixed.
600
- * Fix. Comments. Comments form without email field protection fixed.
601
- * Fix. Pluggable. Is trackback checking function added.
602
- * Fix. Exception arg. Not set the flag to the comments and trackbacks.
603
- * Fix. Forms protection. Prevent handle the trackback request by contact_form_validate.
604
-
605
- = 5.169 Dec 28 2021 =
606
- #### Improved compatibility with Varnish cache, visible_fields cookies fixed and some minor issues fixed.
607
- * New. Options. Set cookie option "Auto" mode added.
608
- * New. State. New property data[cookies_type] added.
609
- * Fix. State. Set cookie option set on "Auto" by default.
610
- * Fix. Activation. Select ajax handler during the plugin activation.
611
- * Fix. API. Async logic added.
612
- * Fix. State. Varnish cache detection fixed.
613
- * Fix. API. Method calling service_update_local_settings is async now.
614
- * Fix. Visible fields. Prevent generating more than 10 visible fields cookies.
615
- * Fix: Disabling the cache when activating the plugin
616
- * Fix: Setting the parameter of ipMaskLongToNumber to an integer
617
- * Fix: fixed error in js script
618
-
619
- = 5.168.1 Dec 22 2021 =
620
- #### Direct integrations protection fixed.
621
- * Fix: Prevent logging excluded requests on the direct integrations.
622
- * Fix: Integration. Comment type The7 integration fixed.
623
- * Fix. Log excluded. Skip logging PopUp Builder service action.
624
- * Fix. Log excluded. Skip logging Cleantalk Security service action.
625
-
626
- = 5.168 Dec 16 2021 =
627
- #### One integrations added, some skipped requests will be logged, cookies optimized and minor issues fixed.
628
- * New. Get key. A filter to changing an email to get the key implemented.
629
- * New. Log exclusions. Option for logging excluded request implemented.
630
- * New. Integration. Formidable Pro integration added.
631
- * New. Integration. Smart forms integration added.
632
- * Upd. Get key. email_filtered parameter added.
633
- * Upd: Antispam. Prevent skip requests without emails.
634
- * Upd: Antispam. Prevent skip requests trusted users.
635
- * Mod: Implementation of sending plugin settings to service_update_local_settings
636
- * Fix. Antispam. Exception action argument fixed.
637
- * Fix. Antispam. Preventing catch RC requests.
638
- * Fix. Antispam. Preventing catch website search requests.
639
- * Fix. Setting templates. Get templates only after manual getting key.
640
- * Fix. Admin notices. Notice about getting key removed.
641
- * Fix. Getting key. Get the right email for gathering the key.
642
- * Fix. Exception action. Send ajax requests without email to the cloud.
643
- * Fix. Exception action. Prevent catching admin-side requests.
644
- * Fix. Exception action. Send ajax requests without email to the cloud.
645
- * Fix. Exception action. Prevent catching admin-side requests.
646
- * Fix. Log exclusions. Skip checking excepted requests if the "Log excluded requests" option is disabled.
647
- * Fix. Antispam. Remove unnecessary cookie from requests.
648
- * Fix. Visible fields. Collecting visible fields only for unique forms on the page.
649
- * Fix: excluded some action for Ninja Form from spamtest.
650
-
651
- = 5.167 Dec 06 2021 =
652
- * Fix. Comment scanner. Scanning loop fixed.
653
- * Fix. Comment scanner. Scan only not spam comments.
654
- * Mod: Launching a suitable ajax handler for checking email before POST
655
- * Upd. RC. Remote calls checking moved to the root of the main file.
656
- * New. Activation. Hook for getting key auto added.
657
- * Fix. Admin notices. Errors about getting key fixed.
658
- * Fix. Visible fields. Getting visible fields collection method moved to the Cookie class
659
- * Fix. Visible fields. Getting visible fields collection method moved
660
- * Fix. Settings. Getting key button fixed.
661
- * Fix: Removed ajax_type from apbct_email_check_before_post
662
- * Fixed Ajax.php errors with apbct_email_check_before_post
663
- * Fix: Add integration for CalculatedFieldsForm and fixed scripts
664
-
665
- = 5.166 Nov 18 2021 =
666
- * Fix: skip ult-forgot-password action.
667
- * Fix: Uncanny toolkit skip.
668
- * Fix: SFW. Clearing FW stats fixed.
669
- * Fix: SFW. Updating fallback fixed.
670
- * Fix: SFW. Updating FW stats fixed.
671
- * Mod: Changed the type of verification on check_message during registration in BuddyPress
672
- * Fix: register_settings for wp < 4.7.
673
- * Fix: Comment scanners. Getting cookie fixed.
674
- * Fix: check if errors exists in state.
675
- * Fix: update sfw after enabled.
676
- * Fix: WPMS. Settings validating fixed.
677
- * Fix: wpforms skip remove token validation.
678
- * Fix. Text. Feedback description fixed.
679
- * Fix: WPMS. Delete api key from settings template used.
680
- * Fix. Updater. Notice fixed.
681
- * Fix: WPMS. Setting transferring to the sub sites fixed.
682
-
683
- = 5.165.1 Nov 09 2021 =
684
- * Fix. Settings. Saving settings fixed.
685
-
686
- = 5.165 Nov 08 2021 =
687
- * New: Public. Mouse moved flag implemented.
688
- * Upd: State. Errors adding method updated.
689
- * Upd: Settings. Errors show function updated.
690
- * Upd: Updater. Clean errors options for new errors structure.
691
- * Upd: Public. Cookies aggregation.
692
- * Mod: Improving the functionality of checking comments for spam.
693
- * Mod: CommentsChecker - updated functionality and refactoring
694
- * Mod: merged inc/cleantalk-updater.php
695
- * Mod: merged UpdatePlugin dir
696
- * Mod: merged Schema.php
697
- * Mod: merged SchemaTest.php
698
- * Mod: merged cleantalk.php
699
- * Mod: merged State.php, Activator.php
700
- * Fix: SFW. Directory for FW files moved to wordpress uploads directory.
701
- * Fix: Settings. GDPR link fixed.
702
- * Fix: testrequesttohost error handle.
703
- * Fix: check ctsetcookie before call.
704
- * Fix: Settings. Save button padding fixed.
705
- * Fix: add console.log if ctSetcookie is not defined.
706
- * Fix: SFW. Skip if sfw not updated yet.
707
- * Fix: change console output if apbct-public-functions.js is not loaded.
708
- * Fix: Added secure and samesite in cookie
709
- * Fix: Renamed field apbct_wc_honeypot to wc_apbct_email_id
710
- * Fix.Users.Feedback about deleting user implemented.
711
- * Fix. SFW. Deleting table fixed.
712
- * Fix: set buffer type to string if epico theme is active.
713
- * Fix: Integration. Jetpack contact forms hooks fixed.
714
- * Fix: SFW. Separating the end of update stage into several stages.
715
- * Fix: SFW. Fallback function on SFW updating errors implemented.
716
- * Fix. Integration. WP Forms hooks fixed.
717
- * Fix. SFW. Auto updating for new users fixed.
718
- * Fix. Comment. Set meta fixed.
719
- * Fix: WPMS. Settings saving fixed.
720
-
721
- = 5.164.1 Oct 21 2021 =
722
- * Fix. SFW. Incompatibility WP-Rocket notice removed.
723
-
724
- = 5.164 Oct 21 2021 =
725
- * New: Integration. UsersWP plugin integration implemented.
726
- * New. SFW. Incompatibility WP-Rocket notice added.
727
- * New: Settings. Advanced settings navigation implemented.
728
- * New: Server variables. isSSL method added.
729
- * Mod: Added the functionality of changing the mail when receiving the key during the initial installation.
730
- * Mod: Custom admin email. Added minified js and css files
731
- * Mod: validate api key before save settings for new accounts
732
- * Mod: Antispam. Comments check. Send feedback with hash:01:url data only if post_info->post_url is empty.
733
- * Fix: State. Option prefix field is public now.
734
- * Fix: Using get_option('home') for getting the blog url instead get_option('siteurl').
735
- * Fix: State. Magic __get notice fixed.
736
- * Fix. State. Exclamation mark fixed.
737
- * Fix. Common. Getting REST url fixed.
738
- * Fix: SFW. Update percents fixed.
739
- * Fix: DB. isTableExists method fixed.
740
- * Fix. State. $errors field added.
741
- * Fix: Server::getDomain(). Fixed regexp.
742
- * Fix: skip log-in request wpstg.
743
- * Fix: SFW. Work on hosting licenses fixed.
744
- * Fix: set prefix_name for cleantalk-icons css.
745
- * Fix: Helper. Hard use https for the curl requests.
746
- * Fix: Helper. Home url slash added.
747
- * Fix: SFW. Using direct updating if remote calls not working.
748
- * Fix: Settings. Save button z-index added.
749
- * Fix: Admin bar. Exclamation mark style fixed.
750
- * Fix: Settings. Api key description on active IP license added.
751
- * Fix: Sender info. Getting page_url on ajax/rest requests fixed.
752
-
753
- = 5.163.1 Oct 12 2021 =
754
- * Fix: Queue. Errors of each try fixed.
755
- * Fix: SFW. Sleep before deleting tables was reduced.
756
- * Fix: Queue. Accepted tries argument implemented.
757
-
758
- = 5.163 Oct 07 2021 =
759
- * New: State. errorExists method implemented.
760
- * New: SFW. Disabling SFW when the database was outdated.
761
- * New: Settings templates. Saving template to the several blogs implemented.
762
- * New: Settings. WPMS settings always show now.
763
- * New: WPMS. No show any sub-sites errors on wpms mode 2.
764
- * New: WPMS. Plugin settings are disabled on sub-sites on wpms mode 2.
765
- * Mod: Remote Calls using POST instead of GET request type.
766
- * Mod: Helper. No cache GET parameter renamed.
767
- * Mod: Cron. Transactions implemented #2.
768
- * Mod: Settings. "URL Exclusions" description updated.
769
- * Upd: Getting JS. AJAX handler type selecting updated.
770
- * Fix: Added lost info about total comments in CommentChecker::ctAjaxInfo
771
- * Fix: add subscriber to skip list.
772
- * Fix: Changed the plugin name in the list of plugins when enabling White Label
773
- * Fix: Changed the plugin name in the admin bar when enabling White Label
774
- * Fix: Feedback. Comments feedback description fixed.
775
- * Fix: Hide information about Security in admin bar if it is not main site.
776
- * Fix: SFW. Error toggle used instead of error add/delete.
777
- * Fix: Alt cookies. Selecting type of alt cookies bug fixed.
778
- * Fix: protect logged users in gravity.
779
- * Fix: Updated the condition for showing a link to the security installation in the admin bar.
780
- * Fix: reverse condition for WL security link.
781
- * Fix: WPMS. Addition WL info link fixed.
782
- * Changed plugin name in plugin settings multisite__white_label__plugin_name.
783
- * Fix: rename plugin name after search plugins if WL is on.
784
- * Fix: Renamed Antispam by Cleantalk to Anti-spam by Cleantalk
785
- * Fix: add elementor-pro to skip save action.
786
- * Fix: WPMS. Sanitize api key during getting key fixed.
787
- * Fix: Cron. Cron results errors handling fixed.
788
- * Fix: WPMS. Migrate old WPMS to the new wpms mode.
789
- * Fix: WPMS. Using main site data on wpms_mode=2.
790
- * Fix: Helper. Hard use https for the curl requests.
791
- * Fix: WPMS. Sanitize network settings fixed.
792
- * Fix: WPMS. Applying settings for selected blogs fixed.
793
- * Fix: Getting key. Sync after getting key fixed.
794
-
795
- = 5.162 Sep 23 2021 =
796
- * New. SFW. Fall back updating system implemented.
797
- * New: Integration. Added honeypot wc.
798
- * New: SFW. Added new status PASS_SFW__BY_STATUS for showing die_page.
799
- * Upd: Cookies. Alternative cookies types was updated.
800
- * Upd: Ajax. Finding the right WP directory implemented.
801
- * Fix: Updater fixed.
802
- * Fix: Firewall update. Not existing FW table.
803
- * Fix: State. DB prefix fixed.
804
- * Fix: WPForms. Excluding from the custom contact forms check.
805
- * Fix. State. DB prefix definition fixed.
806
- * Fix: SpamFirewall update. Increasing delay in queue transactions, adding time of the queue task start
807
- * Fix: State. Show notices fixed.
808
- * Fix: State. Some logic moved from a loop.
809
- * Fix: Adding a error if Common/Helper::http_request() couldn't get HTTP code via get_headers().
810
- * Fix: SFW. Do not AC checking, if cookies were disabled.
811
- * Fix: http_request() with preset 'get_code' using GET HTTP method instead of HEAD now.
812
- * Fix: SFW. Direct update DB errors handled.
813
- * Fix: SFW. Direct update creating temp table errors handled.
814
- * Fix: SpamFirewall update. SFW_IS_DISABLED is not a error. apbct_sfw_update__init() returns false in this case.
815
- * Fix: Extended header. Cache-Control: max-age=0 in the /Common/Helper::httpRequest()
816
- * Fix: Updater. Fixed data__use_static_js_key settings name.
817
- * Fix: Updater. start ct_account_status_check() if main site in 5.127+ versions
818
- * Fix: Adding error handling to DB::execute() in ApbctWP\SFW.
819
- * Fix: Cron. Cron last start flag improved.
820
- * Fix: Cron. Cron execution cooldown decreased to 2 min.
821
- * Fix: Adding more info in 'Unknown' type error.
822
- * Fix: Exclude Forminator double requests on multipage form.
823
- * Fix: Settings. Alt cookies types validating fixed.
824
- * Fix: Ajax. WP core dir parsing fixed.
825
- * Fix: Settings. Ajax handler title fixed.
826
-
827
- = 5.161.1 Sep 14 2021 =
828
- * Fix. State. Checking empty errors fixed.
829
-
830
- = 5.161 Sep 09 2021 =
831
- * Fix: Cleantalk.php. dns_get_record() error handling.
832
- * Fix: Search form integration. PHP Notice.
833
- * Fix: Default value for "Alternative Cookie Type" setting.
834
- * Fix: SpamFirewall. Updating percent output.
835
- * Fix: SpamFirewall. Omit SFW_IS_DISABLED error.
836
- * Mod: Admin-bar.
837
- * Fix: SpamFirewall update.
838
- * Fix: apbct_log(). Log time.
839
- * Mod: Debug RC. Servers_connection item added.
840
- * Mod: apbct_test_connection() moved to cleantalk.php.
841
- * Fix: skip elementor save template.
842
- * Fix: skip formidable base check.
843
- * Fix: remove limit for request in delete all spam users.
844
- * Mod: apbct_test_connection() improvements.
845
- * Fix: Helper::http__request() timeout is 15 seconds.
846
- * New: Helper::http__request() low speed time is 10 seconds.
847
- * Fix: decbin int type in helper.
848
- * Fix: add apbct_get_rest_url func.
849
- * Fix: Error report form Cleantalk.php.
850
- * Fix: skip sfw check if sfw not updated.
851
- * Fix. Integration. Enfold theme saving options skip protection.
852
- * Fix. Integration. Cartflows saving cart skip protection.
853
- * Fix: getOption return variable.
854
- * Fix: skip sfw if last_update_time is zero.
855
- * Fix: skip last_update_time sfw check.
856
- * Fix: add priority to comment_form_default_fields hook.
857
- * New. Helper. IP detecting improved.
858
- * Fix. Helper. Multi-curl timeout added.
859
- * Upd. SFW. SFW block page updated.
860
- * Upd. SFW. AC block page updated.
861
- * Upd. Settings. SFW features settings moved to the separated block.
862
- * Fix. SFW. Random get parameter for redirecting block page updated.
863
- * Fix. Settings. SFW features settings description fixed.
864
- * New: Queue. Transaction system.
865
- * Fix: skip siteorigin pagebuilder save widget.
866
- * New: Readme. Hide «Website» field for comments added.
867
- * Fix. Helper. Async curl timeout increased.
868
- * Fix. Integration. Blogvault requests skipped.
869
- * Fix: skip classfields check_email action.
870
- * Mod: Show real HTTP code in a error during downloading GZ file.
871
- * Mod: Debug call extended.
872
- * Mod: Admin notices. Added the ability to hide a banner with notifications for each individual administrator for two weeks.
873
- * Fix. Settings. Long description output fixed.
874
- * Fix. Settings. JS debug data removed.
875
- * Fix. SFW. Deleting fw files folder.
876
- * Fix: api error handle.
877
- * Fix: SFW. Added update mode if sfw-updater works with tables.
878
- * New. WPMS. New multisite logic implemented.
879
- * Fix: Setting. Select field type fixed.
880
- * Fix: Сhanged the function delete_all_options() of removing plugin options when fully uninstalled.
881
- * Fix. WPMS. Hoster API key description fixed.
882
- * Fix: Admin notices. get_option expression is checking more strictly.
883
- * New: Helper. Added method for validate date format as 'Y-m-d'.
884
- * Fix: SFW. Default FW folder fixed.
885
- * Fix: SFW. FW folder on the first sync fixed.
886
- * Fix: SFW. Remove wrong FW folders.
887
- * Fix: SFW. Refactoring apbct_sfw_update__end_of_update().
888
- * Mod: apbct_test_connection().
889
- * Fix: /ApbctWP/API::send_request() with empty result.
890
-
891
- = 5.160.3 Aug 31 2021 =
892
- * New: Queue. Transaction system.
893
- * Fix. SFW. Updating for the new clients fixed.
894
- * Fix. SFW. Deleting UA file fixed.
895
- * Fix. SFW. Updating via cron fixed.
896
- * Fix. SFW. Updating process for multisite fixed.
897
-
898
- = 5.160.2 Aug 26 2021 =
899
- * Fix. Pixel. Auto mode fixed.
900
-
901
- = 5.160.1 Aug 6 2021 =
902
- * Fix: SpamFirewall update.
903
-
904
- = 5.160 Jul 29 2021 =
905
- * New: SFW. SFW alternative cookie implemented.
906
- * New: SFW. AC alternative cookie implemented.
907
- * New: SFW. AF alternative cookie implemented.
908
- * New: Helper. Curl multi wrapper added.
909
- * New: Queue class implemented.
910
- * Mod: Changed the processing of the honeypot_field for standard comment.
911
- * Mod: Added integration for Wishlist Members registration form.
912
- * Mod: Store visited URLs amount reduces to 5 with 128 symbols by URL.
913
- * Upd: Public js scripts separated.
914
- * Upd: SFW. Updating process modified.
915
- * Fix: Moderate rotating fixed.
916
- * Fix: SFW. Process file errors handling fixed.
917
- * Fix: Pluggable. Expression fixed.
918
- * Fix: Ajax. User detection fixed..
919
- * Fix: Ajax. Ajax handlers fixed.
920
- * Fix: IP-detection for Cloudflare CDN.
921
- * Fix: Skip test for ajax alt_session request.
922
- * Fix: Set cookies on dashboard pages even if the setting is off.
923
- * Fix: Ajax. Ajax class fixed.
924
- * Fix: Users scanner. Remove redundant menu.
925
- * Fix: Added an exception for the action edd_process_checkout Easy Didgital Downloads plugi
926
- * Fix: SFW. Changed method for getting addr ip.
927
- * Fix: Integration. WPForms names gathering fixed.
928
- * Fix: SFW. Min update interval decreased to 14400 seconds.
929
- * Fix: Integration. WPForms names gathering fixed.
930
- * Fix: Cleantalk.php. dns_get_record() error handling.
931
- * Fix: Search form integration. PHP Notice.
932
- * Fix: Default value for "Alternative Cookie Type" setting.
933
- * Fix: SpamFirewall. Omit SFW_IS_DISABLED error.
934
- * Fix: SpamFirewall. Updating percent output.
935
- * Fix. Settings templates. Sync after template loading.
936
- * Fix. SFW. Updating process percents fixed.
937
- * Fix. Antispam. All headers parameter fixed.
938
-
939
- = 5.159.9 Jul 15 2021 =
940
- * Fix. SFW. Updating cooldown increased up to 15 min.
941
- * Fix. Cron. Next call time set by task updating fixed.
942
- * Fix. SFW. Reset blacklist array before processing.
943
- * Fix. SFW. Some errors handling fixed.
944
- * Fix. SFW. Getting update period from dns fixed.
945
- * Fix. Ajax. Checking nonce for logged in users fixed.
946
-
947
- = 5.159.8 Jul 07 2021 =
948
- * Fix: Fixed the connection error Ajax.php when the site files are in a subfolder.
949
- * Fix. SFW. Anticrawler redirect detection fixed.
950
- * Fix. Checking sql before the tables creating.
951
- * Fix. Updater fixed.
952
- * Fix: Set alt cookies if sg optimizer is enabled.
953
- * Fix: Exclusion for GiveWP plugin in apbct-public.js. #2
954
-
955
- = 5.159.7 Jul 01 2021 =
956
- * Fix. Updater fixed.
957
-
958
- = 5.159.6 Jun 30 2021 =
959
- * New. Rest API request detecting implemented.
960
- * Upd. SFW. AntiCrawler was disabled for the new installations.
961
- * Upd. SFW. AntiCrawler option moved to the advanced settings section.
962
- * Mod: email is taken only from visible fields
963
- * Mod: remove error message about firewall updating
964
- * Mod: excluded for test WC_Gateway_Tpay_Basic
965
- * Fix: Added exclude for happyforms.php in apbct_is_skip_request.
966
- * Fix: Added an error message in the form response
967
- * Fix: Skip wpforms general requests because of direct integration.
968
- * Fix. Integration. Autonami Marketing Automations service request kipped.
969
- * Fix. Cron. Update task method fixed.
970
- * Fix. SFW. Prevent updating while SFW is disabled.
971
- * Fix. Cron. Restoring cron tasks during plugin updating.
972
- * Fix. SFW. Logs sending used limit.
973
- * Fix: set correct api_key value for ajax calls.
974
- * Fix. Frontend widget. The widget layout fixed.
975
- * Fix. Integration. Formidable preparing data for checking.
976
-
977
- = 5.159.5 Jun 24 2021 =
978
- * New: Admin bar. Attention mark added.
979
- * Upd: Admin notices have been rebuilt.
980
- * Upd: Integrations with HappyForms updated.
981
- * Fix: Skip fluentform multistep request.
982
- * Fix: Correct fluent_form skip name.
983
- * Fix: Admin notices. Trial and renew notices ID attributes renamed.
984
- * Fix: Admin bar. Trial notice font color changed.
985
- * Fix: Admin bar. Show admin bar without api key.
986
- * Fix: Admin bar. Show attention badge if the api key is empty.
987
- * Fix: AC. Skip checking on 302 redirects.
988
- * Fix: Added IF NOT EXISTS after ADD COLUMN in cleantalk-updater.php
989
- * Fix: Removed ADD PRIMARY KEY from apbct_update_to_5_146_4
990
- * Fix: Removed apbct_update_to_5_146_4
991
- * Fix: Checking output parameters of API-method get_2s_blacklists_db.
992
- * Fix: SFW. Writing exclusions fixed.
993
- * Fix: Integration. GF names detection fixed.
994
- * Fix: Integration. WPForms nicknames detecting fixed.
995
- * Fix. SFW. Updating fixed.
996
- * Fix: Excluding REST API requests from check.
997
- * Fix. Admin notices. Incompatibility notice fixed.
998
- * Fix. Compatibility. Notice saving fixed.
999
- * Fix. Compatibility. Prevent disabling SFW on incompatibility detected.
1000
- * Fix. Compatibility. SFW option is no longer disabled on incompatibility detected.
1001
- * Fix. Admin bar. Reset counters fixed.
1002
-
1003
- = 5.159.4 Jun 17 2021 =
1004
- * Fix: Admin bar. PHP error.
1005
-
1006
- = 5.159.3 Jun 15 2021 =
1007
- * Fix: Admin bar. Conflict with previous version of Security by Cleantalk.
1008
-
1009
- = 5.159.2 Jun 15 2021 =
1010
- * Fix. Renew notice banner shows only on cleantalk pages.
1011
- * Fix. SFW updating. Getting remote data error handling fixed.
1012
- * Upd. Readme updated.
1013
- * Fix. SFW. Auto-updating fixed.
1014
- * Fix: Admin bar style. Install link is no longer highlighted.
1015
- * Fix: Admin bar style. Style for security icon.
1016
- * Fix: Admin bar. Reset buttons counters leads to the same page.
1017
- * Fix. Manual register link fixed.
1018
- * Fix: do not display errors on subsites when wl is enabled.
1019
- * Fix: Admin bar. Rapid fix.
1020
- * Fix. Skipping. WPForms check restricted email request skipped.
1021
- * Fix. Helper. CURL request timeout increased.
1022
- * Fix. Comments/users checker. Description fixed.
1023
- * Fix. Get fields any. Preset nickname parameter fixed.
1024
- * Fix: wpms settings.
1025
-
1026
- = 5.159.1 Jun 10 2021 =
1027
- * Fix: Cron. Cron calling in cleantalk-updater.php fixed.
1028
-
1029
- = 5.159 Jun 10 2021 =
1030
- * New. Admin Bar. Common admin bar implemented.
1031
- * New: email check before post.
1032
- * New: New admin bar style.
1033
- * New. SFW. Updating integrity control implemented.
1034
- * New. Custom Ajax. Email checking before post.
1035
- * New. Custom Ajax. Getting JS key.
1036
- * New. Custom Ajax. Alternative cookies.
1037
- * Upd. Integrations. Support multiple non-ajax hooks.
1038
- * Upd. Cron. Cron class and cron usage updated.
1039
- * Upd. Pixel. Pixel setting is "auto" for the new installations.
1040
- * Upd. Users checker. Users with completed WC orders no checked.
1041
- * Upd. WPMS settings.
1042
- * Mod. limiting the size of an array top5_spam_ip to five elements in widget.
1043
- * Mod. update data__pixel title.
1044
- * Mod. Update data__use_static_js_key title.
1045
- * Mod. add 'relative' parameter in admin_url() for getting ajaxurl.
1046
- * Mod. update field name honeypot_field, reverse logic
1047
- * Mod. changed website field from comments form: type text, display none.
1048
- * Fix. resolve conflict with wiloke theme and unknown plugin, that removes standard authorization cookies.
1049
- * Fix. moved the wiloke_theme options_ajax_save_skip check to apbct_is_skip_request function.
1050
- * Fix. added a theme check along with a hook wiloke_themeoptions_ajax_save_skip.
1051
- * Fix. Integration. Essentials addons for elementor integration fixed.
1052
- * Fix. AC/AF. Clearing AC table via cron fixed.
1053
- * Fix. SFW. Obtaining the count of the networks was fixed.
1054
- * Fix. Cron. Last cron start fixed.
1055
- * Fix. cookies for login page.
1056
- * Fix. Firewall. Update. Filtering bad data.
1057
- * Fix. Custom Ajax. Localized login scripts.
1058
- * Fix. API. Cleantalk\ApbctWP\API fixed to work on SHORTINIT mode.
1059
- * Fix. Custom Ajax. Getting JS key - removed WP ajax hooks.
1060
- * Fix. GetFieldsAny. Bypassing collecting email and names logic fixed.
1061
- * Fix. New admin bar style. Sorting plugins by Alphabet.
1062
- * Fix. ct_get_admin_email return network email if set.
1063
- * Fix. Fixed the name of the key containing the file address to check the number of records.
1064
- * Fix. Comments checker. Non-checkable users tab removed.
1065
- * Fix. Visible fields. Formidable visible fields collecting fixed.
1066
- * Fix. Get fields any fixed.
1067
- * Fix. empty key error for hosting.
1068
- * Fix. WPMS. Api key saving fixed.
1069
- * Fix. WPMS. Network settings saving fixed.
1070
- * Fix. WPMS. Plugin name setting field is not required now.
1071
- * Fix. Alt sessions js fixed.
1072
-
1073
- = 5.158 May 27 2021 =
1074
- * Fix: Firewall. SQL-request error.
1075
-
1076
- = 5.158 May 26 2021 =
1077
- * New. Integration. WP Foro register system integration.
1078
- * New. Integration. Elementor essentials LoginRegister integration implemented.
1079
- * New: SQL-schema and updater for extended SpamFirewall logs.
1080
- * New: Extended SpamFirewall logs.
1081
- * New: Pixel.
1082
- * Mod: Few improvements to SFW update.
1083
- * Mod: add settings for hidding website field from comment form.
1084
- * Mod: Few improvements to SFW update #2.
1085
- * Mod: Possibility to send empty JSON object in API.
1086
- * Mod: Extended SpamFirewall logs for AntiCrawler module.
1087
- * Upd: SFW. Direct updating method implemented.
1088
- * Upd. Settings. Network settings templates updated.
1089
- * Upd: Firewall. Improvements to update system.
1090
- * Upd: Firewall. Improvements to update system.
1091
- * Fix: replace wp_die to die in ct_die(), refactoring ct_die()
1092
- * Fix. Forms. Exclude field wp-editor-area from collecting visible fields.
1093
- * Fix. Widget. Widget content logic fixed.
1094
- * Fix: Forms. Nicknames detecting fixed #2.
1095
- * Fix: Forms. Getting check_js key fixed.
1096
- * Fix: update ct_die_extended() as ct_die().
1097
- * Fix. Code. Getting delay before js code get if async option enabled.
1098
- * Fix. WPMU. Blog id added in settings templates list.
1099
- * Fix. Integration. Elementor essentials LoginRegister login form protection skipped.
1100
- * Fix. WPMU. Blog id added in settings templates list.
1101
- * Fix. Readme. Required PHP version increased to 5.6.
1102
- * Fix. Updater. 5_157_10 updating fixed #2.
1103
- * Fix. JS. DOMContentLoaded used instead jQuery(document).ready().
1104
- * Fix: SpamFirewall. Update. "FW UPDATE INIT: KEY_EMPTY", "SFW UPDATE INIT: KEY_IS_NOT_VALID" errors.
1105
- * Fix. Users checker. Export to the csv fixed.
1106
- * Fix: SpamFirewall. Update. Error "WRONG_UPDATE_ID".
1107
- * Fix: SpamFirewall. Update. "FW UPDATE INIT: KEY_EMPTY", "SFW UPDATE INIT: KEY_IS_NOT_VALID" errors.
1108
- * Fix: SpamFirewall. Update. Error "WRONG_UPDATE_ID".
1109
- * Fix: \Cleantalk\Common\Helper::http__request() consider only boolean false (empty string '' considering as good) as bad response.
1110
- * Fix: SpamFirewall. Update.
1111
- * Fix: SpamFirewall. Update #2.
1112
- * Fix: WPMS empty apikey in options
1113
- * Fix: "Mod: add settings for hidding website field from comment form".
1114
- * Fix: Common/Helper::http__get_headers() fixed.
1115
- * Fix: SpamFirewall admin bar counter.
1116
- * Fix: "Fix: Common/Helper::http__get_headers() fixed."
1117
- * Fix: Pixel.
1118
- * Fix: "Pixel" setting description.
1119
- * Fix: Extended SpamFirewall logs for AntiCrawler module.
1120
- * Fix: Extended SpamFirewall logs for AntiCrawler module #2.
1121
- * Fix: WPFroms. PHP notice.
1122
- * Fix: Gravity Forms. PHP notice.
1123
- * Revert: Fix: Code. get_fields_any() notice fixed.
1124
-
1125
- = 5.157.2 May 05 2021 =
1126
- * Fix: Code. get_fields_any() notice fixed.
1127
- * Fix: Integration. Gravity Forms integration fixed.
1128
- * Fix: Forms. Nicknames detecting fixed.
1129
-
1130
- = 5.157.1 Apr 29 2021 =
1131
- * Mod: \Cleantalk\ApbctWP\Variables\Cookie::get() now has 'cast_to' param. If defined trying to cast to a given type.
1132
- * Fix: \Cleantalk\ApbctWP\Variables\Cookie::get() calls using 'cast_to' param if needed.
1133
-
1134
- = 5.157 Apr 28 2021 =
1135
- * New: Invisible fields collecting implemented.
1136
- * New: A dev and a fix version suffix support.
1137
- * New: Variables. Cookie::set() method added.
1138
- * New: Split Cleantalk\Common\DB::method__private_list_add__sfw_wl() in two Cleantalk\Common\DB::method__private_list_add() and Cleantalk\ApbctWP\DB::method__private_list_add__sfw_wl().
1139
- * New: Split Cleantalk\ApbctWP\Helper::http__request__rc_to_host() in two Cleantalk\ApbctWP\Helper::http__request__rc_to_host() and Cleantalk\ApbctWP\Helper::http__request__rc_to_host__test().
1140
- * New: Updater script for 5.157.
1141
- * New: Update/delete SpamFireWall database when it enable/disable. Improvements.
1142
- * New: \Cleantalk\ApbctWP\Variables::AltSessions class.
1143
- * New: "Set cookies" setting now has 3 options "On", "Off" and "Use alternative mechanism for cookies".
1144
- * New: REST API route '/alt_sessions' and callbacks.
1145
- * Mod: Compatibility with Thrive Leads - remove deleted the modal window about successful sending when blocking the user.
1146
- * Mod: changed the handling of gravityform fields, added a check for the visibility of the field when processing the name.
1147
- * Mod: Added a setting for Woocommerce, which includes checking the un-logged user when adding an item to the cart. If the user does not pass the verification, the product is not added to the cart.
1148
- * Mod: Added a settings for Woocommerce - correction.
1149
- * Mod: WC add to cart - change settings description.
1150
- * Mod: Cleantalk\ApbctWP\RemoteCalls::debug() improved.
1151
- * Mod: SpaFirewall update.
1152
- * Mod: add buddypress integration for user account personal data.
1153
- * Mod: Moving \Cleantalk\Common\Helper::apbct_cookie__set() to \Cleantalk\ApbctWP\Variables::set() function.
1154
- * Mod: Using \Cleantalk\ApbctWP\Variables::set() instead of \Cleantalk\Common\Helper::apbct_cookie__set().
1155
- * Mod: Extend \Cleantalk\ApbctWP\Variables to use alternative sessions.
1156
- * Mod: Using \Cleantalk\ApbctWP\Variables\AltSessions class instead of set of "apbct_alt_sessions__" functions.
1157
- * Mod: added loading of country flags from the plugin.
1158
- * Mod: added styles for the widget with anti-spam statistics.
1159
- * Mod: Improving ct_enqueue_scripts_public().
1160
- * Mod: Update for JS ctSetCookie().
1161
- * Mod: AltSessions and Cookie using 'data__set_cookies' and 'data__set_cookies' settings.
1162
- * Mod: Minified JS updated.
1163
- * Upd: Setting cookies updating.
1164
- * Upd: Setting cookies by JS updating.
1165
- * Fix: SFW. DB result handling.
1166
- * Fix: Integration. Avada theme settings saving fixed.
1167
- * Fix: Cleantalk modal. Layout fixed.
1168
- * Fix: Possible use an html on ajax forms blocking message.
1169
- * Fix: Include JS logic fixed.
1170
- * Fix: Refactoring. Collecting details about browser refactored.
1171
- * Fix: Refactoring. Alert replacing by console log on REST request handling.
1172
- * Fix: Integration. Gravity Forms integration fixed.
1173
- * Fix: ignoring the hidden fields with name if visible fields exists.
1174
- * Fix: Integration. Formidable multi-step form protection fixed.
1175
- * Fix: add max z-index for #cleantalk-modal-overlay.
1176
- * Fix: Cannot read property 'response_type' of undefined - xhr.responseJSON - undefined where action wc_add_to_cart_block.
1177
- * Fix: Helper. Set cookies method is deprecated now.
1178
- * Fix: Adding admin IP to whitelist during the login in and plugin activation.
1179
- * Fix: SpamFirewall. Don't set cookies if option is disabled.
1180
- * Fix: Sorting methods modifiers in \Cleantalk\Common\Helper and \Cleantalk\ApbctWP\Helper classes.
1181
- * Fix: Using \Cleantalk\ApbctWP\Variables\Cookies.
1182
- * Fix: A dev and a fix version suffix support.
1183
- * Fix: Adding admin IP to whitelist during the login in and plugin activation.
1184
- * Fix: New setting 'Alternative cookies handler type'.
1185
- * Fix: sender_info params.
1186
- * Fix: SpamFirewall deleting 127.0.0.1 from local base during update on local website.
1187
- * Fix: apbct_js_test() considering "Alternative cookie" setting.
1188
- * Fix: Cleantalk\ApbctWP\VariablesCookie::set() automatically set secure flag if null passed.
1189
- * Fix: Check JS via Cookie with the Alternative Cookie on.
1190
- * Fix: Automatically set "secure" param when setcookie() called.
1191
- * Fix: 'Alternative cookies handler type' setting layout.
1192
- * Fix: For legacy apbct__hook__wp_logout__delete_trial_notice_cookie().
1193
- * Fix: Cleantalk\ApbctWP\Variables::set_fromRemote(), Cleantalk\ApbctWP\Variables::get_fromRemote() fix parameter type.
1194
- * Fix: SpamFirewall add admin IP when login in or activate plugin.
1195
- * Fix: Dashboard widget. Showing default Cleantalk's flag if country not found.
1196
- * Fix: Dashboard widget. Showing 'Unknown' country name if country not found.
1197
- * Del: Unused apbct_cookie__set() function.
1198
- * Del: "Use alternative mechanism for cookies" setting.
1199
- * Del: "Use cookies less sessions" setting.
1200
-
1201
- = 5.156 Apr 15 2021 =
1202
- * New: ApbctWP\RemoteCalls::action__debug().
1203
- * New: ApbctWP\Helper::http__get_data_from_remote_gz__and_parse_csv();
1204
- * New: ApbctWP\Helper::http__get_data_from_remote_gz();
1205
- * New: Update/delete SpamFireWall database when it enable/disable.
1206
- * New: \Cleantalk\Common\DNS class. Allows to get with DNS records and theirs different parameters.
1207
- * New: No cookies if disabled from frontend. Alternative cookies if enabled from frontend.
1208
- * New: \Cleantalk\ApbctWP\Variables\Cookie extends Cleantalk\Common\Variables\Cookie and automatically supports alternative cookies.
1209
- * Mod: Don't use alternative cookies for JS cookies for now.
1210
- * Mod: ApbctWP\State default data.
1211
- * Mod: Small code improvements.
1212
- * Mod: Minor code improvements.
1213
- * Mod: Using apbct_sfw_update__init instead() of ct_sfw_update().
1214
- * Mod: Updater script to 5.156.
1215
- * Upd: \Cleantalk\ApbctWP\RemoteCalls.
1216
- * Upd: *.min. files update.
1217
- * Upd: Current moderate*.cleantalk.org IP servers update.
1218
- * Refactor: SpamFireWall update.
1219
- * Fix: ApbctWP\RemoteCalls::action__sfw_update().
1220
- * Fix: \Cleantalk\Common\DNS could request specific DNS type record.
1221
- * Fix: Anti Spam. External forms protection capturing buffer fixed.
1222
- * Fix: SFW. Notices disabled on blocking pages.
1223
- * Fix: Admin ajax handler fixed - alert removed.
1224
- * Fix: No alert when error fires.
1225
- * Fix: Notice. change 'wpms__allow_custom_settings' to 'multisite__allow_custom_settings' in cleantalk-admin.php.
1226
- * Fix: Getting JS key by ajax fixed.
1227
- * Fix: No alert when AJAX fails.
1228
- * Fix: Send plugin version as parameter when apbct-public.min.js script attaching.
1229
- * Fix: The AJAX REST API error text unique.
1230
- * Fix: No alert message when AJAX (REST) error happens.
1231
- * Fix: Skip. MyListing theme service requests skip.
1232
- * Fix: \Cleantalk\ApbctWP\Helper::http__request__rc_to_host(). Considering empty response as error.
1233
- * Fix: \Cleantalk\Common\Helper::http__request(). Empty error while SFW update.
1234
- * Fix: REST API. Required parameter added.
1235
- * Fix: PHP Notices and Warnings.
1236
- * Fix: AntiCrawler UA update.
1237
- * Fix: JS and CSS minified.
1238
- * Fix: ApbctWP\State __get using &. *
1239
-
1240
- = 5.155.2 Apr 6 2021 =
1241
- * Fix: Renaming setting to their original names in old update scripts.
1242
- * Fix: Ajax forms protection response fixed.
1243
- * Fix: No alert message when AJAX error happens.
1244
-
1245
- = 5.155.1 Apr 2 2021 =
1246
- * Fix: Using WP Rest API.
1247
- * Rollback: Show response for all AJAX forms.
1248
-
1249
- = 5.155 Mar 31 2021 =
1250
- * New: Debug. Check connection to API servers.
1251
- * New: Integration. Avada Form Builder.
1252
- * New: Integration. Forminator integration implemented.
1253
- * New: Users checker. Non-checked users tab added.
1254
- * New: SFW. Admin IP will be whitelisted automatically.
1255
- * Mod: Replace "bad" users/comments to "non-checkable".
1256
- * Mod: DisableComments. Disable all comments means disable all comments for any post type.
1257
- * Udp: Setting templates. Product ID support implemented.
1258
- * Udp: Settings. Reorder links actions buttons.
1259
- * Upd: Common. Getting check_js updated.
1260
- * Upd: SFW. Description updated.
1261
- * Fix: Reversed URL exclusions.
1262
- * Fix: Settings. Sync button success ico fixed.
1263
- * Fix: Show response for all AJAX forms #3.
1264
- * Fix: GDPR. Warning text output.
1265
- * Fix: Integration class consider settings.
1266
- * Fix: Exclusions. URL exclusions fixed.
1267
- * Fix: Services Templates. Getting templates optimized.
1268
- * Fix: Services Templates. Possible XSS fixed.
1269
- * Fix: Services Templates. Design layout fixed.
1270
- * Fix: Family of settings comments__disable_comments__* dependencies.
1271
- * Fix: DisableComments class. Media post type includes 'attachment' type.
1272
- * Fix: Exclusion for Thrive Ultimatum.
1273
- * Fix: Common/Helper::http__get_headers() ignores empty header name parts.
1274
- * Fix: Exclusion for GiveWP plugin in apbct-public.js.
1275
- * Fix: Do not consider 501 as correct HTTP response code when getting FW data files.
1276
- * Fix: AntiCrawler::update(). Correct error codes.
1277
- * Fix: ApbctWP\Firewall\SFW::update(). Correct URLs for FILE with protocol.
1278
- * Fix: PHP 8 deprecated notices.
1279
- * Fix: Settings. Reversed dependencies. Applies to WooCommerce and Disable Comments settings.
1280
- * Fix: DisableComments::template__check() returns the correct number of comments for enabled types of posts.
1281
- * Fix: DisableComments class. Visibility of some methods.
1282
- * Exception: Paid Memberships Pro - Login Form.
1283
- * Fix: Exception the SFW check for queries with '/favicon.ico' string.
1284
-
1285
- = 5.154 Mar 17 2021 =
1286
- * New: Settings Templates functionality implemented.
1287
- * New: SFW. Anti-flood protection uses UA lists for filtration.
1288
- * Fix: Forms. Getting check_js delay removed.
1289
- * Fix: Forms. Rotation check_js fixed.
1290
- * Fix: Integration. Newspaper-theme login form protection skipped.
1291
- * Fix: Integration. Newspaper-theme reset password form protection skipped.
1292
- * Fix: Forms. Gravity Forms paypal addon processing skipped.
1293
- * Fix: Exclusion for wpDiscuz - Online Users Addon.
1294
- * Fix: Remote Calls. Wrapper http__request__rc_to_host() don't get an array
1295
- * Fix: JS. Modal window fixed.
1296
- * Fix: JS. Show AJAX result fixed.
1297
- * Fix: Skip. Save abandoned cart checking skip.
1298
- * Fix: Skip. SUMODISCOUNT discout request skip.
1299
- * Fix: Skip. WP eMember login form skip.
1300
- * Fix: SFW. Do not cache constants added.
1301
- * Fix: SFW. AC/AF logging fixed.
1302
-
1303
- = 5.153.7 Mar 15 2021 =
1304
- * Fix: SFW. Updating fixed.
1305
-
1306
- = 5.153.6 Mar 12 2021 =
1307
- * Fix: Show response for all AJAX forms #2.
1308
-
1309
- = 5.153.5 Mar 10 2021 =
1310
- * Fix: Show response for all AJAX forms.
1311
-
1312
- = 5.153.4 Mar 10 2021 =
1313
- * New: SFW. Log could be sent not more often than 3 minutes.
1314
- * New: SFW. Possibility to use DELETE instead of TRUNCATE to delete SFW log.
1315
- * New: Show response for all AJAX forms.
1316
- * Fix: SFW. Sending log. Committing transaction after TRUNCATE log table.
1317
- * Fix: Integration. CF7 different versions compatibility fixed.
1318
- * Fix: Exclusion for WooCommerce.
1319
- * Fix: Possible SQL-injections fixed.
1320
-
1321
- = 5.153.3 Feb 25 2021 =
1322
- * Fix: Security. Preparing UA string for writing to the DB.
1323
-
1324
- = 5.153.2 Feb 25 2021 =
1325
- * Fix: Integration. Registration on WICITY theme.
1326
- * Fix: Integration. Registration on Paid Memberships Pro
1327
- * Fix: IP detection.
1328
- * Fix: Error: SFW_DISABLED.
1329
- * Fix: Formidable form. Error with sophisticated field types.
1330
- * Fix: Remote Calls. Cooldown checking for the SFW update fixed.
1331
- * Fix: easy-login-woocommerce requests exclusion fixed.
1332
- * Fix: Jackmail plugin. Skip all admin-side actions.
1333
- * Fix: Remote Calls. Unused deactivation option removed.
1334
- * Fix: Users checker. Last check date fixed.
1335
- * Fix: Users checker. Total users count description fixed.
1336
-
1337
- = 5.153.1 Feb 20 2021 =
1338
- * Fix: CF7. Modified spam hook #2
1339
-
1340
- = 5.153 Feb 17 2021 =
1341
- * New: Integrations. WPDiscuz integration implemented.
1342
- * New: Using custom modal message instead allert.
1343
- * New: JS cleantalk-modal added.
1344
- * New: Cleantalk\ApbctWP\RemoteCalls class.
1345
- * New: Remote calls using Cleantalk\ApbctWP\RemoteCalls class.
1346
- * New: Cleantalk\ApbctWP\Helper::http__request__rc_to_host(). Wrapper to using RC to the website itself. Makes testing RC before make main.
1347
- * New: Cleantalk\ApbctWP\State::error_toggle().
1348
- * New: SFW update. Make test RC before main.
1349
- * Udp: Integrations. Support several hooks for one integration.
1350
- * Fix: Users. Feedback sending via deleting user fixed.
1351
- * Fix: Users checker. Feedback sending via deleting user fixed.
1352
- * Fix: IP detection.
1353
- * Fix: Users scan. Confirmation message fixed.
1354
- * Fix: SFW. The anti-flood option moved to the advanced settings.
1355
- * Fix: SFW. Show the right url on block page for WPMS.
1356
- * Fix: SFW. The anti-crawler option description fixed.
1357
- * Fix: SFW. The anti-flood option description fixed.
1358
- * Fix: SFW. AC checking on login page fixed.
1359
- * Fix: CF7. Modified spam hook.
1360
- * Fix: SFW. send_logs returning error.
1361
- * Fix: Cleantalk class fixed.
1362
- * Fix: Clearing errors storage before sync.
1363
- * Fix: Clearing SFW errors on updating to 5.151.6.
1364
- * Fix: Updater. Support updating for versions without fix number implemented.
1365
- * Fix: "Email Before Download" plugin request will be skipped.
1366
- * Fix: SFW. Auto-updating option fixed for multisite activation.
1367
- * Fix: Exception for Xoo login form.
1368
- * Fix: Users deleting feedback fixed.
1369
-
1370
- = 5.152.5 Feb 04 2021 =
1371
- * Fix: SFW. Auto-updating interval decreased to 5 mins.
1372
- * Fix: Divi. Skip saving epanel.
1373
- * New: Find users/comments table. Add footer description.
1374
- * Fix: SFW. UA option removed.
1375
- * Fix: SFW. AC checking by UA enabled by default.
1376
- * Fix: SFW. AF disabled by default for the new installations.
1377
-
1378
- = 5.152.4 Feb 01 2021 =
1379
- * Fix: Cron tasks compare fixed.
1380
-
1381
- = 5.152.3 Jan 31 2021 =
1382
- * Fix: Error: SFW_DISABLED.
1383
- * Fix: Moderate connection timeout increased to 6sec.
1384
- * Fix: SFW uses the right API class.
1385
-
1386
- = 5.152.2 Jan 30 2021 =
1387
- * Fix: API-requests.
1388
-
1389
- = 5.152.1 Jan 29 2021 =
1390
- * Fix: Errors in IP detection.
1391
-
1392
- = 5.152 Jan 29 2021 =
1393
- * Fix: Using server protocol for AC checking.
1394
- * Fix: Prevent caching db queries for SFW.
1395
- * Fix: mgm registration temp fix.
1396
- * Upd: Checking skipped request replaced.
1397
- * Fix: Bookly plugin service requests checking skipped.
1398
- * Fix: Youzier login form skipped.
1399
- * Fix: InJob theme lost password skipped.
1400
- * Upd: Showing plugin version on SFW block page.
1401
- * Fix: fix request id rotation.
1402
- * Mod: Show "Insert users" button only for local web servers.
1403
- * Upd: Checking skipped request replaced for non-ajax requests.
1404
- * Fix: BuddyPress edit profile checking skippped.
1405
- * Fix: Unused code removed.
1406
- * Upd: Helper::ip__get() method updated.
1407
- * Fix: UltimateMember password reset skipped.
1408
- * Del: Unused code removed.
1409
- * New: Server::get() now can accept 'URI' as an parameter. Returns full URI like 'http://domain.net/request/path?parameter=value#fragment
1410
- * Mod: apbct_exclusions_check__url__reversed() simplifed and PHPDoc'ed.
1411
- * Mod: apbct_base_call exclusions revised.
1412
- * Mod: $cleantalk_executed chaos simplified.
1413
- * Upd: Shedule sfw update once again if it failed.
1414
- * Fix: Delete cleantalk options via uninstalling.
1415
- * Fix: Deleting table for network sites fixed.
1416
- * Fix: Using host header for AC checking.
1417
- * Fix: Expression formatting fixed.
1418
- * Mod: Cron. Do not runs when it already runs.
1419
- * Mod: Cron class updated.
1420
-
1421
- = 5.151.4 Jan 18 2021 =
1422
- * Fix: Users checking performance fix.
1423
- * Fix: AC disabled if SFW contains less than 50 entries.
1424
-
1425
- = 5.151.3 Jan 15 2021 =
1426
- * Fix: Prevent logging false blocking for whitelisted networks.
1427
- * Integration: Rafflepress integration implemented.
1428
- * Fix: AF limit increased to 20 by default.
1429
- * Fix: skip Sumo waitlist internal request.
1430
- * Fix: skip raq internal request.
1431
- * Fix: check comments number if comment email exists.
1432
- * New: Schema class added.
1433
- * Fix: SFW - Creation sfw table if not exist.
1434
- * Fix: Updater - Creation sfw table if not exist.
1435
- * New: Schema class used.
1436
- * New: AC disabled if networks count is 0.
1437
- * Fix: SFW updating id getting fixed.
1438
- * Fix: SFW networks counter fixed.
1439
- * Fix: Deleting options fixed.
1440
 
1441
  = Early changelogs look in changelog.txt =
2
  Contributors: safronik
3
  Tags: spam, antispam, anti-spam, comments, firewall
4
  Requires at least: 3.0
5
+ Tested up to: 5.9
6
  Requires PHP: 5.6
7
+ Stable tag: 5.170
8
  License: GPLv2
9
 
10
  Spam protection, anti-spam, firewall, premium plugin. No spam comments & users, no spam contact form & WooCommerce anti-spam.
595
 
596
  == Changelog ==
597
 
598
+ = 5.170 Jan 13 2022 =
599
+ #### One integration added, CleanTalk pixel functionality fixed and minor issues fixed.
600
+ * Mod: Added Ova Login Integration. Registrations under protection
601
+ * Fix. Common. is_trackback() notice fixed.
602
+ * Fix: Removed the exeption for Quick Contact Form from ct_contact_form_validate()
603
+ * Fix: Moved the function apbct_settings__get_ajax_type() to cleantalk-pluggable.php to fix the plugin activation error via the CLI
604
+ * Fix: Fixed errors in apbct-public.js
605
+ * Fix: Cleared notice_incompatibility if SFW disabled
606
+ * Fix. AC. Antibot cookie fixed.
607
+ * Fix. Pixel. Auto mode fixed.
608
+ * Fix. JS. Checking JS via ajax fixed.
609
+ * Fix. Pixel. Getting pixel url from backend fixed.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
610
 
611
  = Early changelogs look in changelog.txt =