(float) $data['version'], 'ver_str' => $data['version'], 'date' => $date, 'text' => $data['changelog'], ]; } } // 2. Load legacy entries $legacyFile = __DIR__ . '/changelog-legacy.json'; if ( file_exists( $legacyFile ) ) { $legacyJson = @file_get_contents( $legacyFile ); if ( $legacyJson ) { $legacy = @json_decode( $legacyJson, true ); if ( is_array( $legacy ) ) { foreach ( $legacy as $item ) { if ( empty( $item['version'] ) ) continue; $entries[] = [ 'version' => (float) $item['version'], 'ver_str' => $item['version'], 'date' => isset( $item['date'] ) ? $item['date'] : '', 'text' => isset( $item['text'] ) ? $item['text'] : '', ]; } } } } // 3. Sort descending by version usort( $entries, function ( $a, $b ) { if ( $a['version'] == $b['version'] ) return 0; return ( $a['version'] > $b['version'] ) ? -1 : 1; } ); // 4. Output HTML foreach ( $entries as $entry ) { $header = 'ver. ' . htmlspecialchars( $entry['ver_str'] ); if ( $entry['date'] ) { $header .= ' - ' . htmlspecialchars( $entry['date'] ); } $text = nl2br( htmlspecialchars( $entry['text'] ) ); echo '' . $header . '
' . "\n"; echo $text . "\n"; echo '
' . "\n"; }