function lien_objet($id, $type, $longueur = 80, $connect = NULL) { include_spip('inc/liens'); $titre = traiter_raccourci_titre($id, $type, $connect); // lorsque l'objet n'est plus declare (plugin desactive par exemple) // le raccourcis n'est plus valide $titre = isset($titre['titre']) ? typo($titre['titre']) : ''; if (!strlen($titre)) { $titre = _T('info_sans_titre'); } $url = generer_url_entite($id, $type); return "<a href='{$url}' class='{$type}'>" . couper($titre, $longueur) . "</a>"; }
/** * Transformer un lien raccourci art23 en son URL * Par defaut la fonction produit une url prive si on est dans le prive * ou publique si on est dans le public. * La globale lien_implicite_cible_public permet de forcer un cas ou l'autre : * $GLOBALS['lien_implicite_cible_public'] = true; * => tous les liens raccourcis pointent vers le public * $GLOBALS['lien_implicite_cible_public'] = false; * => tous les liens raccourcis pointent vers le prive * unset($GLOBALS['lien_implicite_cible_public']); * => retablit le comportement automatique * * http://doc.spip.org/@traiter_lien_implicite * * @param string $ref * @param string $texte * @param string $pour * @param string $connect * @return array|bool|string */ function traiter_lien_implicite($ref, $texte = '', $pour = 'url', $connect = '') { $cible = $connect ? $connect : (isset($GLOBALS['lien_implicite_cible_public']) ? $GLOBALS['lien_implicite_cible_public'] : null); if (!($match = typer_raccourci($ref))) { return false; } @(list($type, , $id, , $args, , $ancre) = $match); # attention dans le cas des sites le lien doit pointer non pas sur # la page locale du site, mais directement sur le site lui-meme $url = ''; if ($f = charger_fonction("implicite_{$type}", "liens", true)) { $url = $f($texte, $id, $type, $args, $ancre, $connect); } if (!$url) { $url = generer_url_entite($id, $type, $args, $ancre, $cible); } if (!$url) { return false; } if (is_array($url)) { @(list($type, $id) = $url); $url = generer_url_entite($id, $type, $args, $ancre, $cible); } if ($pour === 'url') { return $url; } $r = traiter_raccourci_titre($id, $type, $connect); if ($r) { $r['class'] = $type == 'site' ? 'spip_out' : 'spip_in'; } if ($texte = trim($texte)) { $r['titre'] = $texte; } if (!@$r['titre']) { $r['titre'] = _T($type) . " {$id}"; } if ($pour == 'titre') { return $r['titre']; } $r['url'] = $url; // dans le cas d'un lien vers un doc, ajouter le type='mime/type' if ($type == 'document' and $mime = sql_getfetsel('mime_type', 'spip_types_documents', "extension IN (SELECT extension FROM spip_documents where id_document =" . intval($id) . ")", '', '', '', '', $connect)) { $r['mime'] = $mime; } return $r; }
function traiter_lien_implicite ($ref, $texte='', $pour='url', $connect='') { if (!($match = typer_raccourci($ref))) return false; @list($type,,$id,,$args,,$ancre) = $match; # attention dans le cas des sites le lien doit pointer non pas sur # la page locale du site, mais directement sur le site lui-meme if ($type == 'site') $url = sql_getfetsel('url_site', 'spip_syndic', "id_syndic=$id",'','','','',$connect); elseif ($type == 'glose') { if (function_exists($f = 'glossaire_' . $ancre)) $url = $f($texte, $id); else $url = glossaire_std($texte); } else $url = generer_url_entite($id,$type,$args,$ancre,$connect ? $connect : NULL); if (!$url) return false; if (is_array($url)) { @list($type,$id) = $url; $url = generer_url_entite($id,$type,$args,$ancre,$connect ? $connect : NULL); } if ($pour === 'url') return $url; $r = traiter_raccourci_titre($id, $type, $connect); if ($r) $r['class'] = ($type == 'site')?'spip_out':'spip_in'; if ($texte = trim($texte)) $r['titre'] = $texte; if (!@$r['titre']) $r['titre'] = _T($type) . " $id"; if ($pour=='titre') return $r['titre']; $r['url'] = $url; // dans le cas d'un lien vers un doc, ajouter le type='mime/type' if ($type == 'document' AND $extension = sql_getfetsel("extension","spip_documents", " id_document =".sql_quote($id), '', '', '', '', $connect) AND $mime = sql_getfetsel('mime_type', 'spip_types_documents',"extension=".sql_quote($extension),'','','','',$connect) ) $r['mime'] = $mime; return $r; }
/** * Generer un lien (titre clicable vers url) vers un objet * * @param int $id_objet * @param $objet * @param int $longueur * @param null|string $connect * @return string */ function generer_lien_entite($id_objet, $objet, $longueur = 80, $connect = null) { include_spip('inc/liens'); $titre = traiter_raccourci_titre($id_objet, $objet, $connect); // lorsque l'objet n'est plus declare (plugin desactive par exemple) // le raccourcis n'est plus valide $titre = isset($titre['titre']) ? typo($titre['titre']) : ''; // on essaye avec generer_info_entite ? if (!strlen($titre) and !$connect) { $titre = generer_info_entite($id_objet, $objet, 'titre'); } if (!strlen($titre)) { $titre = _T('info_sans_titre'); } $url = generer_url_entite($id_objet, $objet, '', '', $connect); return "<a href='{$url}' class='{$objet}'>" . couper($titre, $longueur) . "</a>"; }