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; }
/** * 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; }
/** * 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 ''; }
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]; }
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>"; }
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); }
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; } }
/** * 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; }
/** * 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; }
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); }
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; }
/** * 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); }
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; }
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\'>></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; }
/** * 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; }
/** * 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; }
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; }
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"; }