<?php
/**
 * Site settings — contact info, legal identifiers, social links.
 *
 * Stored as a single option array `iliya_settings`, edited on a dedicated,
 * fully-Persian, mobile-responsive admin page («اطلاعات سایت»).
 * Read anywhere via iliya_opt().
 *
 * @package Iliya
 */

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

/**
 * Default values = the site's original hard-coded content (nothing is lost
 * even before the client edits anything). Socials default empty → hidden.
 *
 * @return array<string,string>
 */
function iliya_settings_defaults() {
    return [
        'phone_landline'   => '۰۴۱-۳۵۵۵۱۵۰۸',
        'phone_mobile'     => '۰۹۰۰۴۴۴۰۳۰۴',
        'email'            => '',
        'address'          => 'بارون آواک، روبروی دبیرستان پسرانه بوعلی، ساختمان دیبا، طبقه اول، واحد غربی',
        'hours'            => 'شنبه تا پنجشنبه، ۹ تا ۱۸',
        'national_id'      => '۱۴۰۱۵۳۵۰۱۶۴',
        'reg_number'       => '۶۷۳۰۸۵',
        'social_instagram' => '',
        'social_telegram'  => '',
        'social_whatsapp'  => '',
        'social_bale'      => '',
        'social_rubika'    => '',
        'social_eitaa'     => '',
    ];
}

/**
 * Read one setting, falling back to its default when unset/empty.
 *
 * @param string $key     Setting key.
 * @param string $default Fallback when neither saved value nor default exists.
 */
function iliya_opt($key, $default = '') {
    $opts = get_option('iliya_settings', []);
    if (is_array($opts) && isset($opts[$key]) && $opts[$key] !== '') {
        return $opts[$key];
    }
    $defaults = iliya_settings_defaults();
    if (array_key_exists($key, $defaults) && $defaults[$key] !== '') {
        return $defaults[$key];
    }
    return $default;
}

/** Convert latin digits to Persian digits (display). */
function iliya_fa_num($str) {
    return str_replace(
        ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
        ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'],
        (string) $str
    );
}

/**
 * Configured social links, filtered to those that actually have a URL.
 * Shared by the header bar and the footer.
 *
 * @return array<string,array{url:string,label:string}> keyed by icon name.
 */
function iliya_social_links() {
    $map = [
        'instagram' => 'Instagram',
        'telegram'  => 'Telegram',
        'whatsapp'  => 'WhatsApp',
        'bale'      => 'Bale',
        'rubika'    => 'Rubika',
        'eitaa'     => 'Eitaa',
    ];
    $out = [];
    foreach ($map as $key => $label) {
        $url = iliya_opt('social_' . $key);
        if ($url) {
            $out[$key] = ['url' => $url, 'label' => $label];
        }
    }
    return $out;
}

/** Reduce a phone string to a tel:-safe latin-digit value. */
function iliya_tel_href($str) {
    $str = str_replace(
        ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'],
        ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
        (string) $str
    );
    return preg_replace('/[^0-9+]/', '', $str);
}

/* ── Settings registration ──────────────────────────────────────────────── */

function iliya_register_settings() {
    register_setting('iliya_settings_group', 'iliya_settings', [
        'type'              => 'array',
        'sanitize_callback' => 'iliya_sanitize_settings',
        'default'           => iliya_settings_defaults(),
    ]);
}
add_action('admin_init', 'iliya_register_settings');

/** Sanitize the whole option array on save. */
function iliya_sanitize_settings($input) {
    $input = is_array($input) ? $input : [];
    $out   = [];

    foreach (['phone_landline', 'phone_mobile', 'national_id', 'reg_number', 'hours'] as $k) {
        $out[$k] = sanitize_text_field(wp_unslash($input[$k] ?? ''));
    }
    $out['address'] = sanitize_textarea_field(wp_unslash($input['address'] ?? ''));
    $out['email']   = sanitize_email(wp_unslash($input['email'] ?? ''));

    foreach (['social_instagram', 'social_telegram', 'social_whatsapp', 'social_bale', 'social_rubika', 'social_eitaa'] as $k) {
        $out[$k] = esc_url_raw(wp_unslash($input[$k] ?? ''));
    }

    return $out;
}

/* ── Admin page ─────────────────────────────────────────────────────────── */

function iliya_settings_menu() {
    add_menu_page(
        'اطلاعات سایت',
        'اطلاعات سایت',
        'manage_options',
        'iliya-settings',
        'iliya_settings_page_render',
        'dashicons-phone',
        27
    );
}
add_action('admin_menu', 'iliya_settings_menu');

/** Render a single labelled field inside the responsive grid. */
function iliya_field_text($key, $label, $value, $type = 'text', $placeholder = '') {
    $ltr = in_array($type, ['url', 'email'], true)
        || in_array($key, ['phone_landline', 'phone_mobile', 'national_id', 'reg_number'], true);
    printf(
        '<div class="iliya-field"><label for="il-%1$s">%2$s</label>'
        . '<input type="%3$s" id="il-%1$s" name="iliya_settings[%1$s]" value="%4$s" placeholder="%5$s"%6$s></div>',
        esc_attr($key),
        esc_html($label),
        esc_attr($type),
        esc_attr($value),
        esc_attr($placeholder),
        $ltr ? ' dir="ltr"' : ''
    );
}

function iliya_settings_page_render() {
    if (! current_user_can('manage_options')) {
        return;
    }
    $o = wp_parse_args(get_option('iliya_settings', []), iliya_settings_defaults());
    ?>
    <div class="wrap iliya-settings" dir="rtl">
        <h1>اطلاعات سایت</h1>
        <p class="description">این اطلاعات در فوتر و بخش «تماس با ما»ی صفحه اصلی نمایش داده می‌شود.</p>

        <form action="options.php" method="post">
            <?php settings_fields('iliya_settings_group'); ?>

            <div class="iliya-card">
                <h2>اطلاعات تماس</h2>
                <div class="iliya-grid">
                    <?php
                    iliya_field_text('phone_landline', 'تلفن ثابت', $o['phone_landline']);
                    iliya_field_text('phone_mobile', 'تلفن همراه', $o['phone_mobile']);
                    iliya_field_text('email', 'ایمیل', $o['email'], 'email', 'info@example.com');
                    iliya_field_text('hours', 'ساعات کاری', $o['hours']);
                    ?>
                    <div class="iliya-field iliya-field--full">
                        <label for="il-address">آدرس</label>
                        <textarea id="il-address" name="iliya_settings[address]" rows="2"><?php echo esc_textarea($o['address']); ?></textarea>
                    </div>
                </div>
            </div>

            <div class="iliya-card">
                <h2>شناسه‌های قانونی</h2>
                <div class="iliya-grid">
                    <?php
                    iliya_field_text('national_id', 'شناسه ملی', $o['national_id']);
                    iliya_field_text('reg_number', 'شماره ثبت', $o['reg_number']);
                    ?>
                </div>
            </div>

            <div class="iliya-card">
                <h2>شبکه‌های اجتماعی و پیام‌رسان‌ها</h2>
                <p class="description">نشانی کامل صفحه (همراه با <code>https://</code>) را وارد کنید. هر مورد که خالی بماند، در سایت نمایش داده نمی‌شود.</p>
                <div class="iliya-grid">
                    <?php
                    iliya_field_text('social_instagram', 'اینستاگرام', $o['social_instagram'], 'url', 'https://instagram.com/...');
                    iliya_field_text('social_telegram', 'تلگرام', $o['social_telegram'], 'url', 'https://t.me/...');
                    iliya_field_text('social_whatsapp', 'واتساپ', $o['social_whatsapp'], 'url', 'https://wa.me/...');
                    iliya_field_text('social_bale', 'بله', $o['social_bale'], 'url', 'https://ble.ir/...');
                    iliya_field_text('social_rubika', 'روبیکا', $o['social_rubika'], 'url', 'https://rubika.ir/...');
                    iliya_field_text('social_eitaa', 'ایتا', $o['social_eitaa'], 'url', 'https://eitaa.com/...');
                    ?>
                </div>
            </div>

            <?php submit_button('ذخیره تغییرات'); ?>
        </form>
    </div>

    <style>
        .iliya-settings .iliya-card{background:#fff;border:1px solid #dcdcde;border-radius:8px;padding:16px 20px;margin:16px 0;max-width:940px}
        .iliya-settings .iliya-card h2{margin:.2em 0 .5em;font-size:1.05rem}
        .iliya-settings .iliya-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
        .iliya-settings .iliya-field{display:flex;flex-direction:column;min-width:0}
        .iliya-settings .iliya-field--full{grid-column:1 / -1}
        .iliya-settings .iliya-field label{font-weight:600;margin-bottom:4px}
        .iliya-settings .iliya-field input,.iliya-settings .iliya-field textarea{width:100%;max-width:100%}
        .iliya-settings .iliya-field input[dir=ltr],.iliya-settings .iliya-field textarea[dir=ltr]{direction:ltr;text-align:left}
        @media (max-width:782px){
            .iliya-settings .iliya-grid{grid-template-columns:1fr;gap:12px}
            .iliya-settings .iliya-card{padding:14px}
        }
    </style>
    <?php
}
