Skip to content
Extraits de code Groupes Projets
Valider db1c97e7 rédigé par marcimat's avatar marcimat
Parcourir les fichiers

fix: Correction de la balise `#MIME_TYPE` si elle est hors boucle.

On spécifie un peu mieux son emploi dans les boucles types_documents et documents.
En dehors, on essaie de trouver un id_document, sinon un mime_type dans les piles des boucles / environnement.

Refs: #5021
parent bf4d52fb
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!5036fix: Autoriser qu’il n’y ait pas de `id_document` pour appeler un type mime.
......@@ -255,24 +255,32 @@ function critere_DOCUMENTS_carre_dist($idb, &$boucles, $crit) {
* @return Spip\Compilateur\Noeud\Champ
*/
function balise_MIME_TYPE_dist($p) {
$b = $p->nom_boucle ?: $p->id_boucle;
$key = $p->boucles[$b]->primary;
/**
* Si la clé primaire est extension, on est dans une boucle sur la table spip_types_documents, on renvoie le champ SQL tel quel
*/
if ($key === 'extension') {
$p->code = champ_sql('mime_type', $p);
} else {
// recuperer les cles id_document + extension
$_id_document = champ_sql('id_document', $p);
$_extension = champ_sql('extension', $p);
/* le code php qui sera execute */
$p->code = 'medias_mime_type_document(' . $_id_document . ', ' . $_extension . ')';
$_mime_type = champ_sql('mime_type', $p, '($Pile[0][\'mime_type\'] ?? \'\')');
// Dans la table spip_types_documents, on renvoie le champ SQL tel quel
if ($p->type_requete === 'types_documents') {
$p->code = $_mime_type;
return $p;
}
$_id_document = champ_sql('id_document', $p);
$_extension = champ_sql('extension', $p, '($Pile[0][\'extension\'] ?? \'\')');
// Dans la table spip_documents, on renvoie le mime_type calculé
if ($p->type_requete === 'documents') {
$p->code = sprintf('medias_mime_type_document(%s, %s)', $_id_document, $_extension);
return $p;
}
// En dehors de cas standards, on cherche un id_document (+ extension) pour calculer le mime type,
// et sinon, on récupèrere un mime_type en remontant la pile jusqu’au env.
$p->code = sprintf('(%s === null ? %s : medias_mime_type_document(%s, %s))', $_id_document, $_mime_type, $_id_document, $_extension);
return $p;
}
function medias_mime_type_document(?int $id_document, string $extension = ''): string {
function medias_mime_type_document(int $id_document, string $extension = ''): string {
if (!$id_document) {
return '';
}
......@@ -288,6 +296,10 @@ function medias_mime_type_document(?int $id_document, string $extension = ''): s
'spip_types_documents',
'extension = ' . sql_quote($extension)
);
// document introuvable ?
if ($mime_type === null) {
return '';
}
$mime_type_sanitized = preg_replace('/\W/', '_', $mime_type);
if ($calculer_mime_type = charger_fonction('calculer_mime_type_' . $mime_type_sanitized, 'inc', true)) {
$mime_type_document = $calculer_mime_type($id_document, $extension, $mime_type);
......
  • marcimat @marcimat

    mentioned in commit 3fc45764

    ·

    mentioned in commit 3fc45764

    Afficher/masquer la liste des validations
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter