File: //home/swifizcd/julnohub.com.ng/wp-content/plugins/cleantalk-spam-protect/inc/cleantalk-updater.php
<?php
use Cleantalk\ApbctWP\Cron;
use Cleantalk\ApbctWP\Helper;
use Cleantalk\ApbctWP\Variables\Server;
use Cleantalk\ApbctWP\Firewall\SFWUpdateHelper;
use Cleantalk\Common\TT;
// Prevent direct call
if ( ! defined('ABSPATH') ) {
die('Not allowed!');
}
/**
* Main function to compare versions and run necessary update functions.
*
* @param string $current_version
* @param string $new_version
*
* @return bool
*
* @psalm-suppress PossiblyUndefinedIntArrayOffset
*/
function apbct_run_update_actions($current_version, $new_version)
{
global $apbct;
$need_start_update_sfw = false;
$apbct->stats['plugin']['plugin_is_being_updated'] = 1;
$apbct->save('stats');
$current_version_arr = apbct_version_standardization($current_version);
$new_version_arr = apbct_version_standardization($new_version);
$current_version_str = implode('.', $current_version_arr);
$new_version_str = implode('.', $new_version_arr);
$db_analyzer = new \Cleantalk\ApbctWP\UpdatePlugin\DbAnalyzer();
// Create not exists tables
if ($db_analyzer->getNotExistsTables()) {
foreach ($db_analyzer->getNotExistsTables() as $table) {
// Checking whether to run the SFW update
if (substr($table, -3) === 'sfw') {
$need_start_update_sfw = true;
}
$db_tables_creator = new \Cleantalk\ApbctWP\UpdatePlugin\DbTablesCreator();
$db_tables_creator->createTable($table);
}
}
// Analyze exists tables, update columns
if ($db_analyzer->getExistsTables()) {
foreach ($db_analyzer->getExistsTables() as $table_name) {
$db_column_creator = new \Cleantalk\ApbctWP\UpdatePlugin\DbColumnCreator($table_name);
$db_column_creator->execute();
if ($db_column_creator->getTableChangedStatus()) {
// Checking whether to run the SFW update
if (substr($table_name, -3) === 'sfw') {
$need_start_update_sfw = true;
}
}
}
}
for ($ver_major = $current_version_arr[0]; $ver_major <= $new_version_arr[0]; $ver_major++) {
for ($ver_minor = 0; $ver_minor <= 300; $ver_minor++) {
for ($ver_fix = 0; $ver_fix <= 10; $ver_fix++) {
if (version_compare("{$ver_major}.{$ver_minor}.{$ver_fix}", $current_version_str, '<=')) {
continue;
}
if (function_exists("apbct_update_to_{$ver_major}_{$ver_minor}_{$ver_fix}")) {
$result = call_user_func("apbct_update_to_{$ver_major}_{$ver_minor}_{$ver_fix}");
if (!empty($result['error'])) {
break;
}
}
if ($ver_fix == 0 && function_exists("apbct_update_to_{$ver_major}_{$ver_minor}")) {
$result = call_user_func("apbct_update_to_{$ver_major}_{$ver_minor}");
if (!empty($result['error'])) {
break;
}
}
if (version_compare("{$ver_major}.{$ver_minor}.{$ver_fix}", $new_version_str, '>=')) {
break( 2 );
}
}
}
}
//run automatic default stats filling
$apbct->runAutoSaveStateVars();
// Start SFW update
if ($need_start_update_sfw) {
apbct_sfw_update__init();
}
return true;
}
/**
* Convert string version to an array
*
* @param string $version
*
* @return array
*/
function apbct_version_standardization($version)
{
$parsed_version = explode('.', $version);
$parsed_version[0] = ! empty($parsed_version[0]) ? (int)$parsed_version[0] : 0;
$parsed_version[1] = ! empty($parsed_version[1]) ? (int)$parsed_version[1] : 0;
$parsed_version[2] = ! empty($parsed_version[2]) ? (int)$parsed_version[2] : 0;
return $parsed_version;
}
/**
* @return void
*/
function apbct_update_to_5_56_0()
{
if ( ! wp_next_scheduled('cleantalk_update_sfw_hook') ) {
wp_schedule_event(time() + 1800, 'daily', 'cleantalk_update_sfw_hook');
}
}
/**
* @return void
*/
function apbct_update_to_5_70_0()
{
// Deleting usless data
delete_option('cleantalk_sends_reports_till');
delete_option('cleantalk_activation_timestamp');
// Disabling WP_Cron tasks
wp_clear_scheduled_hook('cleantalk_send_daily_report_hook');
wp_clear_scheduled_hook('ct_hourly_event_hook');
wp_clear_scheduled_hook('ct_send_sfw_log');
wp_clear_scheduled_hook('cleantalk_update_sfw_hook');
wp_clear_scheduled_hook('cleantalk_get_brief_data_hook');
// Adding Self cron system tasks
$cron = new Cron();
$cron->addTask('check_account_status', 'ct_account_status_check', 3600, time() + 1800); // New
$cron->addTask('delete_spam_comments', 'ct_delete_spam_comments', 3600, time() + 3500);
$cron->addTask('send_feedback', 'ct_send_feedback', 3600, time() + 3500);
$cron->addTask('sfw_update', 'apbct_sfw_update__init', 86400, time() + 43200);
$cron->addTask('send_sfw_logs', 'ct_sfw_send_logs', 3600, time() + 1800); // New
$cron->addTask('get_brief_data', 'cleantalk_get_brief_data', 86400, time() + 3500);
}
/**
* @return void
*/
function apbct_update_to_5_74_0()
{
$cron = new Cron();
$cron->removeTask('send_daily_request');
}
/**
* @return void
*/
function apbct_update_to_5_97_0()
{
global $apbct;
if ( isset($apbct->data['connection_reports']['negative_report'])
&& is_array($apbct->data['connection_reports']['negative_report'])
&& count($apbct->data['connection_reports']['negative_report']) >= 20 ) {
$apbct->data['connection_reports']['negative_report'] = array_slice(
$apbct->data['connection_reports']['negative_report'],
-20,
20
);
}
$apbct->saveData();
}
/**
* @return void
*/
function apbct_update_to_5_109_0()
{
global $apbct, $wpdb;
if (apbct_is_plugin_active_for_network($apbct->base_name) && !defined('CLEANTALK_ACCESS_KEY')) {
$initial_blog = get_current_blog_id();
$blogs = array_keys($wpdb->get_results('SELECT blog_id FROM ' . $wpdb->blogs, OBJECT_K));
foreach ($blogs as $blog) {
switch_to_blog($blog);
// Cron tasks
$cron = new Cron();
$cron->addTask(
'check_account_status',
'ct_account_status_check',
3600,
time() + 1800
); // Checks account status
$cron->addTask(
'delete_spam_comments',
'ct_delete_spam_comments',
3600,
time() + 3500
); // Formerly ct_hourly_event_hook()
$cron->addTask('send_feedback', 'ct_send_feedback', 3600, time() + 3500); // Formerly ct_hourly_event_hook()
$cron->addTask('sfw_update', 'apbct_sfw_update__init', 86400, time() + 300); // SFW update
$cron->addTask('send_sfw_logs', 'ct_sfw_send_logs', 3600, time() + 1800); // SFW send logs
$cron->addTask(
'get_brief_data',
'cleantalk_get_brief_data',
86400,
time() + 3500
); // Get data for dashboard widget
$cron->addTask(
'send_connection_report',
'ct_mail_send_connection_report',
86400,
time() + 3500
); // Send connection report to welcome@cleantalk.org
}
switch_to_blog($initial_blog);
}
}
/**
* @return void
*/
function apbct_update_to_5_110_0()
{
global $apbct;
unset($apbct->data['last_remote_call']);
$apbct->saveData();
$apbct->save('remote_calls');
}
/**
* @return void
*/
function apbct_update_to_5_116_0()
{
global $apbct;
$apbct->settings['store_urls'] = 0;
$apbct->settings['store_urls__sessions'] = 0;
$apbct->saveSettings();
}
/**
* @return void
*/
function apbct_update_to_5_118_0()
{
delete_option('cleantalk_server');
}
/**
* @return void
*/
function apbct_update_to_5_118_2()
{
global $apbct;
if ( isset($apbct->data['connection_reports'], $apbct->data['connection_reports']['since'], $apbct->default_data['connection_reports']) ) {
$apbct->data['connection_reports'] = $apbct->default_data['connection_reports'];
$apbct->data['connection_reports']['since'] = date('d M');
$apbct->saveData();
}
}
/**
* @return void
*/
function apbct_update_to_5_119_0()
{
// Drop work url
update_option(
'cleantalk_server',
array(
'ct_work_url' => null,
'ct_server_ttl' => 0,
'ct_server_changed' => 0,
)
);
}
/**
* @return void
*/
function apbct_update_to_5_124_0()
{
global $apbct;
// Deleting error in database because format were changed
$apbct->errors = array();
$apbct->saveErrors();
}
/**
* @return void
*/
function apbct_update_to_5_126_0()
{
global $apbct;
// Enable storing URLs
$apbct->settings['store_urls'] = 1;
$apbct->settings['store_urls__sessions'] = 1;
$apbct->saveSettings();
}
/**
* @return void
*/
function apbct_update_to_5_127_0()
{
global $apbct, $wpdb;
// Move exclusions from variable to settins
global $cleantalk_url_exclusions, $cleantalk_key_exclusions;
// URLs
if (!empty($cleantalk_url_exclusions) && is_array($cleantalk_url_exclusions)) {
$apbct->settings['exclusions__urls'] = implode(',', $cleantalk_url_exclusions);
if (APBCT_WPMS) {
$initial_blog = get_current_blog_id();
switch_to_blog(1);
$apbct->saveSettings();
switch_to_blog($initial_blog);
} else {
$apbct->saveSettings();
}
}
// Fields
if (!empty($cleantalk_key_exclusions) && is_array($cleantalk_key_exclusions)) {
$apbct->settings['exclusions__fields'] = implode(',', $cleantalk_key_exclusions);
if (APBCT_WPMS) {
$initial_blog = get_current_blog_id();
switch_to_blog(1);
$apbct->saveSettings();
switch_to_blog($initial_blog);
} else {
$apbct->saveSettings();
}
}
// Deleting legacy
if (isset($apbct->data['testing_failed'])) {
unset($apbct->data['testing_failed']);
$apbct->saveData();
}
if (APBCT_WPMS) {
// Whitelabel
// Reset "api_key_is_received" flag
$initial_blog = get_current_blog_id();
$blogs = array_keys($wpdb->get_results('SELECT blog_id FROM ' . $wpdb->blogs, OBJECT_K));
foreach ($blogs as $blog) {
switch_to_blog($blog);
$settings = get_option('cleantalk_settings');
if (isset($settings['use_static_js_key'])) {
$settings['use_static_js_key'] = $settings['use_static_js_key'] === 0
? -1
: $settings['use_static_js_key'];
update_option('cleantalk_settings', $settings);
$data = get_option('cleantalk_data');
if (isset($data['white_label_data']['is_key_recieved'])) {
unset($data['white_label_data']['is_key_recieved']);
update_option('cleantalk_data', $data);
}
}
switch_to_blog($initial_blog);
if (defined('APBCT_WHITELABEL')) {
$apbct->network_settings = array(
'white_label' => defined('APBCT_WHITELABEL') && APBCT_WHITELABEL == true ? 1 : 0,
'white_label__plugin_name' => defined('APBCT_WHITELABEL_NAME') ? APBCT_WHITELABEL_NAME : APBCT_NAME,
);
} elseif (defined('CLEANTALK_ACCESS_KEY')) {
$apbct->network_settings = array(
'allow_custom_key' => 0,
'apikey' => CLEANTALK_ACCESS_KEY,
);
}
$apbct->saveNetworkSettings();
}
} else {
// Switch data__use_static_js_key to Auto if it was disabled
$apbct->settings['data__use_static_js_key'] = $apbct->settings['data__use_static_js_key'] === 0
? -1
: $apbct->settings['data__use_static_js_key'];
$apbct->saveSettings();
}
}
/**
* @return void
*/
function apbct_update_to_5_127_1()
{
global $apbct;
if (APBCT_WPMS && is_main_site()) {
$network_settings = get_site_option('cleantalk_network_settings');
if ($network_settings !== false && empty($network_settings['allow_custom_key']) && empty($network_settings['white_label'])) {
$network_settings['allow_custom_key'] = 1;
update_site_option('cleantalk_network_settings', $network_settings);
}
if ( $network_settings !== false && $network_settings['white_label'] == 1 && $apbct->data['moderate'] == 0 ) {
ct_account_status_check(
$network_settings['apikey'] ? $network_settings['apikey'] : $apbct->settings['apikey'],
false
);
}
} elseif ( is_main_site() ) {
ct_account_status_check(
$apbct->settings['apikey'],
false
);
}
}
/**
* @return void
*/
function apbct_update_to_5_128_0()
{
global $apbct;
$apbct->remote_calls = array();
$apbct->save('remote_calls');
}
/**
* @return void
*
* @psalm-suppress PossiblyUndefinedStringArrayOffset
*/
function apbct_update_to_5_138_0()
{
global $wpdb;
// Actions for WPMS
if (APBCT_WPMS) {
// Getting all blog ids
$initial_blog = get_current_blog_id();
$blogs = $wpdb->get_results('SELECT blog_id FROM ' . $wpdb->blogs, OBJECT_K);
$blogs_ids = array_keys($blogs);
// Getting main blog setting
switch_to_blog(1);
$main_blog_settings = get_option('cleantalk_settings');
switch_to_blog($initial_blog);
// Getting network settings
$net_settings = get_site_option('cleantalk_network_settings');
foreach ($blogs_ids as $blog) {
// Update time limit to prevent exec time error
set_time_limit(20);
switch_to_blog($blog);
// Getting Access key
$settings = $net_settings['allow_custom_key']
? get_option('cleantalk_settings')
: $main_blog_settings;
// Update plugin status
if (! empty($settings['apikey'])) {
$data = get_option('cleantalk_data', array());
$result = \Cleantalk\ApbctWP\API::methodNoticePaidTill(
$settings['api_key'],
preg_replace('/http[s]?:\/\//', '', get_option('home'), 1),
! is_main_site() && $net_settings['white_label'] ? 'anti-spam-hosting' : 'antispam'
);
if (empty($result['error']) || ! empty($result['valid'])) {
// Notices
$data['notice_show'] = isset($result['show_notice']) ? (int)$result['show_notice'] : 0;
$data['notice_renew'] = isset($result['renew']) ? (int)$result['renew'] : 0;
$data['notice_trial'] = isset($result['trial']) ? (int)$result['trial'] : 0;
$data['notice_review'] = isset($result['show_review']) ? (int)$result['show_review'] : 0;
// Other
$data['service_id'] = isset($result['service_id']) ? (int)$result['service_id'] : 0;
$data['valid'] = isset($result['valid']) ? (int)$result['valid'] : 0;
$data['moderate'] = isset($result['moderate']) ? (int)$result['moderate'] : 0;
$data['ip_license'] = isset($result['ip_license']) ? (int)$result['ip_license'] : 0;
$data['moderate_ip'] = isset($result['moderate_ip'], $result['ip_license']) ? (int)$result['moderate_ip'] : 0;
$data['spam_count'] = isset($result['spam_count']) ? (int)$result['spam_count'] : 0;
$data['user_token'] = isset($result['user_token']) ? (string)$result['user_token'] : '';
$data['license_trial'] = isset($result['license_trial']) ? (int)$result['license_trial'] : 0;
$data['account_name_ob'] = isset($result['account_name_ob']) ? (string)$result['account_name_ob'] : '';
}
$data['key_is_ok'] = ! empty($result['valid'])
? true
: false;
update_option('cleantalk_data', $data);
}
}
// Restoring initial blog
switch_to_blog($initial_blog);
}
}
/**
* @return void
*/
function apbct_update_to_5_146_3()
{
update_option('cleantalk_plugin_request_ids', array());
}
/**
* @return void
*/
function apbct_update_to_5_148_0()
{
$cron = new Cron();
$cron->updateTask('antiflood__clear_table', 'apbct_antiflood__clear_table', 86400);
}
/**
* @return void
*/
function apbct_update_to_5_150_0()
{
global $wpdb;
// Actions for WPMS
if (APBCT_WPMS) {
// Getting all blog ids
$initial_blog = get_current_blog_id();
$blogs = array_keys($wpdb->get_results('SELECT blog_id FROM ' . $wpdb->blogs, OBJECT_K));
foreach ($blogs as $blog) {
switch_to_blog($blog);
update_option('cleantalk_plugin_request_ids', array());
}
// Restoring initial blog
switch_to_blog($initial_blog);
}
}
/**
* @return void
*/
function apbct_update_to_5_151_1()
{
global $apbct;
$apbct->fw_stats['firewall_updating_id'] = isset($apbct->data['firewall_updating_id'])
? $apbct->data['firewall_updating_id']
: '';
$apbct->fw_stats['firewall_update_percent'] = isset($apbct->data['firewall_update_percent'])
? $apbct->data['firewall_update_percent']
: 0;
$apbct->fw_stats['firewall_updating_last_start'] = isset($apbct->data['firewall_updating_last_start'])
? $apbct->data['firewall_updating_last_start']
: 0;
$apbct->save('fw_stats');
}
/**
* @return void
* @throws Exception
*/
function apbct_update_to_5_151_3()
{
global $apbct;
$apbct->fw_stats['firewall_updating_last_start'] = 0;
$apbct->save('fw_stats');
$apbct->stats['sfw']['entries'] = 0;
$apbct->save('stats');
}
/**
* @return void
*/
function apbct_update_to_5_151_6()
{
global $apbct;
$apbct->errorDelete('sfw_update', true);
}
/**
* @return void
*/
function apbct_update_to_5_153_4()
{
// Adding cooldown to sending SFW logs
global $apbct;
$apbct->stats['sfw']['sending_logs__timestamp'] = 0;
$apbct->save('stats');
}
/**
* @return void
*/
function apbct_update_to_5_154_0()
{
global $apbct, $wpdb;
// Old setting name => New setting name
$keys_map = array(
'spam_firewall' => 'sfw__enabled',
'registrations_test' => 'forms__registrations_test',
'comments_test' => 'forms__comments_test',
'contact_forms_test' => 'forms__contact_forms_test',
'general_contact_forms_test' => 'forms__general_contact_forms_test',
'wc_checkout_test' => 'forms__wc_checkout_test',
'wc_register_from_order' => 'forms__wc_register_from_order',
'search_test' => 'forms__search_test',
'check_external' => 'forms__check_external',
'check_external__capture_buffer' => 'forms__check_external__capture_buffer',
'check_internal' => 'forms__check_internal',
'disable_comments__all' => 'comments__disable_comments__all',
'disable_comments__posts' => 'comments__disable_comments__posts',
'disable_comments__pages' => 'comments__disable_comments__pages',
'disable_comments__media' => 'comments__disable_comments__media',
'bp_private_messages' => 'comments__bp_private_messages',
'check_comments_number' => 'comments__check_comments_number',
'remove_old_spam' => 'comments__remove_old_spam',
'remove_comments_links' => 'comments__remove_comments_links',
'show_check_links' => 'comments__show_check_links',
'protect_logged_in' => 'data__protect_logged_in',
'use_ajax' => 'data__use_ajax',
'use_static_js_key' => 'data__use_static_js_key',
'general_postdata_test' => 'data__general_postdata_test',
'set_cookies' => 'data__set_cookies',
'set_cookies__sessions' => 'data__set_cookies__sessions',
'ssl_on' => 'data__ssl_on',
'show_adminbar' => 'admin_bar__show',
'all_time_counter' => 'admin_bar__all_time_counter',
'daily_counter' => 'admin_bar__daily_counter',
'sfw_counter' => 'admin_bar__sfw_counter',
'gdpr_enabled' => 'gdpr__enabled',
'gdpr_text' => 'gdpr__text',
'collect_details' => 'misc__collect_details',
'async_js' => 'misc__async_js',
'debug_ajax' => 'misc__debug_ajax',
'store_urls' => 'misc__store_urls',
'store_urls__sessions' => 'misc__store_urls__sessions',
'complete_deactivation' => 'misc__complete_deactivation',
'use_buitin_http_api' => 'wp__use_builtin_http_api',
'comment_notify' => 'wp__comment_notify',
'comment_notify__roles' => 'wp__comment_notify__roles',
'dashboard_widget__show' => 'wp__dashboard_widget__show',
'allow_custom_key' => 'multisite__allow_custom_key',
'allow_custom_settings' => 'multisite__allow_custom_settings',
'white_label' => 'multisite__white_label',
'white_label__plugin_name' => 'multisite__white_label__plugin_name',
'use_settings_template' => 'multisite__use_settings_template',
'use_settings_template_apply_for_new' => 'multisite__use_settings_template_apply_for_new',
'use_settings_template_apply_for_current' => 'multisite__use_settings_template_apply_for_current',
'use_settings_template_apply_for_current_list_sites' => 'multisite__use_settings_template_apply_for_current_list_sites',
);
if (is_multisite()) {
$network_settings = get_site_option('cleantalk_network_settings');
if ($network_settings) {
$_network_settings = array();
// replacing old key to new keys
foreach ($network_settings as $key => $value) {
if (array_key_exists($key, $keys_map)) {
$_network_settings[$keys_map[$key]] = $value;
} else {
$_network_settings[$key] = $value;
}
}
if (! empty($_network_settings)) {
update_site_option('cleantalk_network_settings', $_network_settings);
}
}
$initial_blog = get_current_blog_id();
$blogs = array_keys($wpdb->get_results('SELECT blog_id FROM ' . $wpdb->blogs, OBJECT_K));
foreach ($blogs as $blog) {
switch_to_blog($blog);
$settings = get_option('cleantalk_settings');
if ($settings) {
// replacing old key to new keys
$_settings = array();
foreach ($settings as $key => $value) {
if (array_key_exists($key, $keys_map)) {
$_settings[$keys_map[$key]] = $value;
} else {
$_settings[$key] = $value;
}
}
if (! empty($_settings)) {
update_option('cleantalk_settings', $_settings);
}
}
}
switch_to_blog($initial_blog);
} else {
$apbct->data['current_settings_template_id'] = null;
$apbct->data['current_settings_template_name'] = null;
$apbct->saveData();
$settings = (array) $apbct->settings;
if ($settings) {
$_settings = array();
// replacing old key to new keys
foreach ($settings as $key => $value) {
if (array_key_exists($key, $keys_map)) {
$_settings[$keys_map[$key]] = $value;
} else {
$_settings[$key] = $value;
}
}
$apbct->settings = $_settings;
$apbct->saveSettings();
}
}
}
/**
* @return void
*/
function apbct_update_to_5_156_0()
{
global $apbct;
$apbct->remote_calls['debug'] = array( 'last_call' => 0, 'cooldown' => 0 );
$apbct->remote_calls['debug_sfw'] = array( 'last_call' => 0, 'cooldown' => 0 );
$apbct->save('remote_calls');
$cron = new Cron();
$cron->updateTask('sfw_update', 'apbct_sfw_update__init', 86400, time() + 42300);
}
/**
* @return void
*/
function apbct_update_to_5_157_0()
{
global $apbct;
$apbct->remote_calls['sfw_update__worker'] = array('last_call' => 0, 'cooldown' => 0);
$apbct->save('remote_calls');
if (! empty($apbct->settings['data__set_cookies__sessions'])) {
$apbct->settings['data__set_cookies'] = 2;
}
$apbct->data['ajax_type'] = 'rest';
$apbct->save('settings');
$apbct->save('data');
cleantalk_get_brief_data($apbct->api_key);
}
/**
* @return void
*/
function apbct_update_to_5_158_0()
{
global $apbct, $wpdb;
// change name for prevent psalm false positive
$_wpdb = $wpdb;
// Update from fix branch
if (APBCT_WPMS && is_main_site()) {
$wp_blogs = $_wpdb->get_results('SELECT blog_id, site_id FROM ' . $_wpdb->blogs, OBJECT_K);
$current_sites_list = $apbct->settings['multisite__use_settings_template_apply_for_current_list_sites'];
if (is_array($wp_blogs) && is_array($current_sites_list)) {
foreach ($wp_blogs as $blog) {
$blog_details = get_blog_details(array('blog_id' => $blog->blog_id));
if ($blog_details) {
$site_list_index = array_search($blog_details->blogname, $current_sites_list, true);
if ($site_list_index !== false) {
$current_sites_list[$site_list_index] = $blog_details->id;
}
}
}
$apbct->settings['multisite__use_settings_template_apply_for_current_list_sites'] = $current_sites_list;
$apbct->settings['comments__hide_website_field'] = '0';
$apbct->settings['data__pixel'] = '0';
$apbct->saveSettings();
}
} else {
$apbct->settings['comments__hide_website_field'] = '0';
$apbct->settings['data__pixel'] = '0';
$apbct->saveSettings();
}
}
/**
* @return void
*/
function apbct_update_to_5_158_2()
{
global $apbct;
$apbct->stats['cron']['last_start'] = 0;
$apbct->save('stats');
}
/**
* @return void
*/
function apbct_update_to_5_159_6()
{
global $wpdb;
$ct_cron = new Cron();
if (is_multisite()) {
$initial_blog = get_current_blog_id();
$blogs = array_keys($wpdb->get_results('SELECT blog_id FROM ' . $wpdb->blogs, OBJECT_K));
foreach ($blogs as $blog) {
switch_to_blog($blog);
// Cron tasks
$ct_cron->addTask(
'check_account_status',
'ct_account_status_check',
3600,
time() + 1800
); // Checks account status
$ct_cron->addTask(
'delete_spam_comments',
'ct_delete_spam_comments',
3600,
time() + 3500
); // Formerly ct_hourly_event_hook()
$ct_cron->addTask(
'send_feedback',
'ct_send_feedback',
3600,
time() + 3500
); // Formerly ct_hourly_event_hook()
$ct_cron->addTask('sfw_update', 'apbct_sfw_update__init', 86400); // SFW update
$ct_cron->addTask('send_sfw_logs', 'ct_sfw_send_logs', 3600, time() + 1800); // SFW send logs
$ct_cron->addTask(
'get_brief_data',
'cleantalk_get_brief_data',
86400,
time() + 3500
); // Get data for dashboard widget
$ct_cron->addTask(
'send_connection_report',
'ct_mail_send_connection_report',
86400,
time() + 3500
); // Send connection report to welcome@cleantalk.org
$ct_cron->addTask(
'antiflood__clear_table',
'apbct_antiflood__clear_table',
86400,
time() + 300
); // Clear Anti-Flood table
}
switch_to_blog($initial_blog);
} else {
// Cron tasks
$ct_cron->addTask(
'check_account_status',
'ct_account_status_check',
3600,
time() + 1800
); // Checks account status
$ct_cron->addTask(
'delete_spam_comments',
'ct_delete_spam_comments',
3600,
time() + 3500
); // Formerly ct_hourly_event_hook()
$ct_cron->addTask('send_feedback', 'ct_send_feedback', 3600, time() + 3500); // Formerly ct_hourly_event_hook()
$ct_cron->addTask('sfw_update', 'apbct_sfw_update__init', 86400); // SFW update
$ct_cron->addTask('send_sfw_logs', 'ct_sfw_send_logs', 3600, time() + 1800); // SFW send logs
$ct_cron->addTask(
'get_brief_data',
'cleantalk_get_brief_data',
86400,
time() + 3500
); // Get data for dashboard widget
$ct_cron->addTask(
'send_connection_report',
'ct_mail_send_connection_report',
86400,
time() + 3500
); // Send connection report to welcome@cleantalk.org
$ct_cron->addTask(
'antiflood__clear_table',
'apbct_antiflood__clear_table',
86400,
time() + 300
); // Clear Anti-Flood table
}
}
/**
* @return void
*/
function apbct_update_to_5_159_9()
{
$cron = new Cron();
$cron->addTask('rotate_moderate', 'apbct_rotate_moderate', 86400, time() + 3500); // Rotate moderate server
}
/**
* @return void
*/
function apbct_update_to_5_160_4()
{
global $apbct;
$apbct->settings['sfw__random_get'] = '1';
$apbct->saveSettings();
SFWUpdateHelper::removeUpdFolder(APBCT_DIR_PATH . '/fw_files');
if ($apbct->is_multisite) {
$apbct->network_settings = array_merge((array)$apbct->network_settings, $apbct->default_network_settings);
$apbct->save('network_settings');
}
SFWUpdateHelper::removeUpdFolder(ABSPATH . '/wp-admin/fw_files');
$root_path = Server::get('DOCUMENT_ROOT') ? Server::get('DOCUMENT_ROOT') : ABSPATH;
$root_path = is_array($root_path) ? reset($root_path) : $root_path;
$root_path = $root_path === false ? ABSPATH : $root_path;
SFWUpdateHelper::removeUpdFolder($root_path . '/fw_files');
$base_path = rtrim(ABSPATH, '/');
$file_path = $base_path . '/fw_filesindex.php';
if (strpos($file_path, $base_path) === 0 && is_file($file_path) && is_writable($file_path)) {
if (!unlink($file_path)) {
error_log('Failed to delete file: ' . $file_path);
}
}
}
function apbct_update_to_5_161_1()
{
global $apbct;
if ($apbct->is_multisite) {
$apbct->network_settings = array_merge((array)$apbct->network_settings, $apbct->default_network_settings);
// Migrate old WPMS to the new wpms mode
if ( isset($apbct->network_settings['multisite__allow_custom_key']) ) {
if ( $apbct->network_settings['multisite__allow_custom_key'] == 1 ) {
$apbct->network_settings['multisite__work_mode'] = 1;
} else {
$apbct->network_settings['multisite__work_mode'] = 2;
}
}
$apbct->saveNetworkSettings();
}
}
function apbct_update_to_5_161_2()
{
global $apbct;
// Set type of the alt cookies
if ($apbct->settings['data__set_cookies'] == 2) {
// Check rest availability
$res_rest = Helper::httpRequestGetResponseCode(esc_url(apbct_get_rest_url()));
if ($res_rest != 200) {
// Check WP ajax availability
$res_ajax = Helper::httpRequestGetResponseCode(admin_url('admin-ajax.php'));
if ($res_ajax != 400) {
// There is no available alt cookies types. Cookies will be disabled.
$apbct->settings['data__set_cookies'] = 0;
} else {
$apbct->data['ajax_type'] = 'admin_ajax';
}
} else {
$apbct->data['ajax_type'] = 'rest';
}
$apbct->saveSettings();
$apbct->saveData();
}
}
/**
* 5.162
*/
function apbct_update_to_5_162_0()
{
global $apbct;
$apbct->settings['forms__wc_honeypot'] = '1';
$apbct->saveSettings();
}
/**
* 5.162.1
*/
function apbct_update_to_5_162_1()
{
global $apbct;
if (
! isset($apbct->stats['sfw']['update_period']) ||
(isset($apbct->stats['sfw']['update_period']) && $apbct->stats['sfw']['update_period'] == 0)
) {
$apbct->stats['sfw']['update_period'] = 14400;
$apbct->save('stats');
}
// Set type of the AJAX handler for the ajax js
if ( $apbct->settings['data__use_ajax'] == 1 ) {
// Check rest availability
$res_rest = Helper::httpRequestGetResponseCode(esc_url(apbct_get_rest_url()));
if ($res_rest != 200) {
// Check WP ajax availability
$res_ajax = Helper::httpRequestGetResponseCode(admin_url('admin-ajax.php'));
if ($res_ajax != 400) {
// There is no available alt cookies types. Cookies will be disabled.
$apbct->settings['data__use_ajax'] = 0;
} else {
$apbct->data['ajax_type'] = 'admin_ajax';
}
} else {
$apbct->data['ajax_type'] = 'rest';
}
$apbct->saveSettings();
$apbct->saveData();
}
// Migrate old WPMS to the new wpms mode
if ( isset($apbct->network_settings['multisite__allow_custom_key']) ) {
if ( $apbct->network_settings['multisite__allow_custom_key'] == 1 ) {
$apbct->network_settings['multisite__work_mode'] = 1;
} else {
$apbct->network_settings['multisite__work_mode'] = 2;
}
$apbct->saveNetworkSettings();
}
}
/**
* 5.164
*/
function apbct_update_to_5_164_0()
{
global $apbct;
$alt_cookies_type = isset($apbct->settings['data__set_cookies__alt_sessions_type'])
? $apbct->settings['data__set_cookies__alt_sessions_type']
: false;
switch ((int)$alt_cookies_type) {
case 0:
$alt_cookies_type = 'rest';
break;
case 1:
$alt_cookies_type = 'custom_ajax';
break;
case 2:
$alt_cookies_type = 'admin_ajax';
break;
}
$apbct->data['ajax_type'] = $alt_cookies_type;
$apbct->saveData();
}
/**
* 5.164.2
*/
function apbct_update_to_5_164_2()
{
global $apbct;
$apbct->errorDeleteAll();
}
/**
* 5.167.1
*/
function apbct_update_to_5_167_1()
{
global $apbct;
// For the current installations, after updating the option will turn off
$apbct->settings['exclusions__log_excluded_requests'] = '0';
$apbct->saveSettings();
}
/**
* 5.172.1
*/
function apbct_update_to_5_172_1()
{
global $apbct;
if ( isset($apbct->settings['forms__wc_honeypot']) ) {
$apbct->settings['data__honeypot_field'] = $apbct->settings['forms__wc_honeypot'];
$apbct->saveSettings();
}
}
/**
* 5.172.1
*/
function apbct_update_to_5_176()
{
global $apbct;
$apbct->data['ajax_type'] = apbct_settings__get_ajax_type() ?: 'admin_ajax';
$apbct->saveData();
}
/**
* 5.172.1
*/
function apbct_update_to_5_176_1()
{
global $apbct;
if ( ! isset($apbct->settings['data__email_decoder']) ) {
$apbct->settings['data__email_decoder'] = 0;
$apbct->saveSettings();
}
}
function apbct_update_to_5_177_2()
{
global $apbct;
if ( isset($apbct->remote_calls['update_plugin']) ) {
unset($apbct->remote_calls['update_plugin']);
$apbct->save('remote_calls');
}
}
function apbct_update_to_5_177_3()
{
global $apbct;
if ( ! empty($apbct->settings['exclusions__urls']) ) {
$apbct->data['check_exclusion_as_url'] = false;
$apbct->saveData();
}
}
function apbct_update_to_5_179_2()
{
global $apbct;
$apbct->remote_calls['post_api_key'] = array('last_call' => 0);
$apbct->save('remote_calls');
}
function apbct_update_to_5_182_0()
{
global $apbct;
// Move connection report from cleantalk_data to separate option cleantalk_connection_reports
$connection_reports = array(
'success' => 0,
'negative' => 0,
'negative_report' => array(),
'since' => '',
);
if ( isset($apbct->data['connection_reports']) ) {
$connection_reports = $apbct->data['connection_reports'];
unset($apbct->data['connection_reports']);
$apbct->save('data');
}
update_option('cleantalk_connection_reports', $connection_reports, false);
}
function apbct_update_to_5_184_2()
{
global $apbct;
if ( ! isset($apbct->settings['misc__send_connection_reports']) ) {
$apbct->settings['misc__send_connection_reports'] = 1;
$apbct->saveSettings();
}
}
function apbct_update_to_6_0_1()
{
global $apbct;
if ( isset($apbct->data['connection_reports']) ) {
unset($apbct->data['connection_reports']);
$apbct->save('data');
}
delete_option('cleantalk_connection_reports');
$cron = new Cron();
$cron->removeTask('send_connection_report');
$cron->addTask(
'send_connection_report',
'ct_cron_send_connection_report_email',
86400,
time() + 3500
);
$apbct->errorDelete('cron', true);
}
function apbct_update_to_6_3_3()
{
global $apbct;
if ( ! isset($apbct->settings['data__email_decoder_buffer']) ) {
$apbct->settings['data__email_decoder_buffer'] = 0;
$apbct->saveSettings();
}
}
function apbct_update_to_6_6_0()
{
$cron = new Cron();
$cron->removeTask('send_js_error_report');
$cron->addTask('send_js_error_report', 'ct_cron_send_js_error_report_email', 86400);
}
function apbct_update_to_6_8_0()
{
global $apbct;
$apbct->data['wl_brandname'] = isset($apbct->data['wl_brandname']) ? $apbct->data['wl_brandname'] : 'Anti-Spam by CleanTalk';
$apbct->data['wl_brandname_short'] = isset($apbct->data['wl_brandname_short']) ? $apbct->data['wl_brandname_short'] : 'CleanTalk';
$apbct->data['wl_url'] = isset($apbct->data['wl_url']) ? $apbct->data['wl_url'] : 'https://cleantalk.org/';
$apbct->data['wl_support_email'] = isset($apbct->data['wl_support_email']) ? $apbct->data['wl_support_email'] : 'support@cleantalk.org';
$apbct->data['wl_support_faq'] = isset($apbct->data['wl_support_faq'])
? $apbct->data['wl_support_faq'] : 'https://wordpress.org/plugins/cleantalk-spam-protect/faq/';
$apbct->data['wl_support_url'] = isset($apbct->data['wl_support_url'])
? $apbct->data['wl_support_url'] : 'https://wordpress.org/support/plugin/cleantalk-spam-protect';
}
function apbct_update_to_6_9_0()
{
global $apbct;
if (isset($apbct->settings['gdpr__enabled']) || isset($apbct->settings['gdpr__text'])) {
if (isset($apbct->settings['gdpr__enabled'])) {
unset($apbct->settings['gdpr__enabled']);
}
if (isset($apbct->settings['gdpr__text'])) {
unset($apbct->settings['gdpr__text']);
}
$apbct->saveSettings();
}
}
function apbct_update_to_6_10_2()
{
global $apbct;
$apbct->settings['data__bot_detector_enabled'] = 0;
$apbct->saveSettings();
}
function apbct_update_to_6_17_2()
{
$cron = new Cron();
$cron->removeTask('clear_old_session_data');
$cron->addTask('clear_old_session_data', 'apbct_cron_clear_old_session_data', 86400);
}
function apbct_update_to_6_41_0()
{
global $wpdb;
$wpdb->query('DROP TABLE IF EXISTS `' . $wpdb->prefix . 'cleantalk_no_cookie_data`;');
}
function apbct_update_to_6_42_0()
{
add_action('plugins_loaded', function () {
delete_option('cleantalk_adjust_to_env');
$adjust = new Cleantalk\ApbctWP\AdjustToEnvironmentModule\AdjustToEnvironmentHandler();
$adjust->handle();
});
}
function apbct_update_to_6_46_1()
{
global $apbct;
if (isset($apbct->settings['misc__debug_ajax'])) {
unset($apbct->settings['misc__debug_ajax']);
$apbct->saveSettings();
}
$apbct->deleteOption('debug', true);
}
function apbct_update_to_6_54_1()
{
global $apbct;
$apbct->settings['data__email_decoder_encode_phone_numbers'] = 0;
if ($apbct->settings['data__email_decoder']) {
$apbct->settings['data__email_decoder_encode_email_addresses'] = 1;
} else {
$apbct->settings['data__email_decoder_encode_email_addresses'] = 0;
}
if ( ! isset($apbct->settings['forms__gravityforms_save_spam']) ) {
$apbct->settings['forms__gravityforms_save_spam'] =
isset($apbct->default_settings['forms__gravityforms_save_spam'])
? $apbct->default_settings['forms__gravityforms_save_spam']
: 1;
$apbct->saveSettings();
}
$apbct->saveSettings();
}
function apbct_update_to_6_60_0()
{
global $wpdb;
// Check if the table exists first to avoid unnecessary queries
if ($wpdb->get_var("SHOW TABLES LIKE '" . APBCT_TBL_SESSIONS . "'") !== APBCT_TBL_SESSIONS) {
return;
}
$query = $wpdb->prepare('
SELECT
index_name AS index_name,
COUNT(*) AS column_count
FROM
information_schema.statistics
WHERE
table_schema = %s AND
table_name = %s AND
index_name IN (
SELECT index_name
FROM information_schema.statistics
WHERE column_name = \'id\'
)
GROUP BY
index_name;
', $wpdb->dbname, APBCT_TBL_SESSIONS);
$indexes = $wpdb->get_results($query, ARRAY_A);
$wrong_index = false;
if (!empty($indexes)) {
$index_data = $indexes[0];
if (isset($index_data['column_count'], $index_data['index_name'])) {
$wrong_index = (
strtoupper($index_data['index_name']) !== 'PRIMARY' ||
$index_data['column_count'] != 1 // Loose comparison for type flexibility
);
}
}
if ($wrong_index) {
$drop_result = $wpdb->query('DROP TABLE IF EXISTS ' . APBCT_TBL_SESSIONS);
if ($drop_result !== false) {
$db_creator = new \Cleantalk\ApbctWP\UpdatePlugin\DbTablesCreator();
$db_creator->createTable(APBCT_TBL_SESSIONS); // Use the original constant
}
}
}
function apbct_update_to_6_76_0()
{
global $apbct;
if ( isset($apbct->settings['data__bot_detector_enabled']) ) {
$bot_detector_state = $apbct->settings['data__bot_detector_enabled'];
$apbct->data['bot_detector_enabled'] = $bot_detector_state;
$apbct->saveData();
}
}