2017-12-16 17:17:57 +00:00
|
|
|
<!DOCTYPE html>
|
|
|
|
<html>
|
|
|
|
<head>
|
2018-01-07 20:53:35 +00:00
|
|
|
<meta charset="utf-8"/>
|
2017-12-28 23:46:12 +00:00
|
|
|
<title>BlackBerry/TCL Firmware List</title>
|
2018-01-07 21:20:32 +00:00
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=0.8"/>
|
2017-12-28 23:46:12 +00:00
|
|
|
<link rel="stylesheet" href="node_modules/material-components-web/dist/material-components-web.css"/>
|
|
|
|
<link rel="stylesheet" href="assets/material-icons.css"/>
|
|
|
|
<link rel="stylesheet" href="assets/style.css"/>
|
2018-01-06 20:33:54 +00:00
|
|
|
<script type="text/javascript" src="node_modules/material-components-web/dist/material-components-web.js"></script>
|
|
|
|
<script type="text/javascript" src="assets/main.js"></script>
|
2017-12-16 17:17:57 +00:00
|
|
|
</head>
|
2017-12-28 23:46:12 +00:00
|
|
|
<body class="mdc-typography">
|
2017-12-16 17:17:57 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
require_once __DIR__ . '/lib/autoloader.php';
|
|
|
|
|
|
|
|
use \TclUpdates\SQLiteReader;
|
|
|
|
|
|
|
|
$db = new SQLiteReader();
|
|
|
|
|
|
|
|
$allVars = $db->getAllVariants();
|
2017-12-16 18:42:24 +00:00
|
|
|
$unknowns = $db->getUnknownRefs();
|
|
|
|
if (count($unknowns) > 0) {
|
|
|
|
$variants = array();
|
|
|
|
foreach ($unknowns as $uref) {
|
|
|
|
$variants[$uref] = '';
|
|
|
|
}
|
|
|
|
$allVars['Unknown'] = array(
|
|
|
|
'Variants' => $variants,
|
|
|
|
);
|
|
|
|
}
|
2017-12-16 17:17:57 +00:00
|
|
|
|
2018-01-04 12:51:57 +00:00
|
|
|
$families = array_keys($allVars);
|
|
|
|
|
|
|
|
?>
|
|
|
|
<header class="mdc-toolbar mdc-toolbar--fixed">
|
|
|
|
<div class="mdc-toolbar__row">
|
|
|
|
<section class="mdc-toolbar__section mdc-toolbar__section--shrink-to-fit mdc-toolbar__section--align-start">
|
|
|
|
<span class="mdc-toolbar__title">BlackBerry/TCL Firmware List</span>
|
|
|
|
</section>
|
|
|
|
<section class="mdc-toolbar__section mdc-toolbar__section--align-end" role="toolbar">
|
|
|
|
<div>
|
|
|
|
<nav id="tab-bar" class="mdc-tab-bar mdc-tab-bar--indicator-accent">
|
|
|
|
<?php
|
|
|
|
|
|
|
|
foreach ($families as $i => $family) {
|
|
|
|
echo '<a class="mdc-tab' . (($i==0)?' mdc-tab--active':'') . '" href="#' . strtolower($family) . '" data-panel="family-' . strtolower($family) . '">' . $family . '</a>' . PHP_EOL;
|
|
|
|
}
|
|
|
|
|
|
|
|
?>
|
|
|
|
<span class="mdc-tab-bar__indicator"></span>
|
|
|
|
</nav>
|
|
|
|
</div>
|
|
|
|
</section>
|
|
|
|
</div>
|
|
|
|
</header>
|
|
|
|
<main>
|
|
|
|
<div class="mdc-toolbar-fixed-adjust"></div>
|
|
|
|
<?php
|
|
|
|
|
2017-12-16 17:17:57 +00:00
|
|
|
foreach ($allVars as $family => $models) {
|
2017-12-29 15:25:57 +00:00
|
|
|
echo '<div id="family-' . strtolower($family) . '" class="panel" role="tabpanel">';
|
2017-12-16 17:17:57 +00:00
|
|
|
foreach ($models as $model => $variants) {
|
|
|
|
echo '<h2>' . $family . ' ' . $model . '</h2>' . PHP_EOL;
|
2017-12-16 18:42:24 +00:00
|
|
|
$allVersions = $db->getAllVersionsForModel($model);
|
|
|
|
echo '<table><tbody>';
|
2017-12-16 17:17:57 +00:00
|
|
|
foreach ($variants as $ref => $name) {
|
2018-01-06 23:55:45 +00:00
|
|
|
echo '<tr data-ref="' . $ref . '"><th class="ref">';
|
2017-12-17 18:57:39 +00:00
|
|
|
if (mb_strlen($name) > 0) {
|
|
|
|
echo '<abbr title="' . $name . '">' . $ref . '</abbr>';
|
|
|
|
} else {
|
|
|
|
echo $ref;
|
|
|
|
}
|
2018-01-06 23:55:45 +00:00
|
|
|
echo '</th>';
|
2017-12-16 18:42:24 +00:00
|
|
|
$refVersions = $db->getAllVersionsForRef($ref);
|
2017-12-17 18:33:33 +00:00
|
|
|
$allOta = $db->getAllVersionsForRef($ref, $db::OTA_ONLY);
|
2018-01-15 11:55:40 +00:00
|
|
|
$allFull = $db->getAllVersionsForRef($ref, $db::FULL_ONLY);
|
2017-12-16 18:42:24 +00:00
|
|
|
foreach ($allVersions as $v) {
|
|
|
|
if (in_array($v, $refVersions, true)) {
|
2018-01-06 23:55:45 +00:00
|
|
|
$moreClasses = '';
|
2018-01-15 11:55:40 +00:00
|
|
|
if (!in_array($v, $allOta) && !in_array($v, $allFull)) {
|
|
|
|
$moreClasses = ' nofiles';
|
|
|
|
} elseif (!in_array($v, $allOta)) {
|
2018-01-06 23:55:45 +00:00
|
|
|
$moreClasses = ' fullonly mdc-theme--secondary-dark';
|
2018-01-15 11:55:40 +00:00
|
|
|
} elseif (!in_array($v, $allFull)) {
|
|
|
|
$moreClasses = ' otaonly mdc-theme--primary-dark';
|
2017-12-17 18:33:33 +00:00
|
|
|
}
|
2018-01-06 23:55:45 +00:00
|
|
|
echo '<td class="version' . $moreClasses . '">' . $v . '</td>';
|
2017-12-16 18:42:24 +00:00
|
|
|
} else {
|
2017-12-16 19:17:11 +00:00
|
|
|
echo '<td class="empty">- - -</td>';
|
2017-12-16 18:42:24 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
echo '</tr>' . PHP_EOL;
|
2017-12-16 17:17:57 +00:00
|
|
|
}
|
2017-12-16 18:42:24 +00:00
|
|
|
echo '</tbody></table>';
|
2017-12-16 17:17:57 +00:00
|
|
|
}
|
2017-12-29 15:25:57 +00:00
|
|
|
echo '</div>';
|
2017-12-16 17:17:57 +00:00
|
|
|
}
|
|
|
|
?>
|
2018-01-06 23:55:45 +00:00
|
|
|
<div id="tooltip" class="mdc-card">
|
|
|
|
<section class="mdc-card__primary">
|
|
|
|
<h1 id="tooltip-title" class="mdc-card__title">Title</h1>
|
|
|
|
</section>
|
|
|
|
<section id ="tooltip-text" class="mdc-card__supporting-text">
|
|
|
|
Contents here.
|
|
|
|
</section>
|
|
|
|
</div>
|
2018-01-07 20:22:09 +00:00
|
|
|
|
|
|
|
<div class="mdc-snackbar" aria-live="assertive" aria-atomic="true" aria-hidden="true">
|
|
|
|
<div class="mdc-snackbar__text"></div>
|
|
|
|
<div class="mdc-snackbar__action-wrapper">
|
|
|
|
<button type="button" class="mdc-snackbar__action-button"></button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2017-12-28 23:46:12 +00:00
|
|
|
</main>
|
2017-12-16 17:17:57 +00:00
|
|
|
</body>
|
|
|
|
</html>
|