Rename plugin to wp-seoprostack-plugin, update file structure

This commit is contained in:
Marcus Quinn
2025-03-24 02:48:06 +00:00
parent 18b0a2c246
commit aee3cb91e2
35 changed files with 5455 additions and 655 deletions

View 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
)
));
}
}