Commit 43cdadc8 authored by Arnolds's avatar Arnolds
Browse files

Enhanced `utcToIso` function to return ISO 8601 formatted strings and updated...

Enhanced `utcToIso` function to return ISO 8601 formatted strings and updated `meta.php` to display localized timestamps using JavaScript.
parent 6a966050
Loading
Loading
Loading
Loading
+43 −12
Original line number Diff line number Diff line
@@ -28,10 +28,14 @@ $collection = $db->secrets;
function utcToIso(?UTCDateTime $dt): ?string
{
    if (!$dt) return null;
    // Mongo UTCDateTime -> DateTimeImmutable
    $d = $dt->toDateTime();
    $d = DateTimeImmutable::createFromMutable($d)->setTimezone(new DateTimeZone('UTC'));
    return $d->format('Y-m-d H:i:s') . ' UTC';

    // Mongo UTCDateTime -> DateTimeImmutable (UTC)
    $d = DateTimeImmutable::createFromMutable(
        $dt->toDateTime()
    )->setTimezone(new DateTimeZone('UTC'));

    // TRUE ISO 8601
    return $d->format('Y-m-d\TH:i:s\Z');
}

function nowUtc(): DateTimeImmutable
@@ -175,12 +179,16 @@ if ($found && !$deleted && !$expired && isset($doc['expiresAt']) && $doc['expire
                <div class="row g-3">
                    <div class="col-12 col-md-6">
                        <div class="text-secondary small">Izveidots</div>
                        <div><?= htmlspecialchars($createdAtIso ?? '-') ?></div>
                        <div>
                            <time class="js-local-time" data-iso="<?= htmlspecialchars($createdAtIso ?? '') ?>">
                                <?= htmlspecialchars($createdAtIso ?? '-') ?>
                            </time>
                        </div>
                    </div>
                    <div class="col-12 col-md-6">
                        <div class="text-secondary small">Derīgs līdz</div>
                        <div>
                            <?= htmlspecialchars($expiresAtIso ?? '-') ?>
                            <time class="js-local-time" data-iso="<?= htmlspecialchars($expiresAtIso ?? '') ?>"><?= htmlspecialchars($expiresAtIso ?? '-') ?></time>
                            <?php if ($remainingText): ?>
                                <span class="text-secondary small">(aptuveni <?= htmlspecialchars($remainingText) ?> atlicis)</span>
                            <?php endif; ?>
@@ -189,11 +197,11 @@ if ($found && !$deleted && !$expired && isset($doc['expiresAt']) && $doc['expire

                    <div class="col-12 col-md-6">
                        <div class="text-secondary small">Izsniegts pirmo reizi</div>
                        <div><?= htmlspecialchars($firstRetrievedAtIso ?? '-') ?></div>
                        <div><time class="js-local-time" data-iso="<?= htmlspecialchars($firstRetrievedAtIso ?? '') ?>"><?= htmlspecialchars($firstRetrievedAtIso ?? '-') ?></time></div>
                    </div>
                    <div class="col-12 col-md-6">
                        <div class="text-secondary small">Izsniegts pēdējo reizi</div>
                        <div><?= htmlspecialchars($lastRetrievedAtIso ?? '-') ?></div>
                        <div><time class="js-local-time" data-iso="<?= htmlspecialchars($lastRetrievedAtIso ?? '') ?>"><?= htmlspecialchars($lastRetrievedAtIso ?? '-') ?></time></div>
                    </div>

                    <div class="col-12 col-md-6">
@@ -202,7 +210,7 @@ if ($found && !$deleted && !$expired && isset($doc['expiresAt']) && $doc['expire
                    </div>
                    <div class="col-12 col-md-6">
                        <div class="text-secondary small">Parādīts / izdzēsts</div>
                        <div><?= htmlspecialchars($displayedAtIso ?? '-') ?></div>
                        <div><time class="js-local-time" data-iso="<?= htmlspecialchars($displayedAtIso ?? '') ?>"><?= htmlspecialchars($displayedAtIso ?? '-') ?></time></div>
                    </div>
                    <div class="col-12 col-md-6">
                        <div class="text-secondary small">Saite</div>
@@ -227,9 +235,32 @@ if ($found && !$deleted && !$expired && isset($doc['expiresAt']) && $doc['expire
</div>

<div class="footer py-3">
    <div class="container text-secondary small">
        Visi laiki ir UTC.
    </div>
</div>
<script>
    (() => {
        const els = document.querySelectorAll('time.js-local-time[data-iso]');
        for (const el of els) {
            const iso = (el.dataset.iso || '').trim();
            if (!iso) continue;

            const d = new Date(iso);
            if (Number.isNaN(d.getTime())) continue;

            // Save original as tooltip
            el.title = iso;

            // Format in user's locale/timezone
            el.textContent = new Intl.DateTimeFormat(undefined, {
                year: 'numeric',
                month: '2-digit',
                day: '2-digit',
                hour: '2-digit',
                minute: '2-digit',
                second: '2-digit',
                timeZoneName: 'short'
            }).format(d);
        }
    })();
</script>
</body>
</html>