Compare commits

...

13 Commits
master ... 3.0

  1. 36
      CHANGELOG.md
  2. 2
      engine/textwheelruleset.php
  3. 8
      inc/lien.php
  4. 8
      inc/texte.php
  5. 3
      inc/textwheel.php
  6. 6
      paquet.xml
  7. 2
      wheels/spip/echappe-js.json
  8. 8
      wheels/spip/echappe-js.php
  9. 2
      wheels/spip/echappe-js.yaml

36
CHANGELOG.md

@ -0,0 +1,36 @@
# Changelog
## [3.0.3] - 2022-05-20
### Added
- Fichier `CHANGELOG.md`
## [3.0.2] - 2022-03-25
### Changed
- Nécessite SPIP 4.1.0 minimum
## [3.0.1] - 2022-03-05
### Fixed
- Correction de warning en PHP 8.1
## [3.0.0] - 2022-02-08
### Changed
- Utiliser les nouvelles fonctions `generer_objet_*`
- Nécessite SPIP 4.1.0-alpha minimum
- Nécessite PHP 7.4 minimum
- Conversion des tests unitaires en PHPUnit
### Fixed
- #4839 Pour être homogène entre PHP 8.1 et antérieurs, utiliser la fonction `spip_htmlspecialchars`
- Compatibilité PHP 8.1

2
engine/textwheelruleset.php

@ -146,7 +146,7 @@ class TextWheelRuleSet extends TextWheelDataSet {
* @param array $ruleset
* @param string $callback
* @param string $class
* @return class
* @return TextWheelRuleSet
*/
public static function &loader($ruleset, $callback = '', $class = 'TextWheelRuleSet') {

8
inc/lien.php

@ -635,7 +635,7 @@ function traiter_lien_implicite($ref, $texte = '', $pour = 'url', $connect = '')
}
if (!$url) {
$url = generer_objet_url($id, $type, $args ?? '', $ancre ?? '', $cible, '', $connect);
$url = generer_objet_url($id, $type, $args ?? '', $ancre ?? '', $cible, '', $connect ?? '');
}
if (!$url) {
@ -644,7 +644,7 @@ function traiter_lien_implicite($ref, $texte = '', $pour = 'url', $connect = '')
if (is_array($url)) {
[$type, $id] = array_pad($url, 2, null);
$url = generer_objet_url($id, $type, $args ?? '', $ancre ?? '', $cible, '', $connect);
$url = generer_objet_url($id, $type, $args ?? '', $ancre ?? '', $cible, '', $connect ?? '');
}
if ($pour === 'url') {
@ -852,7 +852,7 @@ function traiter_modeles($texte, $doublons = false, $echap = '', $connect = '',
$params = str_replace($liens[0], $liens[1], $params);
}
$modele = inclure_modele($type, $id, $params, $lien, $connect, $env);
$modele = inclure_modele($type, $id, $params, $lien, $connect ?? '', $env);
// en cas d'echec,
// si l'objet demande a une url,
@ -875,7 +875,7 @@ function traiter_modeles($texte, $doublons = false, $echap = '', $connect = '',
$contexte['lien_hreflang'] = $lien['hreflang'];
}
$modele = recuperer_fond('modeles/dist', $contexte, [], $connect);
$modele = recuperer_fond('modeles/dist', $contexte, [], $connect ?? '');
}
// le remplacer dans le texte
if ($modele !== false) {

8
inc/texte.php

@ -395,7 +395,7 @@ function traiter_tableau($bloc) {
// - <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);
$cap = array_pad($cap, 4, '');
$l = 0;
$summary = '';
if ($describedby = trim($cap[3])) {
@ -495,7 +495,7 @@ function traiter_tableau($bloc) {
$align = true;
for ($j = 0; $j < $k; $j++) {
$rowspans[$j][$i] = 1;
if ($align and preg_match('/^[{+-]*(?:\s|\d)*([.,]?)\d*[}]*$/', trim($lignes[$j][$i]), $r)) {
if ($align and preg_match('/^[{+-]*(?:\s|\d)*([.,]?)\d*[}]*$/', trim($lignes[$j][$i] ?? ''), $r)) {
if ($r[1]) {
$align = $r[1];
}
@ -526,7 +526,7 @@ function traiter_tableau($bloc) {
$ligne = '';
for ($c = count($cols) - 1; $c >= 0; $c--) {
$attr = $numeric[$c];
$attr = $numeric[$c] ?? '';
$cell = trim($cols[$c]);
if ($cell == '<') {
$colspan++;
@ -537,7 +537,7 @@ function traiter_tableau($bloc) {
$attr .= " colspan='$colspan'";
$colspan = 1;
}
if (($x = $rowspans[$l][$c]) > 1) {
if (($x = $rowspans[$l][$c] ?? null) > 1) {
$attr .= " rowspan='$x'";
}
$b = ($c == 0 and isset($hl[$l])) ? 'th' : 'td';

3
inc/textwheel.php

@ -86,6 +86,9 @@ class SPIPTextWheelRuleset extends TextWheelRuleSet {
return find_in_path($file, 'wheels/');
}
/**
* @return SPIPTextWheelRuleset
*/
public static function &loader($ruleset, $callback = '', $class = 'SPIPTextWheelRuleset') {
# memoization

6
paquet.xml

@ -1,9 +1,9 @@
<paquet
prefix="tw"
categorie="edition"
version="3.0.0-dev"
etat="dev"
compatibilite="[4.1.0-dev;4.1.*]"
version="3.0.3"
etat="stable"
compatibilite="[4.1.0;4.1.*]"
logo="textwheel-32.png"
>

2
wheels/spip/echappe-js.json

@ -6,7 +6,7 @@
"replace": [
{
"type": "all",
"replace": "htmlspecialchars",
"replace": "spip_htmlspecialchars",
"is_callback": "Y"
},
{

8
wheels/spip/echappe-js.php

@ -23,9 +23,9 @@ function echappe_anti_xss($match) {
strpos($texte, ':') !== false
and preg_match(',(data|script)\s*:,iS', $texte)
) {
$texte = nl2br(htmlspecialchars($texte));
} // on echappe si on a possiblement un attribut onxxx et que ca passe pas dans safehtml
elseif (
$texte = nl2br(spip_htmlspecialchars($texte));
} elseif (
// on echappe si on a possiblement un attribut onxxx et que ca passe pas dans safehtml
stripos($texte, 'on') !== false
and preg_match(",\bon\w+\s*=,i", $texte)
) {
@ -33,7 +33,7 @@ function echappe_anti_xss($match) {
$safehtml = charger_fonction('safehtml', 'inc', true);
}
if (!$safehtml or strlen($safehtml($texte)) !== strlen($texte)) {
$texte = nl2br(htmlspecialchars($texte));
$texte = nl2br(spip_htmlspecialchars($texte));
}
}

2
wheels/spip/echappe-js.yaml

@ -9,7 +9,7 @@
replace:
-
type: all
replace: htmlspecialchars
replace: spip_htmlspecialchars
is_callback: Y
-
type: all

Loading…
Cancel
Save