403));
}
maspik_save_command($error_message);
$save_notif = "yes";
}
//Submit button command - END
//Save Commands
function maspik_save_command($error_message = ''){
//Check if the user has the permission to save the settings
if (!current_user_can('manage_options')) {
return;
}
// Array of settings to save
$settings_to_save = [
'text_blacklist' => sanitize_textarea_field(stripslashes($_POST['text_blacklist'] ?? '')),
'text_limit_toggle' => isset($_POST['text_limit_toggle']) ? 1 : 0,
'MinCharactersInTextField' => sanitize_text_field($_POST['MinCharactersInTextField'] ?? ''),
'MaxCharactersInTextField' => sanitize_text_field($_POST['MaxCharactersInTextField'] ?? ''),
'text_custom_message_toggle' => isset($_POST['text_custom_message_toggle']) ? 1 : 0,
'custom_error_message_MaxCharactersInTextField' => sanitize_text_field(stripslashes($_POST['custom_error_message_MaxCharactersInTextField'] ?? '')),
'emails_blacklist' => sanitize_textarea_field(stripslashes($_POST['emails_blacklist'] ?? '')),
// 'textarea_blacklist' removed - merged into text_blacklist
'textarea_link_limit_toggle' => isset($_POST['textarea_link_limit_toggle']) ? 1 : 0,
'contain_links' => (isset($_POST['contain_links']) && $_POST['contain_links'] !== '') ? absint($_POST['contain_links']) : '',
'textarea_limit_toggle' => isset($_POST['textarea_limit_toggle']) ? 1 : 0,
'emoji_check' => isset($_POST['emoji_check']) ? 1 : 0,
'emoji_custom_message_toggle' => isset($_POST['emoji_custom_message_toggle']) ? 1 : 0,
'custom_error_message_emoji_check' => sanitize_text_field(stripslashes($_POST['custom_error_message_emoji_check'] ?? '')),
'MinCharactersInTextAreaField' => sanitize_text_field($_POST['MinCharactersInTextAreaField'] ?? ''),
'MaxCharactersInTextAreaField' => sanitize_text_field($_POST['MaxCharactersInTextAreaField'] ?? ''),
'textarea_custom_message_toggle' => isset($_POST['textarea_custom_message_toggle']) ? 1 : 0,
'custom_error_message_MaxCharactersInTextAreaField' => sanitize_text_field(stripslashes($_POST['custom_error_message_MaxCharactersInTextAreaField'] ?? '')),
'tel_formats' => sanitize_textarea_field(stripslashes($_POST['tel_formats'] ?? '')),
'tel_limit_toggle' => isset($_POST['tel_limit_toggle']) ? 1 : 0,
'MinCharactersInPhoneField' => sanitize_text_field($_POST['MinCharactersInPhoneField'] ?? ''),
'MaxCharactersInPhoneField' => sanitize_text_field($_POST['MaxCharactersInPhoneField'] ?? ''),
'phone_limit_custom_message_toggle' => isset($_POST['phone_limit_custom_message_toggle']) ? 1 : 0,
'custom_error_message_MaxCharactersInPhoneField' => sanitize_text_field(stripslashes($_POST['custom_error_message_MaxCharactersInPhoneField'] ?? '')),
'phone_custom_message_toggle' => isset($_POST['phone_custom_message_toggle']) ? 1 : 0,
'custom_error_message_tel_formats' => sanitize_text_field(stripslashes($_POST['custom_error_message_tel_formats'] ?? '')),
'lang_need_custom_message_toggle' => isset($_POST['lang_need_custom_message_toggle']) ? 1 : 0,
'custom_error_message_lang_needed' => sanitize_text_field(stripslashes($_POST['custom_error_message_lang_needed'] ?? '')),
'lang_forbidden_custom_message_toggle' => isset($_POST['lang_forbidden_custom_message_toggle']) ? 1 : 0,
'custom_error_message_lang_forbidden' => sanitize_text_field(stripslashes($_POST['custom_error_message_lang_forbidden'] ?? '')),
'AllowedOrBlockCountries' => sanitize_text_field($_POST['AllowedOrBlockCountries'] ?? 'block'),
'country_custom_message_toggle' => isset($_POST['country_custom_message_toggle']) ? 1 : 0,
'custom_error_message_country_blacklist' => sanitize_text_field(stripslashes($_POST['custom_error_message_country_blacklist'] ?? '')),
'private_file_id' => (isset($_POST['private_file_id']) && $_POST['private_file_id'] !== '') ?
(absint($_POST['private_file_id']) > 2 ? absint($_POST['private_file_id']) : '') : '',
'popular_spam' => isset($_POST['popular_spam']) ? 1 : 0,
'maspikHoneypot' => isset($_POST['maspikHoneypot']) ? 1 : 0,
'maspikTimeCheck' => isset($_POST['maspikTimeCheck']) ? 1 : 0,
'NeedPageurl' => isset($_POST['NeedPageurl']) ? 1 : 0,
'ip_blacklist' => sanitize_textarea_field(stripslashes($_POST['ip_blacklist'] ?? '')),
'error_message' => sanitize_text_field(stripslashes($_POST['error_message'] ?? '')),
'abuseipdb_api' => sanitize_text_field(stripslashes($_POST['abuseipdb_api'] ?? '')),
'abuseipdb_score' => sanitize_text_field($_POST['abuseipdb_score'] ?? ''),
'proxycheck_io_api' => sanitize_text_field(stripslashes($_POST['proxycheck_io_api'] ?? '')),
'proxycheck_io_risk' => sanitize_text_field($_POST['proxycheck_io_risk'] ?? ''),
'numverify_api' => sanitize_text_field(stripslashes($_POST['numverify_api'] ?? '')),
'maspik_support_Elementor_forms' => sanitize_text_field(isset($_POST['maspik_support_Elementor_forms']) ? "yes" : "no"),
'maspik_support_cf7' => sanitize_text_field(isset($_POST['maspik_support_cf7']) ? "yes" : "no"),
'maspik_support_wp_comment' => sanitize_text_field(isset($_POST['maspik_support_wp_comment']) ? "yes" : "no"),
'maspik_support_registration' => sanitize_text_field(isset($_POST['maspik_support_registration']) ? "yes" : "no"),
'maspik_support_custom_forms' => sanitize_text_field(isset($_POST['maspik_support_custom_forms']) ? "yes" : "no"),
'maspik_support_woocommerce_review' => sanitize_text_field(isset($_POST['maspik_support_woocommerce_review']) ? "yes" : "no"),
'maspik_support_Woocommerce_registration' => sanitize_text_field(isset($_POST['maspik_support_Woocommerce_registration']) ? "yes" : "no"),
'maspik_support_woocommerce_orders' => sanitize_text_field(isset($_POST['maspik_support_woocommerce_orders']) ? "yes" : "no"),
'maspik_support_Wpforms' => sanitize_text_field(isset($_POST['maspik_support_Wpforms']) ? "yes" : "no"),
'maspik_support_formidable_forms' => sanitize_text_field(isset($_POST['maspik_support_formidable_forms']) ? "yes" : "no"),
'maspik_support_forminator_forms' => sanitize_text_field(isset($_POST['maspik_support_forminator_forms']) ? "yes" : "no"),
'maspik_support_fluentforms_forms' => sanitize_text_field(isset($_POST['maspik_support_fluentforms_forms']) ? "yes" : "no"),
'maspik_support_gravity_forms' => sanitize_text_field(isset($_POST['maspik_support_gravity_forms']) ? "yes" : "no"),
'maspik_support_bricks_forms' => sanitize_text_field(isset($_POST['maspik_support_bricks_forms']) ? "yes" : "no"),
'maspik_support_metform_forms' => sanitize_text_field(isset($_POST['maspik_support_metform_forms']) ? "yes" : "no"),
'maspik_support_bitform_forms' => sanitize_text_field(isset($_POST['maspik_support_bitform_forms']) ? "yes" : "no"),
'maspik_support_breakdance_forms' => sanitize_text_field(isset($_POST['maspik_support_breakdance_forms']) ? "yes" : "no"),
'maspik_support_ninjaforms' => sanitize_text_field(isset($_POST['maspik_support_ninjaforms']) ? "yes" : "no"),
'maspik_support_jetforms' => sanitize_text_field(isset($_POST['maspik_support_jetforms']) ? "yes" : "no"),
'maspik_support_everestforms' => sanitize_text_field(isset($_POST['maspik_support_everestforms']) ? "yes" : "no"),
'maspik_support_buddypress_forms' => sanitize_text_field(isset($_POST['maspik_support_buddypress_forms']) ? "yes" : "no"),
'maspik_support_helloplus_forms' => sanitize_text_field(isset($_POST['maspik_support_helloplus_forms']) ? "yes" : "no"),
'maspik_support_divi_forms' => sanitize_text_field(isset($_POST['maspik_support_divi_forms']) ? "yes" : "no"),
'maspik_Store_log' => sanitize_text_field(isset($_POST['maspik_Store_log']) ? 'yes' : 'no'),
'spam_log_limit' => sanitize_text_field($_POST['spam_log_limit'] ?? ''),
'shere_data' => isset($_POST['shere_data']) ? 1 : 0,
'url_blacklist' => sanitize_textarea_field(stripslashes($_POST['url_blacklist'] ?? '')),
'maspik_ai_enabled' => isset($_POST['maspik_ai_enabled']) ? 1 : 0,
'maspik_ai_context' => sanitize_text_field(stripslashes($_POST['maspik_ai_context'] ?? '')),
'maspik_matrix_api_mode' => ( function () {
$m = isset( $_POST['maspik_matrix_api_mode'] ) ? absint( $_POST['maspik_matrix_api_mode'] ) : 4;
return in_array( $m, array( 2, 3, 4 ), true ) ? $m : 4;
} )(),
];
// Save the settings
foreach ($settings_to_save as $key => $value) {
if (maspik_save_settings($key, $value) != "success") {
$error_message .= "Failed to save $key. ";
}
}
// WooCommerce Orders sub-settings: only when accordion was in the form (so we don't overwrite when feature is off)
if ( class_exists( 'WooCommerce' ) && function_exists( 'WC' ) && ! empty( $_POST['maspik_woo_orders_accordion_visible'] ) ) {
$woo_orders_error = isset( $_POST['maspik_woo_orders_error_message'] ) ? sanitize_textarea_field( stripslashes( wp_unslash( $_POST['maspik_woo_orders_error_message'] ) ) ) : '';
$woo_orders_gateways = isset( $_POST['maspik_woo_orders_gateways_to_check'] ) && is_array( $_POST['maspik_woo_orders_gateways_to_check'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['maspik_woo_orders_gateways_to_check'] ) ) : array();
$woo_orders_zero = isset( $_POST['maspik_woo_orders_check_zero_total'] ) ? 'yes' : 'no';
maspik_save_settings( 'maspik_woo_orders_error_message', $woo_orders_error );
maspik_save_settings( 'maspik_woo_orders_gateways_to_check', $woo_orders_gateways );
maspik_save_settings( 'maspik_woo_orders_check_zero_total', $woo_orders_zero );
}
// Ensure AI client secret exists
if (isset($_POST['maspik_ai_enabled']) && $_POST['maspik_ai_enabled']) {
$existing_secret = maspik_get_settings('maspik_ai_client_secret');
if (empty($existing_secret) || $existing_secret === null) {
// Generate new client secret if it doesn't exist
if (function_exists('maspik_generate_ai_client_secret')) {
maspik_generate_ai_client_secret();
}
}
}
// Save Options END --
// Array of select fields for processing
$select_fields = [
'lang_needed',
'numverify_country',
'country_blacklist',
'lang_forbidden'
];
// Process and save select fields
foreach ($select_fields as $field_key ) {
$processedValues = '';
if (isset($_POST[$field_key]) && !empty($_POST[$field_key])) {
$selectedValues = (array)$_POST[$field_key];
foreach ($selectedValues as $value) {
// Sanitize the value
$escapedValue = sanitize_text_field($value);
$processedValues .= $escapedValue . " ";
}
$processedValues = trim(str_replace("\\p", "p", $processedValues));
}
try {
if (maspik_save_settings($field_key, $processedValues) !== "success") {
$error_message .= sprintf(__('Failed to save %s settings. ', 'contact-forms-anti-spam'), $field_key);
error_log("Maspik: Failed to save {$field_key} settings");
}
} catch (Exception $e) {
$error_message .= sprintf(__('Error occurred while saving %s: %s ', 'contact-forms-anti-spam'),
$field_key,
$e->getMessage()
);
error_log("Maspik: Error saving {$field_key}: " . $e->getMessage());
}
}
}
//Refresh Maspik API button Command
if ( (isset( $_POST['maspik-api-refresh-btn'] ) || isset( $_POST['maspik-api-save-btn'] ) ) && cfes_is_supporting("api") ) {
// Verify nonce
if (isset($_POST['maspik_save_settings_nonce']) && wp_verify_nonce($_POST['maspik_save_settings_nonce'], 'maspik_save_settings_action')) {
// Nonce is valid, proceed with refreshing API
cfas_refresh_api();
//$current_page = esc_url(admin_url("admin.php?page=maspik"));
// Redirect to avoid resubmission on page refresh
//echo "";
} else {
// Nonce verification failed, handle accordingly
echo "
Error: Nonce verification failed.
";
}
}
//Refresh Maspik API button Command - END
?>