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 3.3, 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

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 utilisé pour l’affichage du logo d´un contenu par les balises #LOGO_*.

Il permet de chercher des alternatives si aucun logo n´a été uploadé : par exemple des documents liés, une image précise, etc. Chaque plugin peut se brancher dessus pour ajouter une méthode de recherche alternative, si aucun logo n´a été trouvé précédemment.

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;
}

Autre exemple  ; dans le plugin "logo_auto"

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.

logo_modifier()

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

  1. 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.

  1. 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 : 27/03/20

Traductions : français, Nederlands