[SPIP] v3.2.12 -> v3.2.12 - Reinstallation avec le spip_loader
[lhc/web/www.git] / www / plugins-dist / textwheel / inc / texte.php
old mode 100644 (file)
new mode 100755 (executable)
index 43b9d21..325bedb
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2016                                                *
+ *  Copyright (c) 2001-2020                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -266,7 +266,10 @@ function typo($letexte, $echapper = true, $connect = null, $env = array()) {
 
        // Dans l'espace prive on se mefie de tout contenu dangereux
        // https://core.spip.net/issues/3371
-       if (isset($env['espace_prive']) and $env['espace_prive']) {
+       // et aussi dans l'espace public si la globale filtrer_javascript = -1
+       // https://core.spip.net/issues/4166
+       if ($GLOBALS['filtrer_javascript'] == -1
+         or (isset($env['espace_prive']) and $env['espace_prive'] and $GLOBALS['filtrer_javascript']<=0)) {
                $letexte = echapper_html_suspect($letexte);
        }
 
@@ -374,18 +377,18 @@ function traiter_tableau($bloc) {
        $lignes = array();
        $debut_table = $summary = '';
        $l = 0;
-       $numeric = true;
 
        // Traiter chaque ligne
        $reg_line1 = ',^(\|(' . _RACCOURCI_TH_SPAN . '))+$,sS';
        $reg_line_all = ',^(' . _RACCOURCI_TH_SPAN . ')$,sS';
        $hc = $hl = array();
+       $thead_ok = false;
        foreach ($regs[1] as $ligne) {
                $l++;
 
                // Gestion de la premiere ligne :
-               if ($l == 1) {
-                       // - <caption> et summary dans la premiere ligne :
+               if (!$thead_ok and $l == 1) {
+                       // - <caption> et summary dans la premiere ligne (seulement si on n'a pas dépassé le premier thead) :
                        //   || caption | summary || (|summary est optionnel)
                        if (preg_match(',^\|\|([^|]*)(\|(.*))?$,sS', rtrim($ligne, '|'), $cap)) {
                                $cap = array_pad($cap, 4, null);
@@ -422,6 +425,7 @@ function traiter_tableau($bloc) {
                                        $debut_table .= "<thead><tr class='row_first'>" .
                                                $ligne . "</tr></thead>\n";
                                        $l = 0;
+                                       $thead_ok = true;
                                }
                        }
                }
@@ -458,8 +462,9 @@ function traiter_tableau($bloc) {
        // du nombre de colonnes dans la premiere ligne.
        // Reperer egalement les colonnes numeriques pour les cadrer a droite
        $rowspans = $numeric = array();
-       $n = count($lignes[0]);
        $k = count($lignes);
+       $n = $k ? count($lignes[0]) : 0;
+
        // distinguer les colonnes numeriques a point ou a virgule,
        // pour les alignements eventuels sur "," ou "."
        $numeric_class = array(
@@ -537,7 +542,6 @@ function traiter_tableau($bloc) {
                $html = "<tr class='row_$class $class'>$ligne</tr>\n$html";
        }
 
-       if(html5_permis()) $summary="";
        return "\n\n<table" . $GLOBALS['class_spip_plus'] . $summary . ">\n"
        . $debut_table
        . "<tbody>\n"
@@ -768,9 +772,12 @@ function propre($t, $connect = null, $env = array()) {
        // Dans l'espace prive on se mefie de tout contenu dangereux
        // avant echappement des balises <html>
        // https://core.spip.net/issues/3371
+       // et aussi dans l'espace public si la globale filtrer_javascript = -1
+       // https://core.spip.net/issues/4166
        if ($interdire_script
-               or (isset($env['espace_prive']) and $env['espace_prive'])
-               or (isset($env['wysiwyg']) and $env['wysiwyg'])) {
+               or $GLOBALS['filtrer_javascript'] == -1
+               or (isset($env['espace_prive']) and $env['espace_prive'] and $GLOBALS['filtrer_javascript']<=0)
+               or (isset($env['wysiwyg']) and $env['wysiwyg'] and $GLOBALS['filtrer_javascript']<=0)) {
                $t = echapper_html_suspect($t, false);
        }
        $t = echappe_html($t);