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,65 @@
<?php
/**
* AJAX handler for plugin-related functionality.
*
* @package SEO_Pro_Stack
* @subpackage SEO_Pro_Stack/Admin/Settings/AJAX
*/
// If this file is called directly, abort.
if (!defined('ABSPATH')) {
exit;
}
/**
* AJAX handler for plugins.
*/
class SEOProStack_AJAX_Plugins {
/**
* Get list of installed plugins.
*/
public function get_plugins() {
// Check nonce
if (!check_ajax_referer('seoprostack-nonce', 'nonce', false)) {
wp_send_json_error('Invalid security token sent.');
return;
}
// Check permissions
if (!current_user_can('manage_options')) {
wp_send_json_error('You do not have permission to view plugins.');
return;
}
$installed_plugins = get_plugins();
$active_plugins = get_option('active_plugins');
$plugin_list = array();
// Create the plugins array
foreach ($installed_plugins as $path => $plugin) {
// Skip the SEO Pro Stack plugin
if (strpos($path, 'wp-seoprostack-plugin') !== false) {
continue;
}
$is_active = in_array($path, $active_plugins);
$plugin_slug = explode('/', $path)[0];
$plugin_list[] = array(
'name' => $plugin['Name'],
'slug' => $plugin_slug,
'version' => $plugin['Version'],
'active' => $is_active,
'path' => $path
);
}
// Sort plugins alphabetically
usort($plugin_list, function ($a, $b) {
return strcasecmp($a['name'], $b['name']);
});
wp_send_json_success($plugin_list);
}
}