Valider f6cf9edd rédigé par marcimat's avatar marcimat
Parcourir les fichiers

PHP 8.1 #4968 : Deprecated-- en relation avec `null`

Sur les éléments :

- filtre sinon() : strlen qui doit être appliqué uniquement sur un string.
- parametre_url() sans affectation : rawurlencode et strlen s’appliquent
  uniquement sur un string (pas sur null).
- les traductions peuvent retourner `null` si la clé demandée n’existe
  nul part. Ne pas tenter d’appliquer strlen ou autre dessus.
  + mini reformatage dans _T().
- _image_tag_changer_taille() : éviter d’appeler preg_replace sur null
- protege_champ() si la valeur null est passée. + Refactoring de la fonction.
- image_filtrer()
- critère pagination.
- _q(), sur addslashes avec valeur null.
- Éviter de créer un 'connect' qui vaut null, alors qu’il doit être une chaine.
- sur la propriété Boucle->limit
- echapper_faux_tags()
- urls_decoder_url()
- spip_mysql_cite()
- modifier_class() + refactoring
- spip_connect_sql() lorsque le serveur sql est injoignable.
- _image_valeurs_trans()
- formulaires_editer_liens_charger_dist (À revoir ! )
- extraire_balise, si null est transmis…
- formulaires_editer_objet_charger lorsque id_parent vaut null
- le login : ne pas appliquer trim sur null.
- sur appel d’autorisation : s’assurer d’avoir un int `$id`.
- S’assurer de passer un int à tester_statut_inscription.
- ratio_passe_partout()
- filtre in_any() avec valeurs null.
- sur les balises TOTAL_BOUCLE, GRAND_TOTAL, COMPTEUR_BOUCLE, lorsqu’utilisées
  sur les parties alternatives de boucles lorsque les tables sont inexistantes
  (ex: boucles de compaptage sur une (SIGNATURES?) avec le plugin pétitions absent.
- Sur autoriser() dont le type est null
- sur balise `#VAL`, lorsqu’utilisée vide comme `#VAL|filtre`
  + typage sur interprete_argument_balise.
parent 2056af7a
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+12 −15
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -29,27 +29,24 @@ include_spip('inc/texte');
 * sans toucher aux valeurs sérialisées
 *
 * @see entites_html()
 * @param string|array $texte
 * @param mixed $texte
 *     Saisie à protéger
 * @return string|array
 * @return string|array|null
 *     Saisie protégée
 **/
function protege_champ($texte) {
	if (is_array($texte)) {
		$texte = array_map('protege_champ', $texte);
	} else {
		// ne pas corrompre une valeur serialize
		if ((preg_match(',^[abis]:\d+[:;],', $texte) and @unserialize($texte) != false) or is_null($texte)) {
		return array_map('protege_champ', $texte);
	} elseif ($texte === null) {
		return $texte;
		}
		if (
			is_string($texte)
			and $texte
			and strpbrk($texte, "&\"'<>") !== false
		) {
			$texte = spip_htmlspecialchars($texte, ENT_QUOTES);
	} elseif (is_bool($texte)) {
			$texte = ($texte ? '1' : '');
		return $texte ? '1' : '';
	} elseif (is_string($texte) and $texte) {
		if (preg_match(',^[abis]:\d+[:;],', $texte) and @unserialize($texte) !== false) {
			// ne pas corrompre une valeur serialize
			return $texte;
		} elseif (strpbrk($texte, "&\"'<>") !== false) {
			return spip_htmlspecialchars($texte, ENT_QUOTES);
		}
	}

+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -74,7 +74,7 @@ function balise_FORMULAIRE_INSCRIPTION($p) {
function balise_FORMULAIRE_INSCRIPTION_stat($args, $context_compil) {
	list($mode, $id, $retour) = array_pad($args, 3, null);
	include_spip('action/inscrire_auteur');
	$mode = tester_statut_inscription($mode, $id);
	$mode = tester_statut_inscription($mode, $id ?? 0);

	return $mode ? [$mode, $id, $retour] : '';
}
+16 −5
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -191,7 +191,11 @@ function spip_sql_erreur($serveur = '') {
 **/
function spip_connect_sql($version, $ins = '', $serveur = '', $continue = false) {
	$desc = spip_connect($serveur, $version);
	if (function_exists($f = @$desc[$version][$ins])) {
	if (
		$desc 
		and $f = ($desc[$version][$ins] ?? '')
		and function_exists($f)
	 ) {
		return $f;
	}
	if ($continue) {
@@ -381,10 +385,17 @@ function spip_connect_ldap($serveur = '') {
 * @param num|string|array $a Valeur à échapper
 * @return string Valeur échappée.
 **/
function _q($a) {
	return (is_numeric($a)) ? strval($a) :
		(!is_array($a) ? ("'" . addslashes($a) . "'")
			: join(',', array_map('_q', $a)));
function _q($a) : string {
	if (is_numeric($a)) {
		return strval($a);
	} elseif (is_array($a)) {
		return join(',', array_map('_q', $a));
	} elseif (is_scalar($a)) {
		return ("'" . addslashes($a) . "'");
	} elseif ($a === null) {
		return "''";
	}
	throw new \RuntimeException("Can’t use _q with " . gettype($a));
}

/**
+5 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -163,8 +163,12 @@ function autoriser_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) {
	);

	// passer par objet_type pour avoir les alias
	// sauf si _ est le premier caractère.
	if ($type and $type[0] !== '_') {
		$type = objet_type($type, false);
	}
	// et supprimer les _
	$type = str_replace('_', '', strncmp($type, '_', 1) == 0 ? $type : objet_type($type, false));
	$type = str_replace('_', '', (string) $type);

	// Si une exception a ete decretee plus haut dans le code, l'appliquer
	if (
+3 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -177,8 +177,9 @@ function formulaires_editer_objet_verifier($type, $id = 'new', $oblis = []) {
 *     Type d'objet
 * @param int|string $id
 *     Identifiant de l'objet à éditer, 'new' pour un nouvel objet
 * @param int $id_parent
 * @param int|null $id_parent
 *     Identifiant de l'objet parent
 *     Si null, le calcule d’après le contexte.
 * @param int $lier_trad
 *     Identifiant de l'objet servant de source à une nouvelle traduction
 * @param string $retour
@@ -261,7 +262,7 @@ function formulaires_editer_objet_charger(
	$row[$id_table_objet] = $id;

	$contexte = $row;
	if (strlen($id_parent) && is_numeric($id_parent) && (!isset($contexte['id_parent']) or $new)) {
	if (is_numeric($id_parent) && strlen($id_parent) && (!isset($contexte['id_parent']) or $new)) {
		if (!isset($contexte['id_parent'])) {
			unset($contexte['id_rubrique']);
		}
Chargement en cours