Skip to content
Merged

Beta #762

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
36b9777
Upd. JS. catchJqueryAjax. Refactored to also use ajaxPrefilter. Bloom…
alexandergull Mar 2, 2026
f80ae1f
Upd. ContactEncoder. Improve aria labels protect.
svfcode Mar 4, 2026
970d794
Upd. Integration. HivePress forms protection improved. (#746)
Glomberg Mar 4, 2026
34e7489
Merge branch 'dev' into force_alt_reject.ag
alexandergull Mar 5, 2026
29cfee8
Code. Recompress after dev merge.
alexandergull Mar 5, 2026
41c7ff9
Merge, upd ver 6.74.99-dev
AntonV1211 Mar 5, 2026
925384a
Merge, upd ver 6.74.99-dev
AntonV1211 Mar 5, 2026
7ca3df7
Merge branch 'master' of https://github.com/CleanTalk/wordpress-antis…
AntonV1211 Mar 5, 2026
44e6bf5
Merge, upd ver 6.74.99-fix
AntonV1211 Mar 5, 2026
11e5fc6
Merge branch 'dev' into force_alt_reject.ag
alexandergull Mar 6, 2026
75db99b
Code. Recompress.
alexandergull Mar 6, 2026
9fff7d9
Merge pull request #754 from CleanTalk/force_alt_reject.ag
alexandergull Mar 6, 2026
3745134
Upd. Settings. SFW outdated message refactored.
alexandergull Mar 7, 2026
75a4085
Upd. Settings. Error. Fixed case when SFW outdated error is not remov…
alexandergull Mar 7, 2026
9a9f2a9
Upd. TRP. TRP popup text and styles updated. (#756)
Glomberg Mar 10, 2026
90f7d71
Fix. Integrations. Improve statement to protect memberpress.
svfcode Mar 10, 2026
c042a82
Fix. Integrations. Improved membershippro processing statement.
svfcode Mar 11, 2026
8029575
Fix. Integration. Gravity forms integration fixed.
Glomberg Mar 11, 2026
92f12bd
Add. Integrations. Added Elfsight compability.
svfcode Mar 12, 2026
4e5cf84
fix eslint
svfcode Mar 12, 2026
5d38bc1
Fix. RemoteCalls. Changes to the RC functionality
AntonV1211 Mar 13, 2026
930c76f
Tests
AntonV1211 Mar 13, 2026
79116a4
Upd. Settings. Improved copability.
svfcode Mar 16, 2026
d3fe94f
Upd. Settings. Improved copability.
svfcode Mar 16, 2026
1ff2e20
Merge pull request #759 from CleanTalk/vuln_rc_delay_av
AntonV1211 Mar 16, 2026
7e45cc0
Fix. Contacts Encoder. Shortcode for exclude encoding. (#757)
Glomberg Mar 16, 2026
788e3bf
Merge pull request #758 from CleanTalk/sfw_outdaded_changes.ag
alexandergull Mar 16, 2026
79c59ae
Merge dev, fix
AntonV1211 Mar 17, 2026
c7b66f3
Upd ver 6.75
AntonV1211 Mar 17, 2026
5846352
Upd changelog
AntonV1211 Mar 17, 2026
bcc7d37
Sync common lib
AntonV1211 Mar 17, 2026
530fc26
Sync common lib fix
AntonV1211 Mar 17, 2026
e29316f
Upd. BotDetector. Update load strategy.
svfcode Mar 18, 2026
a8550d3
Upd. BotDetector. Update load strategy for fluent booking and fluent …
AntonV1211 Mar 18, 2026
21a8077
Upd changelog
AntonV1211 Mar 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 9 additions & 19 deletions cleantalk.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
Plugin Name: Anti-Spam by CleanTalk
Plugin URI: https://cleantalk.org
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.
Version: 6.74
Version: 6.75
Author: CleanTalk - Anti-Spam Protection <welcome@cleantalk.org>
Author URI: https://cleantalk.org
Text Domain: cleantalk-spam-protect
Expand Down Expand Up @@ -476,10 +476,11 @@ function apbct_write_js_errors($data)
}

// Memberpress integration
// MemberPress sends mepr_process_signup_form='Y' or '1' — both must trigger the check
if (
!empty($_POST) &&
apbct_is_plugin_active('memberpress/memberpress.php') &&
Post::hasString('mepr_process_signup_form', '1') &&
Post::getString('mepr_process_signup_form') &&
(int)$apbct->settings['forms__registrations_test'] === 1
) {
apbct_memberpress_signup_request_test();
Expand Down Expand Up @@ -614,10 +615,12 @@ function apbct_write_js_errors($data)
. '/js/apbct-public-bundle.min.js'
. '?ver=' . APBCT_VERSION . '" id="ct_public_functions-js"></script>';
echo '<script src="' . APBCT_BOT_DETECTOR_SCRIPT_URL . '?ver='
. APBCT_VERSION . '" id="ct_bot_detector-js"></script>';
. APBCT_VERSION . '" async id="ct_bot_detector-js" data-wp-strategy="async"></script>';
}, 100);
}

SFWUpdateHelper::processSFWOutdatedError($apbct);

// SpamFireWall check
if ( $apbct->plugin_version == APBCT_VERSION && // Do not call with first start
$apbct->settings['sfw__enabled'] == 1 &&
Expand Down Expand Up @@ -910,25 +913,12 @@ function apbct_sfw__check()
}

// update mode - skip checking
if ( isset($apbct->fw_stats['update_mode']) && $apbct->fw_stats['update_mode'] === 1 ) {
if ( SFWUpdateHelper::SFWUpdateModeEnabled($apbct)) {
return;
}

// Checking if database was outdated
$is_sfw_outdated = $apbct->stats['sfw']['last_update_time'] + $apbct->stats['sfw']['update_period'] * 3 < time();

add_action('init', function () use ($apbct, $is_sfw_outdated) {
$apbct->errorToggle(
$is_sfw_outdated,
'sfw_outdated',
esc_html__(
'SpamFireWall database is outdated. Please, try to synchronize with the cloud.',
'cleantalk-spam-protect'
)
);
});

if ( $is_sfw_outdated ) {
// sfw is outdated - skip checking
if ( SFWUpdateHelper::SFWDataOutdated($apbct) ) {
return;
}

Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
"vendor/bin/psalm --no-cache --config=psalm.xml --taint-analysis"
],
"just_phpunit": [
"vendor/bin/phpunit --configuration tests/phpunit.xml --debug"
"vendor/bin/phpunit --configuration tests/phpunit.xml --coverage-clover=coverage.xml"
]
},
"config": {
Expand Down
2 changes: 1 addition & 1 deletion css/cleantalk-trp.min.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions css/src/cleantalk-trp.css
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,15 @@
gap: 1px;
}

.apbct-real-user-popup-content_row * {
color: grey;
font-style: italic;
}
.apbct-real-user-popup-content_row strong {
color: initial;
font-style: initial;
}

.apbct-real-user-popup-img {
align-self: start;
margin: 0!important;
Expand Down
5 changes: 5 additions & 0 deletions inc/cleantalk-integrations-by-hook.php
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,11 @@
'setting' => 'forms__contact_forms_test',
'ajax' => true
),
'ElfsightForm' => array(
'hook' => 'cleantalk_force_elfsight_check',
'setting' => 'forms__check_external',
'ajax' => true
),
'BloomForms' => array(
'hook' => 'bloom_subscribe',
'setting' => 'forms__contact_forms_test',
Expand Down
10 changes: 10 additions & 0 deletions inc/cleantalk-integrations-by-route.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,16 @@
'setting' => 'forms__contact_forms_test',
'rest' => true,
),
'HivePress' => array(
'rest_route' => '/hivepress/v1/listings/',
'setting' => 'forms__contact_forms_test',
'rest' => true,
),
'HivePressRegistration' => array(
'rest_route' => '/hivepress/v1/users',
'setting' => 'forms__registrations_test',
'rest' => true,
),
);

add_filter('rest_pre_dispatch', function ($result, $_, $request) use ($apbct_active_rest_integrations) {
Expand Down
8 changes: 8 additions & 0 deletions inc/cleantalk-pluggable.php
Original file line number Diff line number Diff line change
Expand Up @@ -1982,6 +1982,14 @@ class_exists('Cleantalk\Antispam\Integrations\CleantalkInternalForms')
) {
return 'AsgarosForum';
}

// Plugin Name: HivePress
if (
apbct_is_plugin_active('hivepress/hivepress.php') &&
(apbct_is_in_uri('/hivepress/v1/listings/') || apbct_is_in_uri('/hivepress/v1/users'))
) {
return 'Plugin Name: HivePress skip REST route checking';
}
}

// WP Fusion Abandoned Cart Addon
Expand Down
12 changes: 3 additions & 9 deletions inc/cleantalk-public-integrations.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ function apbct_print_public_scripts()
echo CtPublicLocalize::getCode();

echo '<script src="' . $js_url . '" type="application/javascript"></script>';
echo '<script src="' . $js_url_wrapper . '" type="application/javascript"></script>';
echo '<script src="' . $js_url_wrapper . '" async data-wp-strategy="async" type="application/javascript"></script>';
}

/**
Expand Down Expand Up @@ -2115,7 +2115,7 @@ function apbct_form__gravityForms__testSpam($is_spam, $form, $entry)
{
global $apbct, $ct_gform_is_spam, $ct_gform_response;

if (apbct_form__gravityForms__isSkippedRequest($is_spam)) {
if (apbct_form__gravityForms__isSkippedRequest()) {
return $is_spam;
}

Expand Down Expand Up @@ -2253,7 +2253,7 @@ function apbct_form__gravityForms__testSpam($is_spam, $form, $entry)
*
* @return bool
*/
function apbct_form__gravityForms__isSkippedRequest($is_spam)
function apbct_form__gravityForms__isSkippedRequest()
{
global $cleantalk_executed, $apbct;

Expand All @@ -2262,15 +2262,9 @@ function apbct_form__gravityForms__isSkippedRequest($is_spam)
'_GET' => $_GET,
'SERVER_URI' => Server::getString('REQUEST_URI'),
'HTTP_REFERER' => Server::getString('HTTP_REFERER'),
'$is_spam' => $is_spam,
'$cleantalk_executed' => $cleantalk_executed,
];

if ( $is_spam ) {
do_action('apbct_skipped_request', __FILE__ . ' -> ' . __FUNCTION__ . '():' . 'ALREADY SET BY GRAVITY AS SPAM', $data);
return true;
}

if ( $apbct->settings['forms__contact_forms_test'] == 0 ) {
do_action('apbct_skipped_request', __FILE__ . ' -> ' . __FUNCTION__ . '():' . 'CONTACT FORM TEST DISABLED', $data);
return true;
Expand Down
18 changes: 0 additions & 18 deletions inc/cleantalk-public-validate.php
Original file line number Diff line number Diff line change
Expand Up @@ -211,24 +211,6 @@ function ct_contact_form_validate()
return false;
}

//hivepress theme listing integration
if ( empty($sender_email) &&
function_exists('hivepress') &&
is_callable('hivepress') &&
apbct_is_user_logged_in() &&
$apbct->settings['data__protect_logged_in']
) {
if (! isset($_POST['_model'])) {
$current_user = wp_get_current_user();
if ( ! empty($current_user->data->user_email) ) {
$sender_email = $current_user->data->user_email;
}
} else {
do_action('apbct_skipped_request', __FILE__ . ' -> ' . __FUNCTION__ . '(hivepress theme listing integration):' . __LINE__, $_POST);
return false;
}
}

//tellallfriend integration #1
if ( isset($_POST['TellAFriend_Link']) ) {
$tmp = Sanitize::cleanTextField(Post::get('TellAFriend_Link'));
Expand Down
2 changes: 1 addition & 1 deletion inc/cleantalk-public.php
Original file line number Diff line number Diff line change
Expand Up @@ -1254,7 +1254,7 @@ function apbct_enqueue_and_localize_public_scripts()
APBCT_VERSION,
array(
'in_footer' => $in_footer,
'strategy' => 'defer'
'strategy' => 'async'
)
);
}
Expand Down
15 changes: 5 additions & 10 deletions inc/cleantalk-settings.php
Original file line number Diff line number Diff line change
Expand Up @@ -127,10 +127,6 @@ function apbct_settings__set_fields()
}
}

$send_connection_reports__sfw_text = $apbct->settings['sfw__enabled']
? '<br>' . __(' - status of SpamFireWall database updating process', 'cleantalk-spam-protect')
: '';

$fields = array(

'main' => array(
Expand Down Expand Up @@ -923,13 +919,12 @@ function apbct_settings__set_fields()
'misc__send_connection_reports' => array(
'type' => 'checkbox',
'title' => __('Send connection reports', 'cleantalk-spam-protect'),
'description' => __("Checking this box you allow plugin to send the information about your connection. These reports could contain next info:", 'cleantalk-spam-protect')
. '<br>'
. __(' - connection status to ' . $apbct->data["wl_brandname_short"] . ' cloud during Anti-Spam request', 'cleantalk-spam-protect')
. $send_connection_reports__sfw_text
. '<br>'
. sprintf(esc_html__('The reports are to be sent to %s'), 'pluginreports@cleantalk.org')
'description' => \Cleantalk\ApbctWP\ConnectionReports::getOptionDescription(
(bool)$apbct->settings['sfw__enabled'],
$apbct->data['wl_brandname_short'],
$apbct->data['email_for_reports']
),
),
'misc__async_js' => array(
'type' => 'checkbox',
'title' => __('Async JavaScript loading', 'cleantalk-spam-protect'),
Expand Down
2 changes: 1 addition & 1 deletion js/apbct-public-bundle.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion js/apbct-public-bundle_ext-protection.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion js/apbct-public-bundle_ext-protection_gathering.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion js/apbct-public-bundle_full-protection.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion js/apbct-public-bundle_full-protection_gathering.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion js/apbct-public-bundle_gathering.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion js/apbct-public-bundle_int-protection.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion js/apbct-public-bundle_int-protection_gathering.min.js

Large diffs are not rendered by default.

Loading
Loading