<?php
include_once $g['path_core'].'function/update.func.php';
$currentVersion = $d['admin']['version'];
$updateStatus = jusqUpdateStatus($currentVersion);
$manifest = $updateStatus['manifest'];
$releases = array_reverse($manifest['releases']);
?>

<div id="Uupdate">
    <div class="tbox">
        <div class="tleft">
            <div class="title">주스큐 보안 업데이트</div>
            <p>전자서명과 SHA-256 검증을 통과한 공식 패키지만 설치합니다.<br />적용 전 소스와 데이터베이스를 자동으로 백업하며 실패하면 복구합니다.</p>
        </div>
        <div class="tright"><div class="versionText"><small>현재 버전</small><strong><?php echo htmlspecialchars($currentVersion,ENT_QUOTES,'UTF-8')?></strong></div></div>
        <div class="clear"></div>
    </div>

    <?php if(!$updateStatus['ok']):?>
    <div class="updateAlert error">업데이트 서버 확인 실패: <?php echo htmlspecialchars($updateStatus['error'],ENT_QUOTES,'UTF-8')?></div>
    <?php elseif(!$updateStatus['available']):?>
    <div class="updateAlert success">현재 최신 버전입니다. (<?php echo htmlspecialchars($manifest['latest'],ENT_QUOTES,'UTF-8')?>)</div>
    <?php else:?>
    <div class="updateAlert notice">새 버전 <?php echo htmlspecialchars($manifest['latest'],ENT_QUOTES,'UTF-8')?>을 사용할 수 있습니다.</div>
    <?php endif?>

    <div class="updateGuide">
        <strong>업데이트는 재설치 없이 진행됩니다.</strong>
        <ol>
            <li>공식 서버에서 해당 버전의 업데이트 패키지만 내려받습니다.</li>
            <li>전자서명, 파일 크기 및 SHA-256 위변조 검사를 수행합니다.</li>
            <li>현재 소스와 데이터베이스를 자동으로 백업합니다.</li>
            <li>파일 교체와 필요한 DB 마이그레이션을 적용하고 완료 기록을 남깁니다.</li>
            <li>적용 중 오류가 발생하면 백업한 파일과 DB로 자동 복구합니다.</li>
        </ol>
        <p>큰 버전 차이가 있으면 화면에 표시되는 선행 업데이트부터 순서대로 적용해 주세요.</p>
    </div>

    <table>
    <thead><tr><th>버전</th><th>변경사항</th><th>빌드</th><th>크기</th><th>처리</th></tr></thead>
    <tbody>
    <?php foreach($releases as $release):?>
        <?php
        $build = preg_replace('/[^0-9A-Za-z._-]/','',(string)($release['build'] ?? ''));
        $installed = is_file($g['path_var'].'update/'.$build.'.json');
        $compatible = empty($release['min_version']) || version_compare($currentVersion,$release['min_version'],'>=');
        ?>
        <tr>
            <td class="t1"><?php echo htmlspecialchars($release['version'] ?? '',ENT_QUOTES,'UTF-8')?></td>
            <td class="t2"><?php echo htmlspecialchars($release['notes'] ?? '',ENT_QUOTES,'UTF-8')?></td>
            <td class="t3"><?php echo htmlspecialchars($build,ENT_QUOTES,'UTF-8')?></td>
            <td class="t3"><?php echo !empty($release['size'])?number_format($release['size']).' bytes':'-'?></td>
            <td class="t4">
            <?php if($installed):?><span class="udate1_1">완료</span>
            <?php elseif(!$compatible):?><span class="udate1_2">선행 업데이트 필요</span>
            <?php else:?><a href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;m=admin&amp;a=update&amp;type=auto&amp;build=<?php echo urlencode($build)?>" class="btnGray01 plusBlue hand" onclick="return hrefCheck(this,true,'업데이트 전에 파일과 DB가 자동 백업됩니다. 계속하시겠습니까?');"><i><s>업데이트</s></i></a>
            <?php endif?>
            </td>
        </tr>
    <?php endforeach?>
    <?php if(!count($releases)):?><tr><td class="t7" colspan="5">현재 설치할 수 있는 추가 업데이트 패키지가 없습니다.</td></tr><?php endif?>
    </tbody>
    </table>
</div>
