Fix : badge 'absent' faux positif sur ZIPs en sous-dossier de channel
Le commit 7ff5e56 avait changé $zips pour stocker des chemins relatifs
(asterion-vr/proserve-1.5.3.zip) afin de lister les ZIPs en sous-dossier,
mais le check par-row utilisait toujours basename(URL) → comparait
"proserve-1.5.3.zip" contre ["asterion-vr/proserve-1.5.3.zip"], donc
in_array() retournait toujours false → badge "absent" alors que le ZIP
était bien là.
Fix : on compute zipRel depuis l'URL de la même façon que $zips (extrait
tout après /builds/), pour que les deux côtés du in_array() utilisent le
même format. Le tooltip "attendu :" affiche aussi le chemin relatif
complet, c'est plus clair pour le SFTP.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -496,8 +496,16 @@ Layout::header('Versions', 'versions');
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($manifest['versions'] ?? [] as $v):
|
||||
$zipBase = basename(parse_url($v['download']['url'], PHP_URL_PATH) ?? '');
|
||||
$zipExists = in_array($zipBase, $zips, true);
|
||||
// Format relatif depuis builds/. Pour le default channel, ça donne juste
|
||||
// "proserve-X.Y.Z.zip" ; pour les autres channels, "asterion-vr/proserve-X.Y.Z.zip".
|
||||
// Doit matcher exactement ce que produit $zips (cf. plus haut, glob sur 1
|
||||
// niveau de sous-dossier max + chemin relatif normalisé en slash forward).
|
||||
$urlPath = parse_url($v['download']['url'] ?? '', PHP_URL_PATH) ?: '';
|
||||
$zipPos = strpos($urlPath, '/builds/');
|
||||
$zipRel = $zipPos !== false
|
||||
? ltrim(substr($urlPath, $zipPos + strlen('/builds/')), '/\\')
|
||||
: basename($urlPath);
|
||||
$zipExists = in_array($zipRel, $zips, true);
|
||||
$hashed = !empty($v['download']['sha256']) && !str_starts_with($v['download']['sha256'], 'REPLACE');
|
||||
$hashSkipped = strtolower((string)($v['download']['hashAlgorithm'] ?? 'sha256')) === 'none';
|
||||
?>
|
||||
@@ -513,10 +521,10 @@ Layout::header('Versions', 'versions');
|
||||
<td>
|
||||
<?php if ($zipExists): ?>
|
||||
<span class="badge badge-success">présent</span>
|
||||
<span class="muted"><?= Layout::formatBytes($zipSizes[$zipBase] ?? 0) ?></span>
|
||||
<span class="muted"><?= Layout::formatBytes($zipSizes[$zipRel] ?? 0) ?></span>
|
||||
<?php else: ?>
|
||||
<span class="badge badge-warning">absent</span>
|
||||
<div class="muted" style="font-size: 11px;">attendu : <code><?= htmlspecialchars($zipBase) ?></code></div>
|
||||
<div class="muted" style="font-size: 11px;">attendu : <code><?= htmlspecialchars($zipRel) ?></code></div>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
Reference in New Issue
Block a user