<?php
// includes/date_fix.php - توابع جایگزین تاریخ

/**
 * تبدیل تاریخ میلادی به شمسی با استفاده از کتابخانه ساده
 * ورودی: '2025-09-23' یا '2025-09-23 14:30:00'
 * خروجی: '1404/07/01'
 */
function convertToJalali($date, $format = 'Y/m/d') {
    if (empty($date) || $date == '0000-00-00' || $date == '0000-00-00 00:00:00') {
        return '-';
    }
    
    // حذف زمان (اگر وجود دارد)
    $dateParts = explode(' ', $date);
    $dateStr = $dateParts[0];
    
    // تجزیه تاریخ میلادی
    $parts = explode('-', $dateStr);
    if (count($parts) != 3) {
        return $dateStr;
    }
    
    $year = (int)$parts[0];
    $month = (int)$parts[1];
    $day = (int)$parts[2];
    
    if ($year < 1900 || $year > 2100 || $month < 1 || $month > 12 || $day < 1 || $day > 31) {
        return $dateStr;
    }
    
    // ===== الگوریتم تبدیل میلادی به شمسی =====
    $g_d_m = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
    $j_d_m = [0, 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30];
    
    $gy2 = ($month > 2) ? ($year + 1) : $year;
    $days = 355666 + (365 * $year) + (int)(($gy2 + 3) / 4) - (int)(($gy2 + 99) / 100) + (int)(($gy2 + 399) / 400) + $day + $g_d_m[$month - 1];
    $days = $days - 226899;
    $jz = (int)($days / 12053);
    $days %= 12053;
    $jy = (int)(($days - 1) / 365) + (1 + $jz * 4);
    $days = ($days - 1) % 365;
    $jm = 1;
    for ($i = 0; $i < 12; $i++) {
        if ($days < $j_d_m[$i]) break;
        $days -= $j_d_m[$i];
        $jm++;
    }
    $jd = $days + 1;
    
    // ساخت خروجی
    $output = '';
    for ($i = 0; $i < strlen($format); $i++) {
        $char = $format[$i];
        if ($char == 'Y') $output .= $jy;
        elseif ($char == 'y') $output .= substr($jy, -2);
        elseif ($char == 'm') $output .= str_pad($jm, 2, '0', STR_PAD_LEFT);
        elseif ($char == 'n') $output .= $jm;
        elseif ($char == 'd') $output .= str_pad($jd, 2, '0', STR_PAD_LEFT);
        elseif ($char == 'j') $output .= $jd;
        else $output .= $char;
    }
    return $output;
}
?>