Browse Source

fix: certaines dispositions ne doivent pas permettre de redimensionner en largeur ou hauteur, et ignorer les valeurs passées en param (ex. : inline, line).

master
tcharlss 4 months ago
parent
commit
0dfade08ce
  1. 28
      albums_fonctions.php
  2. 21
      modeles/album_fonctions.php

28
albums_fonctions.php

@ -66,6 +66,12 @@ function inc_bigup_medias_formulaire_ajouter_album_dist($args, $formulaire) {
* (parité avec les noms des paramètres du modèle album)
*
* @return array
* Tableau associatif avec la description de chaque disposition, clé `*` pour les valeurs de fallback.
* - (string) modele_doc : modèle de document à utiliser
* - (int|null|bool) largeur : largeur max des images. null = rien par défaut, false = redimensionnement interdit
* - (int|null|bool) hauteur : hauteur max des images. null = rien par défaut, false = redimensionnement interdit
* - (string|null) recadrer_ratio : ratio pour recadrer
* - (bool) images : indique si la disposition est prévue plus particulièrement pour des images
*/
function albums_decrire_dispositions(): array {
static $dispositions;
@ -79,7 +85,7 @@ function albums_decrire_dispositions(): array {
$dispositions = [
// 1ère de la liste = celle par défaut
'inline' => [
'largeur' => 0,
'largeur' => false,
'hauteur' => $hauteur_config,
'images' => true,
],
@ -94,7 +100,7 @@ function albums_decrire_dispositions(): array {
'images' => true,
],
'line' => [
'largeur' => 0,
'largeur' => false,
'hauteur' => $hauteur_config,
'images' => true,
],
@ -109,17 +115,17 @@ function albums_decrire_dispositions(): array {
'hauteur' => 100,
],
'simple' => [
'largeur' => 0,
'hauteur' => 0,
'largeur' => null,
'hauteur' => null,
],
// Le fallback si disposition inconnue ou info non présente
// Ici il y a tous les params possibles
// Le fallback si disposition inconnue ou info non présente,
// avec toutes les valeurs possibles.
'*' => [
'modele_doc' => 'doc', // Modèle de document à utiliser
'largeur' => 0, // Largeur max des images
'hauteur' => 0, // Hauteur max des images
'recadrer_ratio' => null, // Ratio pour recadrer
'images' => false, // indique si disposition prévue plus particulièrement pour des images
'modele_doc' => 'doc',
'largeur' => null,
'hauteur' => null,
'recadrer_ratio' => null,
'images' => false,
],
];

21
modeles/album_fonctions.php

@ -244,7 +244,7 @@ function balise_ALBUM_PARAMS_dist($p) {
* @param string|null $valeur
* Nom d'un paramètre pour ne retourner que celui-ci
* @return array|string
* Soit un tableau de params : array<string disposition, string modele_doc, string_recadrer_ratio, int recadrer_sens, int largeur, int hauteur, bool images>
* Soit un tableau de params : array<string disposition, string modele_doc, string recadrer_ratio, string recadrer_sens, int largeur, int hauteur, bool images>
* Soit une la valeur d'un param
*/
function calculer_album_params(int $id_album, ?array $contexte = [], ?string $param = null) {
@ -277,13 +277,13 @@ function calculer_album_params(int $id_album, ?array $contexte = [], ?string $pa
// Modèle de document à utiliser
// Priorité : params > défaut
$modele_defaut = $dispositions[$disposition]['modele_doc'] ?? $dispositions['*']['modele_doc'];
$modele_param = $contexte['modele_doc'] ?? null;
$set['modele_doc'] = (string) ($modele_param ?: $modele_defaut);
$modele_doc_disposition = $dispositions[$disposition]['modele_doc'] ?? $dispositions['*']['modele_doc'];
$modele_doc_param = $contexte['modele_doc'] ?? null;
$set['modele_doc'] = (string) ($modele_doc_param ?: $modele_doc_disposition);
// Recadrer : ratio
// Priorité : params > params obsolètes > constante > config > défaut
$ratio_defaut = $dispositions[$disposition]['recadrer_ratio'] ?? $dispositions['*']['recadrer_ratio'];
$ratio_disposition = $dispositions[$disposition]['recadrer_ratio'] ?? $dispositions['*']['recadrer_ratio'];
$ratio_constant = (defined('_ALBUMS_RECADRER_RATIO') ? _ALBUMS_RECADRER_RATIO : null);
$ratio_config = lire_config('albums/img_ratio', null);
$ratio_param = $contexte['recadrer_ratio'] ?? null;
@ -292,7 +292,7 @@ function calculer_album_params(int $id_album, ?array $contexte = [], ?string $pa
$contexte['ratio'] :
(($contexte['recadrer'] ?? null) ? '1:1' : null) // on pouvait avoir `recadrer` tout seul, sans `ratio` → valeur par défaut
);
$set['recadrer_ratio'] = (string) ($ratio_param ?: $ratio_retro ?: $ratio_constant ?: $ratio_config ?: $ratio_defaut);
$set['recadrer_ratio'] = (string) ($ratio_param ?: $ratio_retro ?: $ratio_constant ?: $ratio_config ?: $ratio_disposition);
// Recadrer : sens
// Priorité : params > défaut
@ -301,14 +301,15 @@ function calculer_album_params(int $id_album, ?array $contexte = [], ?string $pa
// Largeur ou hauteur pour redimensionner
// Priorité : params > constante > constante obsolète > défaut
$largeur_defaut = $dispositions[$disposition]['largeur'] ?? $dispositions['*']['largeur'];
$hauteur_defaut = $dispositions[$disposition]['hauteur'] ?? $dispositions['*']['hauteur'];
// Quand la disposition indique `false` comme valeur, pas de redimensionnement possible
$largeur_disposition = $dispositions[$disposition]['largeur'] ?? $dispositions['*']['largeur'];
$hauteur_disposition = $dispositions[$disposition]['hauteur'] ?? $dispositions['*']['hauteur'];
$largeur_param = $contexte['largeur'] ?? null;
$hauteur_param = $contexte['hauteur'] ?? null;
$largeur_constant = (defined('_ALBUMS_IMG_LARGEUR') ? _ALBUMS_IMG_LARGEUR : null) ?: (defined('_ALBUMS_TAILLE_PREVIEW') ? _ALBUMS_TAILLE_PREVIEW : null);
$hauteur_constant = (defined('_ALBUMS_IMG_HAUTEUR') ? _ALBUMS_IMG_HAUTEUR : null) ?: (defined('_ALBUMS_TAILLE_PREVIEW') ? _ALBUMS_TAILLE_PREVIEW : null);
$set['largeur'] = (int) ($largeur_param ?: $largeur_constant ?: $largeur_defaut);
$set['hauteur'] = (int) ($hauteur_param ?: $hauteur_constant ?: $hauteur_defaut);
$set['largeur'] = (int) ($largeur_disposition === false ? null : ($largeur_param ?: $largeur_constant ?: $largeur_disposition));
$set['hauteur'] = (int) ($hauteur_disposition === false ? null : ($hauteur_param ?: $hauteur_constant ?: $hauteur_disposition));
// Indique s'il s'agit d'une disposition destinée aux images
$set['images'] = $dispositions[$disposition]['images'] ?? $dispositions['*']['images'];

Loading…
Cancel
Save