Ejemplo n.º 1
0
 function filtre_introduction($descriptif, $texte, $longueur, $connect)
 {
     include_spip('public/composer');
     $texte = filtre_introduction_dist($descriptif, $texte, $longueur, $connect);
     if ($GLOBALS['toujours_paragrapher'] and strpos($texte, "</p>") === false) {
         $texte = paragrapher($texte, $GLOBALS['toujours_paragrapher']);
     }
     return $texte;
 }
Ejemplo n.º 2
0
function filtre_introduction_dist($descriptif, $texte, $longueur, $connect)
{
    // Si un descriptif est envoye, on l'utilise directement
    if (strlen($descriptif)) {
        return propre($descriptif, $connect);
    }
    // De preference ce qui est marque <intro>...</intro>
    $intro = '';
    $texte = preg_replace(",(</?)intro>,i", "\\1intro>", $texte);
    // minuscules
    while ($fin = strpos($texte, "</intro>")) {
        $zone = substr($texte, 0, $fin);
        $texte = substr($texte, $fin + strlen("</intro>"));
        if ($deb = strpos($zone, "<intro>") or substr($zone, 0, 7) == "<intro>") {
            $zone = substr($zone, $deb + 7);
        }
        $intro .= $zone;
    }
    // [12025] On ne *PEUT* pas couper simplement ici car c'est du texte brut,
    // qui inclus raccourcis et modeles
    // un simple <articlexx> peut etre ensuite transforme en 1000 lignes ...
    // par ailleurs le nettoyage des raccourcis ne tient pas compte
    // des surcharges et enrichissement de propre
    // couper doit se faire apres propre
    //$texte = nettoyer_raccourcis_typo($intro ? $intro : $texte, $connect);
    // Cependant pour des questions de perfs on coupe quand meme, en prenant
    // large et en se mefiant des tableaux #1323
    if (strlen($intro)) {
        $texte = $intro;
    } else {
        if (strpos("\n" . $texte, "\n|") === false and strlen($texte) > 2.5 * $longueur) {
            if (strpos($texte, "<multi") !== false) {
                $texte = extraire_multi($texte);
            }
            $texte = couper($texte, 2 * $longueur);
        }
    }
    // ne pas tenir compte des notes
    if ($notes = charger_fonction('notes', 'inc', true)) {
        $notes('', 'empiler');
    }
    // Supprimer les modèles avant le propre afin d'éviter qu'ils n'ajoutent du texte indésirable
    // dans l'introduction.
    $texte = supprime_img($texte, '');
    $texte = propre($texte, $connect);
    if ($notes) {
        $notes('', 'depiler');
    }
    if (!defined('_INTRODUCTION_SUITE')) {
        define('_INTRODUCTION_SUITE', '&nbsp;(...)');
    }
    $texte = couper($texte, $longueur, _INTRODUCTION_SUITE);
    // et reparagrapher si necessaire (coherence avec le cas descriptif)
    if ($GLOBALS['toujours_paragrapher']) {
        // Fermer les paragraphes
        $texte = paragrapher($texte, $GLOBALS['toujours_paragrapher']);
    }
    return $texte;
}
Ejemplo n.º 3
0
function aligner($letexte, $justif='') {
	$letexte = trim($letexte);
	if (!strlen($letexte)) return '';

	// Paragrapher proprement
	$letexte = paragrapher($letexte, true);

	// Inserer les alignements
	if ($justif)
		$letexte = str_replace(
		'<p class="spip">', '<p class="spip" align="'.$justif.'">',
		$letexte);

	return $letexte;
}
Ejemplo n.º 4
0
function core_traiter_raccourcis($letexte)
{
    // Appeler les fonctions de pre_traitement
    $letexte = pipeline('pre_propre', $letexte);
    // Gerer les notes (ne passe pas dans le pipeline)
    $notes = charger_fonction('notes', 'inc');
    list($letexte, $mes_notes) = $notes($letexte);
    //
    // Tableaux
    //
    // ne pas oublier les tableaux au debut ou a la fin du texte
    $letexte = preg_replace(",^\n?[|],S", "\n\n|", $letexte);
    $letexte = preg_replace(",\n\n+[|],S", "\n\n\n\n|", $letexte);
    $letexte = preg_replace(",[|](\n\n+|\n?\$),S", "|\n\n\n\n", $letexte);
    if (preg_match_all(',[^|](\\n[|].*[|]\\n)[^|],UmsS', $letexte, $regs, PREG_SET_ORDER)) {
        foreach ($regs as $t) {
            $letexte = str_replace($t[1], traiter_tableau($t[1]), $letexte);
        }
    }
    $letexte = "\n" . trim($letexte);
    // les listes
    if (strpos($letexte, "\n-*") !== false or strpos($letexte, "\n-#") !== false) {
        $letexte = traiter_listes($letexte);
    }
    // Proteger les caracteres actifs a l'interieur des tags html
    if (preg_match_all(_RACCOURCI_BALISE, $letexte, $regs, PREG_SET_ORDER)) {
        foreach ($regs as $reg) {
            $insert = strtr($reg[0], _RACCOURCI_PROTEGER, _RACCOURCI_PROTECTEUR);
            $letexte = str_replace($reg[0], $insert, $letexte);
        }
    }
    // Traitement des alineas
    list($a, $b) = definir_raccourcis_alineas();
    $letexte = preg_replace($a, $b, $letexte);
    //  Introduction des attributs class_spip* et autres raccourcis
    list($a, $b) = $GLOBALS['spip_raccourcis_typo'];
    $letexte = preg_replace($a, $b, $letexte);
    $letexte = preg_replace('@^\\n<br />@S', '', $letexte);
    // Retablir les caracteres proteges
    $letexte = strtr($letexte, _RACCOURCI_PROTECTEUR, _RACCOURCI_PROTEGER);
    // Fermer les paragraphes ; mais ne pas forcement en creer si un seul
    $letexte = paragrapher($letexte, $GLOBALS['toujours_paragrapher']);
    // Appeler les fonctions de post-traitement
    $letexte = pipeline('post_propre', $letexte);
    if ($mes_notes) {
        $notes($mes_notes);
    }
    return $letexte;
}
Ejemplo n.º 5
0
function typoenluminee_post_propre($texte) {
	static $cherche1 = NULL;
	static $remplace1 = NULL;

	if ($cherche1===NULL) {
		# Le remplacement des intertitres de premier niveau a deja ete effectue dans inc/texte.php
		$cherche1 = array();
		$remplace1 = array();
		global $BarreTypoEnrichieBlocs;
		if (is_array($BarreTypoEnrichieBlocs))
			foreach($BarreTypoEnrichieBlocs as $item) {
				$cherche1[]=$item['chercher'];
				$remplace1[]=$item['remplacer'];
			}
	
		$cherche1[] = /* 15 */ 	",\[/(.*)/\],Ums";
		$cherche1[] = /* 17 */ 	",\[\|(.*)\|\],Ums";
		$cherche1[] = /* 19 */ 	",\[\((.*)\)\],Ums";
		$cherche1[] = /* 21 */ 	"/\[\*\*/S";
		$cherche1[] = /* 21b */ 	"/\[\*/S";
		$cherche1[] = /* 22 */	"/\*\]/S";
		$cherche1[] = /* 23 */ 	"/\[\^/S";
		$cherche1[] = /* 24 */	"/\^\]/S";
	
		$remplace1[] = /* 15 */ 	"<div class=\"spip\" style=\"text-align:right;\">$1</div>";
		$remplace1[] = /* 17 */ 	"<div class=\"spip\" style=\"text-align:center;\">$1</div>";
		$remplace1[] = /* 19 */ 	"<div class=\"texteencadre-spip spip\">$1</div>";
		$remplace1[] = /* 21 */ 	"<strong class=\"caractencadre2-spip spip\">";
		$remplace1[] = /* 21b */ 	"<strong class=\"caractencadre-spip spip\">";
		$remplace1[] = /* 22 */	"</strong>";
		$remplace1[] = /* 23 */ 	"<sup>";
		$remplace1[] = /* 24 */	"</sup>";
		$remplace1[] = /* 25 */ 	"<sub>";
		$remplace1[] = /* 26 */	"</sub>";
	}

	$texte = preg_replace($cherche1, $remplace1, $texte);
	$texte = paragrapher($texte,$GLOBALS['toujours_paragrapher']); // il faut reparagrapher a cause des raccourcis typo que l'on a ajoute (block div)
	return $texte;
}