API des logos

Dans SPIP, la gestion des logos est pour l’instant distincte de celle des documents : ils ont leur propre rangement et leur propre API.

Un logo peut avoir 2 états, qu’il faut préciser lorsqu’on utilise les fonctions de l’API :

  • état normal : 'on'
  • état de survol : 'off'.

Ils sont enregistrés à la racine du dossier des images.

Depuis SPIP 4.0, les fichiers téléchargés en tant que logo sont gérés comme des documents dans la table spip_documents, avec un mode spécifique ’logoon’ ou ’logooff’.

Jusqu’à SPIP 3.2 , les fichiers téléchargés en tant que logo sont rangés dans le dossier image et sont renommés ainsi au moment du téléchargement : {objet raccourci}{id_objet}{etat}.{extension}.
Exemples :

  • logo normal de l’article 10 : arton10.png
  • logo de survol de l’article 10 : artoff10.png
  • logo normal de la rubrique 15 : rubon15.png

Fonction chercher_logo()

La fonction chercher_logo permet de retrouver le logo d´un contenu, tel qu’il a été explicitement désigné comme tel dans l´interface.
Elle retourne un tableau avec le chemin complet du fichier, le répertoire des logos, le nom du logo, son extension et la date de modification.

$chercher_logo = charger_fonction('chercher_logo', 'inc');
$logo = $chercher_logo($id_objet, $id_table_objet, $etat);

Les 3 arguments :

  • $objet : identifiant de l´objet
  • $id_table_objet : clé primaire de l´objet
  • $etat : 'on' ou 'off'

Pipeline quete_logo_objet

Le pipeline quete_logo_objet est appelé par la fonction quete_logo_objet utilisée pour l’affichage du logo d´un contenu par les balises #LOGO_*.

Le pipeline est souvent utilisé pour chercher une alternative lorsqu’aucun logo n´a été uploadé : par exemple en prenant l’un des documents liés, ou une image précise, etc. Chaque plugin peut se brancher dessus pour ajouter sa méthode de recherche si aucun logo n´a été trouvé précédemment.

C’est $flux['data'] qui contient la description du logo en l’étape actuelle du pipeline, sous la forme d’un tableau avec 2 clés : ’chemin’ et ’timestamp’ qui décrivent le logo retenu.

Exemple :

function monplugin_quete_logo_objet($flux) {
  // Si personne n'a trouvé de logo avant
  if (empty($flux['data'])
    and $chemin_image = find_in_path('images/mon_image.png')
  ) {
    $flux['data'] = array(
      'chemin' => $chemin_image,
      'timestamp' => @filemtime($chemin_image),
    );
  }
  return $flux;
}

Autres exemples  :
 Dans le plugin "logo_auto"
 Dans le plugin "election_editoriales

Fonction quete_logo_objet()

La fonction quete_logo_objet($id_objet, $objet, $mode ) permet de récupérer le logo d’où qu’il vienne, c’est à dire tel que défini par l’interface OU par toute autre source via le pipeline éponyme.

Exemple  :
 Dans une inclusion SPIP du plugin "commandes"

logo_modifier()

Modifier ou créer le logo d’un contenu.

logo_modifier($objet, $id_objet, $etat, $source);

Les 4 arguments :

  • $objet : type d´objet
  • $id_objet : identifiant de l´objet
  • $etat : 'on' ou 'off'
  • $source : chemin complet (string) ou sous-tableau de $_FILE (array)

logo_supprimer()

Supprimer le logo d’un contenu.

logo_supprimer($objet, $id_objet, $etat);

Les 3 arguments :

  • $objet : type d´objet
  • $id_objet : identifiant de l´objet
  • $etat : 'on' ou 'off'

Auteur tcharlss Publié le : Mis à jour : 12/03/23

Traductions : français, Nederlands