Skip to content

Commit 6fd7545

Browse files
GlombergdatorikAntonV1211alexander-b-cleansvfcode
authored
Version: 6.81 (#810)
* New. Code. Amelia integration * New. Code. Amelia integration * Upd version 6.80.99-dev * Upd version 6.80.99-fix * Code. Code review * Code. Code review * Code. Unit testing * Code. Unit testing * Links from backend.ab (#796) * Code. Links from backend * Unit tests * Code. Code review * Code. Code review * Fix. CheckComments. Improve statement. * fix layout Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * fix layout Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: datorik <datorik@gmail.com> Co-authored-by: svfcode <svfcode@mail.ru> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Fix. Code. Improve statement. (#804) * Fix. Code. Improve statement. * upd antiflood statement * Fix. Code. Editing the array key transfer * Fix. SFWUpdateLog. Transferring values to placeholders prepare() * Code. Code review * Fix. SFW. Mixing values in cookies SFW * New. Pingback and trackback rejection implemented. * Upd. Pingback and trackback. Tests added. * CP. Fixing pre_trackback_post args. Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * CP. Removed unused usage. Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Fix. PHPCS. * CP. Method call args fixed. * CP. Use correct escape without localization. * CP. New unit added for TrackBack handler. * CP. Unit text. IXR Error class forced. Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * CP. Precheck if XMLRPC method is not unset by other plugins/core. Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Add unittests * Upd. PHPUnit. PingbackTrackback\SettingsView * CP. Fixed spaces. * CP. Fixed camel cases. * CP. Test. rename function. Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * CP. Args added to the method call. Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * CP. Args added to the method call. Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Fix. Syntax. * Code. Mobile styles fix (#803) * Mod. Integrations. Opting out of force alt cookies for SmartForms. (#808) * Mod. Integrations. Opting out of force alt cookies for SmartForms. * fix * fix * fix * upd Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * fix --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * add comment * Version: 6.81 and changelog updated. * Fix. Contact encoder. Decoding actions fixed. --------- Co-authored-by: datorik <datorik@gmail.com> Co-authored-by: AntonV1211 <antonV1211@yandex.ru> Co-authored-by: Aleksandr Banins <alexander.b@cleantalk.org> Co-authored-by: svfcode <svfcode@mail.ru> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: AntonV1211 <anton.v@cleantalk.org> Co-authored-by: alexandergull <alex.g@cleantalk.org> Co-authored-by: Alex <galyshev@cleantalk.org> Co-authored-by: AntonV1211 <39616556+AntonV1211@users.noreply.github.com>
2 parents 5b84c4d + e4273be commit 6fd7545

60 files changed

Lines changed: 1939 additions & 370 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ checkstyle.xml
1313
/lib/Cleantalk/Common/ContactsEncoder/tests/
1414
/coverage.xml
1515
/tests/.phpunit.result.cache
16+
.phpunit.result.cache

changelog.txt

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,171 @@
11
== Changelog ==
22

3+
= 6.70.1 19.12.2025 =
4+
* Fix. Integration. Fluent forms integration fixed (fix for commit ae74511a96417b607f2b79b83ef984de7eac0588).
5+
6+
= 6.70 18.12.2025 =
7+
New. Integrations. Protect Bitrix24 external forms.
8+
New. SFW. Update. Constant APBCT_SERVICE__SFW_UPDATE_CURL_MULTI_BATCH_SIZE. Used to reduce curl multi batch size.
9+
Upd. Integrations. Added precheck email for Gravity Forms.
10+
Upd. Contact Data Encoder. Encoder lib updated to support new formats.
11+
Upd. Contact Data Encoder. Added new format to encode phone numbers.
12+
Upd. Setting. Do not drop settings state on disabling. Uses a special list.
13+
Mod. FluentForm. Added the ability to connect js scripts for logged in users.
14+
Fix. FluentForm. The verification depends on the data__protect_logged_in and is_user_logged_in() options.
15+
Fix. Contact Data Encoder. Fixed shortcode flow on multiple use.
16+
Fix. Contact Data Encoder. PHP 8.4 notices fixed.
17+
Fix. The Real Person. Adding a check that excludes duplication of TRP.
18+
19+
= 6.69.2 09.12.2025 =
20+
Fix. Contact Data Encoder. Fixed deprecation notice.
21+
Fix. Contact Data Encoder. Frontend. Fixed connection errors handling.
22+
23+
= 6.69.1 08.12.2025 =
24+
Fix. Integrations. Update Woo add to cart check.
25+
26+
= 6.69 04.12.2025 =
27+
New. WPRecipeMaker. Integration with WP Recipe Maker
28+
Upd. Code. ContactsEncoder module refactoring.
29+
Upd. ContactEncoder. Improve UX.
30+
Upd. TRP. Restart show badge on woo review page.
31+
Upd. WCAddToCart. Processing and adding event_token to the request
32+
Upd. Integrations. JS. Dynamic rendered form interval clearance on window load custom events.
33+
Upd. EmailEncoder. Added new format to encode phone numbers.
34+
Mod. CheckEmailExist. Integration of Check Email Exist with Ninja Forms
35+
Mod. WPRecipeMaker. Editing the blocking message
36+
Fix. Bot detector. Set event_token for the different cookies types fixed.
37+
Fix. Integration. Ninja Forms refactored - no using force_alt_cookies.
38+
Fix. Integration. Fluentbook. Added public scripts echoing on author landing visit.
39+
Fix. Integrations. JS. Run dynamic forms catching on interval.
40+
Fix. Woocommerce. Exclusion for WC Stripe Apple Pay frontend request.
41+
Fix. Integration. Brick theme ajax response fixed.
42+
Fix. Integration. FunnelKit. Funnel builder action added.
43+
Fix. WPMS. Getting and recreating personal tables on WPMS.
44+
Fix. OptiPress. Editing the integration in passing the message parameter
45+
Fix. WPRecipeMaker. Combining logic under one condition
46+
Fix. Helper. Correcting the error of using 'static' in string callables inside array_map since version 8.2
47+
Fix. FluentForm. The verification depends on the data__protect_logged_in and is_user_logged_in() options
48+
Github. New action to create assets from dev/fix on push event.
49+
50+
= 6.68 13.11.2025 =
51+
New. Integration. Ultimate affiliate plugin (Codecanyon).
52+
New. Integration. Gwolle Guestbook integration implemented.
53+
Upd. Integrations. Improved capability with perfmatters.
54+
Upd. Settings. Improved UX.
55+
Upd. Email Encoder. Try to decode in both ways ssl/str_base.
56+
Fix. ContactEncoder. Editing duplicate pages due to buffer interception.
57+
Fix. Code. Unit text TestRequirementsChecker refactored.
58+
Fix. Integration. WPForo. Catch email and nickname via native WPF object. Get message from input.
59+
Fix. Integrations. Nex-forms POST clearance from service fields after check.
60+
Fix. Protection by fake button. Sender.net forms ignored, preparing for the next iteration.
61+
Fix. Integrations. GiveWP. Partially protected Give REST submission.
62+
Code. Unused code removed.
63+
Mod. TRP. TRP edits, duplicate the cleantalk_allowed_moderation option and move it to settings.
64+
65+
= 6.67 30.10.2025 =
66+
New. AdminBanner. Separation of banners about an empty and invalid key
67+
New. AdminBanner. Editing logic for a banner about an incorrect key
68+
Fix. ContactEncoder. Revert svg content.
69+
Fix. Integrations. Prevent spam requests to third-party services.
70+
Fix. Integrations. Added Beaver Builder.
71+
Fix. Integrations. Improved gathering data for fluentbooking pro.
72+
Fix. OptimizePress. Registration process protected.
73+
Fix. Integration. WP Booking System integration fixed.
74+
New. Integration. Doctor Plus theme registration and login.
75+
Fix. Integration. WPForms. Fixed missed request on non-emtpty WPForm form errors array.
76+
Fix. Hide website field. Forced condition to replace via honeypot.
77+
Upd. Server Requirements Checker. Added curl_multi_exec to the check-list.
78+
New. Email exists check. Implemented for CF7. (#669)
79+
Upd. Settings. Updated access key link parameters for improved registration process.
80+
Fix. Settings. Typo (system requirements) fixed.
81+
Fix. Settings. Complete deactivation fixed.
82+
Fix. State. Default `fw_stats` fixed.
83+
Fix. SFW. SFW updating (process exclusions) fixed.
84+
Fix. Exclusion. Newsletter Automation. Skip test newsletter check.
85+
Fix. Integration. btQuoteBooking form params gathering fixed.
86+
Fix. Integration. WP Mailer Lite. Fixed exclusion.
87+
88+
89+
= 6.66 16.10.2025 =
90+
Fix. Remote calls. Debug RC now hide sensitive data.
91+
Fix. TRP. Show TRP for admins and editors.
92+
Fix. TRP. Twenty Twenty-Five theme support added.
93+
Fix. Settings. Activator fixed.
94+
New. Summary and statistics. Support user action moved.
95+
Fix. Integrations. Skip service requests for checkout process.
96+
Fix. FW. Improved rules to update personal tables.
97+
Fix. Integrations. Updated statement to skip woo-mailerlite service requests.
98+
Fix. Integrations. Fixed statement for cwginstock.
99+
Fix. Integrations. Improved statement to intruding to checkout request.
100+
101+
= 6.65 02.10.2025 =
102+
Fix. Code. Pluggable exclusions logic fixed.
103+
Fix. Common. Alt cookies getting fixed.
104+
Fix. ContactEncoder. Skip SVG content.
105+
Fix. Integration. Added WPCommunity login to request exclusions.
106+
Fix. Integration. Fluent Booking Pro integration fixed - exclude requests from general contact forms checking.
107+
Fix. Integration. Skip BuddyBoss login form.
108+
Fix. Integration. WooCommerce mark spam orders fixed.
109+
Fix. Integration. WP Booking System integration fixed - support pro version.
110+
Fix. Integrations. Added rules to skip woocommerce service request.
111+
New. CheckEmailExist. Support for Registration Form.
112+
New. CheckEmailExist. Support for Woocommerce checkout form.
113+
New. Integration. Added NEXForms integration.
114+
New. Integration. Indeed Coming Soon integration implemented.
115+
New. Summary and statistics. Temporary support user creation implemented.
116+
Upd. CheckEmailExist. Improve support for Woocommerce checkout form and update option description.
117+
Upd. Search form. Added CleanTalk unique sign for native form.
118+
Upd. UsersChecker. Include first name, last name, and nickname in csv report of user data output.
119+
120+
= 6.64 18.09.2025 =
121+
New. Integration. Integration with WPFunnels.
122+
New. CheckEmailExist. Support for Registration Form.
123+
New. Integration. LifterLMS (registration) protection implemented.
124+
New. CheckEmailExist. Support for Fluent Forms.
125+
Upd. Request parameters. Calculate no submittime if bot detector enabled.
126+
Upd. Bot detector gathering. Changed URL of wrapper to fd.cleantalk.org
127+
Mod. Integration. Unset visible fields.
128+
Fix. Integration. Happy Forms protection fixed.
129+
Fix. Integration. HabSpot external form (transparent div) protection fixed.
130+
Fix. Integration. Back-In-Stock ajax catching detect fixed.
131+
Fix. Integration. Back-in-stock-notifier fixed event token transport.
132+
Fix. External forms. Protection by cover fixed.
133+
Fix. Code. Undefined object botDetectorLocalStorage using removed.
134+
135+
= 6.63 04.09.2025 =
136+
New. Integrations. BuddyPress App REST API protection.
137+
New. Integration. WooCommerce Wholesale Lead Capture registration protection implemented.
138+
Fix. Integration. SiteReviews integration fixed.
139+
Fix. Integration. Connecting the required js bundle and bot detector for Fluent Booking.
140+
Fix. JS. Passing the original context to an anonymous function
141+
Fix. Integration. FluentBooking integration fixed.
142+
Fix. Code. JS function getCleanTalkStorageDataArray moved to common file.
143+
Fix. Anti-Spam. Integrations by class logic fixed.
144+
Fix. Registration. Checking WP_Error during registration protection.
145+
146+
= 6.62 21.08.2025 =
147+
* Mod. Firewall. Disabling SFW, AntiCrawler, and AntiFlood if the key is invalid or empty
148+
* Fix. Woocommerce. Add to cart validation on AJAX fixed.
149+
* Mod. Settings. Renaming email verification options before submitting the form
150+
* Fix. EmailCheckExist. Edit for WL mode
151+
* Ref. Frontend. Optimize flow to prevent forсed reflow.
152+
153+
= 6.61 07.08.2025 =
154+
* New. Integration. Asgaros Forum topics and replies protected.
155+
* Upd. EmailEncoder. Add mode handler for shortcode.
156+
* Upd. Settings. Restore notice about get key auto.
157+
* Upd. Footer links. Footer links block Recommended plugins updated.
158+
* Upd. ServerRequirementsChecker. Check updated, unit test provided, docs added.
159+
* Ref. JS. Refactoring to optimize bundle size.
160+
* Mod. Code. Removing the option - Manage comments on public pages.
161+
* Del. Script. Remove cleantalk-public-admin.js.
162+
* Fix. Integrations. Do not skip check for woo registration during checkout.
163+
* Fix. Integrations. Fixed uni cpo gathering meta data about woocommerce item.
164+
* Fix. Woocommerce. Deleting REST API order if on pending status.
165+
* Fix. Woocommerce. Event token gathering fixed on any cookies mode.
166+
* Fix. Searchform. JS error on form class gathering fixed.
167+
* Fix. Settings. Search forms. Forgotten space added.
168+
3169
= 6.60 17.07.2025 =
4170
* New. BlockServerRequirements. Added a block with the Server Requirements output
5171
* Mod. BlockServerRequirements. Changed in layout, title, link to the article

cleantalk.php

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
Plugin Name: Anti-Spam by CleanTalk
55
Plugin URI: https://cleantalk.org
66
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: 6.80
7+
Version: 6.81
88
Author: CleanTalk - Anti-Spam Protection <welcome@cleantalk.org>
99
Author URI: https://cleantalk.org
1010
Text Domain: cleantalk-spam-protect
@@ -42,6 +42,8 @@
4242
use Cleantalk\ApbctWP\Variables\Post;
4343
use Cleantalk\ApbctWP\Variables\Request;
4444
use Cleantalk\ApbctWP\Variables\Server;
45+
use Cleantalk\ApbctWP\PingbackTrackback\PingbackHandler;
46+
use Cleantalk\ApbctWP\PingbackTrackback\TrackBackHandler;
4547
use Cleantalk\Common\ContactsEncoder\Dto\Params;
4648
use Cleantalk\Common\DNS;
4749
use Cleantalk\Common\Firewall;
@@ -229,7 +231,9 @@ function apbct_wp_login_actions($_user_login, $wp_user)
229231
if ($apbct->settings['data__email_decoder'] && !$skip_email_encode && !apbct_is_amp_request()) {
230232
// Encode content
231233
$contacts_encoder->runEncoding();
234+
}
232235

236+
if ( apbct_is_ajax() ) {
233237
// Email Encoder ajax handlers for decoding
234238
$contacts_encoder->registerAjaxRoute();
235239
}
@@ -274,6 +278,11 @@ function apbct_register_my_rest_routes()
274278
add_action('init', function () {
275279
global $apbct;
276280

281+
if ($apbct->settings['wp__disable_pingback_and_trackback']) {
282+
new PingbackHandler();
283+
new TrackBackHandler();
284+
}
285+
277286
// Self cron
278287
$ct_cron = Cron::getInstance();
279288
$tasks_to_run = $ct_cron->checkTasks(); // Check for current tasks. Drop tasks inner counters.
@@ -901,7 +910,7 @@ function apbct_sfw__check()
901910
);
902911
Cookie::set(
903912
'ct_sfw_pass_key',
904-
md5(Server::get('REMOTE_ADDR') . $apbct->api_key),
913+
md5(Server::get('REMOTE_ADDR') . $apbct->api_key . $apbct->data['salt']),
905914
time() + 1200,
906915
'/',
907916
''
@@ -2135,6 +2144,7 @@ function apbct_rc__install_plugin($_wp = null, $plugin = null)
21352144
die('FAIL ' . json_encode(array('error' => $installer->apbct_result)));
21362145
}
21372146
} else {
2147+
/** @psalm-suppress PossiblyInvalidMethodCall */
21382148
die(
21392149
'FAIL ' . json_encode(array(
21402150
'error' => 'FAIL_TO_GET_LATEST_VERSION',
@@ -2174,6 +2184,7 @@ function apbct_rc__activate_plugin($plugin)
21742184
$result_array = array('success' => true);
21752185

21762186
if ( is_wp_error($result) ) {
2187+
/** @psalm-suppress PossiblyInvalidMethodCall */
21772188
$error_msg = ' ' . $result->get_error_message();
21782189
$result_array = array(
21792190
'error' => 'FAIL_TO_ACTIVATE',

css/cleantalk-trp.min.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

css/src/cleantalk-trp.css

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@
5555
flex-direction: column;
5656
gap: 1px;
5757
}
58+
@media (min-width: 768px) {
59+
.apbct-real-user-popup-content_row {
60+
white-space: nowrap;
61+
}
62+
}
5863

5964
.apbct-real-user-popup-content_row * {
6065
color: grey;

inc/cleantalk-admin.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -539,6 +539,10 @@ function apbct_admin__enqueue_scripts($hook)
539539
'notice_when_deleting_user_text' => esc_html__('Warning! Users are deleted without the possibility of restoring them, you can only restore them from a site backup.', 'cleantalk-spam-protect'),
540540
'apbctNoticeDismissSuccess' => esc_html__('Thank you for the review! We strive to make our Anti-Spam plugin better every day.', 'cleantalk-spam-protect'),
541541
'apbctNoticeForceProtectionOn' => esc_html__('This option affects the reflection of the page by checking the user and adds a cookie "apbct_force_protection_check", which serves as an indicator of successful or unsuccessful verification. If the check is successful, it will no longer run.', 'cleantalk-spam-protect'),
542+
'links' => array(
543+
'users_editscreen' => LinkConstructor::buildCleanTalkLink('admin_blacklists_avatar_link', 'blacklists/{TARGET}'),
544+
'comments_editscreen' => LinkConstructor::buildCleanTalkLink('admin_blacklists_avatar_link', 'blacklists/{TARGET}'),
545+
),
542546
);
543547
$data = array_merge($data, ContactsEncoder::getLocalizationText());
544548
wp_localize_script('cleantalk-admin-js', 'ctAdminCommon', $data);
@@ -616,7 +620,7 @@ function apbct_admin__enqueue_scripts($hook)
616620
'ctTrpAdminLocalize',
617621
\Cleantalk\ApbctWP\CleantalkRealPerson::getLocalizingData()
618622
);
619-
ApbctEnqueue::getInstance()->js('cleantalk-comments-editscreen.js');
623+
ApbctEnqueue::getInstance()->js('cleantalk-comments-editscreen.js', array('cleantalk-admin-js'));
620624
$link = LinkConstructor::buildCleanTalkLink(
621625
'public_comments_page_go_to_cp',
622626
'my',
@@ -634,7 +638,7 @@ function apbct_admin__enqueue_scripts($hook)
634638
__("Feedback has been sent to %sCleanTalk Dashboard%s.", 'cleantalk-spam-protect'),
635639
$apbct->user_token ? "<a target='_blank' href='$link'>" : '',
636640
$apbct->user_token ? "</a>" : ''
637-
) . ' ' . esc_html__('The service accepts feedback only for requests made no more than 7 or 45 days
641+
) . ' ' . esc_html__('The service accepts feedback only for requests made no more than 7 or 45 days
638642
(if the Extra package is activated) ago.', 'cleantalk-spam-protect'),
639643
'ct_show_check_links' => (bool)$apbct->settings['comments__show_check_links'],
640644
'ct_img_src_new_tab' => plugin_dir_url(__FILE__) . "images/new_window.gif",
@@ -644,11 +648,11 @@ function apbct_admin__enqueue_scripts($hook)
644648
// USERS page JavaScript
645649
if ( $hook == 'users.php' ) {
646650
ApbctEnqueue::getInstance()->css('cleantalk-icons.css');
647-
ApbctEnqueue::getInstance()->js('cleantalk-users-editscreen.js');
651+
ApbctEnqueue::getInstance()->js('cleantalk-users-editscreen.js', array('cleantalk-admin-js'));
648652
wp_localize_script('cleantalk-users-editscreen-js', 'ctUsersScreen', array(
649653
'spambutton_text' => __("Find spam-users", 'cleantalk-spam-protect'),
650654
'ct_show_check_links' => (bool)$apbct->settings['comments__show_check_links'],
651-
'ct_img_src_new_tab' => plugin_dir_url(__FILE__) . "images/new_window.gif"
655+
'ct_img_src_new_tab' => plugin_dir_url(__FILE__) . "images/new_window.gif",
652656
));
653657
}
654658
}

inc/cleantalk-find-spam.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@ function ct_add_find_spam_pages()
9494
add_action('wp_ajax_ajax_spam_all', [\Cleantalk\ApbctWP\FindSpam\CommentsChecker::class, 'ctAjaxSpamAll']);
9595

9696
// Debug
97-
add_action('wp_ajax_ajax_insert_users', array('\Cleantalk\ApbctWP\FindSpam\UsersChecker', 'ctAjaxInsertUsers'));
97+
if ( defined('APBCT_IS_LOCALHOST') && APBCT_IS_LOCALHOST ) {
98+
add_action('wp_ajax_ajax_insert_users', array('\Cleantalk\ApbctWP\FindSpam\UsersChecker', 'ctAjaxInsertUsers'));
99+
}
98100

99101
// Hook for saving "per_page" option
100102
add_action('wp_loaded', 'ct_save_screen_option');

inc/cleantalk-integrations-by-hook.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,11 @@
505505
'setting' => 'forms__contact_forms_test',
506506
'ajax' => true
507507
),
508+
'Amelia' => array(
509+
'hook' => 'wpamelia_api',
510+
'setting' => 'forms__contact_forms_test',
511+
'ajax' => true
512+
),
508513
);
509514

510515
add_action('plugins_loaded', function () use ($apbct_active_integrations) {

0 commit comments

Comments
 (0)