Rename plugin to wp-seoprostack-plugin, update file structure
This commit is contained in:
132
admin/settings/ajax/class-seoprostack-ajax-advanced.php
Normal file
132
admin/settings/ajax/class-seoprostack-ajax-advanced.php
Normal file
@ -0,0 +1,132 @@
|
||||
<?php
|
||||
/**
|
||||
* The Advanced Settings AJAX handler.
|
||||
*
|
||||
* @package SEO_Pro_Stack
|
||||
* @subpackage SEO_Pro_Stack/Admin/Settings/AJAX
|
||||
*/
|
||||
|
||||
// If this file is called directly, abort.
|
||||
if (!defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* The Advanced Settings AJAX handler.
|
||||
*/
|
||||
class SEOProStack_AJAX_Advanced {
|
||||
|
||||
/**
|
||||
* Initialize the AJAX handlers.
|
||||
*/
|
||||
public function init() {
|
||||
add_action('wp_ajax_seoprostack_save_advanced_settings', array($this, 'save_advanced_settings'));
|
||||
add_action('wp_ajax_seoprostack_optimize_database', array($this, 'optimize_database'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Save advanced settings.
|
||||
*/
|
||||
public function save_advanced_settings() {
|
||||
// Verify nonce
|
||||
if (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'seoprostack_ajax_nonce')) {
|
||||
wp_send_json_error(array('message' => 'Security check failed'));
|
||||
}
|
||||
|
||||
// Check capabilities
|
||||
if (!current_user_can('manage_options')) {
|
||||
wp_send_json_error(array('message' => 'You do not have permission to change settings'));
|
||||
}
|
||||
|
||||
// Get settings
|
||||
$settings = array(
|
||||
'disable_emojis' => isset($_POST['disable_emojis']) ? sanitize_text_field($_POST['disable_emojis']) : 'no',
|
||||
'disable_embeds' => isset($_POST['disable_embeds']) ? sanitize_text_field($_POST['disable_embeds']) : 'no',
|
||||
'remove_query_strings' => isset($_POST['remove_query_strings']) ? sanitize_text_field($_POST['remove_query_strings']) : 'no',
|
||||
'disable_xmlrpc' => isset($_POST['disable_xmlrpc']) ? sanitize_text_field($_POST['disable_xmlrpc']) : 'no',
|
||||
'remove_shortlink' => isset($_POST['remove_shortlink']) ? sanitize_text_field($_POST['remove_shortlink']) : 'no',
|
||||
'remove_rsd_link' => isset($_POST['remove_rsd_link']) ? sanitize_text_field($_POST['remove_rsd_link']) : 'no',
|
||||
'remove_wlwmanifest_link' => isset($_POST['remove_wlwmanifest_link']) ? sanitize_text_field($_POST['remove_wlwmanifest_link']) : 'no',
|
||||
'disable_self_pingbacks' => isset($_POST['disable_self_pingbacks']) ? sanitize_text_field($_POST['disable_self_pingbacks']) : 'no',
|
||||
'disable_feed_links' => isset($_POST['disable_feed_links']) ? sanitize_text_field($_POST['disable_feed_links']) : 'no',
|
||||
'remove_rest_api_links' => isset($_POST['remove_rest_api_links']) ? sanitize_text_field($_POST['remove_rest_api_links']) : 'no',
|
||||
'minify_html' => isset($_POST['minify_html']) ? sanitize_text_field($_POST['minify_html']) : 'no',
|
||||
'minify_css' => isset($_POST['minify_css']) ? sanitize_text_field($_POST['minify_css']) : 'no',
|
||||
'minify_js' => isset($_POST['minify_js']) ? sanitize_text_field($_POST['minify_js']) : 'no'
|
||||
);
|
||||
|
||||
// Save settings
|
||||
update_option('seoprostack_advanced_settings', $settings);
|
||||
|
||||
// Flush rewrite rules if necessary
|
||||
if (isset($settings['disable_feed_links']) && $settings['disable_feed_links'] === 'yes') {
|
||||
flush_rewrite_rules();
|
||||
}
|
||||
|
||||
// Send response
|
||||
wp_send_json_success(array('message' => 'Settings saved successfully'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Optimize database.
|
||||
*/
|
||||
public function optimize_database() {
|
||||
global $wpdb;
|
||||
|
||||
// Verify nonce
|
||||
if (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'seoprostack_ajax_nonce')) {
|
||||
wp_send_json_error(array('message' => 'Security check failed'));
|
||||
}
|
||||
|
||||
// Check capabilities
|
||||
if (!current_user_can('manage_options')) {
|
||||
wp_send_json_error(array('message' => 'You do not have permission to optimize database'));
|
||||
}
|
||||
|
||||
// Tables to optimize
|
||||
$tables = $wpdb->get_col("SHOW TABLES LIKE '{$wpdb->prefix}%'");
|
||||
$optimized = 0;
|
||||
$failed = 0;
|
||||
|
||||
foreach ($tables as $table) {
|
||||
$result = $wpdb->query("OPTIMIZE TABLE $table");
|
||||
if ($result === false) {
|
||||
$failed++;
|
||||
} else {
|
||||
$optimized++;
|
||||
}
|
||||
}
|
||||
|
||||
// Delete post revisions
|
||||
$deleted_revisions = $wpdb->query("DELETE FROM $wpdb->posts WHERE post_type = 'revision'");
|
||||
|
||||
// Delete auto drafts
|
||||
$deleted_drafts = $wpdb->query("DELETE FROM $wpdb->posts WHERE post_status = 'auto-draft'");
|
||||
|
||||
// Delete trashed posts
|
||||
$deleted_trash = $wpdb->query("DELETE FROM $wpdb->posts WHERE post_status = 'trash'");
|
||||
|
||||
// Delete spam comments
|
||||
$deleted_spam = $wpdb->query("DELETE FROM $wpdb->comments WHERE comment_approved = 'spam'");
|
||||
|
||||
// Delete trashed comments
|
||||
$deleted_trash_comments = $wpdb->query("DELETE FROM $wpdb->comments WHERE comment_approved = 'trash'");
|
||||
|
||||
// Delete expired transients
|
||||
$deleted_transients = $wpdb->query("DELETE FROM $wpdb->options WHERE option_name LIKE '_transient_%' AND option_name NOT LIKE '_transient_timeout_%'");
|
||||
|
||||
// Send response
|
||||
wp_send_json_success(array(
|
||||
'message' => sprintf(
|
||||
'Database optimization complete. %d tables optimized, %d revisions deleted, %d auto-drafts deleted, %d trash posts deleted, %d spam comments deleted, %d trash comments deleted, %d expired transients deleted.',
|
||||
$optimized,
|
||||
$deleted_revisions ? $deleted_revisions : 0,
|
||||
$deleted_drafts ? $deleted_drafts : 0,
|
||||
$deleted_trash ? $deleted_trash : 0,
|
||||
$deleted_spam ? $deleted_spam : 0,
|
||||
$deleted_trash_comments ? $deleted_trash_comments : 0,
|
||||
$deleted_transients ? $deleted_transients : 0
|
||||
)
|
||||
));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user