Browse Source

Rector sur ecrire/public (le reste) avec config PHP 7.4

pull/4991/head
Matthieu Marcillaud 11 months ago
parent
commit
5146d68d59
  1. 99
      ecrire/public/criteres.php
  2. 35
      ecrire/public/debusquer.php
  3. 11
      ecrire/public/decompiler.php
  4. 8
      ecrire/public/fonctions.php
  5. 12
      ecrire/public/format_html.php
  6. 11
      ecrire/public/iterateur.php
  7. 17
      ecrire/public/jointures.php
  8. 4
      ecrire/public/normaliser.php
  9. 6
      ecrire/public/parametrer.php
  10. 30
      ecrire/public/phraser_html.php
  11. 11
      ecrire/public/quete.php
  12. 18
      ecrire/public/references.php
  13. 2
      ecrire/public/sandbox.php
  14. 4
      ecrire/public/styliser.php
  15. 6
      ecrire/public/styliser_par_z.php
  16. 10
      ecrire/public/tracer.php

99
ecrire/public/criteres.php

@ -45,9 +45,7 @@ function critere_racine_dist($idb, &$boucles, $crit) {
$not = $crit->not;
$boucle = &$boucles[$idb];
$id_parent = isset($GLOBALS['exceptions_des_tables'][$boucle->id_table]['id_parent']) ?
$GLOBALS['exceptions_des_tables'][$boucle->id_table]['id_parent'] :
'id_parent';
$id_parent = $GLOBALS['exceptions_des_tables'][$boucle->id_table]['id_parent'] ?? 'id_parent';
$c = ["'='", "'$boucle->id_table." . "$id_parent'", 0];
$boucle->where[] = ($crit->not ? ["'NOT'", $c] : $c);
@ -211,7 +209,7 @@ function critere_lang_select_dist($idb, &$boucles, $crit) {
* @return void
**/
function critere_debut_dist($idb, &$boucles, $crit) {
list($un, $deux) = $crit->param;
[$un, $deux] = $crit->param;
$un = $un[0]->texte;
$deux = $deux[0]->texte;
if ($deux) {
@ -262,7 +260,7 @@ function critere_pagination_dist($idb, &$boucles, $crit) {
$pas = "((\$a = intval($pas)) ? \$a : 10)";
} else {
$r = intval($r[2]);
$pas = strval($r ? $r : 10);
$pas = strval($r ?: 10);
}
// Calcul du nommage de la pagination si il existe.
@ -450,9 +448,7 @@ function critere_meme_parent_dist($idb, &$boucles, $crit) {
$boucle = &$boucles[$idb];
$arg = kwote(calculer_argument_precedent($idb, 'id_parent', $boucles));
$id_parent = isset($GLOBALS['exceptions_des_tables'][$boucle->id_table]['id_parent']) ?
$GLOBALS['exceptions_des_tables'][$boucle->id_table]['id_parent'] :
'id_parent';
$id_parent = $GLOBALS['exceptions_des_tables'][$boucle->id_table]['id_parent'] ?? 'id_parent';
$mparent = $boucle->id_table . '.' . $id_parent;
if ($boucle->type_requete == 'rubriques' or isset($GLOBALS['exceptions_des_tables'][$boucle->id_table]['id_parent'])) {
@ -652,7 +648,7 @@ function critere_collecte_dist($idb, &$boucles, $crit) {
$_coll = calculer_liste($crit->param[0], $idb, $boucles, $boucles[$idb]->id_parent);
$boucle = $boucles[$idb];
$boucle->modificateur['collate'] = "($_coll ?' COLLATE '.$_coll:'')";
$n = count($boucle->order);
$n = is_countable($boucle->order) ? count($boucle->order) : 0;
if ($n && (strpos($boucle->order[$n - 1], 'COLLATE') === false)) {
// l'instruction COLLATE doit être placée avant ASC ou DESC
// notamment lors de l'utilisation `{!par xxx}{collate yyy}`
@ -666,7 +662,7 @@ function critere_collecte_dist($idb, &$boucles, $crit) {
}
}
} else {
return (['zbug_critere_inconnu', ['critere' => $crit->op . ' ' . count($boucles[$idb]->order)]]);
return (['zbug_critere_inconnu', ['critere' => $crit->op . ' ' . (is_countable($boucles[$idb]->order) ? count($boucles[$idb]->order) : 0)]]);
}
}
@ -675,7 +671,7 @@ function calculer_critere_arg_dynamique($idb, &$boucles, $crit, $suffix = '') {
$boucle = $boucles[$idb];
$alt = "('" . $boucle->id_table . '.\' . $x' . $suffix . ')';
$var = '$champs_' . $idb;
$desc = (strpos($boucle->in, "static $var =") !== false);
$desc = (strpos($boucle->in, (string) "static $var =") !== false);
if (!$desc) {
$desc = $boucle->show['field'];
$desc = implode(',', array_map('_q', array_keys($desc)));
@ -1003,10 +999,10 @@ function calculer_critere_par_champ($idb, &$boucles, $crit, $par, $raw = false)
// le champ demandé est une exception de jointure {par titre_mot}
if (isset($GLOBALS['exceptions_des_jointures'][$par])) {
list($table, $champ) = $GLOBALS['exceptions_des_jointures'][$par];
[$table, $champ] = $GLOBALS['exceptions_des_jointures'][$par];
} // la table de jointure est explicitement indiquée {par truc.muche}
elseif (preg_match('/^([^,]*)\.(.*)$/', $par, $r)) {
list(, $table, $champ) = $r;
[, $table, $champ] = $r;
$table_alias = $table; // c'est peut-être un alias de table {par L1.titre}
$table = table_objet_sql($table);
}
@ -1093,7 +1089,7 @@ function critere_inverse_dist($idb, &$boucles, $crit) {
$order = "(($critere)?' DESC':'')";
}
$n = count($boucle->order);
$n = is_countable($boucle->order) ? count($boucle->order) : 0;
if (!$n) {
if (isset($boucle->default_order[0])) {
$boucle->default_order[0] .= ' . " DESC"';
@ -1146,7 +1142,7 @@ function critere_par_ordre_liste_dist($idb, &$boucles, $crit) {
function critere_agenda_dist($idb, &$boucles, $crit) {
$params = $crit->param;
if (count($params) < 1) {
if ((is_countable($params) ? count($params) : 0) < 1) {
return ['zbug_critere_inconnu', ['critere' => $crit->op . ' ?']];
}
@ -1165,7 +1161,7 @@ function critere_agenda_dist($idb, &$boucles, $crit) {
// Si c'est un litteral unique dans le source, verifier a la compil,
// sinon synthetiser le test de verif pour execution ulterieure
// On prendra arbitrairement le premier champ si test negatif.
if ((count($date) == 1) and ($date[0]->type == 'texte')) {
if (((is_countable($date) ? count($date) : 0) == 1) and ($date[0]->type == 'texte')) {
$date = $date[0]->texte;
if (!isset($fields[$date])) {
return ['zbug_critere_inconnu', ['critere' => $crit->op . ' ' . $date]];
@ -1238,7 +1234,7 @@ function critere_agenda_dist($idb, &$boucles, $crit) {
("date_fin_semaine($annee, $mois, $jour)")
]
];
} elseif (count($crit->param) > 2) {
} elseif ((is_countable($crit->param) ? count($crit->param) : 0) > 2) {
$boucle->where[] = [
"'AND'",
[
@ -1279,8 +1275,8 @@ function calculer_critere_parties($idb, &$boucles, $crit) {
$a2 = $crit->param[1];
$op = $crit->op;
list($a11, $a12) = calculer_critere_parties_aux($idb, $boucles, $a1);
list($a21, $a22) = calculer_critere_parties_aux($idb, $boucles, $a2);
[$a11, $a12] = calculer_critere_parties_aux($idb, $boucles, $a1);
[$a21, $a22] = calculer_critere_parties_aux($idb, $boucles, $a2);
if (($op == ',') && (is_numeric($a11) && (is_numeric($a21)))) {
$boucle->limit = $a11 . ',' . $a21;
@ -1331,7 +1327,7 @@ function calculer_parties(&$boucles, $id_boucle, $debut, $mode) {
$total_parties = $boucles[$id_boucle]->total_parties;
preg_match(',([+-/p])([+-/])?,', $mode, $regs);
list(, $op1, $op2) = array_pad($regs, 3, null);
[, $op1, $op2] = array_pad($regs, 3, null);
$nombre_boucle = "\$Numrows['$id_boucle']['total']";
// {1/3}
if ($op1 == '/') {
@ -1531,7 +1527,7 @@ function critere_IN_dist($idb, &$boucles, $crit) {
if (!$r) {
return (['zbug_critere_inconnu', ['critere' => $crit->op . ' ?']]);
}
list($arg, $op, $val, $col, $where_complement) = $r;
[$arg, $op, $val, $col, $where_complement] = $r;
$in = critere_IN_cas($idb, $boucles, $crit->not ? 'NOT' : ($crit->exclus ? 'exclus' : ''), $arg, $op, $val, $col);
@ -1716,11 +1712,7 @@ function lister_champs_id_conditionnel($table, $desc = null, $serveur = '') {
// Les champs id_xx de la table demandée
$champs = array_filter(
array_keys($desc['field']),
function ($champ) {
return
strpos($champ, 'id_') === 0
or (in_array($champ, ['objet']));
}
fn($champ) => strpos($champ, 'id_') === 0 or (in_array($champ, ['objet']))
);
// Si le champ id_rubrique appartient à la liste et si id_secteur n'est pas inclus on le rajoute.
@ -1911,7 +1903,7 @@ function calculer_critere_DEFAUT_dist($idb, &$boucles, $crit) {
* @return void
**/
function calculer_critere_DEFAUT_args($idb, &$boucles, $crit, $args) {
list($arg, $op, $val, $col, $where_complement) = $args;
[$arg, $op, $val, $col, $where_complement] = $args;
$where = ["'$op'", "'$arg'", $val[0]];
@ -2013,7 +2005,7 @@ function calculer_critere_infixe($idb, &$boucles, $crit) {
$desc = $boucle->show;
$col_vraie = null;
list($fct, $col, $op, $val, $args_sql) =
[$fct, $col, $op, $val, $args_sql] =
calculer_critere_infixe_ops($idb, $boucles, $crit);
$col_alias = $col;
@ -2050,12 +2042,12 @@ function calculer_critere_infixe($idb, &$boucles, $crit) {
} // Cas particulier : expressions de date
else {
if ($c = calculer_critere_infixe_date($idb, $boucles, $col)) {
list($col, $col_vraie) = $c;
[$col, $col_vraie] = $c;
$table = '';
} // table explicitée {mots.titre}
else {
if (preg_match('/^(.*)\.(.*)$/', $col, $r)) {
list(, $table, $col) = $r;
[, $table, $col] = $r;
$col_alias = $col;
$trouver_table = charger_fonction('trouver_table', 'base');
@ -2078,14 +2070,14 @@ function calculer_critere_infixe($idb, &$boucles, $crit) {
elseif (@!array_key_exists($col, $desc['field'])) {
// Champ joker * des iterateurs DATA qui accepte tout
if (@array_key_exists('*', $desc['field'])) {
$desc['field'][$col_vraie ? $col_vraie : $col] = ''; // on veut pas de cast INT par defaut car le type peut etre n'importe quoi dans les boucles DATA
$desc['field'][$col_vraie ?: $col] = ''; // on veut pas de cast INT par defaut car le type peut etre n'importe quoi dans les boucles DATA
}
else {
$r = calculer_critere_infixe_externe($boucle, $crit, $op, $desc, $col, $col_alias, $table);
if (!$r) {
return '';
}
list($col, $col_alias, $table, $where_complement, $desc) = $r;
[$col, $col_alias, $table, $where_complement, $desc] = $r;
}
}
}
@ -2093,7 +2085,7 @@ function calculer_critere_infixe($idb, &$boucles, $crit) {
}
}
$col_vraie = ($col_vraie ? $col_vraie : $col);
$col_vraie = ($col_vraie ?: $col);
// Dans tous les cas,
// virer les guillemets eventuels autour d'un int (qui sont refuses par certains SQL)
// et passer dans sql_quote avec le type si connu
@ -2101,7 +2093,7 @@ function calculer_critere_infixe($idb, &$boucles, $crit) {
// sinon introduire le vrai type du champ si connu dans le sql_quote (ou int NOT NULL sinon)
// Ne pas utiliser intval, PHP tronquant les Bigint de SQL
if ($op == '=' or in_array($op, $GLOBALS['table_criteres_infixes'])) {
$type_cast_quote = (isset($desc['field'][$col_vraie]) ? $desc['field'][$col_vraie] : 'int NOT NULL');
$type_cast_quote = ($desc['field'][$col_vraie] ?? 'int NOT NULL');
// defaire le quote des int et les passer dans sql_quote avec le bon type de champ si on le connait, int sinon
// prendre en compte le debug ou la valeur arrive avec un commentaire PHP en debut
if (preg_match(",^\\A(\s*//.*?$\s*)?\"'(-?\d+)'\"\\z,ms", $val[0], $r)) {
@ -2211,21 +2203,20 @@ function calculer_critere_infixe_externe($boucle, $crit, $op, $desc, $col, $col_
)
) {
$t = $GLOBALS['exceptions_des_jointures'][$table_sql];
$index = isset($t[$col])
? $t[$col] : (isset($t['']) ? $t[''] : []);
if (count($index) == 3) {
list($t, $col, $calculer_critere_externe) = $index;
} elseif (count($index) == 2) {
list($t, $col) = $t[$col];
} elseif (count($index) == 1) {
list($calculer_critere_externe) = $index;
$index = $t[$col] ?? $t[''] ?? [];
if ((is_countable($index) ? count($index) : 0) == 3) {
[$t, $col, $calculer_critere_externe] = $index;
} elseif ((is_countable($index) ? count($index) : 0) == 2) {
[$t, $col] = $t[$col];
} elseif ((is_countable($index) ? count($index) : 0) == 1) {
[$calculer_critere_externe] = $index;
$t = $table;
} else {
$t = '';
} // jointure non declaree. La trouver.
} elseif (isset($GLOBALS['exceptions_des_jointures'][$col])) {
list($t, $col) = $GLOBALS['exceptions_des_jointures'][$col];
[$t, $col] = $GLOBALS['exceptions_des_jointures'][$col];
} else {
$t = '';
} // jointure non declaree. La trouver.
@ -2252,11 +2243,11 @@ function calculer_critere_infixe_externe($boucle, $crit, $op, $desc, $col, $col_
}
// il ne reste plus qu'a trouver le champ dans les from
list($nom, $desc, $cle) = trouver_champ_exterieur($col, $boucle->from, $boucle);
[$nom, $desc, $cle] = trouver_champ_exterieur($col, $boucle->from, $boucle);
if (count($cle) > 1 or reset($cle) !== $col) {
if ((is_countable($cle) ? count($cle) : 0) > 1 or reset($cle) !== $col) {
$col_alias = $col; // id_article devient juste le nom d'origine
if (count($cle) > 1 and reset($cle) == 'id_objet') {
if ((is_countable($cle) ? count($cle) : 0) > 1 and reset($cle) == 'id_objet') {
$e = decompose_champ_id_objet($col);
$col = array_shift($e);
$where = primary_doublee($e, $table);
@ -2341,7 +2332,7 @@ function calculer_critere_externe_init(&$boucle, $joints, $col, $desc, $cond, $c
// recuperer la cle id_xx eventuellement decomposee en (id_objet,objet)
$cols = $arrivee[2];
// mais on ignore la 3eme cle si presente qui correspond alors au point de depart
if (count($cols) > 2) {
if ((is_countable($cols) ? count($cols) : 0) > 2) {
array_pop($cols);
}
if ($t) {
@ -2528,7 +2519,7 @@ function calculer_critere_infixe_ops($idb, &$boucles, $crit) {
// et a fortiori son 2e operande qu'entoure " ou '
if (
count($params) == 1
and count($params[0]) == 3
and (is_countable($params[0]) ? count($params[0]) : 0) == 3
and $params[0][0]->type == 'texte'
and $params[0][2]->type == 'texte'
and ($p = $params[0][0]->texte) == $params[0][2]->texte
@ -2570,9 +2561,9 @@ function calculer_critere_infixe_ops($idb, &$boucles, $crit) {
// https://code.spip.net/@calculer_vieux_in
function calculer_vieux_in($params) {
$deb = $params[0][0];
$k = count($params) - 1;
$k = (is_countable($params) ? count($params) : 0) - 1;
$last = $params[$k];
$j = count($last) - 1;
$j = (is_countable($last) ? count($last) : 0) - 1;
$last = $last[$j];
$n = isset($last->texte) ? strlen($last->texte) : 0;
@ -2634,7 +2625,7 @@ function calculer_critere_infixe_date($idb, &$boucles, $col) {
if (!$table['date'] && !isset($GLOBALS['table_date'][$table['id_table']])) {
return '';
}
$pred = $date_orig = isset($GLOBALS['table_date'][$table['id_table']]) ? $GLOBALS['table_date'][$table['id_table']] : $table['date'];
$pred = $date_orig = $GLOBALS['table_date'][$table['id_table']] ?? $table['date'];
$col = $regs[1];
if (isset($regs[3]) and $suite = $regs[3]) {
@ -2975,9 +2966,7 @@ function critere_noeud_dist($idb, &$boucles, $crit) {
$table = $boucle->type_requete;
$table_sql = table_objet_sql(objet_type($table));
$id_parent = isset($GLOBALS['exceptions_des_tables'][$boucle->id_table]['id_parent']) ?
$GLOBALS['exceptions_des_tables'][$boucle->id_table]['id_parent'] :
'id_parent';
$id_parent = $GLOBALS['exceptions_des_tables'][$boucle->id_table]['id_parent'] ?? 'id_parent';
$in = 'IN';
$where = ["'IN'", "'$boucle->id_table." . "$primary'", "'('.sql_get_select('$id_parent', '$table_sql').')'"];

35
ecrire/public/debusquer.php

@ -91,7 +91,7 @@ function public_debusquer_dist($message = '', $lieu = '', $opt = []) {
$lieu->code = "''";
}
// forcer l'appel au debusqueur en cas de boucles infernales
$urgence = (_DEBUG_MAX_SQUELETTE_ERREURS and count($tableau_des_erreurs) > _DEBUG_MAX_SQUELETTE_ERREURS);
$urgence = (_DEBUG_MAX_SQUELETTE_ERREURS and (is_countable($tableau_des_erreurs) ? count($tableau_des_erreurs) : 0) > _DEBUG_MAX_SQUELETTE_ERREURS);
if (!$urgence) {
return;
}
@ -174,7 +174,7 @@ function debusquer_compose_message($msg) {
}
// FIXME: le fond n'est pas la si on n'est pas dans un squelette
// cela dit, ca serait bien d'indiquer tout de meme d'ou vient l'erreur
$fond = isset($GLOBALS['fond']) ? $GLOBALS['fond'] : '';
$fond = $GLOBALS['fond'] ?? '';
// une erreur critique sort $message en array
$debug = is_array($msg) ? $msg[1] : $msg;
spip_log('Debug: ' . $debug . ' (' . $fond . ')');
@ -185,12 +185,12 @@ function debusquer_compose_message($msg) {
function debusquer_bandeau($erreurs) {
if (!empty($erreurs)) {
$n = [count($erreurs) . ' ' . _T('zbug_erreur_squelette')];
$n = [(is_countable($erreurs) ? count($erreurs) : 0) . ' ' . _T('zbug_erreur_squelette')];
return debusquer_navigation($erreurs, $n);
} elseif (!empty($GLOBALS['tableau_des_temps'])) {
include_spip('public/tracer');
list($temps, $nav) = chrono_requete($GLOBALS['tableau_des_temps']);
[$temps, $nav] = chrono_requete($GLOBALS['tableau_des_temps']);
return debusquer_navigation($temps, $nav, 'debug-profile');
} else {
@ -256,7 +256,7 @@ function debusquer_navigation($tableau, $caption = [], $id = 'debug-nav') {
$href = quote_amp(parametre_url($GLOBALS['REQUEST_URI'], 'var_mode', 'debug'));
foreach ($tableau as $i => $err) {
$boucle = $ligne = $skel = '';
list($msg, $lieu) = $err;
[$msg, $lieu] = $err;
if (is_object($lieu)) {
$ligne = $lieu->ligne;
$boucle = !empty($lieu->id_boucle) ? $lieu->id_boucle : '';
@ -279,9 +279,9 @@ function debusquer_navigation($tableau, $caption = [], $id = 'debug-nav') {
. "&nbsp;</td><td style='text-align: left'>"
. (is_array($msg) ? implode('', $msg) : $msg)
. "</td><td style='text-align: left'>"
. ($skel ? $skel : '&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;')
. ($skel ?: '&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;')
. "</td><td class='spip-debug-arg' style='text-align: left'>"
. ($boucle ? $boucle : '&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;')
. ($boucle ?: '&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;')
. "</td><td style='text-align: right'>"
. $ligne
. "</td></tr>\n";
@ -327,7 +327,7 @@ function debusquer_navigation($tableau, $caption = [], $id = 'debug-nav') {
* ou un tableau si l'erreur est critique
**/
function debusquer_requete($message) {
list($errno, $msg, $query) = $message;
[$errno, $msg, $query] = $message;
// FIXME: ces écritures mélangent divers syntaxe des moteurs SQL
// il serait plus prudent certainement d'avoir une fonction d'analyse par moteur
@ -431,7 +431,7 @@ function trouve_squelette_inclus($script) {
// https://code.spip.net/@reference_boucle_debug
function reference_boucle_debug($n, $nom, $self) {
list($skel, $boucle, $ligne) = trouve_boucle_debug($n, $nom);
[$skel, $boucle, $ligne] = trouve_boucle_debug($n, $nom);
if (!$boucle) {
return !$ligne ? '' :
@ -523,6 +523,7 @@ function ancre_texte($texte, $fautifs = [], $nocpt = false) {
// l'environnement graphique du debuggueur
function debusquer_squelette($fonc, $mode, $self) {
$legend = null;
$texte = '';
if ($mode !== 'validation') {
@ -536,7 +537,7 @@ function debusquer_squelette($fonc, $mode, $self) {
if ($fonc) {
$id = " id='$fonc'";
if (!empty($GLOBALS['debug_objets'][$mode][$fonc])) {
list($legend, $texte, $res2) = debusquer_source($fonc, $mode);
[$legend, $texte, $res2] = debusquer_source($fonc, $mode);
$texte .= $res2;
} elseif (!empty($GLOBALS['debug_objets'][$mode][$fonc . 'tout'])) {
$legend = _T('zbug_' . $mode);
@ -548,9 +549,7 @@ function debusquer_squelette($fonc, $mode, $self) {
return "<img src='" . chemin_image('debug-xx.svg') . "' alt='afficher-masquer le debug' id='spip-debug-toggle' onclick=\"var x = document.getElementById('spip-debug'); (x.style.display == '' ? x.style.display = 'none' : x.style.display = '');\" /><div id='spip-debug'>$res</div>";
} else {
// cas de l'appel sur erreur: montre la page
return isset($GLOBALS['debug_objets']['resultat']['tout'])
? $GLOBALS['debug_objets']['resultat']['tout']
: '';
return $GLOBALS['debug_objets']['resultat']['tout'] ?? '';
}
}
} else {
@ -558,7 +557,7 @@ function debusquer_squelette($fonc, $mode, $self) {
$val = $valider($GLOBALS['debug_objets']['validation'][$fonc . 'tout']);
// Si erreur, signaler leur nombre dans le formulaire admin
$GLOBALS['debug_objets']['validation'] = $val->err ? count($val->err) : '';
list($texte, $err) = emboite_texte($val, $fonc, $self);
[$texte, $err] = emboite_texte($val, $fonc, $self);
if ($err === false) {
$err = _T('impossible');
} elseif ($err === true) {
@ -574,7 +573,7 @@ function debusquer_squelette($fonc, $mode, $self) {
"<img src='" . chemin_image('debug-xx.svg') . "' alt='afficher-masquer le debug' id='spip-debug-toggle' onclick=\"var x = document.getElementById('spip-debug'); (x.style.display == '' ? x.style.display = 'none' : x.style.display = '');\" /><div id='spip-debug'>$res"
. "<div id='debug_boucle'><fieldset$id><legend>"
. "<a href='" . $self . '#f_' . substr($fonc, 0, 37) . "'> &#8593; "
. ($legend ? $legend : $mode)
. ($legend ?: $mode)
. '</a></legend>'
. $texte
. '</fieldset></div>'
@ -616,7 +615,7 @@ function emboite_texte($res, $fonc = '', $self = '') {
$style = "style='text-align: right; padding-right: 5px'";
foreach ($errs as $r) {
$i++;
list($msg, $ligne, $col) = $r;
[$msg, $ligne, $col] = $r;
#spip_log("$r = list($msg, $ligne, $col");
if (isset($encore2[$msg])) {
$ref = ++$encore2[$msg];
@ -648,7 +647,7 @@ function emboite_texte($res, $fonc = '', $self = '') {
return [ancre_texte($texte, $fautifs), $err];
} else {
list($msg, $fermant, $ouvrant) = $errs[0];
[$msg, $fermant, $ouvrant] = $errs[0];
$rf = reference_boucle_debug($fermant, $fonc, $self);
$ro = reference_boucle_debug($ouvrant, $fonc, $self);
$err = $msg .
@ -771,7 +770,7 @@ function debusquer_source($objet, $affiche) {
$req = $GLOBALS['debug_objets']['requete'][$objet];
if (function_exists('_mysql_traite_query')) {
$c = strtolower(_request('connect') ?? '');
$c = $GLOBALS['connexions'][$c ? $c : 0]['prefixe'];
$c = $GLOBALS['connexions'][$c ?: 0]['prefixe'];
$req = _mysql_traite_query($req, '', $c);
}
// permettre le copier/coller facile

11
ecrire/public/decompiler.php

@ -26,8 +26,7 @@ function decompiler_boucle($struct, $fmt = '', $prof = 0) {
$postaff = decompiler_($struct->postaff, $fmt, $prof);
$type = $struct->sql_serveur ? "$struct->sql_serveur:" : '';
$type .= ($struct->type_requete ? $struct->type_requete :
$struct->table_optionnelle);
$type .= ($struct->type_requete ?: $struct->table_optionnelle);
if ($struct->jointures_explicites) {
$type .= ' ' . $struct->jointures_explicites;
@ -50,7 +49,7 @@ function decompiler_boucle($struct, $fmt = '', $prof = 0) {
function decompiler_include($struct, $fmt = '', $prof = 0) {
$res = [];
foreach ($struct->param ? $struct->param : [] as $couple) {
foreach ($struct->param ?: [] as $couple) {
array_shift($couple);
foreach ($couple as $v) {
$res[] = decompiler_($v, $fmt, $prof);
@ -119,7 +118,7 @@ function decompiler_liste($sources, $fmt = '', $prof = 0) {
foreach ($arg as $v) {
// cas des arguments entoures de ' ou "
if (
(count($v) == 1)
((is_countable($v) ? count($v) : 0) == 1)
and $v[0]->type == 'texte'
and (strlen($v[0]->apres) == 1)
and $v[0]->apres == $v[0]->avant
@ -156,7 +155,7 @@ function decompiler_criteres($boucle, $fmt = '', $prof = 0) {
$args = [];
foreach ($crit as $i => $v) {
if (
(count($v) == 1)
((is_countable($v) ? count($v) : 0) == 1)
and $v[0]->type == 'texte'
and $v[0]->apres
) {
@ -195,7 +194,7 @@ function decompiler_($liste, $fmt = '', $prof = 0) {
continue;
} #??????
$d = 'decompiler_' . $p->type;
$next = isset($liste[$k + 1]) ? $liste[$k + 1] : false;
$next = $liste[$k + 1] ?? false;
// Forcer le champ etendu si son source (pas les reecritures)
// contenait des args et s'il est suivi d'espaces,
// le champ simple les eliminant est un bug helas perenne.

8
ecrire/public/fonctions.php

@ -269,7 +269,7 @@ function filtre_pagination_affiche_texte_lien_page_dist($type_pagination, $numer
case 'resultats':
return $rang_item + 1; // 1 11 21 31...
case 'naturel':
return $rang_item ? $rang_item : 1; // 1 10 20 30...
return $rang_item ?: 1; // 1 10 20 30...
case 'rang':
return $rang_item; // 0 10 20 30...
@ -341,7 +341,7 @@ function retrouver_rang_lien($objet_source, $ids, $objet_lie, $idl, $objet_lien)
$res = lister_objets_liens($objet_source, $objet_lie, $idl, $objet_lien);
$res = array_column($res, 'rang_lien', $objet_source);
return (isset($res[$ids]) ? $res[$ids] : '');
return ($res[$ids] ?? '');
}
@ -391,7 +391,7 @@ function calculer_rang_smart($titre, $objet_source, $id, $env) {
and isset($env['_objet_lien']) and $env['_objet_lien']
and (function_exists('lien_triables') or include_spip('action/editer_liens'))
and $r = objet_associable($env['_objet_lien'])
and list($p, $table_lien) = $r
and [$p, $table_lien] = $r
and lien_triables($table_lien)
and isset($env['objet']) and $env['objet']
and isset($env['id_objet']) and $env['id_objet']
@ -399,7 +399,7 @@ function calculer_rang_smart($titre, $objet_source, $id, $env) {
and $id = intval($id)
) {
$rang = retrouver_rang_lien($objet_source, $id, $env['objet'], $env['id_objet'], $env['_objet_lien']);
return ($rang ? $rang : '');
return ($rang ?: '');
}
return recuperer_numero($titre);
}

12
ecrire/public/format_html.php

@ -78,7 +78,7 @@ function format_critere_html($critere) {
foreach ($critere as $k => $crit) {
$crit_s = '';
foreach ($crit as $operande) {
list($type, $valeur) = $operande;
[$type, $valeur] = $operande;
if ($type == 'champ' and $valeur[0] == '[') {
$valeur = substr($valeur, 1, -1);
if (preg_match(',^[(](#[^|]*)[)]$,sS', $valeur)) {
@ -100,9 +100,9 @@ function format_liste_html($fonc, $args, $prof) {
// Concatenation sans separateur: verifier qu'on ne cree pas de faux lexemes
function format_suite_html($args) {
for ($i = 0; $i < count($args) - 1; $i++) {
list($texte, $type) = $args[$i];
list($texte2, $type2) = $args[$i + 1];
for ($i = 0; $i < (is_countable($args) ? count($args) : 0) - 1; $i++) {
[$texte, $type] = $args[$i];
[$texte2, $type2] = $args[$i + 1];
if (!$texte or !$texte2) {
continue;
}
@ -129,9 +129,7 @@ function format_suite_html($args) {
}
}
return join('', array_map(function ($arg) {
return reset($arg);
}, $args));
return join('', array_map(fn($arg) => reset($arg), $args));
}
function format_texte_html($texte) {

11
ecrire/public/iterateur.php

@ -23,6 +23,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
class IterFactory {
public static function create($iterateur, $command, $info = null) {
$iter = null;
// cas des SI {si expression} analises tres tot
// pour eviter le chargement de tout iterateur
if (isset($command['si'])) {
@ -39,11 +40,11 @@ class IterFactory {
// (il faudrait passer l'argument ->sql_serveur
// pour etre certain qu'on est sur un "php:")
if (class_exists($iterateur)) {
$a = isset($command['args']) ? $command['args'] : [];
$a = $command['args'] ?? [];
// permettre de passer un Iterateur directement {args #ITERATEUR} :
// si on recoit deja un iterateur en argument, on l'utilise
if (count($a) == 1 and is_object($a[0]) and is_subclass_of($a[0], 'Iterator')) {
if ((is_countable($a) ? count($a) : 0) == 1 and is_object($a[0]) and is_subclass_of($a[0], \Iterator::class)) {
$iter = $a[0];
// sinon, on cree un iterateur du type donne
@ -51,7 +52,7 @@ class IterFactory {
// arguments de creation de l'iterateur...
// (pas glop)
try {
switch (count($a)) {
switch (is_countable($a) ? count($a) : 0) {
case 0:
$iter = new $iterateur();
break;
@ -259,9 +260,7 @@ class IterDecorator extends FilterIterator {
if ($this->filtre) {
if ($filtres = $this->assembler_filtres($this->filtre)) {
$filtres = 'return ' . $filtres . ';';
$this->func_filtre = function () use ($filtres) {
return eval($filtres);
};
$this->func_filtre = fn() => eval($filtres);
}
else {
$this->func_filtre = null;

17
ecrire/public/jointures.php

@ -105,7 +105,7 @@ function calculer_jointure(&$boucle, $depart, $arrivee, $col = '', $cond = false
// jusqu'a ce qu'on trouve une jointure ou qu'on atteigne la limite maxi
$max = 1;
$res = false;
$milieu_exclus = ($col ? $col : []);
$milieu_exclus = ($col ?: []);
while ($max <= $max_liens and !$res) {
$res = calculer_chaine_jointures($boucle, $depart, $arrivee, [], $milieu_exclus, $max);
$max++;
@ -114,7 +114,7 @@ function calculer_jointure(&$boucle, $depart, $arrivee, $col = '', $cond = false
return '';
}
list($nom, $desc) = $depart;
[$nom, $desc] = $depart;
return fabrique_jointures($boucle, $res, $cond, $desc, $nom, $col);
}
@ -155,17 +155,20 @@ function calculer_jointure(&$boucle, $depart, $arrivee, $col = '', $cond = false
* Alias de la table de jointure (Lx)
*/
function fabrique_jointures(&$boucle, $res, $cond = false, $desc = [], $nom = '', $col = '', $echap = true) {
$a = [];
$j = null;
$n = null;
static $num = [];
$id_table = '';
$cpt = &$num[$boucle->descr['nom']][$boucle->descr['gram']][$boucle->id_boucle];
foreach ($res as $cle => $r) {
list($d, $a, $j) = $r;
[$d, $a, $j] = $r;
if (!$id_table) {
$id_table = $d;
}
$n = ++$cpt;
if (is_array($j)) { // c'est un lien sur un champ du type id_objet,objet,'article'
list($j1, $j2, $obj, $type) = $j;
[$j1, $j2, $obj, $type] = $j;
// trouver de quel cote est (id_objet,objet)
if ($j1 == "id_$obj") {
$obj = "$id_table.$obj";
@ -373,8 +376,8 @@ function calculer_chaine_jointures(
$milieu_exclus[] = 'objet';
}
list($dnom, $ddesc) = $depart;
list($anom, $adesc) = $arrivee;
[$dnom, $ddesc] = $depart;
[$anom, $adesc] = $arrivee;
if (!count($vu)) {
$vu[] = $dnom; // ne pas oublier la table de depart
$vu[] = $anom; // ne pas oublier la table d'arrivee
@ -614,7 +617,7 @@ function trouver_champ_exterieur($cle, $joints, &$boucle, $checkarrivee = false)
// -> il faut trouver une cle de depart zzz telle que
// id_objet,objet,zzz soit a l'arrivee
else {
$depart = liste_champs_jointures((isset($desc['table']) ? $desc['table'] : ''), $desc);
$depart = liste_champs_jointures(($desc['table'] ?? ''), $desc);
foreach ($depart as $d) {
$cle = [];
$cle[] = array_shift($decompose); // id_objet

4
ecrire/public/normaliser.php

@ -103,7 +103,7 @@ function phraser_vieux_emb(&$p) {
$param = ['', [$texte]];
// Transformer les filtres en arguments
for ($i = 0; $i < count($p->param); $i++) {
for ($i = 0; $i < (is_countable($p->param) ? count($p->param) : 0); $i++) {
if ($p->param[$i][0]) {
if (!strstr($p->param[$i][0], '=')) {
break;
@ -206,7 +206,7 @@ function normaliser_inclure($champ) {
}
$champ->texte = $p;
unset($champ->param[0][$k]);
if (count($champ->param[0]) == 1) {
if ((is_countable($champ->param[0]) ? count($champ->param[0]) : 0) == 1) {
array_shift($champ->param);
}

6
ecrire/public/parametrer.php

@ -53,7 +53,7 @@ function public_parametrer_dist($fond, $contexte = '', $cache = '', string $conn
if (!$styliser) {
$styliser = charger_fonction('styliser', 'public');
}
list($skel, $mime_type, $gram, $sourcefile) =
[$skel, $mime_type, $gram, $sourcefile] =
$styliser($fond, $contexte, $GLOBALS['spip_lang'], $connect);
if ($skel) {
@ -80,7 +80,7 @@ function public_parametrer_dist($fond, $contexte = '', $cache = '', string $conn
} else {
// Preparer l'appel de la fonction principale du squelette
spip_timer($a = 'calcul page ' . rand(0, 1000));
spip_timer($a = 'calcul page ' . random_int(0, 1000));
// On cree un marqueur de notes unique lie a cette composition
// et on enregistre l'etat courant des globales de notes...
@ -174,7 +174,7 @@ function public_parametrer_dist($fond, $contexte = '', $cache = '', string $conn
if (test_espace_prive() or strncmp($fond, 'modeles/', 8) == 0) {
$page['entetes']['X-Spip-Cache'] = 0;
} else {
$page['entetes']['X-Spip-Cache'] = isset($GLOBALS['delais']) ? $GLOBALS['delais'] : 36000;
$page['entetes']['X-Spip-Cache'] = $GLOBALS['delais'] ?? 36000;
}
}

30
ecrire/public/phraser_html.php

@ -67,7 +67,7 @@ function phraser_inclure($texte, $ligne, $result) {
while (preg_match(BALISE_INCLURE, $texte, $match)) {
$match = array_pad($match, 3, null);
$p = strpos($texte, $match[0]);
$p = strpos($texte, (string) $match[0]);
$debut = substr($texte, 0, $p);
if ($p) {
$result = phraser_idiomes($debut, $ligne, $result);
@ -87,7 +87,7 @@ function phraser_inclure($texte, $ligne, $result) {
// on assimile {var=val} a une liste de un argument sans fonction
$pos_apres = 0;
phraser_args($texte, '/>', '', $result, $champ, $pos_apres);
if (!$champ->texte or count($champ->param) > 1) {
if (!$champ->texte or (is_countable($champ->param) ? count($champ->param) : 0) > 1) {
if (!function_exists('normaliser_inclure')) {
include_spip('public/normaliser');
}
@ -106,7 +106,7 @@ function phraser_polyglotte($texte, $ligne, $result) {
if (preg_match_all(BALISE_POLYGLOTTE, $texte, $m, PREG_SET_ORDER)) {
foreach ($m as $match) {
$p = strpos($texte, $match[0]);
$p = strpos($texte, (string) $match[0]);
$debut = substr($texte, 0, $p);
if ($p) {
$champ = new Texte();
@ -165,7 +165,7 @@ function phraser_polyglotte($texte, $ligne, $result) {
function phraser_idiomes($texte, $ligne, $result) {
while (preg_match(BALISE_IDIOMES, $texte, $match)) {
$match = array_pad($match, 8, null);
$p = strpos($texte, $match[0]);
$p = strpos($texte, (string) $match[0]);
$ko = (!$match[3] && ($match[5][0] !== '='));
$debut = substr($texte, 0, $p + ($ko ? strlen($match[0]) : 0));
if ($debut) {
@ -218,7 +218,7 @@ function phraser_idiomes($texte, $ligne, $result) {
**/
function phraser_champs($texte, $ligne, $result) {
while (preg_match('/' . NOM_DE_CHAMP . '/S', $texte, $match)) {
$p = strpos($texte, $match[0]);
$p = strpos($texte, (string) $match[0]);
// texte après la balise
$suite = substr($texte, $p + strlen($match[0]));
@ -271,7 +271,7 @@ function phraser_champs_etendus($texte, $ligne, $result) {
return $result;
}
$sep = '##';
while (strpos($texte, $sep) !== false) {
while (strpos($texte, (string) $sep) !== false) {
$sep .= '#';
}
@ -377,7 +377,7 @@ function phraser_arg(&$texte, $sep, $result, &$pointeur_champ) {
$collecte = array_merge($collecte, $arg);
$result = array_merge($result, $arg);
} else {
$n = strpos($args, $r[0]);
$n = strpos($args, (string) $r[0]);
$pred = substr($args, 0, $n);
$par = ',}';
if (preg_match('/^(.*)\($/', $pred, $m)) {
@ -400,13 +400,13 @@ function phraser_arg(&$texte, $sep, $result, &$pointeur_champ) {
while ($next == '{') {
phraser_arg($rec, $sep, [], $champ);
$args = ltrim($rec);
$next = isset($args[0]) ? $args[0] : '';
$next = $args[0] ?? '';
}
while ($next == '|') {
$pos_apres = 0;
phraser_args($rec, $par, $sep, [], $champ, $pos_apres);
$args = substr($rec, $pos_apres);
$next = isset($args[0]) ? $args[0] : '';
$next = $args[0] ?? '';
}
// Si erreur de syntaxe dans un sous-argument, propager.
if ($champ->param === false) {
@ -453,7 +453,7 @@ function phraser_arg(&$texte, $sep, $result, &$pointeur_champ) {
// https://code.spip.net/@phraser_champs_exterieurs
function phraser_champs_exterieurs($texte, $ligne, $sep, $nested) {
$res = [];
while (($p = strpos($texte, "%$sep")) !== false) {
while (($p = strpos($texte, (string) "%$sep")) !== false) {
if (!preg_match(',^%' . preg_quote($sep) . '([0-9]+)@,', substr($texte, $p), $m)) {
break;
}
@ -478,7 +478,7 @@ function phraser_champs_interieurs($texte, $ligne, $sep, $result) {
$j = $i;
$n = $ligne;
while (preg_match(CHAMP_ETENDU, $texte, $match)) {
$p = strpos($texte, $match[0]);
$p = strpos($texte, (string) $match[0]);
$debut = substr($texte, 0, $p);
if ($p) {
$result[$i] = $debut;
@ -602,7 +602,7 @@ function phraser_criteres($params, &$result) {
foreach ($params as $v) {
$var = $v[1][0];
$param = ($var->type != 'texte') ? '' : $var->texte;
if ((count($v) > 2) && (!preg_match(',[^A-Za-z]IN[^A-Za-z],i', $param))) {
if (((is_countable($v) ? count($v) : 0) > 2) && (!preg_match(',[^A-Za-z]IN[^A-Za-z],i', $param))) {
// plus d'un argument et pas le critere IN:
// detecter comme on peut si c'est le critere implicite LIMIT debut, fin
if (
@ -767,7 +767,7 @@ function phraser_criteres($params, &$result) {
// pour que la variable $doublon_index ait la bonne valeur
// cf critere_doublon
if ($doublons) {
$args = array_merge($args, $doublons);
$args = [...$args, ...$doublons];
}
// Si erreur, laisser la chaine dans ce champ pour le HTTP 503
@ -1047,7 +1047,7 @@ function public_phraser_html_dist($texte, $id_parent, &$boucles, $descr, $ligne_
// boucle anonyme ?
if (!strlen($id_boucle)) {
$id_boucle = '_anon_L' . $ligne_milieu . '_' . substr(md5('anonyme:' . $id_parent . ':' . json_encode($boucle)), 0, 8);
$id_boucle = '_anon_L' . $ligne_milieu . '_' . substr(md5('anonyme:' . $id_parent . ':' . json_encode($boucle, JSON_THROW_ON_ERROR)), 0, 8);
}
$pos_debut_boucle = $pos_courante;
@ -1076,7 +1076,7 @@ function public_phraser_html_dist($texte, $id_parent, &$boucles, $descr, $ligne_
if (
!preg_match(SPEC_BOUCLE, $texte, $match, 0, $pos_milieu)
or ($pos_match = strpos($texte, $match[0], $pos_milieu)) === false
or ($pos_match = strpos($texte, (string) $match[0], $pos_milieu)) === false
or $pos_match > $pos_milieu
) {
$err_b = ['zbug_erreur_boucle_syntaxe', ['id' => $id_boucle]];

11
ecrire/public/quete.php

@ -91,7 +91,7 @@ function quete_parent_lang($table, $id, string $connect = '') {
}
}
return isset($cache_quete[$connect][$table][$id]) ? $cache_quete[$connect][$table][$id] : null;
return $cache_quete[$connect][$table][$id] ?? null;
}
@ -619,10 +619,7 @@ function calcul_exposer($id, $prim, $reference, $parent, $type, string $connect
// qu'une fois (par squelette) et on conserve le resultat
// en static.
if (!isset($exposer[$m = md5(serialize($reference))][$prim])) {
$principal = isset($reference[$type]) ? $reference[$type] :
// cas de la pagination indecte @xx qui positionne la page avec l'id xx
// et donne la reference dynamique @type=xx dans le contexte
(isset($reference["@$type"]) ? $reference["@$type"] : '');
$principal = $reference[$type] ?? $reference["@$type"] ?? '';
// le parent fournit en argument est le parent de $id, pas celui de $principal
// il n'est donc pas utile
$parent = 0;
@ -636,7 +633,7 @@ function calcul_exposer($id, $prim, $reference, $parent, $type, string $connect
or isset($reference["@$t"])
) {
$type = $t;
$principal = isset($reference[$type]) ? $reference[$type] : $reference["@$type"];
$principal = $reference[$type] ?? $reference["@$type"];
continue;
}
}
@ -723,4 +720,4 @@ function is_whereable($value): bool {
return true;
}
return false;
}
}

18
ecrire/public/references.php

@ -150,7 +150,7 @@ function index_pile(
// modifie $joker si tous les champs sont autorisés.
// $t = le select pour le champ, si on l'a trouvé (ou si joker)
// $c = le nom du champ demandé
list($t, $c) = index_tables_en_pile($idb, $nom_champ, $boucles, $joker);
[$t, $c] = index_tables_en_pile($idb, $nom_champ, $boucles, $joker);
if ($t) {
if ($select and !in_array($t, $boucles[$idb]->select)) {
$boucles[$idb]->select[] = $t;
@ -198,7 +198,7 @@ function index_pile(
function index_compose($conditionnel, $defaut) {
while ($c = array_pop($conditionnel)) {
// si on passe defaut = '', ne pas générer d'erreur de compilation.
$defaut = "($c:(" . ($defaut ? $defaut : "''") . '))';
$defaut = "($c:(" . ($defaut ?: "''") . '))';
}
return $defaut;
@ -250,9 +250,9 @@ function index_tables_en_pile($idb, $nom_champ, &$boucles, &$joker) {
$desc = $boucles[$idb]->show;
// le nom du champ est il une exception de la table ? un alias ?
$excep = isset($GLOBALS['exceptions_des_tables'][$r]) ? $GLOBALS['exceptions_des_tables'][$r] : '';
$excep = $GLOBALS['exceptions_des_tables'][$r] ?? '';
if ($excep) {
$excep = isset($excep[$nom_champ]) ? $excep[$nom_champ] : '';
$excep = $excep[$nom_champ] ?? '';
}
if ($excep) {
$joker = false; // indiquer a l'appelant
@ -348,7 +348,7 @@ function index_exception(&$boucle, $desc, $nom_champ, $excep) {
$t = $index_exception_derogatoire($boucle, $desc, $nom_champ, $excep);
}
if ($t == null) {
list($e, $x) = $excep; #PHP4 affecte de gauche a droite
[$e, $x] = $excep; #PHP4 affecte de gauche a droite
$excep = $x; #PHP5 de droite a gauche !
$j = $trouver_table($e, $boucle->sql_serveur);
if (!$j) {
@ -747,8 +747,8 @@ function champs_traitements($p) {
}
// mais on peut aussi etre hors boucle. Se mefier.
$type_requete = isset($p->boucles[$idb]->type_requete) ? $p->boucles[$idb]->type_requete : false;
$table_sql = isset($p->boucles[$idb]->show['table_sql']) ? $p->boucles[$idb]->show['table_sql'] : false;
$type_requete = $p->boucles[$idb]->type_requete ?? false;
$table_sql = $p->boucles[$idb]->show['table_sql'] ?? false;
// bien prendre en compte les alias de boucles (hierarchie => rubrique, syndication => syncdic, etc.)
if ($type_requete and isset($GLOBALS['table_des_tables'][$type_requete])) {
@ -858,7 +858,7 @@ function compose_filtres(&$p, $code) {
// recuperer les arguments du filtre,
// a separer par "," ou ":" dans le cas du filtre "?{a,b}"
$countfiltre = count($filtre);
$countfiltre = is_countable($filtre) ? count($filtre) : 0;
if ($fonc !== '?') {
$sep = ',';
} else {
@ -994,7 +994,7 @@ function rindex_pile($p, $champ, $motif) {
* @return string Nom de la balise, avec indication de boucle explicite si présent.
*/
function zbug_presenter_champ($p, $champ = '') {
$balise = $champ ? $champ : $p->nom_champ;
$balise = $champ ?: $p->nom_champ;
$explicite = $p->nom_boucle ? $p->nom_boucle . ':' : '';
return "#{$explicite}{$balise}";
}

2
ecrire/public/sandbox.php

@ -182,7 +182,7 @@ function sandbox_filtrer_squelette($skel, $corps, $filtres) {
$replace = echapper_php_callback();
foreach ($series_filtres as $filtres) {
if (count($filtres)) {
if (is_countable($filtres) ? count($filtres) : 0) {
foreach ($filtres as $filtre) {
if ($filtre and $f = chercher_filtre($filtre)) {
$corps = $f($corps);

4
ecrire/public/styliser.php

@ -57,7 +57,7 @@ function public_styliser_dist($fond, $contexte, $lang = '', string $connect = ''
$id_rubrique = 0;
// Chercher le fond qui va servir de squelette
if ($r = quete_rubrique_fond($contexte)) {
list($id_rubrique, $lang) = $r;
[$id_rubrique, $lang] = $r;
}
// trouver un squelette du nom demande
@ -189,7 +189,7 @@ function quete_rubrique_fond($contexte) {
$id
and $row = quete_parent_lang(table_objet_sql($liste_objets[$_id]), $id)
) {
$lang = isset($row['lang']) ? $row['lang'] : '';
$lang = $row['lang'] ?? '';
if ($_id == 'id_rubrique' or (isset($row['id_rubrique']) and $id = $row['id_rubrique'])) {
return $quete[$s] = [$id, $lang];
}

6
ecrire/public/styliser_par_z.php

@ -226,7 +226,7 @@ function public_styliser_par_z_dist($flux) {
*/
function z_blocs($espace_prive = false) {
if ($espace_prive) {
return (isset($GLOBALS['z_blocs_ecrire']) ? $GLOBALS['z_blocs_ecrire'] : [
return ($GLOBALS['z_blocs_ecrire'] ?? [
'contenu',
'navigation',
'extra',
@ -236,7 +236,7 @@ function z_blocs($espace_prive = false) {
]);
}
return (isset($GLOBALS['z_blocs']) ? $GLOBALS['z_blocs'] : ['contenu']);
return ($GLOBALS['z_blocs'] ?? ['contenu']);
}
/**
@ -350,7 +350,7 @@ function z_echafaudable($type) {
if (!isset($pages[$type])) {
return $echafaudable[$type] = false;
}
if (count($pages[$type]) == 2) {
if ((is_countable($pages[$type]) ? count($pages[$type]) : 0) == 2) {
$trouver_table = charger_fonction('trouver_table', 'base');
$pages[$type][] = $trouver_table(reset($pages[$type]));
}

10
ecrire/public/tracer.php

@ -61,8 +61,8 @@ function trace_query_end($query, $start, $result, $erreur, $serveur = '') {
}
if ($start) {
$end = microtime();
list($usec, $sec) = explode(' ', $start);
list($usec2, $sec2) = explode(' ', $end);
[$usec, $sec] = explode(' ', $start);
[$usec2, $sec2] = explode(' ', $end);
$dt = $sec2 + $usec2 - $sec - $usec;
pipeline('trig_trace_query', ['query' => $query, 'start' => $start, 'end' => $end, 'time' => $dt, 'result' => $result, 'erreur' => $erreur, 'serveur' => $serveur]);
if ($trace) {
@ -84,7 +84,7 @@ function trace_query_chrono($dt, $query, $result, $serveur = '') {
$x = _request('var_mode_objet');
if (isset($GLOBALS['debug']['aucasou'])) {
list(, $boucle, $serveur, $contexte) = $GLOBALS['debug']['aucasou'];
[, $boucle, $serveur, $contexte] = $GLOBALS['debug']['aucasou'];
if ($x and !preg_match("/$boucle\$/", $x)) {
return;
}
@ -115,7 +115,7 @@ function chrono_requete($temps) {
$t = $q = $n = $d = [];
// Totaliser les temps et completer le Explain
foreach ($temps as $key => $v) {
list($dt, $nb, $boucle, $query, $explain, $res, $contexte) = $v;
[$dt, $nb, $boucle, $query, $explain, $res, $contexte] = $v;
if (is_array($contexte)) {
$k = ($contexte[0] . " $boucle");
include_spip('public/compiler');
@ -193,7 +193,7 @@ function chrono_requete($temps) {
. join("</td></tr>\n<tr><td>", $d)
. "</td></tr>\n"
. (# _request('var_mode_objet') ? '' :
('<tr><td>' . count($temps) . '</td><td>' . _T('info_total') . '</td><td class="time">' . $total . '</td><td></td></tr>'))
('<tr><td>' . (is_countable($temps) ? count($temps) : 0) . '</td><td>' . _T('info_total') . '</td><td class="time">' . $total . '</td><td></td></tr>'))
];
return [$temps, $navigation];

Loading…
Cancel
Save