getAllVariantsByRef(); $unknowns = $db->getUnknownRefs(); if (count($unknowns) > 0) { foreach ($unknowns as $uref) { $allVars[$uref] = array( 'family' => 'Unknown', 'model' => 'Model', 'variant' => '', ); } } header('Content-Type: application/rss+xml'); ?> TCL OTA https://tclota.birth-online.de/timeline.php TCL OTA updates getAllFiles($db::FULL_ONLY); foreach ($allfiles as $file) { $updates = $db->getAllUpdatesForFile($file['sha1']); $validRefs = array(); $validDevs = array(); $firstSeen = new DateTime(); $firstSeen->setTimezone(new DateTimeZone('CET')); foreach ($updates as $u) { $dev = $allVars[$u['curef']]; $validRefs[] = $u['curef']; $validDevs[] = $dev['family'] . ' ' . $dev['model']; $firstSeenDate = new DateTime($u['seenDate']); $firstSeenDate->setTimezone(new DateTimeZone('CET')); if ($firstSeenDate < $firstSeen) { $firstSeen = $firstSeenDate; } } $validDevs = array_unique($validDevs); sort($validDevs); $device = $allVars[$updates[0]['curef']]; $date = new DateTime($file['published_first']); $date->setTimezone(new DateTimeZone('CET')); $dateLast = new DateTime($file['published_last']); $dateLast->setTimezone(new DateTimeZone('CET')); echo '' . PHP_EOL; echo ' ' . $file['tv'] . '' . PHP_EOL; echo ' https://tclota.birth-online.de/timeline.php' . PHP_EOL; echo ' format('Y-m-d') . ' ' . $date->format('H:i.s') . ' CET
'; echo 'Devices: ' . implode(', ', $validDevs) . '
'; echo 'Last released: ' . $dateLast->format('Y-m-d H:i.s') . ' (first seen in the wild: ' . $firstSeen->format('Y-m-d H:i.s') . ')
'; echo 'Valid for (order of release): ' . implode(', ', $validRefs); echo ']]>
' . PHP_EOL; echo '
' . PHP_EOL; } ?>