[SPIP] v3.2.1-->v3.2.2
[lhc/web/www.git] / www / ecrire / inc / chercher_logo.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2019 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 /**
14 * Recherche de logo
15 *
16 * @package SPIP\Core\Logos
17 **/
18 if (!defined('_ECRIRE_INC_VERSION')) {
19 return;
20 }
21
22 /**
23 * Cherche le logo d'un élément d'objet
24 *
25 * @global formats_logos Extensions possibles des logos
26 * @uses type_du_logo()
27 *
28 * @param int $id
29 * Identifiant de l'objet
30 * @param string $_id_objet
31 * Nom de la clé primaire de l'objet
32 * @param string $mode
33 * Mode de survol du logo désiré (on ou off)
34 * @return array
35 * - Liste (chemin complet du fichier, répertoire de logos, nom du logo, extension du logo, date de modification)
36 * - array vide aucun logo trouvé.
37 **/
38 function inc_chercher_logo_dist($id, $_id_objet, $mode = 'on') {
39 # attention au cas $id = '0' pour LOGO_SITE_SPIP : utiliser intval()
40
41 $type = type_du_logo($_id_objet);
42 $nom = $type . $mode . intval($id);
43
44 foreach ($GLOBALS['formats_logos'] as $format) {
45 if (@file_exists($d = (_DIR_LOGOS . $nom . '.' . $format))) {
46 return array($d, _DIR_LOGOS, $nom, $format, @filemtime($d));
47 }
48 }
49
50 # coherence de type pour servir comme filtre (formulaire_login)
51 return array();
52 }
53
54 /**
55 * Retourne le type de logo tel que `art` depuis le nom de clé primaire
56 * de l'objet
57 *
58 * C'est par défaut le type d'objet, mais il existe des exceptions historiques
59 * déclarées par la globale `$table_logos`
60 *
61 * @global table_logos Exceptions des types de logo
62 *
63 * @param string $_id_objet
64 * Nom de la clé primaire de l'objet
65 * @return string
66 * Type du logo
67 **/
68 function type_du_logo($_id_objet) {
69 return isset($GLOBALS['table_logos'][$_id_objet])
70 ? $GLOBALS['table_logos'][$_id_objet]
71 : objet_type(preg_replace(',^id_,', '', $_id_objet));
72 }
73
74 // Exceptions standards (historique)
75 $GLOBALS['table_logos'] = array(
76 'id_article' => 'art',
77 'id_auteur' => 'aut',
78 'id_rubrique' => 'rub',
79 'id_groupe' => 'groupe',
80 );