opticore/includes/class-admin.php
Ahmadreza b30ae5d70e ♻️ refactor: Complete code restructuring - Clean architecture implementation
Massive refactoring to improve code organization, maintainability,
and follow SOLID principles. Main plugin file reduced by 80%!

🏗️ New Architecture:
Created 4 new specialized classes following Single Responsibility Principle:

1️⃣ class-admin.php (118 lines)
   - Admin menu management
   - Settings registration
   - Admin scripts/styles enqueuing
   - Settings link on plugins page

2️⃣ class-ajax-handler.php (105 lines)
   - Clear cache AJAX
   - Optimize database AJAX
   - Export settings AJAX
   - Create cache directory AJAX

3️⃣ class-frontend-optimizer.php (237 lines)
   - Disable Emojis (complete)
   - Disable Dashicons (complete)
   - Disable Embeds (complete)
   - Remove Query Strings
   - Enable GZIP Compression

4️⃣ class-activator.php (68 lines)
   - Plugin activation logic
   - Plugin deactivation logic
   - Default settings setup
   - Cache directory creation

📊 Impact:
- opticore.php: 583 → 160 lines (-423 lines, -73%)
- Better separation of concerns
- Easier to maintain and test
- Each class has single responsibility
- Cleaner code organization

🎯 Main Plugin File Now:
- Only orchestration/initialization
- Loads dependencies
- Initializes components
- Delegates to specialized classes

 Benefits:
-  SOLID principles applied
-  Single Responsibility Principle
-  Better code organization
-  Easier to test
-  Easier to extend
-  More maintainable
-  Professional structure

All functionality remains identical - this is pure refactoring
with no changes to features or behavior.
2025-11-01 15:52:41 +03:30

116 lines
3.7 KiB
PHP

<?php
/**
* Admin-specific functionality
* Handles admin menu, settings, and scripts
*
* @package OptiCore
*/
if (!defined('ABSPATH')) {
exit;
}
class OptiCore_Admin {
private static $instance = null;
public static function get_instance() {
if (null === self::$instance) {
self::$instance = new self();
}
return self::$instance;
}
private function __construct() {
$this->init_hooks();
}
/**
* Initialize admin hooks
*/
private function init_hooks() {
add_action('admin_menu', array($this, 'add_admin_menu'));
add_action('admin_init', array($this, 'register_settings'));
add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts'));
add_filter('plugin_action_links_' . OPTICORE_PLUGIN_BASENAME, array($this, 'add_settings_link'));
}
/**
* Add admin menu
*/
public function add_admin_menu() {
add_menu_page(
__('OptiCore Settings', 'opticore'),
__('OptiCore', 'opticore'),
'manage_options',
'opticore',
array($this, 'render_admin_page'),
'dashicons-performance',
100
);
add_submenu_page(
'opticore',
__('Dashboard', 'opticore'),
__('Dashboard', 'opticore'),
'manage_options',
'opticore',
array($this, 'render_admin_page')
);
// Framework adds Settings submenu automatically via its own admin_menu hook
}
/**
* Register settings
*/
public function register_settings() {
register_setting('opticore_settings_group', 'opticore_settings');
}
/**
* Enqueue admin scripts
*/
public function enqueue_admin_scripts($hook) {
if (strpos($hook, 'opticore') === false) {
return;
}
wp_enqueue_style('opticore-admin', OPTICORE_PLUGIN_URL . 'assets/css/admin.css', array(), OPTICORE_VERSION);
wp_enqueue_script('opticore-admin', OPTICORE_PLUGIN_URL . 'assets/js/admin.js', array('jquery'), OPTICORE_VERSION, true);
// Localize script
wp_localize_script('opticore-admin', 'opticoreAdmin', array(
'nonce' => wp_create_nonce('opticore_ajax_nonce'),
'ajaxurl' => admin_url('admin-ajax.php'),
'i18n' => array(
'clearing' => __('Clearing...', 'opticore'),
'optimizing' => __('Optimizing...', 'opticore'),
'settingsSaved' => __('Settings saved successfully!', 'opticore'),
'settingsExported' => __('Settings exported successfully!', 'opticore'),
'errorClearing' => __('An error occurred while clearing cache.', 'opticore'),
'errorOptimizing' => __('An error occurred while optimizing database.', 'opticore'),
'errorExporting' => __('An error occurred while exporting settings.', 'opticore'),
'failedExport' => __('Failed to export settings.', 'opticore'),
'confirmOptimize' => __('Are you sure you want to optimize the database? This may take a few moments.', 'opticore'),
),
));
}
/**
* Render admin page
*/
public function render_admin_page() {
require_once OPTICORE_PLUGIN_DIR . 'admin/dashboard.php';
}
/**
* Add settings link
*/
public function add_settings_link($links) {
$settings_link = '<a href="' . admin_url('admin.php?page=opticore-settings') . '">' . __('Settings', 'opticore') . '</a>';
array_unshift($links, $settings_link);
return $links;
}
}