Images JPG mal renseignées parfois
Suite du ticket #5699 (closed) toujours sur la même fonction.
Dans ce dernier ticket, il apparaissait que la fonction était cassée pour les infos d'images depuis environ 2 ans.
Mais 8 mois avant, il me semble qu'il y a eu une autre cassure ici : d3916131
En effet, cette modif utilise la fonction _image_trouver_extension_depuis_mime()
qui uniformise tous les MIME reconnus pour les JPG, avec l'extension ".jpeg" ! (avec un E) et ça l'utilise pour comparer avec formats_image_acceptables()
.
Sauf que ça ne fait pas juste ça, ensuite ça utilise cette extension dans les infos officielles de l'image avec $a['extension'] = $extension;
.
Alors que partout dans SPIP, pour les spip_documents, SPIP fait en sorte d'uniformiser tous les JPG avec l'extension… ".jpg" ! Ce qui est l'extension associée dans spip_types_documents.
À cause de ça, dans certains cas, on se retrouve alors avec un spip_documents de type "jpeg", càd d'un type qui n'est PAS reconnu par spip_types_documents. Et donc ensuite plusieurs endroits où c'est pas affiché, où ça bugue etc.
Depuis les modifs 8 mois après qui ajoutent distant_trouver_extension_selon_headers()
, on ne devrait pas/plus appeler _image_trouver_extension_depuis_mime()
. En effet, à cet endroit du code, si on entre dans strpos($mime_type, 'image/') === 0
c'est alors obligatoirement qu'on a $mime_type
rempli, et donc qu'on est rentré dans le if ($headers) {
, et donc qu'on a déjà un $extension = distant_trouver_extension_selon_headers($source, $headers)
rempli et non false. Donc il faut l'utiliser tel quel.
Et/ou autre solution : _image_trouver_extension_depuis_mime()
est censée absolument renvoyer "jpg" et non "jpeg" pour l'ensemble des MIME JPG, car c'est cette extension là qui est la référence dans SPIP. "jpg" passera aussi le test de `formats_image_acceptables()" donc il n'y a aucun problème à ce changement.