Current File : /home/igihango/public_html/ecrire/inc/chercher_logo.php |
<?php
/***************************************************************************\
* SPIP, Système de publication pour l'internet *
* *
* Copyright © avec tendresse depuis 2001 *
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. *
\***************************************************************************/
/**
* Recherche de logo
*
* @package SPIP\Core\Logos
**/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Cherche le logo d'un élément d'objet
*
* @global array formats_logos Extensions possibles des logos
* @uses type_du_logo()
*
* @param int $id
* Identifiant de l'objet
* @param string $_id_objet
* Nom de la clé primaire de l'objet
* @param string $mode
* Mode de survol du logo désiré (on ou off)
* @return array
* - Liste (chemin complet du fichier, répertoire de logos, nom du logo, extension du logo, date de modification[, doc])
* - array vide aucun logo trouvé.
**/
function inc_chercher_logo_dist($id, $_id_objet, $mode = 'on', $compat_old_logos = true) {
$mode = preg_replace(',\W,', '', $mode);
if ($mode) {
// chercher dans la base
$mode_document = 'logo' . $mode;
$objet = objet_type($_id_objet);
$doc = sql_fetsel('D.*', 'spip_documents AS D JOIN spip_documents_liens AS L ON L.id_document=D.id_document', 'D.mode=' . sql_quote($mode_document) . ' AND L.objet=' . sql_quote($objet) . ' AND id_objet=' . intval($id));
if ($doc) {
include_spip('inc/documents');
$d = get_spip_doc($doc['fichier']);
return [$d, _DIR_IMG, basename($d), $doc['extension'], @filemtime($d), $doc];
}
# deprecated TODO remove
if ($compat_old_logos) {
# attention au cas $id = '0' pour LOGO_SITE_SPIP : utiliser intval()
$type = type_du_logo($_id_objet);
$nom = $type . $mode . intval($id);
foreach ($GLOBALS['formats_logos'] as $format) {
if (@file_exists($d = (_DIR_LOGOS . $nom . '.' . $format))) {
return [$d, _DIR_LOGOS, $nom, $format, @filemtime($d)];
}
}
}
}
# coherence de type pour servir comme filtre (formulaire_login)
return [];
}
/**
* Retourne le type de logo tel que `art` depuis le nom de clé primaire
* de l'objet
*
* C'est par défaut le type d'objet, mais il existe des exceptions historiques
* déclarées par la globale `$table_logos`
*
* @global array $table_logos Exceptions des types de logo
*
* @param string $_id_objet
* Nom de la clé primaire de l'objet
* @return string
* Type du logo
* @deprecated 4.0 MAIS NE PAS SUPPRIMER CAR SERT POUR L'UPGRADE des logos et leur mise en base
**/
function type_du_logo($_id_objet) {
if (!in_array(debug_backtrace(0, 2)[1]['function'] ?? '', ['inc_chercher_logo_dist', 'logo_migrer_en_base'])) {
trigger_deprecation('spip', '4.0', 'Using "%s" is deprecated', __FUNCTION__);
}
return $GLOBALS['table_logos'][$_id_objet] ?? objet_type(preg_replace(',^id_,', '', $_id_objet));
}
// Exceptions standards (historique)
$GLOBALS['table_logos'] = [
'id_article' => 'art',
'id_auteur' => 'aut',
'id_rubrique' => 'rub',
'id_groupe' => 'groupe',
];