diff --git a/admin/includes/class-admin-manager.php b/admin/includes/class-admin-manager.php index b417aec..7760345 100644 --- a/admin/includes/class-admin-manager.php +++ b/admin/includes/class-admin-manager.php @@ -2,21 +2,35 @@ /** * WP ALLSTARS Admin Manager * - * Handles admin-related functionality including menu registration, - * script enqueueing, and admin page rendering. + * Main controller for the plugin's admin interface. Responsible for: + * - Registering the admin menu item + * - Enqueueing admin scripts and styles + * - Handling AJAX requests for settings updates + * - Rendering the admin page with tabs + * - Managing plugin settings registration + * + * @package WP_ALLSTARS + * @since 0.2.0 */ if (!defined('ABSPATH')) { exit; // Exit if accessed directly } +/** + * WP_Allstars_Admin_Manager class + * + * Centralizes all admin-related functionality for the WP ALLSTARS plugin. + */ class WP_Allstars_Admin_Manager { /** - * Initialize the class + * Initialize the class and register all hooks + * + * @return void */ public static function init() { - // Register hooks - we'll add more as we refactor each function + // Register admin hooks add_action('admin_menu', array(__CLASS__, 'register_admin_menu')); add_action('wp_ajax_wp_allstars_update_option', array(__CLASS__, 'update_option')); add_action('admin_init', array(__CLASS__, 'register_settings')); @@ -26,17 +40,36 @@ class WP_Allstars_Admin_Manager { /** * Enqueue admin scripts and styles * + * Loads CSS and JavaScript only on the plugin admin page + * to avoid conflicts with other plugins. + * * @param string $hook The current admin page hook + * @return void */ public static function enqueue_admin_scripts($hook) { + // Only load on our plugin's admin page if ('settings_page_wp-allstars' !== $hook) { return; } - wp_enqueue_style('wp-allstars-admin', plugins_url('css/wp-allstars-admin.css', dirname(__FILE__))); - wp_enqueue_script('wp-allstars-admin', plugins_url('js/wp-allstars-admin.js', dirname(__FILE__)), array('jquery'), WP_ALLSTARS_VERSION, true); + // Enqueue admin stylesheet + wp_enqueue_style( + 'wp-allstars-admin', + plugins_url('css/wp-allstars-admin.css', dirname(__FILE__)), + array(), + WP_ALLSTARS_VERSION + ); - // Localize the script with new data + // Enqueue admin JavaScript + wp_enqueue_script( + 'wp-allstars-admin', + plugins_url('js/wp-allstars-admin.js', dirname(__FILE__)), + array('jquery'), + WP_ALLSTARS_VERSION, + true + ); + + // Localize the script with necessary data for AJAX wp_localize_script('wp-allstars-admin', 'wpAllstars', array( 'nonce' => wp_create_nonce('wp-allstars-nonce'), 'ajaxurl' => admin_url('admin-ajax.php') @@ -45,10 +78,18 @@ class WP_Allstars_Admin_Manager { /** * Register plugin settings + * + * Registers all settings fields with the WordPress Settings API + * for proper data sanitization and storage. + * + * @return void */ public static function register_settings() { - // Removed minification settings - // This is a placeholder for future settings registration + // Register settings for each tab as needed + register_setting('wp_allstars_general', 'wp_allstars_general_settings'); + register_setting('wp_allstars_advanced', 'wp_allstars_advanced_settings'); + + // Add additional settings as needed for future functionality } /** diff --git a/admin/includes/class-plugin-manager.php b/admin/includes/class-plugin-manager.php index d02ddab..46d9994 100644 --- a/admin/includes/class-plugin-manager.php +++ b/admin/includes/class-plugin-manager.php @@ -2,10 +2,14 @@ /** * WP ALLSTARS Plugin Manager * - * Handles all plugin-related functionality including: - * - Plugin data caching - * - AJAX handlers for plugin data - * - Plugin card generation + * Core class for handling WordPress plugin data and operations: + * - Plugin data retrieval and caching mechanism + * - AJAX handlers for asynchronous plugin data loading + * - Plugin card UI generation with install/update actions + * - Cache clearing on plugin changes + * + * @package WP_ALLSTARS + * @since 0.2.0 */ // Exit if accessed directly @@ -13,15 +17,23 @@ if (!defined('ABSPATH')) { exit; } +/** + * WP_Allstars_Plugin_Manager class + * + * Manages the Free Plugins tab and provides core plugin functionality + * for other plugin-related managers. + */ class WP_Allstars_Plugin_Manager { /** - * Initialize the class + * Initialize the class and register all action hooks + * + * @return void */ public static function init() { - // Add AJAX handlers + // Register AJAX handler for plugin data retrieval add_action('wp_ajax_wp_allstars_get_plugins', [self::class, 'ajax_get_plugins']); - // Plugin cache clearing + // Register hooks for automatic cache clearing when plugins change add_action('upgrader_process_complete', [self::class, 'clear_plugin_cache'], 10, 0); add_action('activated_plugin', [self::class, 'clear_plugin_cache']); add_action('deactivated_plugin', [self::class, 'clear_plugin_cache']); @@ -30,13 +42,16 @@ class WP_Allstars_Plugin_Manager { } /** - * Get cached plugin data for a category + * Get cached plugin data for a specific category * - * @param string $category The plugin category - * @return mixed The cached plugin data or false if no cache + * Uses the WordPress transients API to store plugin data + * for improved performance and reduced API calls. + * + * @param string $category The plugin category to retrieve (e.g., 'featured', 'popular') + * @return mixed Array of plugin data if cache exists, false otherwise */ public static function get_cached_plugins($category) { - $cache_key = 'wp_allstars_plugins_' . $category; + $cache_key = 'wp_allstars_plugins_' . sanitize_key($category); $cached_data = get_transient($cache_key); if ($cached_data !== false) { diff --git a/admin/includes/class-pro-plugins-manager.php b/admin/includes/class-pro-plugins-manager.php index 6057774..fa34e88 100644 --- a/admin/includes/class-pro-plugins-manager.php +++ b/admin/includes/class-pro-plugins-manager.php @@ -1,53 +1,79 @@