<?php
/**
 * Plugin Name: Dima Admin
 * Plugin URI:  https://dimawidget.ir
 * Description: قالب حرفه‌ای ادمین وردپرس با دو حالت تیره و روشن، طراحی مدرن با کارت‌های شیشه‌ای، صفحه لاگین زیبا و داشبورد حرفه‌ای با قابلیت سفارشی‌سازی رنگ.
 * Version:     1.2.0
 * Author:      Dima Widget
 * Author URI:  https://dimawidget.ir
 * License:     GPL-2.0+
 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
 * Text Domain: dima-admin
 * Domain Path: /languages
 * Requires at least: 6.0
 * Requires PHP: 7.4
 * Tested up to: 7.0
 */

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

define( 'DIMA_ADMIN_VERSION', '1.2.0' );
define( 'DIMA_ADMIN_PATH', plugin_dir_path( __FILE__ ) );
define( 'DIMA_ADMIN_URL', plugin_dir_url( __FILE__ ) );

/**
 * رنگ‌های پیش‌فرض
 */
function dima_admin_default_colors() {
    return array(
        'dark' => array(
            'primary'   => '#3b82f6',
            'secondary' => '#a855f7',
            'tertiary'  => '#06b6d4',
            'success'   => '#10b981',
            'warning'   => '#f59e0b',
            'error'     => '#ef4444',
        ),
        'light' => array(
            'primary'   => '#7eb8e0',
            'secondary' => '#a5b4fc',
            'tertiary'  => '#93c5fd',
            'success'   => '#86efac',
            'warning'   => '#fcd34d',
            'error'     => '#fca5a5',
        ),
    );
}

/**
 * دریافت رنگ‌های ذخیره‌شده یا پیش‌فرض
 */
function dima_admin_get_colors( $theme = 'dark' ) {
    $defaults = dima_admin_default_colors();
    $saved = get_option( 'dima_admin_colors_' . $theme, array() );
    return wp_parse_args( $saved, $defaults[ $theme ] );
}

/**
 * دریافت تم فعلی کاربر
 */
function dima_admin_get_theme() {
    $theme = get_user_meta( get_current_user_id(), 'dima_admin_theme', true );
    if ( ! $theme ) {
        $theme = 'dark';
    }
    return $theme;
}

/**
 * تولید CSS داینامیک بر اساس رنگ‌های انتخابی
 */
function dima_admin_generate_dynamic_css() {
    $theme = dima_admin_get_theme();
    $colors = dima_admin_get_colors( $theme );
    
    $css = ":root {\n";
    $css .= "--dima-accent-blue: {$colors['primary']} !important;\n";
    $css .= "--dima-accent-purple: {$colors['secondary']} !important;\n";
    $css .= "--dima-accent-cyan: {$colors['tertiary']} !important;\n";
    $css .= "--dima-accent-green: {$colors['success']} !important;\n";
    $css .= "--dima-accent-orange: {$colors['warning']} !important;\n";
    $css .= "--dima-accent-red: {$colors['error']} !important;\n";
    $css .= "}\n";
    
    return $css;
}

/**
 * بارگذاری استایل‌ها در بخش ادمین
 */
function dima_admin_enqueue_assets( $hook ) {
    $theme = dima_admin_get_theme();

    wp_enqueue_style(
        'dima-admin-main',
        DIMA_ADMIN_URL . 'assets/css/admin-' . $theme . '.css',
        array(),
        DIMA_ADMIN_VERSION
    );

    // CSS داینامیک برای رنگ‌های سفارشی
    $dynamic_css = dima_admin_generate_dynamic_css();
    wp_add_inline_style( 'dima-admin-main', $dynamic_css );

    wp_enqueue_script(
        'dima-admin-theme',
        DIMA_ADMIN_URL . 'assets/js/admin-theme.js',
        array( 'jquery' ),
        DIMA_ADMIN_VERSION,
        true
    );

    wp_localize_script( 'dima-admin-theme', 'dimaAdmin', array(
        'ajaxUrl' => admin_url( 'admin-ajax.php' ),
        'nonce'   => wp_create_nonce( 'dima_admin_nonce' ),
        'theme'   => $theme,
    ) );
}
add_action( 'admin_enqueue_scripts', 'dima_admin_enqueue_assets' );

/**
 * بارگذاری استایل صفحه لاگین
 */
function dima_admin_login_enqueue() {
    $theme = get_option( 'dima_admin_login_theme', 'dark' );
    wp_enqueue_style(
        'dima-admin-login',
        DIMA_ADMIN_URL . 'assets/css/login-' . $theme . '.css',
        array(),
        DIMA_ADMIN_VERSION
    );
    
    // رنگ‌های داینامیک برای لاگین
    $colors = dima_admin_get_colors( $theme );
    $login_css = ":root {
        --dima-login-accent-blue: {$colors['primary']} !important;
        --dima-login-accent-purple: {$colors['secondary']} !important;
        --dima-login-accent-cyan: {$colors['tertiary']} !important;
    }";
    wp_add_inline_style( 'dima-admin-login', $login_css );
}
add_action( 'login_enqueue_scripts', 'dima_admin_login_enqueue' );

/**
 * بارگذاری wp-color-picker در صفحه تنظیمات
 */
function dima_admin_settings_enqueue( $hook ) {
    if ( 'toplevel_page_dima-admin' !== $hook ) {
        return;
    }
    
    wp_enqueue_style( 'wp-color-picker' );
    wp_enqueue_script(
        'dima-admin-color-picker',
        DIMA_ADMIN_URL . 'assets/js/color-picker.js',
        array( 'wp-color-picker', 'jquery' ),
        DIMA_ADMIN_VERSION,
        true
    );
}
add_action( 'admin_enqueue_scripts', 'dima_admin_settings_enqueue' );

/**
 * تغییر لوگوی صفحه لاگین
 */
function dima_admin_login_logo() {
    ?>
    <style type="text/css">
        .login h1 a {
            background-image: url('<?php echo esc_url( DIMA_ADMIN_URL . 'assets/img/logo.svg' ); ?>') !important;
            background-size: contain !important;
            width: 100% !important;
            height: 60px !important;
        }
    </style>
    <?php
}
add_action( 'login_head', 'dima_admin_login_logo' );

/**
 * تغییر URL لوگوی لاگین
 */
function dima_admin_login_logo_url() {
    return home_url();
}
add_filter( 'login_headerurl', 'dima_admin_login_logo_url' );

/**
 * اضافه کردن منوی تنظیمات Dima Admin
 */
function dima_admin_menu() {
    add_menu_page(
        __( 'Dima Admin', 'dima-admin' ),
        __( 'Dima Admin', 'dima-admin' ),
        'manage_options',
        'dima-admin',
        'dima_admin_settings_page',
        'dashicons-admin-appearance',
        2
    );
}
add_action( 'admin_menu', 'dima_admin_menu' );

/**
 * صفحه تنظیمات
 */
function dima_admin_settings_page() {
    // ذخیره تنظیمات
    if ( isset( $_POST['dima_admin_theme_nonce'] ) && wp_verify_nonce( $_POST['dima_admin_theme_nonce'], 'dima_admin_save' ) ) {
        if ( current_user_can( 'manage_options' ) ) {
            $new_theme = sanitize_text_field( $_POST['dima_theme'] );
            update_user_meta( get_current_user_id(), 'dima_admin_theme', $new_theme );

            $login_theme = isset( $_POST['dima_login_theme'] ) ? sanitize_text_field( $_POST['dima_login_theme'] ) : 'dark';
            update_option( 'dima_admin_login_theme', $login_theme );

            // ذخیره رنگ‌ها
            $color_fields = array( 'primary', 'secondary', 'tertiary', 'success', 'warning', 'error' );
            foreach ( array( 'dark', 'light' ) as $theme_type ) {
                $colors = array();
                foreach ( $color_fields as $field ) {
                    $color_key = "dima_{$theme_type}_{$field}";
                    if ( isset( $_POST[ $color_key ] ) ) {
                        $colors[ $field ] = sanitize_hex_color( $_POST[ $color_key ] );
                    }
                }
                update_option( "dima_admin_colors_{$theme_type}", $colors );
            }

            echo '<div class="notice notice-success is-dismissible"><p>' . esc_html__( 'تنظیمات با موفقیت ذخیره شد.', 'dima-admin' ) . '</p></div>';
        }
    }

    $current_theme = dima_admin_get_theme();
    $login_theme = get_option( 'dima_admin_login_theme', 'dark' );
    $dark_colors = dima_admin_get_colors( 'dark' );
    $light_colors = dima_admin_get_colors( 'light' );
    $defaults = dima_admin_default_colors();
    ?>
    <div class="wrap dima-admin-settings">
        <h1><?php esc_html_e( 'تنظیمات Dima Admin', 'dima-admin' ); ?></h1>
        
        <div class="dima-admin-welcome card">
            <h2>🎨 <?php esc_html_e( 'به Dima Admin خوش آمدید', 'dima-admin' ); ?></h2>
            <p><?php esc_html_e( 'ظاهر داشبورد و صفحه لاگین وردپرس خود را با تم‌های مدرن و حرفه‌ای زیبا کنید. رنگ‌های دلخواه خود را انتخاب کنید!', 'dima-admin' ); ?></p>
        </div>

        <form method="post" action="" id="dima-admin-form">
            <?php wp_nonce_field( 'dima_admin_save', 'dima_admin_theme_nonce' ); ?>
            
            <!-- تنظیمات تم -->
            <div class="dima-settings-section">
                <h2><?php esc_html_e( '⚙️ تنظیمات تم', 'dima-admin' ); ?></h2>
                <table class="form-table">
                    <tr>
                        <th><label for="dima_theme"><?php esc_html_e( 'تم داشبورد ادمین', 'dima-admin' ); ?></label></th>
                        <td>
                            <select name="dima_theme" id="dima_theme">
                                <option value="dark" <?php selected( $current_theme, 'dark' ); ?>><?php esc_html_e( '🌙 تیره (Dark)', 'dima-admin' ); ?></option>
                                <option value="light" <?php selected( $current_theme, 'light' ); ?>><?php esc_html_e( '☀️ روشن (Light)', 'dima-admin' ); ?></option>
                            </select>
                            <p class="description"><?php esc_html_e( 'تم پیش‌فرض داشبورد ادمین را انتخاب کنید.', 'dima-admin' ); ?></p>
                        </td>
                    </tr>
                    <tr>
                        <th><label for="dima_login_theme"><?php esc_html_e( 'تم صفحه لاگین', 'dima-admin' ); ?></label></th>
                        <td>
                            <select name="dima_login_theme" id="dima_login_theme">
                                <option value="dark" <?php selected( $login_theme, 'dark' ); ?>><?php esc_html_e( '🌙 تیره (Dark)', 'dima-admin' ); ?></option>
                                <option value="light" <?php selected( $login_theme, 'light' ); ?>><?php esc_html_e( '☀️ روشن (Light)', 'dima-admin' ); ?></option>
                            </select>
                            <p class="description"><?php esc_html_e( 'تم صفحه ورود به سایت را انتخاب کنید.', 'dima-admin' ); ?></p>
                        </td>
                    </tr>
                </table>
            </div>

            <!-- رنگ‌های تم تیره -->
            <div class="dima-settings-section dima-color-section">
                <h2>🌙 <?php esc_html_e( 'رنگ‌های تم تیره', 'dima-admin' ); ?></h2>
                <div class="dima-color-grid">
                    <?php
                    $color_labels = array(
                        'primary'   => __( 'رنگ اصلی (Primary)', 'dima-admin' ),
                        'secondary' => __( 'رنگ ثانویه (Secondary)', 'dima-admin' ),
                        'tertiary'  => __( 'رنگ سوم (Tertiary)', 'dima-admin' ),
                        'success'   => __( 'رنگ موفقیت (Success)', 'dima-admin' ),
                        'warning'   => __( 'رنگ هشدار (Warning)', 'dima-admin' ),
                        'error'     => __( 'رنگ خطا (Error)', 'dima-admin' ),
                    );
                    
                    foreach ( $color_labels as $key => $label ) {
                        $color_value = $dark_colors[ $key ];
                        $default_value = $defaults['dark'][ $key ];
                        ?>
                        <div class="dima-color-item">
                            <label for="dima_dark_<?php echo esc_attr( $key ); ?>">
                                <?php echo esc_html( $label ); ?>
                            </label>
                            <div class="dima-color-input-wrapper">
                                <input 
                                    type="text" 
                                    id="dima_dark_<?php echo esc_attr( $key ); ?>" 
                                    name="dima_dark_<?php echo esc_attr( $key ); ?>" 
                                    value="<?php echo esc_attr( $color_value ); ?>" 
                                    class="dima-color-picker"
                                    data-default-color="<?php echo esc_attr( $default_value ); ?>"
                                />
                                <button type="button" class="button dima-reset-color" data-target="dima_dark_<?php echo esc_attr( $key ); ?>" data-default="<?php echo esc_attr( $default_value ); ?>">
                                    <?php esc_html_e( 'بازنشانی', 'dima-admin' ); ?>
                                </button>
                            </div>
                        </div>
                        <?php
                    }
                    ?>
                </div>
            </div>

            <!-- رنگ‌های تم روشن -->
            <div class="dima-settings-section dima-color-section">
                <h2>☀️ <?php esc_html_e( 'رنگ‌های تم روشن', 'dima-admin' ); ?></h2>
                <div class="dima-color-grid">
                    <?php
                    foreach ( $color_labels as $key => $label ) {
                        $color_value = $light_colors[ $key ];
                        $default_value = $defaults['light'][ $key ];
                        ?>
                        <div class="dima-color-item">
                            <label for="dima_light_<?php echo esc_attr( $key ); ?>">
                                <?php echo esc_html( $label ); ?>
                            </label>
                            <div class="dima-color-input-wrapper">
                                <input 
                                    type="text" 
                                    id="dima_light_<?php echo esc_attr( $key ); ?>" 
                                    name="dima_light_<?php echo esc_attr( $key ); ?>" 
                                    value="<?php echo esc_attr( $color_value ); ?>" 
                                    class="dima-color-picker"
                                    data-default-color="<?php echo esc_attr( $default_value ); ?>"
                                />
                                <button type="button" class="button dima-reset-color" data-target="dima_light_<?php echo esc_attr( $key ); ?>" data-default="<?php echo esc_attr( $default_value ); ?>">
                                    <?php esc_html_e( 'بازنشانی', 'dima-admin' ); ?>
                                </button>
                            </div>
                        </div>
                        <?php
                    }
                    ?>
                </div>
            </div>

            <?php submit_button( __( '💾 ذخیره تنظیمات', 'dima-admin' ) ); ?>
        </form>

        <div class="dima-admin-info card">
            <h2><?php esc_html_e( 'درباره Dima Admin', 'dima-admin' ); ?></h2>
            <p><?php printf( esc_html__( 'نسخه: %s | توسعه‌دهنده: %s', 'dima-admin' ), DIMA_ADMIN_VERSION, '<a href="https://dimawidget.ir" target="_blank">dimawidget.ir</a>' ); ?></p>
            <p><?php esc_html_e( 'برای گزارش مشکلات یا پیشنهاد ویژگی‌های جدید به سایت ما مراجعه کنید.', 'dima-admin' ); ?></p>
        </div>
    </div>
    <?php
}

/**
 * اضافه کردن دکمه تغییر سریع تم در نوار بالا
 */
function dima_admin_theme_switcher() {
    if ( ! is_admin() ) return;
    $theme = dima_admin_get_theme();
    $next_theme = $theme === 'dark' ? 'light' : 'dark';
    $icon_class = $theme === 'dark' ? 'dashicons-moon' : 'dashicons-sun';
    ?>
    <style>
        #wp-admin-bar-dima-theme-switch .ab-item {
            cursor: pointer;
        }
        #wp-admin-bar-dima-theme-switch .ab-item .dashicons {
            font-size: 20px;
            line-height: 1;
        }
    </style>
    <script>
    jQuery(document).ready(function($) {
        $('#wp-admin-bar-dima-theme-switch').on('click', function(e) {
            e.preventDefault();
            $.post(dimaAdmin.ajaxUrl, {
                action: 'dima_admin_switch_theme',
                nonce: dimaAdmin.nonce,
                theme: '<?php echo esc_js( $next_theme ); ?>'
            }, function() {
                location.reload();
            });
        });
    });
    </script>
    <?php
}
add_action( 'admin_bar_menu', function( $wp_admin_bar ) {
    $theme = dima_admin_get_theme();
    $next_theme = $theme === 'dark' ? 'light' : 'dark';
    $icon_class = $theme === 'dark' ? 'dashicons-moon' : 'dashicons-sun';
    $title = $theme === 'dark' ? __( 'تم روشن', 'dima-admin' ) : __( 'تم تیره', 'dima-admin' );

    $wp_admin_bar->add_node( array(
        'id'    => 'dima-theme-switch',
        'title' => '<span class="dashicons ' . $icon_class . '"></span> ' . $title,
        'href'  => '#',
        'meta'  => array( 'title' => __( 'تغییر تم', 'dima-admin' ) ),
    ) );
}, 100 );
add_action( 'admin_footer', 'dima_admin_theme_switcher' );

/**
 * هندلر AJAX تغییر تم
 */
function dima_admin_switch_theme_ajax() {
    check_ajax_referer( 'dima_admin_nonce', 'nonce' );
    if ( ! is_user_logged_in() ) {
        wp_send_json_error();
    }
    $theme = sanitize_text_field( $_POST['theme'] );
    if ( in_array( $theme, array( 'dark', 'light' ), true ) ) {
        update_user_meta( get_current_user_id(), 'dima_admin_theme', $theme );
        wp_send_json_success();
    }
    wp_send_json_error();
}
add_action( 'wp_ajax_dima_admin_switch_theme', 'dima_admin_switch_theme_ajax' );

/**
 * فعال‌سازی پلاگین
 */
function dima_admin_activate() {
    $users = get_users();
    foreach ( $users as $user ) {
        if ( ! get_user_meta( $user->ID, 'dima_admin_theme', true ) ) {
            update_user_meta( $user->ID, 'dima_admin_theme', 'dark' );
        }
    }
    if ( ! get_option( 'dima_admin_login_theme' ) ) {
        update_option( 'dima_admin_login_theme', 'dark' );
    }
    if ( ! get_option( 'dima_admin_colors_dark' ) ) {
        update_option( 'dima_admin_colors_dark', dima_admin_default_colors()['dark'] );
    }
    if ( ! get_option( 'dima_admin_colors_light' ) ) {
        update_option( 'dima_admin_colors_light', dima_admin_default_colors()['light'] );
    }
}
register_activation_hook( __FILE__, 'dima_admin_activate' );
// ۱. حذف اجباری اسکریپت woo-tracks-js از پنل مدیریت
add_action( 'admin_enqueue_scripts', 'remove_woo_tracks_in_admin', 9999 );
function remove_woo_tracks_in_admin() {
    wp_dequeue_script( 'woo-tracks-js' );
    wp_deregister_script( 'woo-tracks-js' );
}

// ۲. مسدود کردن کلیه اسکریپت‌های دارای دامنه wp.com در پنل مدیریت
add_action( 'admin_enqueue_scripts', 'block_all_wp_com_scripts_in_admin', 9999 );
function block_all_wp_com_scripts_in_admin() {
    global $wp_scripts;
    if ( isset( $wp_scripts ) && is_array( $wp_scripts->queue ) ) {
        foreach ( $wp_scripts->queue as $handle ) {
            $script_obj = $wp_scripts->registered[ $handle ];
            if ( ! empty( $script_obj->src ) && strpos( $script_obj->src, 'wp.com' ) !== false ) {
                wp_dequeue_script( $handle );
                wp_deregister_script( $handle );
            }
        }
    }
}

// ۳. حذف ویجت آمار جت‌پک از صفحه اصلی پیشخوان (که باعث فراخوانی wp.com می‌شود)
add_action( 'wp_dashboard_setup', 'remove_jetpack_admin_dashboard_widget', 9999 );
function remove_jetpack_admin_dashboard_widget() {
    global $wp_meta_boxes;
    // حذف ویجت خلاصه آمار جت‌پک
    if ( isset( $wp_meta_boxes['dashboard']['normal']['core']['jetpack_summary'] ) ) {
        unset( $wp_meta_boxes['dashboard']['normal']['core']['jetpack_summary'] );
    }
}

// ۴. حذف آیکون آمار جت‌پک از نوار ابزار بالای صفحه (Admin Bar)
add_action( 'admin_bar_menu', 'remove_jetpack_admin_bar_node', 9999 );
function remove_jetpack_admin_bar_node( $wp_admin_bar ) {
    $wp_admin_bar->remove_node( 'jetpack-stats' );
}
