<?php
/**
 * نی نی بلاگ - پوسته وبلاگ کودکان برای تایپچو
 */

if (!defined('__TYPECHO_ROOT_DIR__')) exit;

/**
 * تابع تبدیل اعداد انگلیسی به فارسی
 */
function toPersianNumbers($num) {
    $persianDigits = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];
    return str_replace(range(0, 9), $persianDigits, $num);
}

/**
 * تابع دریافت تاریخ شمسی
 */
function getLocalizedDate($timestamp, $format = 'Y/m/d') {
    if (function_exists('jalali_date')) {
        return toPersianNumbers(jalali_date($format, $timestamp));
    }
    return toPersianNumbers(date($format, $timestamp));
}

/**
 * تابع دریافت تصویر شاخص پست
 */
function getPostImage($post, $size = 'medium') {
    // اولویت اول: فیلد سفارشی banner
    if (isset($post->fields) && $post->fields->banner) {
        return $post->fields->banner;
    }
    
    // اولویت دوم: اولین تصویر از محتوای پست
    if (isset($post->content) && preg_match('/<img[^>]+src=[\'"](.*?)[\'"][^>]*>/i', $post->content, $matches)) {
        return $matches[1];
    }
    
    // اولویت سوم: تصویر پیش‌فرض یا picsum
    $themeDir = basename(__DIR__);
    $defaultPath = __TYPECHO_ROOT_DIR__ . '/usr/themes/' . $themeDir . '/img/default-image.jpg';
    
    if (file_exists($defaultPath)) {
        return Typecho_Widget::widget('Widget_Options')->siteUrl . 'usr/themes/' . $themeDir . '/img/default-image.jpg';
    }
    
    // آخرین اولویت: picsum
    $seed = isset($post->cid) ? $post->cid : rand(1, 1000);
    $sizes = ['small' => '100/100', 'medium' => '400/300', 'large' => '800/400'];
    $sizeStr = isset($sizes[$size]) ? $sizes[$size] : '400/300';
    return 'https://picsum.photos/seed/' . $seed . '/' . $sizeStr;
}

/**
 * پارس کردن آیکون‌های سفارشی
 */
function parseCustomIcons($jsonString) {
    if (empty($jsonString)) return [];
    $decoded = json_decode($jsonString, true);
    return is_array($decoded) ? $decoded : [];
}

/**
 * تنظیمات پوسته
 */
function themeConfig($form) {
    // ---------- تنظیمات بنر ----------
    
    $bannerTitle = new Typecho_Widget_Helper_Form_Element_Text(
        'bannerTitle', 
        NULL, 
        '🎉 به دنیای نی نی بلاگ خوش آمدید!', 
        'عنوان بنر', 
        'متن عنوان بنر صفحه اصلی'
    );
    $form->addInput($bannerTitle);
    
    $bannerText = new Typecho_Widget_Helper_Form_Element_Textarea(
        'bannerText', 
        NULL, 
        'اینجا بهترین مطالب آموزشی، سرگرمی و نکات کاربردی برای والدین و کودکان نوپا را پیدا می‌کنید. همراه ما باشید!', 
        'متن بنر', 
        'توضیحات بنر'
    );
    $form->addInput($bannerText);

    // ---------- دریافت لیست صفحات برای منوها ----------
    
    $pagesWidget = Typecho_Widget::widget('Widget_Contents_Page_List');
    $pageOptions = [];
    if ($pagesWidget->have()) {
        while ($pagesWidget->next()) {
            $pageOptions[$pagesWidget->permalink] = $pagesWidget->title;
        }
    }

    // ---------- دریافت لیست دسته‌بندی‌ها ----------
    
    $categoryWidget = Typecho_Widget::widget('Widget_Metas_Category_List');
    $catOptions = [];
    if ($categoryWidget->have()) {
        while ($categoryWidget->next()) {
            $catOptions[$categoryWidget->slug] = $categoryWidget->name;
        }
    }

    // ---------- دسته‌بندی‌های منوی بالا ----------
    
    $navCategories = new Typecho_Widget_Helper_Form_Element_Checkbox(
        'navCategories',
        $catOptions,
        [],
        'دسته‌بندی‌های منوی بالا',
        'دسته‌بندی‌هایی که در منوی ناوبری نمایش داده شوند'
    );
    $form->addInput($navCategories->multiMode());

    // ---------- صفحات منوی بالا ----------
    
    $navPages = new Typecho_Widget_Helper_Form_Element_Checkbox(
        'navPages',
        $pageOptions,
        [],
        'صفحات منوی بالا',
        'صفحاتی که در منوی بالای سایت نمایش داده شوند'
    );
    $form->addInput($navPages->multiMode());

    // ---------- صفحات فوتر ----------
    
    $footerPages = new Typecho_Widget_Helper_Form_Element_Checkbox(
        'footerPages',
        $pageOptions,
        [],
        'صفحات فوتر',
        'صفحاتی که در بخش فوتر سایت نمایش داده شوند'
    );
    $form->addInput($footerPages->multiMode());

    // ---------- آیکون‌های سفارشی ----------
    
    $categoryIcons = new Typecho_Widget_Helper_Form_Element_Textarea(
        'categoryIcons', 
        NULL, 
        NULL, 
        'آیکون‌های دسته‌بندی (JSON)', 
        'مثال: {"health":"fa-heart-pulse","baby":"fa-baby"}'
    );
    $form->addInput($categoryIcons);
    
    $pageIcons = new Typecho_Widget_Helper_Form_Element_Textarea(
        'pageIcons', 
        NULL, 
        NULL, 
        'آیکون‌های صفحات (JSON)', 
        'مثال: {"about":"fa-circle-info"}'
    );
    $form->addInput($pageIcons);

    // ---------- ویجت‌های سایدبار ----------
    
    $sidebarWidgets = new Typecho_Widget_Helper_Form_Element_Checkbox(
        'sidebarWidgets',
        [
            'ShowSearch'         => 'نمایش جستجو',
            'ShowCategories'     => 'نمایش دسته‌بندی‌ها',
            'ShowPopular'        => 'نمایش محبوب‌ترین‌ها',
            'ShowTags'           => 'نمایش برچسب‌ها',
            'ShowRecentComments' => 'نمایش آخرین نظرات'
        ],
        ['ShowSearch', 'ShowCategories', 'ShowPopular', 'ShowTags'],
        'ویجت‌های سایدبار',
        'ویجت‌هایی که در سایدبار نمایش داده می‌شوند'
    );
    $form->addInput($sidebarWidgets->multiMode());

    // ---------- نمایش سایدبار ----------
    
    $showSidebar = new Typecho_Widget_Helper_Form_Element_Select(
        'showSidebar',
        [
            'all' => 'نمایش در همه صفحات',
            'hide-index' => 'پنهان در صفحه اصلی',
            'hide-mobile' => 'پنهان در موبایل',
            'hide-both' => 'پنهان در صفحه اصلی و موبایل'
        ],
        'all',
        'نمایش سایدبار',
        'کنترل نمایش سایدبار در صفحات مختلف'
    );
    $form->addInput($showSidebar);

    // ---------- دکمه CTA ----------
    
    $ctaLink = new Typecho_Widget_Helper_Form_Element_Text(
        'ctaLink', 
        NULL, 
        '#', 
        'لینک دکمه CTA', 
        ''
    );
    $form->addInput($ctaLink);
    
    $ctaText = new Typecho_Widget_Helper_Form_Element_Text(
        'ctaText', 
        NULL, 
        'من را دنبال کنید', 
        'متن دکمه CTA', 
        ''
    );
    $form->addInput($ctaText);

    // ---------- شبکه‌های اجتماعی ----------
    
    $telegram = new Typecho_Widget_Helper_Form_Element_Text(
        'telegram', 
        NULL, 
        NULL, 
        'تلگرام', 
        ''
    );
    $form->addInput($telegram);
    
    $instagram = new Typecho_Widget_Helper_Form_Element_Text(
        'instagram', 
        NULL, 
        NULL, 
        'اینستاگرام', 
        ''
    );
    $form->addInput($instagram);
    
    $whatsapp = new Typecho_Widget_Helper_Form_Element_Text(
        'whatsapp', 
        NULL, 
        NULL, 
        'واتساپ', 
        ''
    );
    $form->addInput($whatsapp);
    
    $twitter = new Typecho_Widget_Helper_Form_Element_Text(
        'twitter', 
        NULL, 
        NULL, 
        'توییتر', 
        ''
    );
    $form->addInput($twitter);
}

/**
 * فیلدهای سفارشی پست
 */
function themeFields($layout) {
    // ---------- تصویر شاخص ----------
    $banner = new Typecho_Widget_Helper_Form_Element_Text(
        'banner', 
        NULL, 
        NULL, 
        'تصویر شاخص', 
        'آدرس تصویر شاخص پست'
    );
    $layout->addItem($banner);

    // ---------- گالری تصاویر ----------
    $galleryUrls = new Typecho_Widget_Helper_Form_Element_Textarea(
        'galleryUrls',
        NULL,
        NULL,
        'لینک‌های گالری تصاویر',
        'هر آدرس تصویر را در یک خط جداگانه وارد کنید.'
    );
    $layout->addItem($galleryUrls);

    $galleryStyle = new Typecho_Widget_Helper_Form_Element_Select(
        'galleryStyle',
        [
            'style-zoom'  => 'گرید با انیمیشن زوم',
            'style-dark'  => 'گرید با روکش تیره',
        ],
        'style-zoom', 
        'استایل نمایش گالری',
        'مدل نمایش تصاویر را انتخاب کنید.'
    );
    $layout->addItem($galleryStyle);

    $galleryColumns = new Typecho_Widget_Helper_Form_Element_Select(
        'galleryColumns',
        [
            '2' => '۲ ستون',
            '3' => '۳ ستون',
            '4' => '۴ ستون',
        ],
        '3', 
        'تعداد ستون‌ها',
        'تعداد ستون‌های گالری را انتخاب کنید.'
    );
    $layout->addItem($galleryColumns);
    
    // ---------- فیلد جدید: نسبت تصاویر گالری ----------
    $galleryRatio = new Typecho_Widget_Helper_Form_Element_Select(
        'galleryRatio',
        [
            'landscape' => 'افقی (Landscape)',
            'portrait'  => 'عمودی (Portrait)',
            'square'    => 'مربع (Square)',
        ],
        'landscape',
        'شکل تصاویر',
        'نسبت تصویر (ارتفاع) را انتخاب کنید.'
    );
    $layout->addItem($galleryRatio);
}