Skip to content
Extraits de code Groupes Projets
Valider 568ff4ea rédigé par marcimat's avatar marcimat
Parcourir les fichiers

Rector sur ecrire/xml avec config PHP 7.4

parent ed288915
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -18,6 +18,7 @@ include_spip('xml/interfaces'); ...@@ -18,6 +18,7 @@ include_spip('xml/interfaces');
// https://code.spip.net/@charger_dtd // https://code.spip.net/@charger_dtd
function charger_dtd($grammaire, $avail, $rotlvl) { function charger_dtd($grammaire, $avail, $rotlvl) {
$r = null;
static $dtd = []; # cache bien utile pour le validateur en boucle static $dtd = []; # cache bien utile pour le validateur en boucle
if (isset($dtd[$grammaire])) { if (isset($dtd[$grammaire])) {
...@@ -55,7 +56,7 @@ function charger_dtd($grammaire, $avail, $rotlvl) { ...@@ -55,7 +56,7 @@ function charger_dtd($grammaire, $avail, $rotlvl) {
$dtc->peres[$k] = $v; $dtc->peres[$k] = $v;
} }
spip_log("Analyser DTD $avail $grammaire (" . spip_timer('dtd') . ') ' . count($dtc->macros) . ' macros, ' . count($dtc->elements) . ' elements, ' . count($dtc->attributs) . " listes d'attributs, " . count($dtc->entites) . ' entites'); spip_log("Analyser DTD $avail $grammaire (" . spip_timer('dtd') . ') ' . (is_countable($dtc->macros) ? count($dtc->macros) : 0) . ' macros, ' . (is_countable($dtc->elements) ? count($dtc->elements) : 0) . ' elements, ' . (is_countable($dtc->attributs) ? count($dtc->attributs) : 0) . " listes d'attributs, " . (is_countable($dtc->entites) ? count($dtc->entites) : 0) . ' entites');
# $r = $dtc->regles; ksort($r);foreach($r as $l => $v) {$t=array_keys($dtc->attributs[$l]);echo "<b>$l</b> '$v' ", count($t), " attributs: ", join (', ',$t);$t=$dtc->peres[$l];echo "<br />",count($t), " peres: ", @join (', ',$t), "<br />\n";}exit; # $r = $dtc->regles; ksort($r);foreach($r as $l => $v) {$t=array_keys($dtc->attributs[$l]);echo "<b>$l</b> '$v' ", count($t), " attributs: ", join (', ',$t);$t=$dtc->peres[$l];echo "<br />",count($t), " peres: ", @join (', ',$t), "<br />\n";}exit;
ecrire_fichier($file, serialize($dtc), true); ecrire_fichier($file, serialize($dtc), true);
} }
...@@ -210,7 +211,7 @@ function analyser_dtd_lexeme($dtd, &$dtc, $grammaire) { ...@@ -210,7 +211,7 @@ function analyser_dtd_lexeme($dtd, &$dtc, $grammaire) {
return -9; return -9;
} }
list(, $s) = $m; [, $s] = $m;
$n = $dtc->macros[$s]; $n = $dtc->macros[$s];
if (is_array($n)) { if (is_array($n)) {
...@@ -272,7 +273,7 @@ function analyser_dtd_entity($dtd, &$dtc, $grammaire) { ...@@ -272,7 +273,7 @@ function analyser_dtd_entity($dtd, &$dtc, $grammaire) {
return -2; return -2;
} }
list($t, $term, $nom, $type, $k1, $k2, $k3, $k4, $k5, $k6, $c, $q, $alt, $dtd) = $m; [$t, $term, $nom, $type, $k1, $k2, $k3, $k4, $k5, $k6, $c, $q, $alt, $dtd] = $m;
if (isset($dtc->macros[$nom]) and $dtc->macros[$nom]) { if (isset($dtc->macros[$nom]) and $dtc->macros[$nom]) {
return $dtd; return $dtd;
...@@ -287,7 +288,7 @@ function analyser_dtd_entity($dtd, &$dtc, $grammaire) { ...@@ -287,7 +288,7 @@ function analyser_dtd_entity($dtd, &$dtc, $grammaire) {
// cas particulier double evaluation: 'PUBLIC "..." "...."' // cas particulier double evaluation: 'PUBLIC "..." "...."'
if (preg_match('/(PUBLIC|SYSTEM)\s+"([^"]*)"\s*("([^"]*)")?\s*$/s', $val, $r)) { if (preg_match('/(PUBLIC|SYSTEM)\s+"([^"]*)"\s*("([^"]*)")?\s*$/s', $val, $r)) {
list($t, $type, $val, $q, $alt) = $r; [$t, $type, $val, $q, $alt] = $r;
} }
if (!$term) { if (!$term) {
...@@ -330,7 +331,7 @@ function analyser_dtd_element($dtd, &$dtc, $grammaire) { ...@@ -330,7 +331,7 @@ function analyser_dtd_element($dtd, &$dtc, $grammaire) {
return -3; return -3;
} }
list(, $nom, $contenu, $dtd) = $m; [, $nom, $contenu, $dtd] = $m;
$nom = expanserEntite($nom, $dtc->macros); $nom = expanserEntite($nom, $dtc->macros);
if (isset($dtc->elements[$nom])) { if (isset($dtc->elements[$nom])) {
...@@ -379,7 +380,7 @@ function analyser_dtd_attlist($dtd, &$dtc, $grammaire) { ...@@ -379,7 +380,7 @@ function analyser_dtd_attlist($dtd, &$dtc, $grammaire) {
return -5; return -5;
} }
list(, $nom, $val, $dtd) = $m; [, $nom, $val, $dtd] = $m;
$nom = expanserEntite($nom, $dtc->macros); $nom = expanserEntite($nom, $dtc->macros);
$val = expanserEntite($val, $dtc->macros); $val = expanserEntite($val, $dtc->macros);
if (!isset($dtc->attributs[$nom])) { if (!isset($dtc->attributs[$nom])) {
......
...@@ -65,7 +65,7 @@ function xml_indenter_dist($page, $apply = false) { ...@@ -65,7 +65,7 @@ function xml_indenter_dist($page, $apply = false) {
if (!$f->err) { if (!$f->err) {
return $f->entete . $f->res; return $f->entete . $f->res;
} }
spip_log('indentation impossible ' . count($f->err) . ' erreurs de validation'); spip_log('indentation impossible ' . (is_countable($f->err) ? count($f->err) : 0) . ' erreurs de validation');
return $f->entete . $f->page; return $f->entete . $f->page;
} }
...@@ -43,7 +43,7 @@ function xml_entites_html($texte) { ...@@ -43,7 +43,7 @@ function xml_entites_html($texte) {
function xml_debutElement($phraseur, $name, $attrs) { function xml_debutElement($phraseur, $name, $attrs) {
$depth = $phraseur->depth; $depth = $phraseur->depth;
$t = isset($phraseur->ouvrant[$depth]) ? $phraseur->ouvrant[$depth] : ' '; $t = $phraseur->ouvrant[$depth] ?? ' ';
// espace initial signifie: deja integree au resultat // espace initial signifie: deja integree au resultat
if ($t[0] != ' ') { if ($t[0] != ' ') {
$phraseur->res .= '<' . $t . '>'; $phraseur->res .= '<' . $t . '>';
...@@ -192,7 +192,7 @@ function xml_sax_dist($page, $apply = false, $phraseur = null, $doctype = '', $c ...@@ -192,7 +192,7 @@ function xml_sax_dist($page, $apply = false, $phraseur = null, $doctype = '', $c
. preg_replace(_REGEXP_DOCTYPE, '', $page); . preg_replace(_REGEXP_DOCTYPE, '', $page);
$r = analyser_doctype($page); $r = analyser_doctype($page);
} }
list($entete, $avail, $grammaire, $rotlvl) = array_pad($r, 4, null); [$entete, $avail, $grammaire, $rotlvl] = array_pad($r, 4, null);
$page = substr($page, strlen($entete)); $page = substr($page, strlen($entete));
} else { } else {
$avail = 'SYSTEM'; $avail = 'SYSTEM';
...@@ -266,7 +266,7 @@ function sax_bug($data, $dtc, $charset = null) { ...@@ -266,7 +266,7 @@ function sax_bug($data, $dtc, $charset = null) {
$trans = []; $trans = [];
foreach ($dtc->entites as $k => $v) { foreach ($dtc->entites as $k => $v) {
if (!strpos(' amp lt gt quot ', $k)) { if (!strpos(' amp lt gt quot ', (string) $k)) {
$trans["&$k;"] = $v; $trans["&$k;"] = $v;
} }
} }
...@@ -288,7 +288,7 @@ function sax_bug($data, $dtc, $charset = null) { ...@@ -288,7 +288,7 @@ function sax_bug($data, $dtc, $charset = null) {
function analyser_doctype($data) { function analyser_doctype($data) {
if (!preg_match(_REGEXP_DOCTYPE, $data, $page)) { if (!preg_match(_REGEXP_DOCTYPE, $data, $page)) {
if (preg_match(_REGEXP_XML, $data, $page)) { if (preg_match(_REGEXP_XML, $data, $page)) {
list(, $entete, $topelement) = $page; [, $entete, $topelement] = $page;
if ($topelement == 'rss') { if ($topelement == 'rss') {
return [ return [
$entete, $entete,
...@@ -308,14 +308,14 @@ function analyser_doctype($data) { ...@@ -308,14 +308,14 @@ function analyser_doctype($data) {
return []; return [];
} }
list($entete, , $topelement, $avail, $suite) = $page; [$entete, , $topelement, $avail, $suite] = $page;
if (!preg_match('/^"([^"]*)"\s*(.*)$/', $suite, $r)) { if (!preg_match('/^"([^"]*)"\s*(.*)$/', $suite, $r)) {
if (!preg_match("/^'([^']*)'\s*(.*)$/", $suite, $r)) { if (!preg_match("/^'([^']*)'\s*(.*)$/", $suite, $r)) {
return []; return [];
} }
} }
list(, $rotlvl, $suite) = $r; [, $rotlvl, $suite] = $r;
if (!$suite) { if (!$suite) {
if ($avail != 'SYSTEM') { if ($avail != 'SYSTEM') {
......
...@@ -136,7 +136,7 @@ class ValidateurXML { ...@@ -136,7 +136,7 @@ class ValidateurXML {
// https://code.spip.net/@validerAttribut_ID // https://code.spip.net/@validerAttribut_ID
public function validerAttribut_ID($phraseur, $name, $val, $bal) { public function validerAttribut_ID($phraseur, $name, $val, $bal) {
if (isset($this->ids[$val])) { if (isset($this->ids[$val])) {
list($l, $c) = $this->ids[$val]; [$l, $c] = $this->ids[$val];
coordonnees_erreur($this, " <p><b>$val</b> " coordonnees_erreur($this, " <p><b>$val</b> "
. _T('zxml_valeur_attribut') . _T('zxml_valeur_attribut')
. " <b>$name</b> " . " <b>$name</b> "
...@@ -185,11 +185,11 @@ class ValidateurXML { ...@@ -185,11 +185,11 @@ class ValidateurXML {
public function valider_passe2() { public function valider_passe2() {
if (!$this->err) { if (!$this->err) {
foreach ($this->idrefs as $idref) { foreach ($this->idrefs as $idref) {
list($nom, $ligne, $col) = $idref; [$nom, $ligne, $col] = $idref;
$this->valider_idref($nom, $ligne, $col); $this->valider_idref($nom, $ligne, $col);
} }
foreach ($this->idrefss as $idref) { foreach ($this->idrefss as $idref) {
list($noms, $ligne, $col) = $idref; [$noms, $ligne, $col] = $idref;
foreach (preg_split('/\s+/', $noms) as $nom) { foreach (preg_split('/\s+/', $noms) as $nom) {
$this->valider_idref($nom, $ligne, $col); $this->valider_idref($nom, $ligne, $col);
} }
...@@ -222,7 +222,7 @@ class ValidateurXML { ...@@ -222,7 +222,7 @@ class ValidateurXML {
$c = strlen(trim($contenu[$depth])); $c = strlen(trim($contenu[$depth]));
$k = $this->debuts[$depth]; $k = $this->debuts[$depth];
$regle = isset($this->dtc->regles[$name]) ? $this->dtc->regles[$name] : false; $regle = $this->dtc->regles[$name] ?? false;
$vide = ($regle == 'EMPTY'); $vide = ($regle == 'EMPTY');
// controler que les balises devant etre vides le sont // controler que les balises devant etre vides le sont
if ($vide) { if ($vide) {
...@@ -238,7 +238,7 @@ class ValidateurXML { ...@@ -238,7 +238,7 @@ class ValidateurXML {
. _T('zxml_vide_balise')); . _T('zxml_vide_balise'));
} }
} else { } else {
$f = isset($this->fratrie[substr($depth, 2)]) ? $this->fratrie[substr($depth, 2)] : null; $f = $this->fratrie[substr($depth, 2)] ?? null;
if (is_null($f) or !preg_match($regle, $f)) { if (is_null($f) or !preg_match($regle, $f)) {
coordonnees_erreur( coordonnees_erreur(
$this, $this,
...@@ -292,7 +292,7 @@ class ValidateurXML { ...@@ -292,7 +292,7 @@ class ValidateurXML {
and (preg_match_all('/&([^;]*)?/', $data, $r, PREG_SET_ORDER)) and (preg_match_all('/&([^;]*)?/', $data, $r, PREG_SET_ORDER))
) { ) {
foreach ($r as $m) { foreach ($r as $m) {
list($t, $e) = $m; [$t, $e] = $m;
if (!isset($this->dtc->entites[$e])) { if (!isset($this->dtc->entites[$e])) {
coordonnees_erreur($this, " <b>$e</b> " coordonnees_erreur($this, " <b>$e</b> "
. _T('zxml_inconnu_entite') . _T('zxml_inconnu_entite')
...@@ -312,7 +312,7 @@ class ValidateurXML { ...@@ -312,7 +312,7 @@ class ValidateurXML {
if (!$this->dtc or preg_match(',^' . _MESSAGE_DOCTYPE . ',', $data)) { if (!$this->dtc or preg_match(',^' . _MESSAGE_DOCTYPE . ',', $data)) {
$this->err[] = ['DOCTYPE ?', 0, 0]; $this->err[] = ['DOCTYPE ?', 0, 0];
} else { } else {
$this->valider_passe2($this); $this->valider_passe2();
} }
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter