Ejemplo n.º 1
0
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>";
}
Ejemplo n.º 2
0
/**
 * 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;
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
/**
 * 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>";
}