Example #1
0
function bandeau_rubrique($id_rubrique, $titre_rubrique, $zdecal)
{
    static $zmax = 6;
    $nav = "<a href='" . generer_url_entite($id_rubrique, 'rubrique', '', '', false) . "'>" . supprimer_tags(preg_replace(',[\\x00-\\x1f]+,', ' ', $titre_rubrique)) . "</a>\n";
    // Limiter volontairement le nombre de sous-menus
    if (!--$zmax) {
        $zmax++;
        return "\n<li>{$nav}</li>";
    }
    $arr_rub = extraire_article($id_rubrique, $GLOBALS['db_art_cache']);
    $i = sizeof($arr_rub);
    if (!$i) {
        $zmax++;
        return "\n<li>{$nav}</li>";
    }
    $nb_col = 1;
    if ($nb_rub = count($arr_rub)) {
        $nb_col = min(10, max(1, ceil($nb_rub / 10)));
    }
    $ret = "<li class='haschild'>{$nav}<ul class='cols_{$nb_col}'>";
    foreach ($arr_rub as $id_rub => $titre_rub) {
        if (autoriser('voir', 'rubrique', $id_rub)) {
            $titre = supprimer_numero(typo($titre_rub));
            $ret .= bandeau_rubrique($id_rub, $titre, $zdecal + $i);
            $i++;
        }
    }
    $ret .= "</ul></li>\n";
    $zmax++;
    return $ret;
}
Example #2
0
/**
 * Afficher le diff d'un champ texte generique
 * @param string $champ
 * @param string $old
 * @param string $new
 * @param string $format
 *   apercu, diff ou complet
 * @return string
 */
function afficher_diff_jointure_dist($champ, $old, $new, $format = 'diff')
{
    $join = substr($champ, 9);
    $objet = objet_type($join);
    $old = explode(',', $old);
    $new = explode(',', $new);
    $liste = array();
    // les communs
    $intersection = array_intersect($new, $old);
    foreach ($intersection as $id) {
        if ($id = intval(trim($id))) {
            $liste[$id] = "<a href='" . generer_url_entite($id, $objet) . "' title='" . _T(objet_info($objet, 'texte_objet')) . " {$id}'>" . generer_info_entite($id, $objet, 'titre') . "</a>";
        }
    }
    // les supprimes
    $old = array_diff($old, $intersection);
    foreach ($old as $id) {
        if ($id = intval(trim($id))) {
            $liste[$id] = "<span class='diff-supprime'>" . "<a href='" . generer_url_entite($id, $objet) . "' title='" . _T(objet_info($objet, 'texte_objet')) . " {$id}'>" . generer_info_entite($id, $objet, 'titre') . "</a>" . "</span>";
        }
    }
    // les ajoutes
    $new = array_diff($new, $intersection);
    foreach ($new as $id) {
        if ($id = intval(trim($id))) {
            $liste[$id] = "<span class='diff-ajoute'>" . "<a href='" . generer_url_entite($id, $objet) . "' title='" . _T(objet_info($objet, 'texte_objet')) . " {$id}'>" . generer_info_entite($id, $objet, 'titre') . "</a>" . "</span>";
        }
    }
    ksort($liste);
    $liste = implode(', ', $liste);
    return $liste;
}
function BOUCLE_documenthtml_b8a8020987dd01f8087ad24f961857eb(&$Cache, &$Pile, &$doublons, &$Numrows, $SP)
{
    static $command = array();
    static $connect;
    $command['connect'] = $connect = '';
    $in = array();
    if (!is_array($a = @$Pile[0]['mode'])) {
        $in[] = $a;
    } else {
        $in = array_merge($in, $a);
    }
    if (!isset($command['table'])) {
        $command['table'] = 'documents';
        $command['id'] = '_document';
        $command['from'] = array('documents' => 'spip_documents', 'L1' => 'spip_types_documents');
        $command['type'] = array();
        $command['groupby'] = array();
        $command['select'] = array("documents.id_document", "L1.titre AS type_document", "documents.taille", "documents.mode", "documents.largeur", "documents.hauteur", "documents.titre", "L1.mime_type");
        $command['orderby'] = array();
        $command['join'] = array('L1' => array('documents', 'extension'));
        $command['limit'] = '';
        $command['having'] = array();
    }
    $command['where'] = array(array('(documents.taille > 0 OR documents.distant=\'oui\')'), array('=', 'documents.id_document', sql_quote(@$Pile[0]['id_document'], '', 'bigint(21) NOT NULL AUTO_INCREMENT')), !(is_array(@$Pile[0]['mode']) ? count(@$Pile[0]['mode']) : strlen(@$Pile[0]['mode'])) ? '' : (is_array(@$Pile[0]['mode']) ? sql_in('documents.mode', sql_quote($in)) : array('=', 'documents.mode', sql_quote(@$Pile[0]['mode'], '', 'varchar(10) NOT NULL DEFAULT \'document\''))));
    if (defined("_BOUCLE_PROFILER")) {
        $timer = time() + microtime();
    }
    $t0 = "";
    // REQUETE
    $iter = IterFactory::create("SQL", $command, array('plugins-dist/medias/modeles/img.html', 'html_b8a8020987dd01f8087ad24f961857eb', '_document', 1, $GLOBALS['spip_lang']));
    if (!$iter->err()) {
        $SP++;
        // RESULTATS
        while ($Pile[$SP] = $iter->fetch()) {
            $t0 .= '

' . vide($Pile['vars'][$_zzz = (string) 'image'] = interdire_scripts(($a = match(entites_html(sinon(table_valeur(@$Pile[0], (string) 'mode_force', null), interdire_scripts($Pile[$SP]['mode'])), true), 'image|vignette') or is_string($a) and strlen($a)) ? $a : interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'embed', null), true)) ? ' ' : '')) . (($t1 = strval(table_valeur($Pile["vars"], (string) 'image', null))) !== '' ? $t1 . ('
<span class=\'spip_document_' . $Pile[$SP]['id_document'] . ' spip_documents' . (($t2 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'align', null), true)))) !== '' ? ' spip_documents_' . $t2 : '') . (($t2 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'class', null), true)))) !== '' ? ' ' . $t2 : '') . ' spip_lien_ok\'' . (($t2 = strval(interdire_scripts(match(entites_html(table_valeur(@$Pile[0], (string) 'align', null), true), 'left|right')))) !== '' ? '
 style=\'float:' . $t2 . ';\'' : '') . '>
' . (($t2 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'lien', null), true)))) !== '' ? '<a href="' . $t2 . ('"' . (($t3 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'lien_class', null), true)))) !== '' ? ' class="' . $t3 . '"' : '') . '>') : '') . '<img src=\'' . vider_url(urlencode_1738(generer_url_entite($Pile[$SP]['id_document'], 'document', '', '', true))) . '\'' . (($t2 = strval(interdire_scripts($Pile[$SP]['largeur']))) !== '' ? ' width="' . $t2 . '"' : '') . (($t2 = strval(interdire_scripts($Pile[$SP]['hauteur']))) !== '' ? ' height="' . $t2 . '"' : '') . ' alt="' . interdire_scripts(texte_backend(typo(supprimer_numero($Pile[$SP]['titre']), "TYPO", $connect, $Pile[0]))) . '"' . (($t2 = strval(interdire_scripts(texte_backend(typo(supprimer_numero($Pile[$SP]['titre']), "TYPO", $connect, $Pile[0]))))) !== '' ? ' title="' . $t2 . '"' : '') . ' />' . interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'lien', null), true) ? '</a>' : '') . '</span>
') : '') . (!table_valeur($Pile["vars"], (string) 'image', null) ? ' ' . ('
	' . vide($Pile['vars'][$_zzz = (string) 'fichier'] = extraire_attribut(quete_logo_document(quete_document($Pile[$SP]['id_document'], ''), '', '', '', 0, 0, ''), 'src')) . '
	' . vide($Pile['vars'][$_zzz = (string) 'width'] = extraire_attribut(quete_logo_document(quete_document($Pile[$SP]['id_document'], ''), '', '', '', 0, 0, ''), 'width')) . '
	' . vide($Pile['vars'][$_zzz = (string) 'height'] = extraire_attribut(quete_logo_document(quete_document($Pile[$SP]['id_document'], ''), '', '', '', 0, 0, ''), 'height')) . '
<span class=\'spip_document_' . $Pile[$SP]['id_document'] . ' spip_documents' . (($t2 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'align', null), true)))) !== '' ? ' spip_documents_' . $t2 : '') . (($t2 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'class', null), true)))) !== '' ? ' ' . $t2 : '') . ' spip_lien_ok\'' . (($t2 = strval(interdire_scripts(match(entites_html(table_valeur(@$Pile[0], (string) 'align', null), true), 'left|right')))) !== '' ? '
 style=\'float:' . $t2 . (';' . (($t3 = strval(table_valeur($Pile["vars"], (string) 'width', null))) !== '' ? ' width:' . $t3 . 'px;' : '') . '\'') : '') . '><a href="' . interdire_scripts(($a = entites_html(table_valeur(@$Pile[0], (string) 'lien', null), true) or is_string($a) and strlen($a)) ? $a : vider_url(urlencode_1738(generer_url_entite($Pile[$SP]['id_document'], 'document', '', '', true)))) . '"' . (($t2 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'lien', null), true) ? '' : 'type="' . interdire_scripts($Pile[$SP]['mime_type']) . '"'))) !== '' ? '
 ' . $t2 : '') . (($t2 = strval(interdire_scripts(texte_backend(typo(supprimer_numero($Pile[$SP]['titre']), "TYPO", $connect, $Pile[0]))))) !== '' ? ' title="' . $t2 . '"' : '') . '><img src=\'' . table_valeur($Pile["vars"], (string) 'fichier', null) . '\' width=\'' . table_valeur($Pile["vars"], (string) 'width', null) . '\' height=\'' . table_valeur($Pile["vars"], (string) 'height', null) . '\' alt=\'' . interdire_scripts(attribut_html(strlen(typo(supprimer_numero($Pile[$SP]['titre']), "TYPO", $connect, $Pile[0])) ? interdire_scripts(typo(supprimer_numero($Pile[$SP]['titre']), "TYPO", $connect, $Pile[0])) . ' {' . interdire_scripts($Pile[$SP]['type_document']) . '}' : interdire_scripts($Pile[$SP]['type_document']))) . '\' /></a></span>
') : '');
        }
        $iter->free();
    }
    if (defined("_BOUCLE_PROFILER") and 1000 * ($timer = time() + microtime() - $timer) > _BOUCLE_PROFILER) {
        spip_log(intval(1000 * $timer) . "ms BOUCLE_document @ plugins-dist/medias/modeles/img.html", "profiler" . _LOG_AVERTISSEMENT);
    }
    return $t0;
}
Example #4
0
/**
 * Duplicata de la fonction disponible dans _core_/forum/urls
 * pour permettre l'utilisation du plugin urls_etendues avec spip 2.0
 * A retirer a la release 2.1
 *
 * @param <type> $id_forum
 * @param <type> $args
 * @param <type> $ancre
 * @return <type>
 */
function urls_generer_url_forum_dist($id_forum, $args='', $ancre='') {
	if ($id_forum = intval($id_forum)) {
		include_spip('inc/forum');
		list($type, $id,) = racine_forum($id_forum);
		if ($type) {
			if (!$ancre) $ancre = "forum$id_forum";
			return generer_url_entite($id, $type, $args, $ancre, true);
		}
	}
	return '';
}
Example #5
0
function quete_calendrier_interval_forums($limites, &$evenements)
{
    list($avant, $apres) = $limites;
    $result = sql_select("DISTINCT titre, date_heure, id_forum", "spip_forum", "date_heure >= {$avant} AND date_heure < {$apres}", '', "date_heure");
    while ($row = sql_fetch($result)) {
        $amj = date_anneemoisjour($row['date_heure']);
        $id = $row['id_forum'];
        if (autoriser('voir', 'forum', $id)) {
            $evenements[$amj][] = array('URL' => generer_url_entite($id, 'forum'), 'CATEGORIES' => 'calendrier-couleur7', 'SUMMARY' => $row['titre'], 'DTSTART' => date_ical($row['date_heure']));
        }
    }
}
/**
 * Decrire un profil
 * renvoie un tableau de ses infos
 *
 * @param int $id_auteur
 * @param bool $url
 * @return array
 */
function inc_profil_decrire($id_auteur, $url = false)
{
    static $profils = array();
    if (!isset($profils[$id_auteur]) or $url && !isset($profils[$id_auteur][$url])) {
        $profils[$id_auteur] = sql_fetsel('nom,prenom,email,bio,pgp', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
        if ($url) {
            $profils[$id_auteur]['url'] = url_absolue(generer_url_entite($id_auteur, 'auteur', '', '', false));
            $profils[$id_auteur]['nom_lien'] = "<a href='" . generer_url_entite($id_auteur, 'auteur', '', '', false) . "'>" . ($profils[$id_auteur]['prenom'] ? $profils[$id_auteur]['prenom'] : $profils[$id_auteur]['nom']) . "</a>";
        }
    }
    return $profils[$id_auteur];
}
Example #7
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>";
}
Example #8
0
function inc_tourner_dist($id_document, $document, $script, $flag, $type)
{
	global $spip_lang_right;

	if (!$document) {
		// retour d'Ajax
		$document = sql_fetsel("*", "spip_documents", "id_document = " . intval($id_document));
	}

	$prim = 'id_' . $type;
	// si pas de doc le hash sera inutilisable
	$id = intval(sql_getfetsel('id_objet', 'spip_documents_liens', "objet=".sql_quote($type)." AND id_document = " . intval($id_document)));

	$titre = $document['titre'];
	$id_vignette = $document['id_vignette'];
	$fichier = entites_html($document['fichier']);

	if (isset($document['url']))
		$url = $document['url'];
	else {
		$url = generer_url_entite($id_document, 'document');
	}

	$res = '';

	// Indiquer les documents manquants avec un panneau de warning

	if ($document['distant'] != 'oui') {
		if (!@file_exists(get_spip_doc($document['fichier']))){
			$c = _T('fichier_introuvable',
					array('fichier'=>basename($document['fichier'])));
			$res = "<img src='" . chemin_image('warning-24.gif')
				."'\n\tstyle='float: right;'\n\talt=\"$c\"\n\ttitle=\"$c\" />";
		} else {
			if ($flag AND !$id_vignette) 
				$res = boutons_rotateurs($document, $type, $id, $id_document,$script);
		}
	} else {
		$res = "\n<div class='verdana1' style='float: $spip_lang_right; text-align: $spip_lang_right;'>";
		
		// Signaler les documents distants par une icone de trombone
		$res .= "<img src='" . chemin_image('attachment.gif') . "'\n\t \n\talt=\"$fichier\"\n\ttitle=\"$fichier\" />\n";
		// Bouton permettant de copier en local le fichier
		$res .= bouton_copier_local($document, $type, $id, $id_document, $script);
		
		$res .= "</div>\n";
	}
	return tourner_greffe($id_document, $document, $url, $res);
}
Example #9
0
function action_urls_actualiser_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    if (!defined('_VAR_URLS')) {
        define('_VAR_URLS', true);
    }
    $type = $id = "";
    $res = sql_select("type,id_objet", "spip_urls", "", "", "type,id_objet");
    while ($row = sql_fetch($res)) {
        if ($row['id_objet'] !== $id or $row['type'] !== $type) {
            $id = $row['id_objet'];
            $type = $row['type'];
            generer_url_entite($id, $type, "", "", true);
        }
    }
}
function BOUCLE_art_agendahtml_78503d8cb0bd66f2d97f4b9c0f7d329a(&$Cache, &$Pile, &$doublons, &$Numrows, $SP)
{
    static $command = array();
    static $connect;
    $command['connect'] = $connect = '';
    if (!isset($command['table'])) {
        $command['table'] = 'articles';
        $command['id'] = '_art_agenda';
        $command['from'] = array('articles' => 'spip_articles', 'L1' => 'spip_mots_liens', 'L2' => 'spip_mots');
        $command['type'] = array();
        $command['groupby'] = array("articles.id_article");
        $command['select'] = array("articles.date_redac", "articles.id_article", "articles.texte", "articles.descriptif", "articles.chapo", "articles.titre", "articles.lang");
        $command['orderby'] = array('articles.date_redac');
        $command['join'] = array('L1' => array('articles', 'id_objet', 'id_article', 'L1.objet=' . sql_quote('article')), 'L2' => array('L1', 'id_mot'));
        $command['limit'] = '0,5';
        $command['having'] = array();
    }
    $command['where'] = array(quete_condition_statut('articles.statut', 'publie,prop,prepa/auteur', 'publie', ''), array('=', 'L2.titre', "'Agenda'"), array('<', 'TIMESTAMPDIFF(HOUR,articles.date_redac,NOW())/24', "1"), array('=', 'articles.lang', sql_quote($GLOBALS['spip_lang'], '', 'varchar(10) NOT NULL DEFAULT \'\'')));
    if (defined("_BOUCLE_PROFILER")) {
        $timer = time() + microtime();
    }
    $t0 = "";
    // REQUETE
    $iter = IterFactory::create("SQL", $command, array('squelettes/inc/inc-menu-agenda.html', 'html_78503d8cb0bd66f2d97f4b9c0f7d329a', '_art_agenda', 4, $GLOBALS['spip_lang']));
    if (!$iter->err()) {
        lang_select($GLOBALS['spip_lang']);
        $SP++;
        // RESULTATS
        while ($Pile[$SP] = $iter->fetch()) {
            lang_select_public($Pile[$SP]['lang'], '', $Pile[$SP]['titre']);
            $t0 .= '
				<li>' . (($t1 = strval(affdate(normaliser_date($Pile[$SP]['date_redac'])))) !== '' ? '<span>' . $t1 . (' ' . (($t2 = strval(heures(normaliser_date($Pile[$SP]['date_redac'])) != '0' ? (($t3 = strval(heures(normaliser_date($Pile[$SP]['date_redac'])))) !== '' ? $t3 . ':' : '') . minutes(normaliser_date($Pile[$SP]['date_redac'])) : '')) !== '' ? '- ' . $t2 : '') . '</span>') : '') . '
					<a class="lien' . interdire_scripts(@$Pile[0]['exposer']) . ' article" href="' . vider_url(urlencode_1738(generer_url_entite($Pile[$SP]['id_article'], 'article', '', '', true))) . '" ' . (($t1 = strval(interdire_scripts(entites_html(textebrut(filtre_introduction_dist($Pile[$SP]['descriptif'], strlen($Pile[$SP]['descriptif']) ? '' : $Pile[$SP]['chapo'] . "\n\n" . $Pile[$SP]['texte'], 500, $connect, null)))))) !== '' ? 'title="' . $t1 . '"' : '') . '>' . interdire_scripts(supprimer_numero(typo(supprimer_numero($Pile[$SP]['titre']), "TYPO", $connect, $Pile[0]))) . '</a>

				</li>
		';
            lang_select();
        }
        lang_select();
        $iter->free();
    }
    if (defined("_BOUCLE_PROFILER") and 1000 * ($timer = time() + microtime() - $timer) > _BOUCLE_PROFILER) {
        spip_log(intval(1000 * $timer) . "ms BOUCLE_art_agenda @ squelettes/inc/inc-menu-agenda.html", "profiler" . _LOG_AVERTISSEMENT);
    }
    return $t0;
}
function BOUCLE_breves_rubriqueshtml_11157eacea3e766769d2031f1e2eed04(&$Cache, &$Pile, &$doublons, &$Numrows, $SP)
{
    static $command = array();
    static $connect;
    $command['connect'] = $connect = '';
    if (!isset($command['table'])) {
        $command['table'] = 'breves';
        $command['id'] = '_breves_rubriques';
        $command['from'] = array('breves' => 'spip_breves');
        $command['type'] = array();
        $command['groupby'] = array();
        $command['select'] = array("breves.date_heure", "breves.date_heure AS date", "breves.id_breve", "breves.texte", "breves.titre", "breves.lang");
        $command['orderby'] = array('breves.date_heure DESC');
        $command['join'] = array();
        $command['limit'] = '0,10';
        $command['having'] = array();
    }
    $command['where'] = array(quete_condition_statut('breves.statut', 'publie,prop', 'publie', ''), array('=', 'breves.id_rubrique', sql_quote(@$Pile[0]['id_rubrique'], '', 'bigint(21) NOT NULL DEFAULT \'0\'')), array('=', 'breves.lang', sql_quote($GLOBALS['spip_lang'], '', 'varchar(10) NOT NULL DEFAULT \'\'')));
    if (defined("_BOUCLE_PROFILER")) {
        $timer = time() + microtime();
    }
    $t0 = "";
    // REQUETE
    $iter = IterFactory::create("SQL", $command, array('squelettes/inc/inc-breves.html', 'html_11157eacea3e766769d2031f1e2eed04', '_breves_rubriques', 2, $GLOBALS['spip_lang']));
    if (!$iter->err()) {
        lang_select($GLOBALS['spip_lang']);
        $SP++;
        // RESULTATS
        while ($Pile[$SP] = $iter->fetch()) {
            lang_select_public($Pile[$SP]['lang'], '', $Pile[$SP]['titre']);
            $t0 .= '
          	<li>' . (($t1 = strval(interdire_scripts(affdate(normaliser_date($Pile[$SP]['date']))))) !== '' ? '<span>' . $t1 . '</span>' : '') . '
              <a href="' . vider_url(urlencode_1738(generer_url_entite($Pile[$SP]['id_breve'], 'breve', '', '', true))) . '" ' . (($t1 = strval(interdire_scripts(entites_html(textebrut(filtre_introduction_dist('', $Pile[$SP]['texte'], 300, $connect, null)))))) !== '' ? 'title="' . $t1 . '"' : '') . '>' . interdire_scripts(supprimer_numero(typo(supprimer_numero($Pile[$SP]['titre']), "TYPO", $connect, $Pile[0]))) . '</a>
          	</li>
            ';
            lang_select();
        }
        lang_select();
        $iter->free();
    }
    if (defined("_BOUCLE_PROFILER") and 1000 * ($timer = time() + microtime() - $timer) > _BOUCLE_PROFILER) {
        spip_log(intval(1000 * $timer) . "ms BOUCLE_breves_rubriques @ squelettes/inc/inc-breves.html", "profiler" . _LOG_AVERTISSEMENT);
    }
    return $t0;
}
function BOUCLE_auteurshtml_bc3326b3fba39516fdcfa67a49c7ff7f(&$Cache, &$Pile, &$doublons, &$Numrows, $SP)
{
    static $command = array();
    static $connect;
    $command['connect'] = $connect = '';
    if (!isset($command['table'])) {
        $command['table'] = 'auteurs';
        $command['id'] = '_auteurs';
        $command['from'] = array('auteurs' => 'spip_auteurs', 'L1' => 'spip_auteurs_liens');
        $command['type'] = array();
        $command['groupby'] = array("auteurs.id_auteur");
        $command['select'] = array("auteurs.nom", "auteurs.id_auteur");
        $command['orderby'] = array('auteurs.nom');
        $command['join'] = array('L1' => array('auteurs', 'id_auteur'));
        $command['limit'] = '';
        $command['having'] = array();
    }
    $command['where'] = array(quete_condition_statut('auteurs.statut', '!5poubelle', '!5poubelle', ''), array('=', 'L1.id_objet', sql_quote(@$Pile[0]['id_objet'], '', 'bigint(21) NOT NULL DEFAULT \'0\'')), array('=', 'L1.objet', sql_quote(@$Pile[0]['objet'], '', 'varchar(25) NOT NULL DEFAULT \'\'')));
    if (defined("_BOUCLE_PROFILER")) {
        $timer = time() + microtime();
    }
    $t0 = "";
    // REQUETE
    $iter = IterFactory::create("SQL", $command, array('squelettes-dist/modeles/lesauteurs.html', 'html_bc3326b3fba39516fdcfa67a49c7ff7f', '_auteurs', 9, $GLOBALS['spip_lang']));
    if (!$iter->err()) {
        $SP++;
        // RESULTATS
        while ($Pile[$SP] = $iter->fetch()) {
            $t1 = '
<span class="vcard author"><a class="url fn spip_in" href="' . vider_url(urlencode_1738(generer_url_entite($Pile[$SP]['id_auteur'], 'auteur', '', '', true))) . '">' . interdire_scripts(typo(supprimer_numero($Pile[$SP]['nom']), "TYPO", $connect, $Pile[0])) . '</a></span>';
            $t0 .= (strlen($t1) && strlen($t0) ? ', ' : '') . $t1;
        }
        $iter->free();
    }
    if (defined("_BOUCLE_PROFILER") and 1000 * ($timer = time() + microtime() - $timer) > _BOUCLE_PROFILER) {
        spip_log(intval(1000 * $timer) . "ms BOUCLE_auteurs @ squelettes-dist/modeles/lesauteurs.html", "profiler" . _LOG_AVERTISSEMENT);
    }
    return $t0;
}
function balise_LANGUE_PREFEREE_SECTEUR_REDIRECTION_dyn($liste_rub_exclues="")
{
	include_spip('inc/meta');

	// Recuperation des langues des secteurs
	$langues_secteurs = array();
	include_spip('base/abstract_sql');
	$query = 'SELECT DISTINCT(lang) FROM spip_rubriques WHERE id_parent=0 AND statut="publie" GROUP BY lang';
	if ($res = sql_query($query)) { // was spip_query($query)) {
		while($row = sql_fetch($res)) { // was spip_fetch_array
			$langues_secteurs[] = $row['lang'];
		}
	}
	// Détection de la langue preferee
	if (isset($_GET['lang']) && in_array($_GET['lang'], $langues_secteurs)) {
		// Soit passee dans l'url, auquel cas c'est un choix qu'on conserve pour la suite
		$langue_preferee = $_GET['lang'];
		include_spip('inc/cookie');
		// On pose un cookie d'un an de duree de vie
		spip_setcookie('spip_langue_preferee', $langue_preferee, time() + 3660*24*365, chemin_cookie());
	} elseif(isset($_COOKIE['spip_lang']) && in_array($_COOKIE['spip_lang'], $langues_secteurs)){
		//Soit un cookie lang est présent
		$langue_preferee = $_COOKIE['spip_lang'];
		include_spip('inc/cookie');
		// On pose un cookie d'un an de duree de vie
		spip_setcookie('spip_langue_preferee', $langue_preferee, time() + 3660*24*365, chemin_cookie());
	}elseif (isset($_COOKIE['spip_langue_preferee']) && in_array($_COOKIE['spip_langue_preferee'], $langues_secteurs)) {
		// Soit deja enregistree dans un cookie
		$langue_preferee = $_COOKIE['spip_langue_preferee'];
	} else {
		// Soit indeterminee
		$langues_navigateur = getenv('HTTP_ACCEPT_LANGUAGE');
		// On supprime les taux de pertinence des langues acceptees
		$langues_navigateur = preg_replace("/;q=[.0-9]+(,)?/", "$1", $langues_navigateur);
		$langues_navigateur = explode(',', $langues_navigateur);
		// Quelles sont les langues acceptees disponibles dans les secteurs
		$langues_possibles = array_intersect($langues_navigateur, $langues_secteurs);
		if (count($langues_possibles)) {
			list(, $langue_preferee) = each($langues_possibles);
		} else {
			// fr-ca -> fr
			$langues_navigateur_reduites = array();
			foreach($langues_navigateur as $langue) {
				$langue_reduite = substr($langue, 0, 2);
				if (!in_array($langue_reduite, $langues_navigateur_reduites)) {
					$langues_navigateur_reduites[] = $langue_reduite;
				}
			}
			// Quelles sont les langues acceptees reduites disponibles dans les secteurs
			$langues_reduites_possibles = array_intersect($langues_navigateur_reduites, $langues_secteurs);
			if (count($langues_reduites_possibles)) {
				list(, $langue_preferee) = each($langues_reduites_possibles);
			} elseif (in_array(lire_meta('langue_site'), $langues_secteurs)) {
				// Quelle est alors la langue par defaut du site
				$langue_preferee = lire_meta('langue_site');
			} else {
				// Tant pis, on prend le premier secteur qui vient...
				list(, $langue_preferee) = each($langues_secteurs);
			}
		}
	}

	// On recupere l'id du premier secteur trouve correspondant a la langue preferee (tant pis s'il y en a plusieurs)
	if (!empty($liste_rub_exclues)) {
		$query='SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0 AND lang='._q($langue_preferee).' AND id_rubrique NOT IN ('.$liste_rub_exclues.') LIMIT 0,1';
	} else {
		$query = 'SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0 AND lang='._q($langue_preferee).' LIMIT 0,1';
	}
	$res = sql_query($query) ; // was spip_query($query);
	if ($row = sql_fetch($res)) { // was spip_fetch_array
		$id_rubrique = $row['id_rubrique'];
		if ( $GLOBALS['spip_version_code']<1.93) { // spip 1.9.x
			if (!function_exists('generer_url_rubrique')) { include_spip('urls/'.$GLOBALS['type_urls']); }
			$url_rubrique = generer_url_rubrique($id_rubrique);
		} else { // spip 2.x
			if (!function_exists('generer_url_entite')) { include_spip('inc/utils'); }
			$url_rubrique = generer_url_entite($id_rubrique,'rubrique');
		}
		spip_log('Redirection vers '.$url_rubrique);
		header('Location: '.$url_rubrique);
		exit;
	}
}
Example #14
0
/**
 * Retourne la vignette explicitement attachee a un document
 * le resutat est un fichier local existant, ou une URL
 * ou vide si pas de vignette
 *
 * @param array $row
 * @param string $connect
 * @return string
 */
function vignette_logo_document($row, $connect = '')
{
    if (!$row['id_vignette']) {
        return '';
    }
    $fichier = quete_fichier($row['id_vignette'], $connect);
    if ($connect) {
        $site = quete_meta('adresse_site', $connect);
        $dir = quete_meta('dir_img', $connect);
        return "{$site}/{$dir}{$fichier}";
    }
    $f = get_spip_doc($fichier);
    if ($f and @file_exists($f)) {
        return $f;
    }
    if ($row['mode'] !== 'vignette') {
        return '';
    }
    return generer_url_entite($row['id_document'], 'document', '', '', $connect);
}
function BOUCLE_auteurshtml_ce97d1249b67fffb20134bd49b8a9e29(&$Cache, &$Pile, &$doublons, &$Numrows, $SP)
{
    static $command = array();
    static $connect;
    $command['connect'] = $connect = '';
    if (!isset($command['table'])) {
        $command['table'] = 'auteurs';
        $command['id'] = '_auteurs';
        $command['from'] = array('auteurs' => 'spip_auteurs', 'L1' => 'spip_auteurs_liens', 'L2' => 'spip_articles');
        $command['type'] = array();
        $command['groupby'] = array("auteurs.id_auteur");
        $command['select'] = array("auteurs.nom", "auteurs.id_auteur");
        $command['orderby'] = array('auteurs.nom');
        $command['where'] = array(quete_condition_statut('L2.statut', '!', 'publie', ''), quete_condition_statut('auteurs.statut', '!5poubelle', '!5poubelle', ''));
        $command['join'] = array('L1' => array('auteurs', 'id_auteur'), 'L2' => array('L1', 'id_article', 'id_objet', 'L1.objet=' . sql_quote('article')));
        $command['limit'] = '';
        $command['having'] = array();
    }
    if (defined("_BOUCLE_PROFILER")) {
        $timer = time() + microtime();
    }
    $t0 = "";
    // REQUETE
    $iter = IterFactory::create("SQL", $command, array('squelettes/auteur.html', 'html_ce97d1249b67fffb20134bd49b8a9e29', '_auteurs', 55, $GLOBALS['spip_lang']));
    if (!$iter->err()) {
        $SP++;
        // RESULTATS
        while ($Pile[$SP] = $iter->fetch()) {
            $t0 .= '
						<ul>
							<li>
								<a href="' . vider_url(urlencode_1738(generer_url_entite($Pile[$SP]['id_auteur'], 'auteur', '', '', true))) . '">' . interdire_scripts(typo(supprimer_numero($Pile[$SP]['nom']), "TYPO", $connect, $Pile[0])) . '</a>	
							</li>
						</ul>
						';
        }
        $iter->free();
    }
    if (defined("_BOUCLE_PROFILER") and 1000 * ($timer = time() + microtime() - $timer) > _BOUCLE_PROFILER) {
        spip_log(intval(1000 * $timer) . "ms BOUCLE_auteurs @ squelettes/auteur.html", "profiler" . _LOG_AVERTISSEMENT);
    }
    return $t0;
}
/**
 * Construitre l'email personalise de notification d'un forum
 *
 * @param array $t
 * @param string $email
 * @param array $contexte
 * @return string
 */
function inc_email_notification_forum_dist($t, $email, $contexte = array())
{
    static $contextes_store = array();
    if (!isset($contextes_store[$t['id_forum']])) {
        $url = '';
        $id_forum = $t['id_forum'];
        if ($t['statut'] == 'prive') {
            if ($t['id_objet']) {
                $url = generer_url_entite($t['id_objet'], $t['objet'], '', 'forum' . $id_forum, false);
            }
        } else {
            if ($t['statut'] == 'privrac') {
                $url = generer_url_ecrire('forum') . '#forum' . $id_forum;
            } else {
                if ($t['statut'] == 'privadm') {
                    $url = generer_url_ecrire('forum', 'quoi=admin') . '#forum' . $id_forum;
                } else {
                    if ($t['statut'] == 'publie') {
                        $url = generer_url_entite($id_forum, 'forum');
                    } else {
                        $url = generer_url_ecrire('controler_forum', "debut_id_forum=" . $id_forum);
                    }
                }
            }
        }
        if (!$url) {
            spip_log("forum {$id_forum} sans referent", 'notifications');
            $url = './';
        }
        if ($t['id_objet']) {
            include_spip('inc/filtres');
            $t['titre_source'] = generer_info_entite($t['id_objet'], $t['objet'], 'titre');
        }
        $t['url'] = $url;
        // detecter les url des liens du forum
        // pour la moderation (permet de reperer les SPAMS avec des liens caches)
        // il faut appliquer le traitement de raccourci car sinon on rate des liens sous forme [->..] utilises par les spammeurs !
        include_spip("public/interfaces");
        $table_objet = "forum";
        $links = array();
        foreach ($t as $champ => $v) {
            $champ = strtoupper($champ);
            $traitement = isset($GLOBALS['table_des_traitements'][$champ]) ? $GLOBALS['table_des_traitements'][$champ] : null;
            if (is_array($traitement) and (isset($traitement[$table_objet]) or isset($traitement[0]))) {
                $traitement = $traitement[isset($traitement[$table_objet]) ? $table_objet : 0];
                $traitement = str_replace('%s', "'" . texte_script($v) . "'", $traitement);
                eval("\$v = {$traitement};");
            }
            $links = $links + extraire_balises($v, 'a');
        }
        $links = extraire_attribut($links, 'href');
        $links = implode("\n", $links);
        $t['liens'] = $links;
        $contextes_store[$t['id_forum']] = $t;
    }
    $fond = "notifications/forum_poste";
    if (isset($contexte['fond'])) {
        $fond = $contexte['fond'];
        unset($contexte['fond']);
    }
    $t = array_merge($contextes_store[$t['id_forum']], $contexte);
    // Rechercher eventuellement la langue du destinataire
    if (null !== ($l = sql_getfetsel('lang', 'spip_auteurs', "email=" . sql_quote($email)))) {
        $l = lang_select($l);
    }
    $parauteur = strlen($t['auteur']) <= 2 ? '' : " " . _T('forum_par_auteur', array('auteur' => $t['auteur'])) . ($t['email_auteur'] ? ' <' . $t['email_auteur'] . '>' : '');
    $titre = textebrut(typo($t['titre_source']));
    if ($titre) {
        $forum_poste_par = _T($t['objet'] == 'article' ? 'forum:forum_poste_par' : 'forum:forum_poste_par_generique', array('parauteur' => $parauteur, 'titre' => $titre, 'objet' => $t['objet']));
    } else {
        $forum_poste_par = _T('forum:forum_poste_par_court', array('parauteur' => $parauteur));
    }
    $t['par_auteur'] = $forum_poste_par;
    $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
    // pour nettoyer_titre_email
    $corps = recuperer_fond($fond, $t);
    if ($l) {
        lang_select();
    }
    return $corps;
}
Example #17
0
/**
 * Construitre l'email personalise de notification d'un forum
 *
 * @param array $t
 * @param string $email
 * @return string
 */
function email_notification_forum ($t, $email) {
	static $contexte = array();

	if(!isset($contexte[$t['id_forum']])){
		$url = '';
		$id_forum = $t['id_forum'];

		if ($t['statut'] == 'prive') # forum prive
		{
			if ($t['id_article'])
				$url = generer_url_ecrire('articles', 'id_article='.$t['id_article']).'#id'.$id_forum;
			else if ($t['id_breve'])
				$url = generer_url_ecrire('breves_voir', 'id_breve='.$t['id_breve']).'#id'.$id_forum;
			else if ($t['id_syndic'])
				$url = generer_url_ecrire('sites', 'id_syndic='.$t['id_syndic']).'#id'.$id_forum;
		}
		else if ($t['statut'] == 'privrac') # forum general
		{
			$url = generer_url_ecrire('forum').'#id'.$id_forum;
		}
		else if ($t['statut'] == 'privadm') # forum des admins
		{
			$url = generer_url_ecrire('forum_admin').'#id'.$id_forum;
		}
		else if ($t['statut'] == 'publie') # forum publie
		{
			$url = generer_url_entite($id_forum, 'forum');
		}
		else #  forum modere, spam, poubelle direct ....
		{
			$url = generer_url_ecrire('controle_forum', "debut_id_forum=".$id_forum);
		}

		if (!$url) {
			spip_log("forum $id_forum sans referent",'notifications');
			$url = './';
		}
		if ($t['id_article']) {
			$titre = sql_getfetsel("titre", "spip_articles", "id_article=".sql_quote($t['id_article']));
		}
		if ($t['id_message']) {
			$titre = sql_getfetsel("titre", "spip_messages", "id_message=".sql_quote($t['id_message']));
		}

		$t['titre_source'] = $titre;
		$t['url'] = $url;

		// detecter les url des liens du forum
		// pour la moderation (permet de reperer les SPAMS avec des liens caches)
		$links = array();
		foreach ($t as $champ)
			$links = $links + extraire_balises($champ,'a');
		$links = extraire_attribut($links,'href');
		$links = implode("\n",$links);
		$t['liens'] = $links;

		$contexte[$t['id_forum']] = $t;
	}

	$t = $contexte[$t['id_forum']];
		// Rechercher eventuellement la langue du destinataire
	if (NULL !== ($l = sql_getfetsel('lang', 'spip_auteurs', "email=" . sql_quote($email))))
		$l = lang_select($l);

	$parauteur = (strlen($t['auteur']) <= 2) ? '' :
		(" " ._T('forum_par_auteur', array(
			'auteur' => $t['auteur'])
		) .
		 ($t['email_auteur'] ? ' <' . $t['email_auteur'] . '>' : ''));

	$titre = textebrut(typo($t['titre_source']));
	$forum_poste_par = ($t['id_article']
		? _T('forum_poste_par', array(
			'parauteur' => $parauteur, 'titre' => $titre))
		: $parauteur . ' (' . $titre . ')');

	$t['par_auteur'] = $forum_poste_par;

	$envoyer_mail = charger_fonction('envoyer_mail','inc'); // pour nettoyer_titre_email
	$corps = recuperer_fond("notifications/forum_poste",$t);

	if ($l)
		lang_select();

	return $corps;
}
Example #18
0
function urls_propres_dist($i, $entite, $args = '', $ancre = '')
{
    if (is_numeric($i)) {
        return _generer_url_propre($entite, $i, $args, $ancre);
    }
    $url = $i;
    $id_objet = $type = 0;
    $url_redirect = null;
    // recuperer les &debut_xx;
    if (is_array($args)) {
        $contexte = $args;
    } else {
        parse_str($args, $contexte);
    }
    // Migration depuis anciennes URLs ?
    // traiter les injections domain.tld/spip.php/n/importe/quoi/rubrique23
    if ($GLOBALS['profondeur_url'] <= 0 and $_SERVER['REQUEST_METHOD'] != 'POST') {
        include_spip('inc/urls');
        $r = nettoyer_url_page($i, $contexte);
        if ($r) {
            list($contexte, $type, , , $suite) = $r;
            $_id = id_table_objet($type);
            $id_objet = $contexte[$_id];
            $url_propre = generer_url_entite($id_objet, $type);
            if (strlen($url_propre) and !strstr($url, $url_propre)) {
                list(, $hash) = array_pad(explode('#', $url_propre), 2, null);
                $args = array();
                foreach (array_filter(explode('&', $suite)) as $fragment) {
                    if ($fragment != "{$_id}={$id_objet}") {
                        $args[] = $fragment;
                    }
                }
                $url_redirect = generer_url_entite($id_objet, $type, join('&', array_filter($args)), $hash);
                return array($contexte, $type, $url_redirect, $type);
            }
        }
    }
    /* Fin compatibilite anciennes urls */
    // Chercher les valeurs d'environnement qui indiquent l'url-propre
    $url_propre = preg_replace(',[?].*,', '', $url);
    // Mode Query-String ?
    $is_qs = false;
    if (!$url_propre and preg_match(',[?]([^=/?&]+)(&.*)?$,', $url, $r)) {
        $url_propre = $r[1];
        $is_qs = true;
    }
    if (!$url_propre or $url_propre == _DIR_RESTREINT_ABS or $url_propre == _SPIP_SCRIPT) {
        return;
    }
    // qu'est-ce qu'il veut ???
    // gerer le cas de retour depuis des urls arbos
    // mais si url arbo ne trouve pas, on veut une 404 par securite
    if ($GLOBALS['profondeur_url'] > 0 and !defined('_FORCE_URLS_PROPRES')) {
        $urls_anciennes = charger_fonction('arbo', 'urls');
        return $urls_anciennes($url_propre, $entite, $contexte);
    }
    include_spip('base/abstract_sql');
    // chercher dans la table des URLS
    // Compatibilite avec propres2
    $url_propre = preg_replace(',\\.html$,i', '', $url_propre);
    // Revenir en utf-8 si encodage type %D8%A7 (farsi)
    $url_propre = rawurldecode($url_propre);
    // Compatibilite avec les anciens marqueurs d'URL propres
    // Tester l'entree telle quelle (avec 'url_libre' des sites ont pu avoir des entrees avec marqueurs dans la table spip_urls)
    if (!($row = sql_fetsel('id_objet, type, date, url', 'spip_urls', 'url=' . sql_quote($url_propre, '', 'TEXT')))) {
        // Sinon enlever les marqueurs eventuels
        $url_propre2 = retirer_marqueurs_url_propre($url_propre);
        $row = sql_fetsel('id_objet, type, date, url', 'spip_urls', 'url=' . sql_quote($url_propre2, '', 'TEXT'));
    }
    if ($row) {
        $type = $row['type'];
        $col_id = id_table_objet($type);
        $contexte[$col_id] = $row['id_objet'];
        $entite = $row['type'];
        // Si l'url est vieux, donner le nouveau
        if ($recent = sql_fetsel('url, date', 'spip_urls', 'type=' . sql_quote($row['type'], '', 'TEXT') . ' AND id_objet=' . sql_quote($row['id_objet']) . ' AND date>' . sql_quote($row['date'], '', 'TEXT') . ' AND url<>' . sql_quote($row['url'], '', 'TEXT'), '', 'date DESC', 1)) {
            // Mode compatibilite pour conserver la distinction -Rubrique-
            if (_MARQUEUR_URL) {
                $marqueur = unserialize(_MARQUEUR_URL);
                $marqueur1 = $marqueur[$type . '1'];
                // debut '+-'
                $marqueur2 = $marqueur[$type . '2'];
                // fin '-+'
            } else {
                $marqueur1 = $marqueur2 = '';
            }
            $url_redirect = $marqueur1 . $recent['url'] . $marqueur2;
        }
    }
    if ($entite == '' or $entite == 'type_urls') {
        if ($type) {
            $entite = objet_type($type);
        } else {
            // Si ca ressemble a une URL d'objet, ce n'est pas la home
            // et on provoque un 404
            if (preg_match(',^[^\\.]+(\\.html)?$,', $url)) {
                $entite = '404';
                $contexte['erreur'] = '';
                // l'url n'existe pas...
                // on ne sait plus dire de quel type d'objet il s'agit
                // sauf si on a le marqueur. et la c'est un peu sale...
                if (_MARQUEUR_URL) {
                    $fmarqueur = @array_flip(unserialize(_MARQUEUR_URL));
                    preg_match(',^([+][-]|[-+@_]),', $url_propre, $regs);
                    $objet = $regs ? substr($fmarqueur[$regs[1]], 0, n - 1) : 'article';
                    $contexte['erreur'] = _T(($objet == 'rubrique' or $objet == 'breve') ? 'public:aucune_' . $objet : 'public:aucun_' . $objet);
                }
            }
        }
    }
    return array($contexte, $entite, $url_redirect, $is_qs ? $entite : null);
}
Example #19
0
function formulaires_login_traiter_dist($cible = "", $login = "", $prive = null)
{
    $res = array();
    // Si on se connecte dans l'espace prive,
    // ajouter "bonjour" (repere a peu pres les cookies desactives)
    if (is_null($prive) ? is_url_prive($cible) : $prive) {
        $cible = parametre_url($cible, 'bonjour', 'oui', '&');
    }
    if ($cible == '@page_auteur') {
        $cible = generer_url_entite($GLOBALS['auteur_session']['id_auteur'], 'auteur');
    }
    if ($cible) {
        $cible = parametre_url($cible, 'var_login', '', '&');
        // transformer la cible absolue en cible relative
        // pour pas echouer quand la meta adresse_site est foireuse
        if (strncmp($cible, $u = url_de_base(), strlen($u)) == 0) {
            $cible = "./" . substr($cible, strlen($u));
        } elseif (tester_url_absolue($cible) and !defined('_AUTORISER_LOGIN_ABS_REDIRECT')) {
            $cible = "";
        }
    }
    // Si on est connecte, envoyer vers la destination
    if ($cible and $cible != self()) {
        if (!headers_sent() and !$_GET['var_mode']) {
            include_spip('inc/headers');
            $res['redirect'] = $cible;
        } else {
            $res['message_ok'] = inserer_attribut("<a>" . _T('login_par_ici') . "</a>", 'href', $cible);
        }
    }
    return $res;
}
Example #20
0
/**
 * Retourne un texte HTML présentant la liste des dépendances d'un plugin 
 *
 * Des liens vers les plugins dépendants sont présents lorsque les plugins
 * en dépendance sont connus dans notre base.
 * 
 * @param string $balise_serialisee
 *     Informations des dépendances (tableau sérialisé) tel que stocké
 *     en base dans la table spip_paquets
 * @param string $dependance
 *     Type de dépendances à afficher (necessite ou utilise).
 *     Une autre valeur indique qu'on demande la liste des librairies dépendantes.
 * @param string $sep
 *     Séparateur entre les noms de dépendances
 * @param string $lien
 * 	   Type de lien affecté au plugin référencé dans la base locale. Prend les valeurs :
 *
 * 		- local : le lien pointe vers la page publique du plugin sur le site lui-même. Il faut
 * donc que le site propose des pages publiques pour les plugins sinon une 404 sera affichée;
 * 		- pluginspip : le lien pointe vers la page du plugin sur le site de référence Plugins SPIP;
 * 		- non : aucun lien n'est affiché.
 * @return string
 *     Texte informant des dépendances
**/
function svp_afficher_dependances($balise_serialisee, $dependance = 'necessite', $sep = '<br />', $lien = 'local')
{
    $texte = '';
    $t = unserialize($balise_serialisee);
    $dependances = $t[$dependance];
    if (is_array($dependances)) {
        ksort($dependances);
        foreach ($dependances as $_compatibilite => $_dependance) {
            $compatibilite = $_compatibilite !== 0 ? _T('svp:info_compatibilite_dependance', array('compatibilite' => svp_afficher_intervalle($_compatibilite, 'SPIP'))) : '';
            if ($compatibilite) {
                $texte .= ($texte ? str_repeat($sep, 2) : '') . $compatibilite;
            }
            foreach ($_dependance as $_plugin) {
                if ($texte) {
                    $texte .= $sep;
                }
                if ($dependance == 'necessite' or $dependance == 'utilise') {
                    if ($plugin = sql_fetsel('id_plugin, nom', 'spip_plugins', 'prefixe=' . sql_quote($_plugin['nom']))) {
                        $nom = extraire_multi($plugin['nom']);
                        if ($lien == 'non') {
                            $logiciel = $nom;
                        } else {
                            $url = $lien == 'local' ? generer_url_entite($plugin['id_plugin'], 'plugin') : "http://plugins.spip.net/{$_plugin['nom']}.html";
                            $bulle = _T('svp:bulle_aller_plugin');
                            $logiciel = '<a href="' . $url . '" title="' . $bulle . '">' . $nom . '</a>';
                        }
                    } else {
                        // Cas ou le plugin n'est pas encore dans la base SVP.
                        // On affiche son préfixe, cependant ce n'est pas un affichage devant perdurer
                        $logiciel = $_plugin['nom'];
                    }
                    $intervalle = '';
                    if (isset($_plugin['compatibilite'])) {
                        $intervalle = svp_afficher_intervalle($_plugin['compatibilite'], $logiciel);
                    }
                    $texte .= $intervalle ? $intervalle : $logiciel;
                } else {
                    // On demande l'affichage des librairies
                    $texte .= '<a href="' . $_plugin['lien'] . '" title="' . _T('svp:bulle_telecharger_librairie') . '">' . $_plugin['nom'] . '</a>';
                }
            }
        }
    }
    return $texte;
}
function exec_spiplistes_courrier_previsu () {

	global $meta;

	include_spip('base/abstract_sql');
	include_spip('inc/presentation');
	include_spip('inc/distant');
	include_spip('inc/date');
	include_spip('inc/urls');
	include_spip('inc/meta');
	include_spip('inc/filtres');
	include_spip('inc/lang');
	include_spip('inc/spiplistes_api');
	include_spip('inc/spiplistes_api_courrier');
	include_spip('inc/spiplistes_api_abstract_sql');
	include_spip('public/assembler');
	
	spiplistes_debug_log ('ACTION: exec_spiplistes_courrier_previsu()');

	$eol = PHP_EOL;
	
	$int_values = array(
		'id_rubrique', 'id_mot', 'id_courrier', 'id_liste'
		, 'annee', 'mois', 'jour', 'heure', 'minute'
	);
	$str_values = array(
		'lang'
		, 'avec_intro', 'message_intro'
		, 'avec_patron', 'patron', 'patron_pos'
		, 'avec_sommaire'
		, 'titre', 'message', 'pied_patron'
		, 'Confirmer', 'date'
		, 'lire_base', 'format', 'plein_ecran'
		, 'date_sommaire'
		, 'oeil_html', 'oeil_texte'
	);
	foreach(array_merge($str_values, $int_values) as $key) {
		$$key = _request($key);
		// méfiance sur jQuery 1.4.4 qui semble
		// ne plus transmettre les vars qu'en 1.4.2
		// @todo: a creuser, verifier les autres vars ajax transmises
		//spiplistes_debug_log('PREVISU: '.$key.': '.$$key);
	}
	foreach($int_values as $key) {
		$$key = intval($$key);
	}

	$date = format_mysql_date($annee,$mois,$jour,$heure,$minute);
	
	$charset = $meta['charset'];

	$contexte = array(
			'id_courrier' => $id_courrier
			, 'lang' => $lang
			);
	
	list($lien_html, $lien_texte) = spiplistes_courriers_assembler_patron (
		_SPIPLISTES_PATRONS_TETE_DIR . spiplistes_pref_lire('lien_patron')
		, $contexte
		, !((spiplistes_pref_lire('opt_lien_en_tete_courrier') == 'oui') && $id_courrier)
		);
	
	// si envoi a une liste, reprendre le patron de pied de la liste
	list($pied_html, $pied_texte) = spiplistes_pied_page_assembler_patron($id_liste, $lang);
		
	$texte_intro = $texte_patron =
		$tampon_html = $tampon_texte =
		$sommaire_html = '';
	
	if(spiplistes_pref_lire('opt_ajout_tampon_editeur') == 'oui') {
		list($tampon_html, $tampon_texte) = spiplistes_tampon_assembler_patron();
	}
	
	if($lire_base) { 
		// prendre le courrier enregistre dans la base
		$sql_select = 'texte,titre' . (($format=='texte') ? ',message_texte' : '');
		if(
			$id_courrier 
			&& ($row = sql_fetsel($sql_select, "spip_courriers", "id_courrier=".sql_quote($id_courrier), "", "", 1))
		) {
			foreach(explode(",", $sql_select) as $key) {
				$$key = propre($row[$key]);
			}
			
			//if($plein_ecran) {
			
				$texte_html = ''
					. $lien_html
					. $texte
					. $pied_html
					. $tampon_html
					;
					
				if($format=="texte") {
				
					header("Content-Type: text/plain; charset=$charset");
					
					// forcer IE a afficher en ligne. 
					header("Content-Disposition: inline; filename=spiplistes-previsu.txt");

					$message_texte = 
						empty($message_texte) 
						? spiplistes_courrier_version_texte($texte_html) 
						: spiplistes_courrier_version_texte($lien_texte)
							. spiplistes_courrier_version_texte($message_texte)
							. $pied_texte
							. spiplistes_courrier_version_texte($tampon_texte)
						;
					echo($message_texte);
					exit(0);
				}
				// else 
				$texte_html = ''
					. '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN">'.$eol
					. (($lang) ? '<html lang="'.$lang.'" dir="ltr">'.$eol : '')
					. '<head>'.$eol
					. '<meta http-equiv="Content-Type" content="text/html; charset='.$charset.'">'.$eol
					. '<meta http-equiv="Pragma" content="no-cache">'.$eol
					. '<title>'.textebrut($titre).'</title>'.$eol
					. '</head>'.$eol
					. '<body style="text-align:center">'.$eol
					. '<div style="margin:0 auto">'.$eol
					. $texte_html
					. '</div>'.$eol
					. '</body>'.$eol
					. '</html>'.$eol
					;
				ajax_retour($texte_html);
				exit(0);
			//} // end if plein_ecran
		}
		else {
			echo(_T('spiplistes:Erreur_courrier_introuvable'));
		}
	}
	
	//////////////////////////////////////////////////
	// si nouveau courrier (pas dans la base), generer un apercu
	else {
		
		//spiplistes_debug_log('ACTION: generate preview');

		$intro_html = $intro_texte = 
			$sommaire_html = $sommaire_texte = '';
		
		if($avec_intro == 'oui') {
			$ii = propre($message_intro);
			$intro_html = '<div>'.$ii.'</div>'.$eol;
			$intro_texte = spiplistes_courrier_version_texte($ii).$eol.$eol;
		} 

		if($avec_patron == 'oui') {
			// generer le contenu (editeur)

			include_spip('public/assembler');	
			$contexte_template = array(
				'date' => trim ($date)
				, 'id_rubrique' => $id_rubrique
				, 'id_mot' => $id_mot
				, 'patron' => $patron
				, 'lang' => $lang
				, 'sujet' => $titre
				, 'message' => $message
			);
			
			$titre_html = _T('spiplistes:lettre_info').' '.$nomsite;
			$titre_texte = spiplistes_courrier_version_texte($titre_html) . $eol;

			list($message_html, $message_texte) = spiplistes_courriers_assembler_patron (
				_SPIPLISTES_PATRONS_DIR . $patron
				, $contexte_template);
				
		} // end if($avec_patron == 'oui')

		else {
			$titre_html = propre($titre);
			$message_html = propre($message);
			$titre_texte = spiplistes_courrier_version_texte($titre_html) . $eol;
			$message_texte = spiplistes_courrier_version_texte($message_html) . $eol;
		}
		
		if($avec_sommaire == 'oui') {

			if($id_rubrique > 0) {

				$sql_where = array('id_rubrique='.sql_quote($id_rubrique)
					, "statut=".sql_quote('publie'));
				
				if($date_sommaire == 'oui') {
					$sql_where[] = "date >= " . sql_quote($date);
				}
				if($sql_result = sql_select("titre,id_article"
					, "spip_articles"
					, $sql_where
					)) {
					while($row = sql_fetch($sql_result)) {
						$url = 
							(spiplistes_spip_est_inferieur_193())
							? generer_url_article($row['id_article'])
							: generer_url_entite($row['id_article'], 'article')
							;
						$ii = typo($row['titre']);
						$sommaire_html .= "<li> <a href='" . $url . "'>" . $ii . '</a></li>'.$eol;
						$sommaire_texte .= " - " . textebrut($ii) . "\n   " . $url . $eol;
					}
				}
			}
		
			if($id_mot > 0) {
				if($sql_result = sql_select("a.titre,a.id_article"
					, "spip_articles AS a LEFT JOIN spip_mots_articles AS m ON a.id_article=m.id_article"
					, array(
						"a.statut=".sql_quote('publie')
						, "m.id_mot=".sql_quote($id_mot)
						, "a.date >= " . sql_quote($sql_date)
						)
					)) {
					while($row = sql_fetch($sql_result)) {
						$ii = typo($row['titre']);
						$url = 
							(spiplistes_spip_est_inferieur_193())
							? generer_url_article($row['id_article'])
							: generer_url_entite($row['id_article'], 'article')
							;
						$sommaire_html .= "<li> <a href='" . $url . "'> " . $ii . "</a></li>\n";
						$sommaire_texte .= " - " . textebrut($ii) . "\n   " . $url . $eol;
					}
				}
			}
			
			if(!empty($sommaire_html)) {
				$sommaire_html = "<ul>" . $sommaire_html . "</ul>\n";
				$message_html = 
					($patron_pos == "avant")
					? $message_html . $sommaire_html
					: $sommaire_html . $message_html
					;
				$message_texte = 
					($patron_pos == "avant")
					? $message_texte . $eol . $sommaire_texte
					: $sommaire_texte . $eol . $message_texte
					;
			}
		
		} // end if($avec_sommaire == 'oui')


		$form_action = ($id_courrier) 
			? generer_url_ecrire(_SPIPLISTES_EXEC_COURRIER_GERER, 'id_courrier='.$id_courrier)
			: generer_url_ecrire(_SPIPLISTES_EXEC_COURRIER_GERER)
			;
		
		$message_html = spiplistes_liens_absolus ($intro_html . $message_html);
		$message_texte = spiplistes_liens_absolus ($intro_texte . $message_texte);
		
		spiplistes_debug_log('ACTION: generate page');

		$page_result = ''
			// boite courrier au format html
			. debut_cadre_couleur('', true)
			. "<form id='choppe_patron-1' action='$form_action' method='post' name='choppe_patron-1'>\n"
			. "<div id='previsu-html' class='switch-previsu'>\n"
			. _T('spiplistes:version_html') 
				. " / " . "<a href='javascript:jQuery(this).switch_previsu()'>" 
				. _T('spiplistes:version_texte') . "</a>\n"
			. "<div class='previsu-content'>\n"
			. $message_html
			. $message_erreur
			. $pied_html
			. $tampon_html
			. "</div>\n"
			. "</div>\n" // fin id='previsu-html
			. "<div id='previsu-texte' class='switch-previsu' style='display:none;'>\n"
			. "<a href='javascript:jQuery(this).switch_previsu()'>" . _T('spiplistes:version_html') . "</a>\n"
				. " / " 
				. _T('spiplistes:version_texte') 
			. "<div class='previsu-content'>\n"
			. "<pre>"
			. $message_texte
			. $message_erreur
			. $pied_texte
			. $tampon_texte
			. "</pre>"
			. "</div>\n"
			. "</div>\n" // fin id='previsu-texte
			. "<p style='text-align:right;margin-bottom:0;'>"
			. "<input type='hidden' name='modifier_message' value='oui' />\n"
			.	(
					($id_courrier)
					?	"<input type='hidden' name='id_courrier' value='$id_courrier' />\n"
					:	"<input type='hidden' name='new' value='oui' />\n"
				)
			. "<input type='hidden' name='titre' value=\"".htmlspecialchars($titre)."\">\n"
			. "<input type='hidden' name='message' value=\"".htmlspecialchars($message_html)."\">\n"
			. "<input type='hidden' name='message_texte' value=\"".htmlspecialchars($message_texte)."\">\n"
			. "<input type='hidden' name='date' value='$date'>\n"
			. "<input type='submit' name='btn_courrier_valider' value='"._T('bouton_valider')."' class='fondo' /></p>\n"
			. "</form>\n"
			. fin_cadre_couleur(true)
			. "<br />\n"
			;
		echo($page_result);

	}
	exit(0);
}	
Example #22
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;
}
/**
 * Affiche les enfants d'une sous rubrique dans un bloc dépliable
 * (Utilisé dans les pages du privé)
 *
 * @param int $collection2
 *  L'identifiant numérique de la rubrique parente
 * @return string
 *  Le contenu du bloc dépliable
 */
function sous_enfant_rub($collection2)
{
    $nb = sql_countsel('spip_rubriques', "id_parent={$collection2}");
    $retour = '';
    $pagination = '';
    $debut = 0;
    $limite = 500;
    /**
     * On ne va afficher que 500 résultats max
     * Si > 500 on affiche une pagination
     */
    if ($nb > $limite) {
        $debut = _request('debut_rubrique' . $collection2) ? _request('debut_rubrique' . $collection2) : $debut;
        $pagination = chercher_filtre('pagination');
        $pagination = '<p class="pagination">' . $pagination($nb, '_rubrique' . $collection2, $debut, $limite, true, 'prive') . '</p>';
        $limite = $debut + $limite;
    }
    $result = sql_select("id_rubrique, id_parent, titre, lang", "spip_rubriques", "id_parent={$collection2}", '', '0+titre,titre', "{$debut},{$limite}");
    while ($row = sql_fetch($result)) {
        $id_rubrique2 = $row['id_rubrique'];
        $id_parent2 = $row['id_parent'];
        $titre2 = generer_info_entite($id_rubrique2, 'rubrique', 'titre');
        // pour etre sur de passer par tous les traitements
        if ('' !== ($rang2 = recuperer_numero($row['titre']))) {
            $rang2 = "{$rang2}. ";
        }
        changer_typo($row['lang']);
        $lang_dir = lang_dir($row['lang']);
        if (autoriser('voir', 'rubrique', $id_rubrique2)) {
            $retour .= "\n<li class='item' dir='{$lang_dir}'><a href='" . generer_url_entite($id_rubrique2, 'rubrique') . "'>" . $rang2 . $titre2 . "</a></li>\n";
        }
    }
    $retour = $pagination . $retour . $pagination;
    if (!$retour) {
        return '';
    }
    return debut_block_depliable($debut > 0 ? true : false, "enfants{$collection2}") . "\n<ul class='liste-items sous-sous-rub'>\n" . $retour . "</ul>\n" . fin_block() . "\n\n";
}
function formulaires_forum_prive_traiter_dist($objet, $id_objet, $id_forum, $forcer_previsu, $statut, $retour = '')
{
    $forum_insert = charger_fonction('forum_insert', 'inc');
    $id_reponse = $forum_insert($objet, $id_objet, $id_forum, $statut);
    if ($id_reponse) {
        // En cas de retour sur (par exemple) {#SELF}, on ajoute quand
        // meme #forum12 a la fin de l'url, sauf si un #ancre est explicite
        if ($retour) {
            if (!strpos($retour, '#')) {
                $retour .= '#forum' . $id_reponse;
            }
        } else {
            // le retour par defaut envoie sur le thread, ce qui permet
            // de traiter elegamment le cas des forums moderes a priori.
            // Cela assure aussi qu'on retrouve son message dans le thread
            // dans le cas des forums moderes a posteriori, ce qui n'est
            // pas plus mal.
            if (function_exists('generer_url_forum')) {
                $retour = generer_url_forum($id_reponse);
            } else {
                $thread = sql_fetsel('id_thread', 'spip_forum', 'id_forum=' . $id_reponse);
                spip_log('id_thread=' . $thread['id_thread'], 'forum');
                $retour = generer_url_entite($thread['id_thread'], 'forum');
            }
        }
        $res = array('redirect' => $retour, 'id_forum' => $id_forum);
    } else {
        $res = array('message_erreur' => _T('forum:erreur_enregistrement_message'));
    }
    return $res;
}
Example #25
0
function cs_url_publique($id, $type) {
	return generer_url_entite($id, $type, '', '', true);
}
function BOUCLE_rubriques_cheminhtml_0caead67327defaf94febb642f511490(&$Cache, &$Pile, &$doublons, &$Numrows, $SP)
{
    static $command = array();
    static $connect;
    $command['connect'] = $connect = '';
    if (!($id_rubrique = intval($Pile[$SP]['id_rubrique']))) {
        return '';
    }
    include_spip('inc/rubriques');
    $hierarchie = calcul_hierarchie_in($id_rubrique, true);
    if (!$hierarchie) {
        return "";
    }
    if (!isset($command['table'])) {
        $command['table'] = 'rubriques';
        $command['id'] = '_rubriques_chemin';
        $command['from'] = array('rubriques' => 'spip_rubriques');
        $command['type'] = array();
        $command['groupby'] = array();
        $command['select'] = array("rubriques.id_rubrique", "rubriques.titre", "rubriques.lang");
        $command['join'] = array();
        $command['limit'] = '';
        $command['having'] = array();
    }
    $command['orderby'] = array("FIELD(rubriques.id_rubrique, {$hierarchie})");
    $command['where'] = array(array('IN', 'rubriques.id_rubrique', "({$hierarchie})"));
    if (defined("_BOUCLE_PROFILER")) {
        $timer = time() + microtime();
    }
    $t0 = "";
    // REQUETE
    $iter = IterFactory::create("SQL", $command, array('squelettes/rubrique.html', 'html_0caead67327defaf94febb642f511490', '_rubriques_chemin', 29, $GLOBALS['spip_lang']));
    if (!$iter->err()) {
        lang_select($GLOBALS['spip_lang']);
        $SP++;
        // RESULTATS
        while ($Pile[$SP] = $iter->fetch()) {
            lang_select_public($Pile[$SP]['lang'], '', $Pile[$SP]['titre']);
            $t0 .= '
		<b class=\'separateur\'>&gt;</b> 
		<a href="' . spip_htmlspecialchars(sinon($GLOBALS['meta']['adresse_site'], '.')) . '/' . vider_url(urlencode_1738(generer_url_entite($Pile[$SP]['id_rubrique'], 'rubrique', '', '', true))) . '">' . interdire_scripts(couper(supprimer_numero(typo(supprimer_numero($Pile[$SP]['titre']), "TYPO", $connect, $Pile[0])), '60')) . '</a>
	';
            lang_select();
        }
        lang_select();
        $iter->free();
    }
    if (defined("_BOUCLE_PROFILER") and 1000 * ($timer = time() + microtime() - $timer) > _BOUCLE_PROFILER) {
        spip_log(intval(1000 * $timer) . "ms BOUCLE_rubriques_chemin @ squelettes/rubrique.html", "profiler" . _LOG_AVERTISSEMENT);
    }
    return $t0;
}
Example #27
0
/**
 * Donner n'importe quelle information sur un objet de maniere generique.
 *
 * La fonction va gerer en interne deux cas particuliers les plus utilises :
 * l'URL et le titre (qui n'est pas forcemment le champ SQL "titre").
 *
 * On peut ensuite personnaliser les autres infos en creant une fonction
 * generer_<nom_info>_entite($id_objet, $type_objet, $ligne).
 * $ligne correspond a la ligne SQL de tous les champs de l'objet, les fonctions
 * de personnalisation n'ont donc pas a refaire de requete.
 *
 * @param int $id_objet
 * @param string $type_objet
 * @param string $info
 * @param string $etoile
 * @return string
 */
function generer_info_entite($id_objet, $type_objet, $info, $etoile = "")
{
    global $table_des_traitements;
    static $trouver_table = null;
    static $objets;
    // On verifie qu'on a tout ce qu'il faut
    $id_objet = intval($id_objet);
    if (!($id_objet and $type_objet and $info)) {
        return '';
    }
    // si on a deja note que l'objet n'existe pas, ne pas aller plus loin
    if (isset($objets[$type_objet]) and $objets[$type_objet] === false) {
        return '';
    }
    // Si on demande l'url, on retourne direct la fonction
    if ($info == 'url') {
        return generer_url_entite($id_objet, $type_objet);
    }
    // Sinon on va tout chercher dans la table et on garde en memoire
    $demande_titre = $info == 'titre';
    // On ne fait la requete que si on a pas deja l'objet ou si on demande le titre mais qu'on ne l'a pas encore
    if (!isset($objets[$type_objet][$id_objet]) or $demande_titre and !isset($objets[$type_objet][$id_objet]['titre'])) {
        if (!$trouver_table) {
            $trouver_table = charger_fonction('trouver_table', 'base');
        }
        $desc = $trouver_table(table_objet_sql($type_objet));
        if (!$desc) {
            return $objets[$type_objet] = false;
        }
        // Si on demande le titre, on le gere en interne
        $champ_titre = "";
        if ($demande_titre) {
            // si pas de titre declare mais champ titre, il sera peuple par le select *
            $champ_titre = !empty($desc['titre']) ? ', ' . $desc['titre'] : '';
        }
        include_spip('base/abstract_sql');
        include_spip('base/connect_sql');
        $objets[$type_objet][$id_objet] = sql_fetsel('*' . $champ_titre, $desc['table_sql'], id_table_objet($type_objet) . ' = ' . intval($id_objet));
    }
    // Si la fonction generer_TRUC_TYPE existe, on l'utilise pour formater $info_generee
    if ($generer = charger_fonction("generer_{$info}_{$type_objet}", '', true)) {
        $info_generee = $generer($id_objet, $objets[$type_objet][$id_objet]);
    } else {
        if ($generer = charger_fonction("generer_{$info}_entite", '', true)) {
            $info_generee = $generer($id_objet, $type_objet, $objets[$type_objet][$id_objet]);
        } else {
            $info_generee = isset($objets[$type_objet][$id_objet][$info]) ? $objets[$type_objet][$id_objet][$info] : '';
        }
    }
    // On va ensuite chercher les traitements automatiques a faire
    $champ = strtoupper($info);
    $traitement = isset($table_des_traitements[$champ]) ? $table_des_traitements[$champ] : false;
    $table_sql = table_objet_sql($type_objet);
    if (!$etoile and is_array($traitement) and (isset($traitement[$table_sql]) or isset($traitement[0]))) {
        $traitement = $traitement[isset($traitement[$table_sql]) ? $table_sql : 0];
        $traitement = str_replace('%s', "'" . texte_script($info_generee) . "'", $traitement);
        // FIXME: $connect et $Pile[0] font souvent partie des traitements.
        // on les definit pour eviter des notices, mais ce fonctionnement est a ameliorer !
        $connect = "";
        $Pile = array(0 => array('id_objet' => $id_objet, 'objet' => $type_objet));
        eval("\$info_generee = {$traitement};");
    }
    return $info_generee;
}
Example #28
0
/**
 * Traiter la saisie de #FORMULAIRE_FORUM
 * tout est delegue a inc_forum_insert()
 *
 * @param string $objet
 * @param int $id_objet
 * @param int $id_forum
 * @param int|array $ajouter_mot
 *   mots ajoutes coches par defaut
 * @param $ajouter_groupe
 *   groupes ajoutables
 * @param $afficher_previsu
 *   previsu oui ou non
 * @param $retour
 *   url de retour
 * @return array|bool
 */
function formulaires_forum_traiter_dist($objet, $id_objet, $id_forum, $ajouter_mot, $ajouter_groupe, $afficher_previsu, $retour)
{
    $forum_insert = charger_fonction('forum_insert', 'inc');
    // Antispam basique :
    // si l'input invisible a ete renseigne, ca ne peut etre qu'un bot
    if (strlen(_request(_request('cle_ajouter_document')))) {
        tracer_erreur_forum('champ interdit (nobot) rempli');
        return array('message_erreur' => _T('forum:erreur_enregistrement_message'));
    }
    if (defined('_FORUM_AUTORISER_POST_ID_FORUM') and _FORUM_AUTORISER_POST_ID_FORUM and _request('id_forum')) {
        $id_forum = _request('id_forum');
    }
    $id_reponse = $forum_insert($objet, $id_objet, $id_forum);
    if ($id_reponse) {
        // En cas de retour sur (par exemple) {#SELF}, on ajoute quand
        // meme #forum12 a la fin de l'url, sauf si un #ancre est explicite
        if ($retour) {
            if (!strpos($retour, '#')) {
                $retour .= '#forum' . $id_reponse;
            }
        } else {
            // le retour par defaut envoie sur le thread, ce qui permet
            // de traiter elegamment le cas des forums moderes a priori.
            // Cela assure aussi qu'on retrouve son message dans le thread
            // dans le cas des forums moderes a posteriori, ce qui n'est
            // pas plus mal.
            if (function_exists('generer_url_forum')) {
                $retour = generer_url_forum($id_reponse);
            } else {
                $thread = sql_fetsel('id_thread', 'spip_forum', 'id_forum=' . $id_reponse);
                spip_log('id_thread=' . $thread['id_thread'], 'forum');
                $retour = generer_url_entite($thread['id_thread'], 'forum');
            }
        }
        $res = array('redirect' => $retour, 'id_forum' => $id_reponse);
    } else {
        $res = array('message_erreur' => _T('forum:erreur_enregistrement_message'));
    }
    return $res;
}
Example #29
0
function generer_url_entite_absolue($id = '', $entite = '', $args = '', $ancre = '', $connect = NULL)
{
    if (!$connect) {
        $connect = true;
    }
    $h = generer_url_entite($id, $entite, $args, $ancre, $connect);
    if (!preg_match(',^\\w+:,', $h)) {
        include_spip('inc/filtres_mini');
        $h = url_absolue($h);
    }
    return $h;
}
Example #30
0
function afficher_forum_thread($row, $controle_id_article, $compteur_forum, $nb_forum, $i, $retour, $arg,  $script, $argscript) {
	global $spip_lang_right, $spip_display;
	static $voir_logo = array(); // pour ne calculer qu'une fois

	if (is_array($voir_logo)) {
		$voir_logo = (($spip_display != 1 AND $spip_display != 4 AND $GLOBALS['meta']['image_process'] != "non") ? 
		      "position: absolute; $spip_lang_right: 0px; margin: 0px; margin-top: -3px; margin-$spip_lang_right: 0px;" 
		      : '');
	}

	$id_forum=$row['id_forum'];
	$id_parent=$row['id_parent'];
	$id_rubrique=$row['id_rubrique'];
	$id_article=$row['id_article'];
	$id_breve=$row['id_breve'];
	$id_message=$row['id_message'];
	$id_syndic=$row['id_syndic'];
	$id_auteur=$row["id_auteur"];
	$titre=$row['titre'];
	$texte=$row['texte'];
	$nom_site=$row['nom_site'];
	$url_site=$row['url_site'];
	$statut=$row['statut'];
	$ip=$row["ip"];

	$h = (!$id_article ? '' : generer_url_entite($id_article, 'article'))
	  . "#forum$id_forum";

	$titre_boite = "<a href='$h' id='forum$id_forum'>"
	  . typo($titre)
	  . '</a>';

	if ($spip_display == 4) {
		$res = $titre_boite ."<br id='id$id_forum' />";
	} else {
		if ($id_auteur AND $voir_logo) {
			$chercher_logo = charger_fonction('chercher_logo', 'inc');
			if ($logo = $chercher_logo($id_auteur, 'id_auteur', 'on')) {
				list($fid, $dir, $nom, $format) = $logo;
				include_spip('inc/filtres_images_mini');
				$logo = image_reduire("<img src='$fid' alt='' />", 48, 48);
				if ($logo)
					$titre_boite = "\n<div style='$voir_logo'>$logo</div>$titre_boite" ;
			}
		}


		$res = "<tr id='id$id_forum'>"
		. afficher_forum_4($compteur_forum, $nb_forum, $i)
		. "\n<td style='width: 100%' valign='top'>"
		. (($compteur_forum == 1)
		   ? debut_cadre_forum(forum_logo($statut), true, "", $titre_boite)
		   : debut_cadre_thread_forum("", true, "", $titre_boite));
	}

	// Si refuse, cadre rouge
	if ($statut=="off") {
		$style =" style='border: 2px dashed red; padding: 5px;'";
	}
	// Si propose, cadre jaune
	else if ($statut=="prop") {
		$style = " style='border: 1px solid yellow; padding: 5px;'";
	}
	// Si original, cadre vert
	else if ($statut=="original") {
		$style = " style='border: 1px solid green; padding: 5px;'";
	} else $style = '';

	$mots = afficher_forum_mots($id_forum);

	$res .= "<table$style width='100%' cellpadding='5' cellspacing='0'>\n<tr><td>"
	.  afficher_forum_auteur($row)
	. (!$controle_id_article ? '' :
	   boutons_controle_forum($id_forum, $statut, $id_auteur, "id_article=$id_article", $ip,  $script, $argscript))
	. "<div style='font-weight: normal;'>"
	. safehtml(justifier(propre($texte)))
	. "</div>\n"
	. (!$nom_site ? '' :
	      ((strlen($url_site) > 10) ? "\n<div style='text-align: left' class='verdana2'><b><a href='$url_site'>$nom_site</a></b></div>"
	       : "<b>$nom_site</b>"))
	. ($controle_id_article ? '' :
	      repondre_forum($row, $titre, $statut, "$retour?$arg", _T('lien_repondre_message')))
	  . $mots
	  . "</td></tr></table>";

	if ($spip_display == 4) return "\n<li>$res</li>\n";

	if ($compteur_forum == 1) $res .= fin_cadre_forum(true);
	else $res .= fin_cadre_thread_forum(true);
	$res .= "</td></tr>";

	return "<table width='100%' cellpadding='0' cellspacing='0' border='0'>$res</table>\n";
}