From c8af2caa29426279d7a4c71bc2084f5437f970da Mon Sep 17 00:00:00 2001 From: Matthieu Marcillaud <marcimat@rezo.net> Date: Tue, 14 Mar 2023 23:11:08 +0100 Subject: [PATCH] chore: Rector up to PHP 8.0 sur ecrire/public --- ecrire/public/boucles.php | 2 +- ecrire/public/cacher.php | 88 +++++----- ecrire/public/criteres.php | 271 ++++++++++++++----------------- ecrire/public/debusquer.php | 101 ++++++------ ecrire/public/decompiler.php | 30 ++-- ecrire/public/evaluer_page.php | 16 +- ecrire/public/fonctions.php | 107 +++++------- ecrire/public/format_html.php | 36 ++-- ecrire/public/interfaces.php | 14 +- ecrire/public/jointures.php | 88 +++++----- ecrire/public/normaliser.php | 37 ++--- ecrire/public/parametrer.php | 22 +-- ecrire/public/phraser_html.php | 74 ++++----- ecrire/public/quete.php | 76 ++++----- ecrire/public/sandbox.php | 22 +-- ecrire/public/styliser.php | 29 ++-- ecrire/public/styliser_par_z.php | 107 ++++++------ ecrire/public/tracer.php | 24 +-- 18 files changed, 514 insertions(+), 630 deletions(-) diff --git a/ecrire/public/boucles.php b/ecrire/public/boucles.php index bd1666add6..2b690d05e0 100644 --- a/ecrire/public/boucles.php +++ b/ecrire/public/boucles.php @@ -99,7 +99,7 @@ function boucle_HIERARCHIE_dist($id_boucle, &$boucles) { $boucle->where[] = ["'IN'", "'$id_table'", '"($hierarchie)"']; $order = "FIELD($id_table, \$hierarchie)"; - if (!isset($boucle->default_order[0]) or $boucle->default_order[0] != ' DESC') { + if (!isset($boucle->default_order[0]) || $boucle->default_order[0] != ' DESC') { $boucle->default_order[] = "\"$order\""; } else { $boucle->default_order[0] = "\"$order DESC\""; diff --git a/ecrire/public/cacher.php b/ecrire/public/cacher.php index 218dbff392..cb828b68bd 100644 --- a/ecrire/public/cacher.php +++ b/ecrire/public/cacher.php @@ -45,7 +45,7 @@ function cache_chemin_fichier($nom_cache, $ecrire = false) { static $l1, $l2; if (is_null($l1)) { $length = (defined('_CACHE_PROFONDEUR_STOCKAGE') ? min(8, max(_CACHE_PROFONDEUR_STOCKAGE, 2)) : 4); - $l1 = intval(floor($length / 2)); + $l1 = (int) floor($length / 2); $l2 = $length - $l1; } $d = substr($nom_cache, 0, $l1); @@ -85,10 +85,10 @@ function lire_cache($nom_cache) { $tmp = []; if ( file_exists($f = cache_chemin_fichier($nom_cache)) - and lire_fichier($f, $tmp) - and $tmp = unserialize($tmp) - and $tmp['nom_cache'] == $nom_cache - and isset($tmp['valeur']) + && lire_fichier($f, $tmp) + && ($tmp = unserialize($tmp)) + && $tmp['nom_cache'] == $nom_cache + && isset($tmp['valeur']) ) { return $tmp['valeur']; } @@ -126,7 +126,7 @@ function cache_signature(&$page) { * @return array */ function gzip_page($page) { - if (function_exists('gzcompress') and strlen($page['texte']) > 16 * 1024) { + if (function_exists('gzcompress') && strlen($page['texte']) > 16 * 1024) { $page['gz'] = true; $page['texte'] = gzcompress($page['texte']); } else { @@ -169,27 +169,27 @@ function cache_valide(&$page, $date) { // Apparition d'un nouvel article post-date ? if ( isset($GLOBALS['meta']['post_dates']) - and $GLOBALS['meta']['post_dates'] == 'non' - and isset($GLOBALS['meta']['date_prochain_postdate']) - and $now > $GLOBALS['meta']['date_prochain_postdate'] + && $GLOBALS['meta']['post_dates'] == 'non' + && isset($GLOBALS['meta']['date_prochain_postdate']) + && $now > $GLOBALS['meta']['date_prochain_postdate'] ) { spip_log('Un article post-date invalide le cache'); include_spip('inc/rubriques'); calculer_prochain_postdate(true); } - if (defined('_VAR_NOCACHE') and _VAR_NOCACHE) { + if (defined('_VAR_NOCACHE') && _VAR_NOCACHE) { return -1; } - if (isset($GLOBALS['meta']['cache_inhib']) and $_SERVER['REQUEST_TIME'] < $GLOBALS['meta']['cache_inhib']) { + if (isset($GLOBALS['meta']['cache_inhib']) && $_SERVER['REQUEST_TIME'] < $GLOBALS['meta']['cache_inhib']) { return -1; } if (defined('_NO_CACHE')) { - return (_NO_CACHE == 0 and !isset($page['texte'])) ? 1 : _NO_CACHE; + return (_NO_CACHE == 0 && !isset($page['texte'])) ? 1 : _NO_CACHE; } // pas de cache ? on le met a jour, sauf pour les bots (on leur calcule la page sans mise en cache) - if (!$page or !isset($page['texte']) or !isset($page['entetes']['X-Spip-Cache'])) { + if (!$page || !isset($page['texte']) || !isset($page['entetes']['X-Spip-Cache'])) { return _IS_BOT ? -1 : 1; } @@ -200,30 +200,30 @@ function cache_valide(&$page, $date) { // #CACHE{n,statique} => on n'invalide pas avec derniere_modif // cf. ecrire/public/balises.php, balise_CACHE_dist() - if (!isset($page['entetes']['X-Spip-Statique']) or $page['entetes']['X-Spip-Statique'] !== 'oui') { - // Cache invalide par la meta 'derniere_modif' - // sauf pour les bots, qui utilisent toujours le cache - if ( + // Cache invalide par la meta 'derniere_modif' + // sauf pour les bots, qui utilisent toujours le cache + if ( + (!isset($page['entetes']['X-Spip-Statique']) || $page['entetes']['X-Spip-Statique'] !== 'oui') + && ( !_IS_BOT - and $GLOBALS['derniere_modif_invalide'] - and isset($GLOBALS['meta']['derniere_modif']) - and $date < $GLOBALS['meta']['derniere_modif'] - ) { - return 1; - } + && $GLOBALS['derniere_modif_invalide'] + && isset($GLOBALS['meta']['derniere_modif']) + && $date < $GLOBALS['meta']['derniere_modif'] + ) + ) { + return 1; } // Sinon comparer l'age du fichier a sa duree de cache - $duree = intval($page['entetes']['X-Spip-Cache']); + $duree = (int) $page['entetes']['X-Spip-Cache']; $cache_mark = ($GLOBALS['meta']['cache_mark'] ?? 0); if ($duree == 0) { #CACHE{0} return -1; } // sauf pour les bots, qui utilisent toujours le cache else { if ( - (!_IS_BOT and $date + $duree < $now) - # le cache est anterieur a la derniere purge : l'ignorer, meme pour les bots - or $date < $cache_mark + !_IS_BOT && $date + $duree < $now + || $date < $cache_mark ) { return _IS_BOT ? -1 : 1; } else { @@ -247,8 +247,8 @@ function creer_cache(&$page, &$chemin_cache) { // le cas var_nocache ne devrait jamais arriver ici (securite) // le cas spip_interdire_cache correspond a une ereur SQL grave non anticipable if ( - (defined('_VAR_NOCACHE') and _VAR_NOCACHE) - or defined('spip_interdire_cache') + defined('_VAR_NOCACHE') && _VAR_NOCACHE + || defined('spip_interdire_cache') ) { return; } @@ -257,7 +257,7 @@ function creer_cache(&$page, &$chemin_cache) { // 'tmp/cache/MD5(chemin_cache)_zz' if ( isset($page['invalideurs']) - and isset($page['invalideurs']['session']) + && isset($page['invalideurs']['session']) ) { // on verifie que le contenu du chemin cache indique seulement // "cache sessionne" ; sa date indique la date de validite @@ -357,8 +357,8 @@ function public_cacher_dist($contexte, &$use_cache, &$chemin_cache, &$page, &$la // Cas ignorant le cache car completement dynamique if ( - (!empty($_SERVER['REQUEST_METHOD']) and $_SERVER['REQUEST_METHOD'] === 'POST') - or _request('connect') + !empty($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'POST' + || _request('connect') ) { $use_cache = -1; $lastmodified = 0; @@ -380,15 +380,14 @@ function public_cacher_dist($contexte, &$use_cache, &$chemin_cache, &$page, &$la // s'il est sessionne, charger celui correspondant a notre session if ( isset($page['invalideurs']) - and isset($page['invalideurs']['session']) + && isset($page['invalideurs']['session']) ) { $chemin_cache_session = generer_nom_fichier_cache( ['chemin_cache' => $chemin_cache], ['session' => spip_session()] ); if ( - $page_session = lire_cache($chemin_cache_session) - and $page_session['lastmodified'] >= $page['lastmodified'] + ($page_session = lire_cache($chemin_cache_session)) && $page_session['lastmodified'] >= $page['lastmodified'] ) { $page = $page_session; } else { @@ -398,15 +397,14 @@ function public_cacher_dist($contexte, &$use_cache, &$chemin_cache, &$page, &$la // Faut-il effacer des pages invalidees (en particulier ce cache-ci) ? - if (isset($GLOBALS['meta']['invalider'])) { - // ne le faire que si la base est disponible - if (spip_connect()) { - include_spip('inc/invalideur'); - retire_caches($chemin_cache); # API invalideur inutile - supprimer_fichier(_DIR_CACHE . $chemin_cache); - if (isset($chemin_cache_session) and $chemin_cache_session) { - supprimer_fichier(_DIR_CACHE . $chemin_cache_session); - } + // ne le faire que si la base est disponible + if (isset($GLOBALS['meta']['invalider']) && spip_connect()) { + include_spip('inc/invalideur'); + retire_caches($chemin_cache); + # API invalideur inutile + supprimer_fichier(_DIR_CACHE . $chemin_cache); + if (isset($chemin_cache_session) && $chemin_cache_session) { + supprimer_fichier(_DIR_CACHE . $chemin_cache_session); } } @@ -423,7 +421,7 @@ function public_cacher_dist($contexte, &$use_cache, &$chemin_cache, &$page, &$la include_spip('inc/invalideur'); retire_caches($chemin_cache); # API invalideur inutile supprimer_fichier(_DIR_CACHE . $chemin_cache); - if (isset($chemin_cache_session) and $chemin_cache_session) { + if (isset($chemin_cache_session) && $chemin_cache_session) { supprimer_fichier(_DIR_CACHE . $chemin_cache_session); } } diff --git a/ecrire/public/criteres.php b/ecrire/public/criteres.php index c9680f2a08..1f047f380f 100644 --- a/ecrire/public/criteres.php +++ b/ecrire/public/criteres.php @@ -72,7 +72,7 @@ function critere_exclus_dist($idb, &$boucles, $crit) { $boucle = &$boucles[$idb]; $id = $boucle->primary; - if ($not or !$id) { + if ($not || !$id) { return ['zbug_critere_inconnu', ['critere' => $not . $crit->op]]; } $arg = kwote(calculer_argument_precedent($idb, $id, $boucles)); @@ -100,7 +100,7 @@ function critere_doublons_dist($idb, &$boucles, $crit) { $primary = $boucle->primary; // la table nécessite une clé primaire, non composée - if (!$primary or strpos($primary, ',')) { + if (!$primary || strpos($primary, ',')) { return ['zbug_doublon_sur_table_sans_cle_primaire']; } @@ -127,7 +127,7 @@ function critere_doublons_dist($idb, &$boucles, $crit) { $debut_in = "sql_in('" . $boucle->id_table . '.' . $primary . "', "; // lecture des données du doublon "$doublons[$doublon_index[] = " // Attention : boucle->doublons désigne une variable qu'on affecte - $debut_doub = '$doublons[' . (!$not ? '' : ($boucle->doublons . '[]= ')); + $debut_doub = '$doublons[' . ($not ? $boucle->doublons . '[]= ' : ('')); // le debut complet du code des doublons $debut_doub = $debut_in . $debut_doub; @@ -138,7 +138,7 @@ function critere_doublons_dist($idb, &$boucles, $crit) { // si on trouve un autre critère doublon, // on fusionne pour avoir un seul IN, et on s'en va ! foreach ($boucle->where as $k => $w) { - if (strpos($w[0], $debut_doub) === 0) { + if (str_starts_with($w[0], $debut_doub)) { // fusionner le sql_in (du where) $boucle->where[$k][0] = $debut_doub . $fin_doub . ' . ' . substr($w[0], strlen($debut_in)); // fusionner l'initialisation (du hash) pour faire plus joli @@ -183,7 +183,7 @@ function critere_doublons_dist($idb, &$boucles, $crit) { * @return void **/ function critere_lang_select_dist($idb, &$boucles, $crit) { - if (!isset($crit->param[1][0]) or !($param = $crit->param[1][0]->texte)) { + if (!isset($crit->param[1][0]) || !($param = $crit->param[1][0]->texte)) { $param = 'oui'; } if ($crit->not) { @@ -256,14 +256,15 @@ function critere_pagination_dist($idb, &$boucles, $crit) { $boucle = &$boucles[$idb]; // definition de la taille de la page - $pas = !isset($crit->param[0][0]) ? "''" - : calculer_liste([$crit->param[0][0]], $idb, $boucles, $boucle->id_parent); + $pas = isset($crit->param[0][0]) + ? calculer_liste([$crit->param[0][0]], $idb, $boucles, $boucle->id_parent) + : "''"; if (!preg_match(_CODE_QUOTE, $pas, $r)) { $pas = "((\$a = intval($pas)) ? \$a : 10)"; } else { - $r = intval($r[2]); - $pas = strval($r ?: 10); + $r = (int) $r[2]; + $pas = (string) ($r ?: 10); } // Calcul du nommage de la pagination si il existe. @@ -301,8 +302,8 @@ function critere_pagination_dist($idb, &$boucles, $crit) { $t = $boucle->id_table . '.' . $boucle->primary; if ( $boucle->primary - and !preg_match('/[,\s]/', $boucle->primary) - and !in_array($t, $boucle->select) + && !preg_match('/[,\s]/', $boucle->primary) + && !in_array($t, $boucle->select) ) { $boucle->select[] = $t; } @@ -329,7 +330,7 @@ function critere_recherche_dist($idb, &$boucles, $crit) { $boucle = &$boucles[$idb]; - if (!$boucle->primary or strpos($boucle->primary, ',')) { + if (!$boucle->primary || strpos($boucle->primary, ',')) { erreur_squelette(_T('zbug_critere_sur_table_sans_cle_primaire', ['critere' => 'recherche']), $boucle); return; @@ -454,7 +455,7 @@ function critere_meme_parent_dist($idb, &$boucles, $crit) { $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'])) { + if ($boucle->type_requete == 'rubriques' || isset($GLOBALS['exceptions_des_tables'][$boucle->id_table]['id_parent'])) { $boucle->where[] = ["'='", "'$mparent'", $arg]; } // le cas FORUMS est gere dans le plugin forum, dans la fonction critere_FORUMS_meme_parent_dist() else { @@ -519,8 +520,9 @@ function critere_branche_dist($idb, &$boucles, $crit) { $c = "sql_in('$cle" . ".$champ', calcul_branche_in($arg)" . ($not ? ", 'NOT'" : '') . ')'; - $boucle->where[] = !$crit->cond ? $c : - ("($arg ? $c : " . ($not ? "'0=1'" : "'1=1'") . ')'); + $boucle->where[] = $crit->cond + ? "($arg ? $c : " . ($not ? "'0=1'" : "'1=1'") . ')' + : $c; } /** @@ -652,12 +654,12 @@ function critere_collecte_dist($idb, &$boucles, $crit) { $boucle = $boucles[$idb]; $boucle->modificateur['collate'] = "($_coll ?' COLLATE '.$_coll:'')"; $n = is_countable($boucle->order) ? count($boucle->order) : 0; - if ($n && (strpos($boucle->order[$n - 1], 'COLLATE') === false)) { + if ($n && (!str_contains($boucle->order[$n - 1], 'COLLATE'))) { // l'instruction COLLATE doit être placée avant ASC ou DESC // notamment lors de l'utilisation `{!par xxx}{collate yyy}` if ( - (false !== $i = strpos($boucle->order[$n - 1], 'ASC')) - or (false !== $i = strpos($boucle->order[$n - 1], 'DESC')) + false !== $i = strpos($boucle->order[$n - 1], 'ASC') + || false !== $i = strpos($boucle->order[$n - 1], 'DESC') ) { $boucle->order[$n - 1] = substr_replace($boucle->order[$n - 1], "' . " . $boucle->modificateur['collate'] . " . ' ", $i, 0); } else { @@ -673,7 +675,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, (string) "static $var =") !== false); + $desc = (str_contains($boucle->in, (string) "static $var =")); if (!$desc) { $desc = $boucle->show['field']; $desc = implode(',', array_map('_q', array_keys($desc))); @@ -781,16 +783,16 @@ function critere_parinverse($idb, &$boucles, $crit) { } // tris de la forme {par champ} ou {par FONCTION(champ)} - } elseif ($boucle->type_requete == 'DATA' or preg_match(',^' . CHAMP_SQL_PLUS_FONC . '$,is', $par, $match)) { + } elseif ($boucle->type_requete == 'DATA' || preg_match(',^' . CHAMP_SQL_PLUS_FONC . '$,is', $par, $match)) { // {par FONCTION(champ)} - if (isset($match) and count($match) > 2) { + if (isset($match) && count($match) > 2) { $par = substr($match[2], 1, -1); $fct = $match[1]; } // quelques cas spécifiques {par hasard}, {par date} if ($par == 'hasard') { $order = calculer_critere_par_hasard($idb, $boucles, $crit); - } elseif ($par == 'date' and !empty($boucle->show['date'])) { + } elseif ($par == 'date' && !empty($boucle->show['date'])) { $order = "'" . $boucle->id_table . '.' . $boucle->show['date'] . "'"; } else { // cas général {par champ}, {par table.champ}, ... @@ -811,7 +813,7 @@ function critere_parinverse($idb, &$boucles, $crit) { if (preg_match('/^\'([^"]*)\'$/', $order, $m)) { $t = $m[1]; - if (strpos($t, '.') and !in_array($t, $boucle->select)) { + if (strpos($t, '.') && !in_array($t, $boucle->select)) { $boucle->select[] = $t; } } else { @@ -819,11 +821,9 @@ function critere_parinverse($idb, &$boucles, $crit) { } if ($fct) { - if (preg_match("/^\s*'(.*)'\s*$/", $order, $r)) { - $order = "'$fct(" . $r[1] . ")'"; - } else { - $order = "'$fct(' . $order . ')'"; - } + $order = preg_match("/^\s*'(.*)'\s*$/", $order, $r) + ? "'$fct(" . $r[1] . ")'" + : "'$fct(' . $order . ')'"; } $t = $order . $collecte . $sens; if (preg_match("/^(.*)'\s*\.\s*'([^']*')$/", $t, $r)) { @@ -890,9 +890,7 @@ function calculer_critere_par_expression_num($idb, &$boucles, $crit, $tri, $cham $orderassinum = calculer_critere_par_expression_sinum($idb, $boucles, $crit, $tri, $champ); $orderassinum = trim($orderassinum, "'"); - - $order = "'$orderassinum, $asnum'"; - return $order; + return "'$orderassinum, $asnum'"; } /** @@ -927,7 +925,7 @@ function calculer_critere_par_expression_sinum($idb, &$boucles, $crit, $tri, $ch $as = false; $select = "CASE ( $texte ) WHEN 0 THEN 1 ELSE 0 END AS "; foreach ($boucle->select as $s) { - if (strpos($s, $select) === 0) { + if (str_starts_with($s, $select)) { $as = trim(substr($s, strlen($select))); if (!preg_match(',\W,', $as)) { break; @@ -940,8 +938,7 @@ function calculer_critere_par_expression_sinum($idb, &$boucles, $crit, $tri, $ch $as = 'sinum' . ($boucle->order ? count($boucle->order) : ''); $boucle->select[] = $select . $as; } - $order = "'$as'"; - return $order; + return "'$as'"; } @@ -967,8 +964,7 @@ function calculer_critere_par_expression_multi($idb, &$boucles, $crit, $tri, $ch } $boucle = &$boucles[$idb]; $boucle->select[] = "\".sql_multi('" . $_champ . "', \$GLOBALS['spip_lang']).\""; - $order = "'multi'"; - return $order; + return "'multi'"; } /** @@ -1016,7 +1012,7 @@ function calculer_critere_par_champ($idb, &$boucles, $crit, $par, $raw = false) $par = $infos['alias'] . '.' . $champ; } elseif ( $boucle->jointures_explicites - and $alias = trouver_jointure_champ($champ, $boucle, explode(' ', $boucle->jointures_explicites), false, $table) + && ($alias = trouver_jointure_champ($champ, $boucle, explode(' ', $boucle->jointures_explicites), false, $table)) ) { $par = $alias . '.' . $champ; } elseif ($alias = trouver_jointure_champ($champ, $boucle, $boucle->jointures, false, $table)) { @@ -1024,8 +1020,8 @@ function calculer_critere_par_champ($idb, &$boucles, $crit, $par, $raw = false) // en spécifiant directement l'alias {par L2.titre} (situation hasardeuse tout de même) } elseif ( $table_alias - and isset($boucle->from[$table_alias]) - and $infos = chercher_champ_dans_tables($champ, $boucle->from, $boucle->sql_serveur, $boucle->from[$table_alias]) + && isset($boucle->from[$table_alias]) + && ($infos = chercher_champ_dans_tables($champ, $boucle->from, $boucle->sql_serveur, $boucle->from[$table_alias])) ) { $par = $infos['alias'] . '.' . $champ; } elseif ($table) { @@ -1054,7 +1050,7 @@ function critere_par_joint($table, $champ, &$boucle) { if (!$t) { $t = trouver_jointure_champ($champ, $boucle); } - return !$t ? '' : ("'" . $t . '.' . $champ . "'"); + return $t ? "'" . $t . '.' . $champ . "'" : ''; } /** @@ -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 (((is_countable($date) ? count($date) : 0) == 1) and ($date[0]->type == 'texte')) { + if ((is_countable($date) ? count($date) : 0) == 1 && $date[0]->type == 'texte') { $date = $date[0]->texte; if (!isset($fields[$date])) { return ['zbug_critere_inconnu', ['critere' => $crit->op . ' ' . $date]]; @@ -1174,7 +1170,7 @@ function critere_agenda_dist($idb, &$boucles, $crit) { $a = calculer_liste($date, $idb, $boucles, $parent); $noms = array_keys($fields); $defaut = $noms[0]; - $noms = join(' ', $noms); + $noms = implode(' ', $noms); # bien laisser 2 espaces avant $nom pour que strpos<>0 $cond = "(\$a=strval($a))AND\nstrpos(\" $noms \",\" \$a \")"; $date = "'.(($cond)\n?\$a:\"$defaut\").'"; @@ -1292,7 +1288,7 @@ function calculer_critere_parties($idb, &$boucles, $crit) { $mode = (($op == '/') ? '/' : (($a11 == 'n') ? '-' : '+') . (($a21 == 'n') ? '-' : '+')); // cas simple {0,#ENV{truc}} compilons le en LIMIT : - if ($a11 !== 'n' and $a21 !== 'n' and $mode == '++' and $op == ',') { + if ($a11 !== 'n' && $a21 !== 'n' && $mode == '++' && $op == ',') { $boucle->limit = (is_numeric($a11) ? "'$a11'" : $a11) . ".','." @@ -1339,7 +1335,7 @@ function calculer_parties(&$boucles, $id_boucle, $debut, $mode) { $totpos = is_numeric($total_parties) ? ($total_parties) : "($total_parties ? $total_parties : 1)"; $fin = "ceil(($nombre_boucle * $debut )/$totpos) - 1"; - $debut = !$pmoins1 ? 0 : "ceil(($nombre_boucle * $pmoins1)/$totpos);"; + $debut = $pmoins1 ? "ceil(($nombre_boucle * $pmoins1)/$totpos);" : 0; } else { // cas {n-1,x} if ($op1 == '-') { @@ -1404,14 +1400,14 @@ function calculer_critere_parties_aux($idb, &$boucles, $param) { if ($param[0]->type != 'texte') { $a1 = calculer_liste([$param[0]], $idb, $boucles, $boucles[$idb]->id_parent); if (isset($param[1]->texte)) { - preg_match(',^\s*(-([0-9]+))?\s*$,', $param[1]->texte, $m); + preg_match(',^\s*(-(\d+))?\s*$,', $param[1]->texte, $m); - return ["intval($a1)", ((isset($m[2]) and $m[2]) ? $m[2] : 0)]; + return ["intval($a1)", ((isset($m[2]) && $m[2]) ? $m[2] : 0)]; } else { return ["intval($a1)", 0]; } } else { - preg_match(',^\s*(([0-9]+)|n)\s*(-\s*([0-9]+)?\s*)?$,', $param[0]->texte, $m); + preg_match(',^\s*((\d+)|n)\s*(-\s*(\d+)?\s*)?$,', $param[0]->texte, $m); $a1 = $m[1]; if (empty($m[3])) { return [$a1, 0]; @@ -1462,17 +1458,16 @@ function calculer_criteres($idb, &$boucles) { $critere = $crit->op; // critere personnalise ? if ( - (!$serveur or - ((!function_exists($f = 'critere_' . $serveur . '_' . $table . '_' . $critere)) - and (!function_exists($f = $f . '_dist')) - and (!function_exists($f = 'critere_' . $serveur . '_' . $critere)) - and (!function_exists($f = $f . '_dist')) - ) + (!$serveur || + !function_exists($f = 'critere_' . $serveur . '_' . $table . '_' . $critere) + && !function_exists($f .= '_dist') + && !function_exists($f = 'critere_' . $serveur . '_' . $critere) + && !function_exists($f .= '_dist') ) - and (!function_exists($f = 'critere_' . $table . '_' . $critere)) - and (!function_exists($f = $f . '_dist')) - and (!function_exists($f = 'critere_' . $critere)) - and (!function_exists($f = $f . '_dist')) + && !function_exists($f = 'critere_' . $table . '_' . $critere) + && !function_exists($f .= '_dist') + && !function_exists($f = 'critere_' . $critere) + && !function_exists($f .= '_dist') ) { // fonction critere standard $f = $defaut; @@ -1543,7 +1538,7 @@ function critere_IN_dist($idb, &$boucles, $crit) { } } if ($crit->exclus) { - if (!preg_match(',^L[0-9]+[.],', $arg)) { + if (!preg_match(',^L\d+[.],', $arg)) { $where = ["'NOT'", $where]; } else // un not sur un critere de jointure se traduit comme un NOT IN avec une sous requete // c'est une sous requete identique a la requete principale sous la forme (SELF,$select,$where) avec $select et $where qui surchargent @@ -1713,13 +1708,13 @@ 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']), - fn($champ) => strpos($champ, 'id_') === 0 or (in_array($champ, ['objet'])) + fn($champ) => str_starts_with($champ, 'id_') || $champ == 'objet' ); // Si le champ id_rubrique appartient à la liste et si id_secteur n'est pas inclus on le rajoute. if ( in_array('id_rubrique', $champs) - and !in_array('id_secteur', $champs) + && !in_array('id_secteur', $champs) ) { $champs[] = 'id_secteur'; } @@ -1737,7 +1732,7 @@ function lister_champs_id_conditionnel($table, $desc = null, $serveur = '') { $primary = id_table_objet($desc['type']); $associable = objet_associable($desc['type']); } - if (isset($desc['field']['id_objet']) and isset($desc['field']['objet'])) { + if (isset($desc['field']['id_objet']) && isset($desc['field']['objet'])) { $associable = true; } @@ -1748,8 +1743,8 @@ function lister_champs_id_conditionnel($table, $desc = null, $serveur = '') { foreach ($tables as $_table => $_desc) { if ( $associable - or ($primary and in_array($primary, array_keys($_desc['field']))) - or objet_associable($_desc['type']) + || $primary && array_key_exists($primary, $_desc['field']) + || objet_associable($_desc['type']) ) { $champs[] = id_table_objet($_table); } @@ -1768,9 +1763,8 @@ function lister_champs_id_conditionnel($table, $desc = null, $serveur = '') { 'data' => [], ] ); - $champs = array_diff($champs, $exclusions); - return $champs; + return array_diff($champs, $exclusions); } /** @@ -1828,12 +1822,15 @@ function critere_tri_dist($idb, &$boucles, $crit) { $boucle = &$boucles[$idb]; // definition du champ par defaut - $_champ_defaut = !isset($crit->param[0][0]) ? "''" - : calculer_liste([$crit->param[0][0]], $idb, $boucles, $boucle->id_parent); - $_liste_sens_defaut = !isset($crit->param[1][0]) ? '1' - : calculer_liste([$crit->param[1][0]], $idb, $boucles, $boucle->id_parent); - $_variable = !isset($crit->param[2][0]) ? "'$idb'" - : calculer_liste([$crit->param[2][0]], $idb, $boucles, $boucle->id_parent); + $_champ_defaut = isset($crit->param[0][0]) + ? calculer_liste([$crit->param[0][0]], $idb, $boucles, $boucle->id_parent) + : "''"; + $_liste_sens_defaut = isset($crit->param[1][0]) + ? calculer_liste([$crit->param[1][0]], $idb, $boucles, $boucle->id_parent) + : '1'; + $_variable = isset($crit->param[2][0]) + ? calculer_liste([$crit->param[2][0]], $idb, $boucles, $boucle->id_parent) + : "'$idb'"; $_tri = "((\$t=(isset(\$Pile[0]['tri'.$_variable]))?\$Pile[0]['tri'.$_variable]:((strncmp($_variable,'session',7)==0 AND session_get('tri'.$_variable))?session_get('tri'.$_variable):$_champ_defaut))?tri_protege_champ(\$t):'')"; @@ -1873,7 +1870,7 @@ function critere_tri_dist($idb, &$boucles, $crit) { **/ function calculer_critere_DEFAUT_dist($idb, &$boucles, $crit) { // double cas particulier {0,1} et {1/2} repere a l'analyse lexicale - if (($crit->op == ',') or ($crit->op == '/')) { + if ($crit->op == ',' || $crit->op == '/') { calculer_critere_parties($idb, $boucles, $crit); return; } @@ -1916,7 +1913,7 @@ function calculer_critere_DEFAUT_args($idb, &$boucles, $crit, $args) { $where = ["'NOT'", $where]; } if ($crit->exclus) { - if (!preg_match(',^L[0-9]+[.],', $arg)) { + if (!preg_match(',^L\d+[.],', $arg)) { $where = ["'NOT'", $where]; } else { // un not sur un critere de jointure se traduit comme un NOT IN avec une sous requete @@ -1936,13 +1933,11 @@ function calculer_critere_DEFAUT_args($idb, &$boucles, $crit, $args) { // traiter a part la date, elle est mise d'office par SPIP, if ($crit->cond) { $pred = calculer_argument_precedent($idb, $col, $boucles); - if ($col === 'date' or $col === 'date_redac') { - if ($pred === "\$Pile[0]['" . $col . "']") { - $pred = "(\$Pile[0]['{$col}_default']?'':$pred)"; - } + if (($col === 'date' || $col === 'date_redac') && $pred === "\$Pile[0]['" . $col . "']") { + $pred = "(\$Pile[0]['{$col}_default']?'':$pred)"; } - if ($op === '=' and !$crit->not) { + if ($op === '=' && !$crit->not) { $where = [ "'?'", "(is_array($pred))", @@ -2021,13 +2016,13 @@ function calculer_critere_infixe($idb, &$boucles, $crit) { // Cas particulier : id_parent => verifier les exceptions de tables if ( - (in_array($col, ['id_parent', 'id_secteur']) and isset($GLOBALS['exceptions_des_tables'][$table][$col])) - or (isset($GLOBALS['exceptions_des_tables'][$table][$col]) and is_string($GLOBALS['exceptions_des_tables'][$table][$col])) + in_array($col, ['id_parent', 'id_secteur']) + && isset($GLOBALS['exceptions_des_tables'][$table][$col]) || isset($GLOBALS['exceptions_des_tables'][$table][$col]) && is_string($GLOBALS['exceptions_des_tables'][$table][$col]) ) { $col = $GLOBALS['exceptions_des_tables'][$table][$col]; } // et possibilite de gerer un critere secteur sur des tables de plugins (ie forums) else { - if (($col == 'id_secteur') and ($critere_secteur = charger_fonction("critere_secteur_$type", 'public', true))) { + if ($col == 'id_secteur' && ($critere_secteur = charger_fonction("critere_secteur_$type", 'public', true))) { $table = $critere_secteur($idb, $boucles, $val, $crit); } @@ -2036,8 +2031,8 @@ function calculer_critere_infixe($idb, &$boucles, $crit) { else { if ( !isset($GLOBALS['exceptions_des_jointures'][table_objet_sql($table)][$col]) - and !isset($GLOBALS['exceptions_des_jointures'][$col]) - and count(trouver_champs_decomposes($col, $desc)) > 1 + && !isset($GLOBALS['exceptions_des_jointures'][$col]) + && count(trouver_champs_decomposes($col, $desc)) > 1 ) { $e = decompose_champ_id_objet($col); $col = array_shift($e); @@ -2055,13 +2050,13 @@ function calculer_critere_infixe($idb, &$boucles, $crit) { $trouver_table = charger_fonction('trouver_table', 'base'); if ( - $desc = $trouver_table($table, $boucle->sql_serveur) - and isset($desc['field'][$col]) - and $cle = array_search($desc['table'], $boucle->from) + ($desc = $trouver_table($table, $boucle->sql_serveur)) + && isset($desc['field'][$col]) + && ($cle = array_search($desc['table'], $boucle->from)) ) { $table = $cle; } else { - $table = trouver_jointure_champ($col, $boucle, [$table], ($crit->cond or $op != '=')); + $table = trouver_jointure_champ($col, $boucle, [$table], ($crit->cond || $op != '=')); } #$table = calculer_critere_externe_init($boucle, array($table), $col, $desc, ($crit->cond OR $op!='='), true); if (!$table) { @@ -2095,7 +2090,7 @@ function calculer_critere_infixe($idb, &$boucles, $crit) { // et int sinon si la valeur est numerique // 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'])) { + if ($op == '=' || in_array($op, $GLOBALS['table_criteres_infixes'])) { $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 @@ -2111,25 +2106,24 @@ function calculer_critere_infixe($idb, &$boucles, $crit) { // sql_quote(truc,'','varchar') elseif ( preg_match('/\Asql_quote[(](.*?)(,[^)]*?)?(,[^)]*(?:\(\d+\)[^)]*)?)?[)]\s*\z/ms', $val[0], $r) - // si pas deja un type - and (!isset($r[3]) or !$r[3] or !trim($r[3], ", '")) + && (!isset($r[3]) || !$r[3] || !trim($r[3], ", '")) ) { $r = $r[1] - . ((isset($r[2]) and $r[2]) ? $r[2] : ",''") + . ((isset($r[2]) && $r[2]) ? $r[2] : ",''") . ",'" . addslashes($type_cast_quote) . "'"; $val[0] = "sql_quote($r)"; } elseif ( - strpos($val[0], '@@defaultcast@@') !== false - and preg_match("/'@@defaultcast@@'\s*\)\s*\z/ms", $val[0], $r) + str_contains($val[0], '@@defaultcast@@') + && preg_match("/'@@defaultcast@@'\s*\)\s*\z/ms", $val[0], $r) ) { $val[0] = substr($val[0], 0, -strlen($r[0])) . "'" . addslashes($type_cast_quote) . "')"; } } if ( - strpos($val[0], '@@defaultcast@@') !== false - and preg_match("/'@@defaultcast@@'\s*\)\s*\z/ms", $val[0], $r) + str_contains($val[0], '@@defaultcast@@') + && preg_match("/'@@defaultcast@@'\s*\)\s*\z/ms", $val[0], $r) ) { $val[0] = substr($val[0], 0, -strlen($r[0])) . "'char')"; } @@ -2146,11 +2140,7 @@ function calculer_critere_infixe($idb, &$boucles, $crit) { // inserer le nom de la table SQL devant le nom du champ if ($table) { - if ($col[0] == '`') { - $arg = "$table." . substr($col, 1, -1); - } else { - $arg = "$table.$col"; - } + $arg = $col[0] == '`' ? "$table." . substr($col, 1, -1) : "$table.$col"; } else { $arg = $col; } @@ -2197,12 +2187,10 @@ function calculer_critere_infixe_externe($boucle, $crit, $op, $desc, $col, $col_ $table_sql = table_objet_sql($table); if ( isset($GLOBALS['exceptions_des_jointures'][$table_sql]) - and is_array($GLOBALS['exceptions_des_jointures'][$table_sql]) - and - ( + && is_array($GLOBALS['exceptions_des_jointures'][$table_sql]) + && ( isset($GLOBALS['exceptions_des_jointures'][$table_sql][$col]) - or - isset($GLOBALS['exceptions_des_jointures'][$table_sql]['']) + || isset($GLOBALS['exceptions_des_jointures'][$table_sql]['']) ) ) { $t = $GLOBALS['exceptions_des_jointures'][$table_sql]; @@ -2233,12 +2221,12 @@ function calculer_critere_infixe_externe($boucle, $crit, $op, $desc, $col, $col_ $table = ''; if ($boucle->jointures_explicites) { $jointures_explicites = explode(' ', $boucle->jointures_explicites); - $table = $calculer_critere_externe($boucle, $jointures_explicites, $col, $desc, ($crit->cond or $op != '='), $t); + $table = $calculer_critere_externe($boucle, $jointures_explicites, $col, $desc, ($crit->cond || $op != '='), $t); } // et sinon on cherche parmi toutes les jointures declarees if (!$table) { - $table = $calculer_critere_externe($boucle, $boucle->jointures, $col, $desc, ($crit->cond or $op != '='), $t); + $table = $calculer_critere_externe($boucle, $boucle->jointures, $col, $desc, ($crit->cond || $op != '='), $t); } if (!$table) { @@ -2248,9 +2236,9 @@ function calculer_critere_infixe_externe($boucle, $crit, $op, $desc, $col, $col_ // il ne reste plus qu'a trouver le champ dans les from [$nom, $desc, $cle] = trouver_champ_exterieur($col, $boucle->from, $boucle); - if ((is_countable($cle) ? count($cle) : 0) > 1 or reset($cle) !== $col) { + if ((is_countable($cle) ? count($cle) : 0) > 1 || reset($cle) !== $col) { $col_alias = $col; // id_article devient juste le nom d'origine - if ((is_countable($cle) ? count($cle) : 0) > 1 and reset($cle) == 'id_objet') { + if ((is_countable($cle) ? count($cle) : 0) > 1 && reset($cle) == 'id_objet') { $e = decompose_champ_id_objet($col); $col = array_shift($e); $where = primary_doublee($e, $table); @@ -2320,13 +2308,12 @@ function calculer_critere_externe_init(&$boucle, $joints, $col, $desc, $cond, $c // il faut privilegier la jointure directe en 2 etapes spip_mots_liens, spip_mots if ( $checkarrivee - and is_string($checkarrivee) - and $a = table_objet($checkarrivee) - and in_array($a . '_liens', $joints) + && is_string($checkarrivee) + && ($a = table_objet($checkarrivee)) + && in_array($a . '_liens', $joints) + && ($res = calculer_lien_externe_init($boucle, $joints, $col, $desc, $cond, $checkarrivee)) ) { - if ($res = calculer_lien_externe_init($boucle, $joints, $col, $desc, $cond, $checkarrivee)) { - return $res; - } + return $res; } foreach ($joints as $joint) { if ($arrivee = trouver_champ_exterieur($col, [$joint], $boucle, $checkarrivee)) { @@ -2396,7 +2383,7 @@ function calculer_lien_externe_init(&$boucle, $joints, $col, $desc, $cond, $chec $intermediaire = trouver_champ_exterieur($primary_arrivee, $joints, $boucle, $checkarrivee . '_liens'); $arrivee = trouver_champ_exterieur($col, $joints, $boucle, $checkarrivee); - if (!$intermediaire or !$arrivee) { + if (!$intermediaire || !$arrivee) { return ''; } array_pop($intermediaire); // enlever la cle en 3eme argument @@ -2472,7 +2459,7 @@ function trouver_champ($champ, $where) { **/ function calculer_critere_infixe_ops($idb, &$boucles, $crit) { // cas d'une valeur comparee a elle-meme ou son referent - if (count($crit->param) == 0) { + if ((is_countable($crit->param) ? count($crit->param) : 0) == 0) { $op = '='; $col = $val = $crit->op; if (preg_match('/^(.*)\.(.*)$/', $col, $r)) { @@ -2494,7 +2481,7 @@ function calculer_critere_infixe_ops($idb, &$boucles, $crit) { // Si id_enfant, comparer l'id_objet avec l'id_parent // de la boucle superieure $val = 'id_parent'; - } elseif ($crit->cond and ($col == 'date' or $col == 'date_redac')) { + } elseif ($crit->cond && ($col == 'date' || $col == 'date_redac')) { // un critere conditionnel sur date est traite a part // car la date est mise d'office par SPIP, $defaut = "(\$Pile[0]['{$col}_default']?'':\$Pile[0]['" . $col . "'])"; @@ -2521,23 +2508,22 @@ function calculer_critere_infixe_ops($idb, &$boucles, $crit) { // celui ne sachant pas ce qu'est un critere infixe // et a fortiori son 2e operande qu'entoure " ou ' if ( - count($params) == 1 - 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 - and (($p == "'") or ($p == '"')) - and $params[0][1]->type == 'champ' + (is_countable($params) ? count($params) : 0) == 1 + && (is_countable($params[0]) ? count($params[0]) : 0) == 3 + && $params[0][0]->type == 'texte' + && $params[0][2]->type == 'texte' + && ($p = $params[0][0]->texte) == $params[0][2]->texte + && ($p == "'" || $p == '"') + && $params[0][1]->type == 'champ' ) { $val[] = "$p\\$p#" . $params[0][1]->nom_champ . "\\$p$p"; } else { foreach ((($op != 'IN') ? $params : calculer_vieux_in($params)) as $p) { $a = calculer_liste($p, $idb, $boucles, $parent); - if (strcasecmp($op, 'IN') == 0) { - $val[] = $a; - } else { - $val[] = kwote($a, $boucles[$idb]->sql_serveur, '@@defaultcast@@'); - } // toujours quoter en char ici + $val[] = strcasecmp($op, 'IN') == 0 + ? $a + // toujours quoter en char ici + : kwote($a, $boucles[$idb]->sql_serveur, '@@defaultcast@@'); } } } @@ -2570,8 +2556,8 @@ function calculer_vieux_in($params) { $n = isset($last->texte) ? strlen($last->texte) : 0; if ( - !((isset($deb->texte[0]) and $deb->texte[0] == '(') - && (isset($last->texte[$n - 1]) and $last->texte[$n - 1] == ')')) + !((isset($deb->texte[0]) && $deb->texte[0] == '(') + && (isset($last->texte[$n - 1]) && $last->texte[$n - 1] == ')')) ) { return $params; } @@ -2628,14 +2614,10 @@ function calculer_critere_infixe_date($idb, &$boucles, $col) { $col = $regs[1]; // Si on trouve un nom de champ date précis, on l'utilise, pas besoin de déclaration dans l'API objet - if (isset($regs[3]) and $suite = $regs[3]) { + if (isset($regs[3]) && ($suite = $regs[3])) { # Recherche de l'existence du champ date_xxxx, # si oui choisir ce champ, sinon choisir xxxx - if (isset($table['field']["date$suite"])) { - $date_orig = 'date' . $suite; - } else { - $date_orig = substr($suite, 1); - } + $date_orig = isset($table['field']["date$suite"]) ? 'date' . $suite : substr($suite, 1); $pred = $date_orig; } else { // Sinon il FAUT avoir déclaré le champ date officiel dans l'API objet @@ -2647,7 +2629,7 @@ function calculer_critere_infixe_date($idb, &$boucles, $col) { $pred = $date_orig = $GLOBALS['table_date'][$table['id_table']] ?? $table['date']; // Si c'est pour du relatif - if (isset($regs[2]) and $rel = $regs[2]) { + if (isset($regs[2]) && ($rel = $regs[2])) { $pred = 'date'; } } @@ -2750,17 +2732,14 @@ function critere_DATA_source_dist($idb, &$boucles, $crit) { $args = []; foreach ($crit->param as &$param) { - array_push( - $args, - calculer_liste($param, $idb, $boucles, $boucles[$idb]->id_parent) - ); + $args[] = calculer_liste($param, $idb, $boucles, $boucles[$idb]->id_parent); } $boucle->hash .= ' $command[\'sourcemode\'] = ' . array_shift($args) . ";\n"; $boucle->hash .= ' - $command[\'source\'] = array(' . join(', ', $args) . ");\n"; + $command[\'source\'] = array(' . implode(', ', $args) . ");\n"; } /** @@ -2966,7 +2945,7 @@ function critere_noeud_dist($idb, &$boucles, $crit) { $boucle = &$boucles[$idb]; $primary = $boucle->primary; - if (!$primary or strpos($primary, ',')) { + if (!$primary || strpos($primary, ',')) { erreur_squelette(_T('zbug_doublon_sur_table_sans_cle_primaire'), $boucle); return; @@ -2999,7 +2978,7 @@ function critere_noeud_dist($idb, &$boucles, $crit) { */ function critere_feuille_dist($idb, &$boucles, $crit) { $not = $crit->not; - $crit->not = $not ? false : true; + $crit->not = !$not; critere_noeud_dist($idb, $boucles, $crit); $crit->not = $not; } diff --git a/ecrire/public/debusquer.php b/ecrire/public/debusquer.php index 5358dbfeaa..9592015f84 100644 --- a/ecrire/public/debusquer.php +++ b/ecrire/public/debusquer.php @@ -95,7 +95,7 @@ function public_debusquer_dist($message = '', $lieu = '', $opt = []) { set_request('var_mode', 'debug'); $GLOBALS['bouton_admin_debug'] = true; // Permettre a la compil de continuer - if (is_object($lieu) and (!isset($lieu->code) or !$lieu->code)) { + if (is_object($lieu) && (!isset($lieu->code) || !$lieu->code)) { $lieu->code = "''"; } // loger si personne ne verra l'erreur @@ -103,16 +103,14 @@ function public_debusquer_dist($message = '', $lieu = '', $opt = []) { debusquer_loger_erreur($message, $lieu); } // forcer l'appel au debusqueur en cas de boucles infernales - $urgence = (_DEBUG_MAX_SQUELETTE_ERREURS and (is_countable($tableau_des_erreurs) ? count($tableau_des_erreurs) : 0) > _DEBUG_MAX_SQUELETTE_ERREURS); + $urgence = (_DEBUG_MAX_SQUELETTE_ERREURS && (is_countable($tableau_des_erreurs) ? count($tableau_des_erreurs) : 0) > _DEBUG_MAX_SQUELETTE_ERREURS); if (!$urgence) { return; } } - if (empty($GLOBALS['debug_objets']['principal'])) { - // espace public ? - if (isset($GLOBALS['fond'])) { - $GLOBALS['debug_objets']['principal'] = $GLOBALS['fond']; - } + // espace public ? + if (empty($GLOBALS['debug_objets']['principal']) && isset($GLOBALS['fond'])) { + $GLOBALS['debug_objets']['principal'] = $GLOBALS['fond']; } include_spip('inc/autoriser'); @@ -133,7 +131,7 @@ function public_debusquer_dist($message = '', $lieu = '', $opt = []) { . '<br />' . debusquer_squelette($fonc, $mode, $self); - if (!_DIR_RESTREINT or headers_sent()) { + if (!_DIR_RESTREINT || headers_sent()) { return $res; } if ($tableau_des_erreurs) { @@ -148,7 +146,7 @@ function public_debusquer_dist($message = '', $lieu = '', $opt = []) { if (!$fonc) { $fonc = $GLOBALS['debug_objets']['principal']; } - $titre = !$mode ? $fonc : ($mode . (isset($GLOBALS['debug_objets']['sourcefile'][$fonc]) ? ' ' . $GLOBALS['debug_objets']['sourcefile'][$fonc] : '')); + $titre = $mode ? $mode . (isset($GLOBALS['debug_objets']['sourcefile'][$fonc]) ? ' ' . $GLOBALS['debug_objets']['sourcefile'][$fonc] : '') : ($fonc); } if ($message === false) { lang_select(); @@ -164,13 +162,7 @@ function debusquer_compose_message($msg) { if (is_array($msg)) { // si c'est un texte, c'est une traduction a faire, mais // sqlite renvoit aussi des erreurs alpha num (mais avec 3 arguments) - if (!is_numeric($msg[0]) and count($msg) == 2) { - // message avec argument: instancier - $msg = _T($msg[0], $msg[1], 'spip-debug-arg'); - } else { - // message SQL: interpreter - $msg = debusquer_requete($msg); - } + $msg = !is_numeric($msg[0]) && count($msg) == 2 ? _T($msg[0], $msg[1], 'spip-debug-arg') : debusquer_requete($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 @@ -205,7 +197,7 @@ function debusquer_bandeau($erreurs) { * @return string Code HTML **/ function debusquer_contexte($env) { - if (is_string($env) and is_array($env_tab = @unserialize($env))) { + if (is_string($env) && is_array($env_tab = @unserialize($env))) { $env = $env_tab; } @@ -220,7 +212,7 @@ function debusquer_contexte($env) { if (is_array($v)) { $valeur_simple[] = 'array:' . count($v); } elseif (is_object($v)) { - $valeur_simple[] = get_class($v); + $valeur_simple[] = $v::class; } elseif (is_string($v)) { $valeur_simple[] = "'" . $v . "'"; } else { @@ -229,9 +221,9 @@ function debusquer_contexte($env) { } $n = count($valeur); $valeur = (($n > 3) ? 'array:' . $n . ' ' : ''); - $valeur .= '[' . join(', ', $valeur_simple) . ']'; + $valeur .= '[' . implode(', ', $valeur_simple) . ']'; } elseif (is_object($valeur)) { - $valeur = get_class($valeur); + $valeur = $valeur::class; } elseif (is_string($valeur)) { $valeur = "'" . $valeur . "'"; } @@ -281,7 +273,7 @@ function debusquer_navigation($tableau, $caption = [], $id = 'debug-nav') { [$msg, $lieu] = $err; if (is_object($lieu)) { $ligne = $lieu->ligne; - $boucle = !empty($lieu->id_boucle) ? $lieu->id_boucle : ''; + $boucle = empty($lieu->id_boucle) ? '' : $lieu->id_boucle; if (isset($lieu->descr['nom'])) { $nom_code = $lieu->descr['nom']; $skel = $lieu->descr['sourcefile']; @@ -316,7 +308,7 @@ function debusquer_navigation($tableau, $caption = [], $id = 'debug-nav') { # aider('erreur_compilation'), . '</caption>' // fausse caption du chrono (mais vraie nav) - . (!empty($caption[1]) ? $caption[1] : '') + . (empty($caption[1]) ? '' : $caption[1]) . '<tr><th>' . _T('numero') . '</th><th>' @@ -353,17 +345,17 @@ function debusquer_requete($message) { // FIXME: ces écritures mélangent divers syntaxe des moteurs SQL // il serait plus prudent certainement d'avoir une fonction d'analyse par moteur - if (preg_match(',err(no|code):?[[:space:]]*([0-9]+),i', $msg, $regs)) { + if (preg_match(',err(no|code):?[[:space:]]*(\d+),i', $msg, $regs)) { $errno = $regs[2]; } elseif ( - is_numeric($errno) and ($errno == 1030 or $errno <= 1026) - and preg_match(',[^[:alnum:]]([0-9]+)[^[:alnum:]],', $msg, $regs) + is_numeric($errno) && ($errno == 1030 || $errno <= 1026) + && preg_match(',[^[:alnum:]](\d+)[^[:alnum:]],', $msg, $regs) ) { $errno = $regs[1]; } // Erreur systeme - if (is_numeric($errno) and $errno > 0 and $errno < 200) { + if (is_numeric($errno) && $errno > 0 && $errno < 200) { $retour = '<tt><br /><br /><blink>' . _T('info_erreur_systeme', ['errsys' => $errno]) . "</blink><br />\n<b>" @@ -431,13 +423,12 @@ function trouve_squelette_inclus($script) { preg_match('/include\(.(.*).php3?.\);/', $script, $reg); // si le script X.php n'est pas ecrire/public.php // on suppose qu'il prend le squelette X.html (pas sur, mais y a pas mieux) - if ($reg[1] == 'ecrire/public') { // si c'est bien ecrire/public on cherche le param 'fond' - if (!preg_match("/'fond' => '([^']*)'/", $script, $reg)) { // a defaut on cherche le param 'page' + // si c'est bien ecrire/public on cherche le param 'fond' + if ($reg[1] == 'ecrire/public' && !preg_match("/'fond' => '([^']*)'/", $script, $reg)) { // a defaut on cherche le param 'page' if (!preg_match("/'param' => '([^']*)'/", $script, $reg)) { $reg[1] = 'inconnu'; } } - } $incl = ',' . $reg[1] . '[.]\w$,'; foreach ($GLOBALS['debug_objets']['sourcefile'] as $k => $v) { @@ -453,16 +444,17 @@ function reference_boucle_debug($n, $nom, $self) { [$skel, $boucle, $ligne] = trouve_boucle_debug($n, $nom); if (!$boucle) { - return !$ligne ? '' : - (' (' . + return $ligne + ? ' (' . (($nom != $skel) ? _T('squelette_inclus_ligne') : _T('squelette_ligne')) . - " <a href='$self&var_mode_objet=$skel&var_mode_affiche=squelette&var_mode_ligne=$ligne#L$ligne'>$ligne</a>)"); + " <a href='$self&var_mode_objet=$skel&var_mode_affiche=squelette&var_mode_ligne=$ligne#L$ligne'>$ligne</a>)" + : ''; } else { $self .= "&var_mode_objet=$skel$boucle&var_mode_affiche=boucle"; - return !$ligne ? " (boucle\n<a href='$self#$skel$boucle'>$boucle</a>)" : - " (boucle $boucle ligne\n<a href='$self&var_mode_ligne=$ligne#L$ligne'>$ligne</a>)"; + return $ligne ? " (boucle $boucle ligne\n<a href='$self&var_mode_ligne=$ligne#L$ligne'>$ligne</a>)" : + " (boucle\n<a href='$self#$skel$boucle'>$boucle</a>)"; } } @@ -477,7 +469,7 @@ function ancre_texte($texte, $fautifs = [], $nocpt = false) { $res = ''; $s = highlight_string($texte, true); - if (substr($s, 0, 6) == '<code>') { + if (str_starts_with($s, '<code>')) { $s = substr($s, 6); $res = '<code>'; } @@ -491,7 +483,7 @@ function ancre_texte($texte, $fautifs = [], $nocpt = false) { $tableau = explode('<br />', $s); - $format = "<span style='float:left;display:block;width:50px;height:1px'><a id='L%d' style='background-color: white; visibility: " . ($nocpt ? 'hidden' : 'visible') . ";%s' href='#T%s' title=\"%s\">%0" . strval(@strlen(count($tableau))) . "d</a></span> %s<br />\n"; + $format = "<span style='float:left;display:block;width:50px;height:1px'><a id='L%d' style='background-color: white; visibility: " . ($nocpt ? 'hidden' : 'visible') . ";%s' href='#T%s' title=\"%s\">%0" . (string) @strlen(count($tableau)) . "d</a></span> %s<br />\n"; $format10 = str_replace('white', 'lightgrey', $format); $formaterr = 'color: red;'; @@ -545,7 +537,7 @@ function debusquer_squelette($fonc, $mode, $self) { $texte = ''; if ($mode !== 'validation') { - if (isset($GLOBALS['debug_objets']['sourcefile']) and $GLOBALS['debug_objets']['sourcefile']) { + if (isset($GLOBALS['debug_objets']['sourcefile']) && $GLOBALS['debug_objets']['sourcefile']) { $res = "<div id='spip-boucles'>\n" . debusquer_navigation_squelettes($self) . '</div>'; @@ -587,15 +579,16 @@ function debusquer_squelette($fonc, $mode, $self) { $res = $id = ''; } - return !trim($texte) ? '' : ( - "<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) . "'> ↑ " - . ($legend ?: $mode) - . '</a></legend>' - . $texte - . '</fieldset></div>' - . '</div>'); + return trim($texte) + ? "<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) . "'> ↑ " + . ($legend ?: $mode) + . '</a></legend>' + . $texte + . '</fieldset></div>' + . '</div>' + : ''; } @@ -603,7 +596,7 @@ function emboite_texte($res, $fonc = '', $self = '') { $errs = $res->err; $texte = $res->entete . ($errs ? '' : $res->page); - if (!$texte and !$errs) { + if (!$texte && !$errs) { return [ancre_texte('', ['', '']), false]; } if (!$errs) { @@ -691,16 +684,16 @@ function count_occ($regs) { function debusquer_navigation_squelettes($self) { $res = ''; - $boucles = !empty($GLOBALS['debug_objets']['boucle']) ? $GLOBALS['debug_objets']['boucle'] : ''; + $boucles = empty($GLOBALS['debug_objets']['boucle']) ? '' : $GLOBALS['debug_objets']['boucle']; $contexte = $GLOBALS['debug_objets']['contexte']; $t_skel = _T('squelette'); foreach ($GLOBALS['debug_objets']['sourcefile'] as $nom => $sourcefile) { $self2 = parametre_url($self, 'var_mode_objet', $nom); - $nav = !$boucles ? '' : debusquer_navigation_boucles($boucles, $nom, $self, $sourcefile); - $temps = !isset($GLOBALS['debug_objets']['profile'][$sourcefile]) ? '' : _T( + $nav = $boucles ? debusquer_navigation_boucles($boucles, $nom, $self, $sourcefile) : ''; + $temps = isset($GLOBALS['debug_objets']['profile'][$sourcefile]) ? _T( 'zbug_profile', ['time' => $GLOBALS['debug_objets']['profile'][$sourcefile]] - ); + ) : ''; $res .= "<fieldset id='f_" . $nom . "'><legend>" . $t_skel @@ -717,9 +710,9 @@ function debusquer_navigation_squelettes($self) { . "'>" . _T('zbug_calcul') . '</a></legend>' - . (!$temps ? '' : ("\n<span style='display:block;float:" . $GLOBALS['spip_lang_right'] . "'>$temps</span><br />")) + . ($temps ? "\n<span style='display:block;float:" . $GLOBALS['spip_lang_right'] . "'>$temps</span><br />" : ('')) . debusquer_contexte($contexte[$sourcefile]) - . (!$nav ? '' : ("<table width='100%'>\n$nav</table>\n")) + . ($nav ? "<table width='100%'>\n$nav</table>\n" : ('')) . "</fieldset>\n"; } @@ -733,7 +726,7 @@ function debusquer_navigation_boucles($boucles, $nom_skel, $self, $nom_source) { $gram = preg_match('/[.](\w+)$/', $nom_source, $r) ? $r[1] : ''; foreach ($boucles as $objet => $boucle) { - if (substr($objet, 0, strlen($nom_skel)) == $nom_skel) { + if (str_starts_with($objet, $nom_skel)) { $i++; $nom = $boucle->id_boucle; $req = $boucle->type_requete; diff --git a/ecrire/public/decompiler.php b/ecrire/public/decompiler.php index 06d502891c..ec6aa3c26f 100644 --- a/ecrire/public/decompiler.php +++ b/ecrire/public/decompiler.php @@ -38,7 +38,7 @@ function decompiler_boucle($struct, $fmt = '', $prof = 0) { // Revoir le cas de la boucle recursive $crit = $struct->param; - if ($crit and !is_array($crit[0])) { + if ($crit && !is_array($crit[0])) { $type = strtolower($type) . array_shift($crit); } $crit = decompiler_criteres($struct, $fmt, $prof); @@ -119,17 +119,17 @@ function decompiler_liste($sources, $fmt = '', $prof = 0) { foreach ($arg as $v) { // cas des arguments entoures de ' ou " if ( - ((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 + (is_countable($v) ? count($v) : 0) == 1 + && $v[0]->type == 'texte' + && strlen($v[0]->apres) == 1 + && $v[0]->apres == $v[0]->avant ) { $args[] = $v[0]->avant . $v[0]->texte . $v[0]->apres; } else { $args[] = decompiler_($v, $fmt, 0 - $prof); } } - if (($r !== '') or $args) { + if ($r !== '' || $args) { $res .= $f($r, $args, $prof); } } @@ -156,9 +156,9 @@ function decompiler_criteres($boucle, $fmt = '', $prof = 0) { $args = []; foreach ($crit as $i => $v) { if ( - ((is_countable($v) ? count($v) : 0) == 1) - and $v[0]->type == 'texte' - and $v[0]->apres + (is_countable($v) ? count($v) : 0) == 1 + && $v[0]->type == 'texte' + && $v[0]->apres ) { $args[] = [['texte', ($v[0]->apres . $v[0]->texte . $v[0]->apres)]]; } else { @@ -166,7 +166,7 @@ function decompiler_criteres($boucle, $fmt = '', $prof = 0) { foreach ($v as $k => $p) { if ( isset($p->type) - and function_exists($d = 'decompiler_' . $p->type) + && function_exists($d = 'decompiler_' . $p->type) ) { $r = $d($p, $fmt, (0 - $prof)); $res2[] = [$p->type, $r]; @@ -202,11 +202,11 @@ function decompiler_($liste, $fmt = '', $prof = 0) { if ( $next - and ($next->type == 'texte') - and $p->type == 'champ' - and !$p->apres - and !$p->avant - and $p->fonctions + && $next->type == 'texte' + && $p->type == 'champ' + && !$p->apres + && !$p->avant + && $p->fonctions ) { $n = strlen($next->texte) - strlen(ltrim($next->texte)); if ($n) { diff --git a/ecrire/public/evaluer_page.php b/ecrire/public/evaluer_page.php index 4ffb85fa09..dc0e9c0c7f 100644 --- a/ecrire/public/evaluer_page.php +++ b/ecrire/public/evaluer_page.php @@ -32,20 +32,20 @@ if (!defined('_ECRIRE_INC_VERSION')) { $res = true; // Cas d'une page contenant du PHP : -if (empty($page['process_ins']) or $page['process_ins'] != 'html') { +if (empty($page['process_ins']) || $page['process_ins'] != 'html') { include_spip('inc/lang'); // restaurer l'etat des notes avant calcul if ( isset($page['notes']) - and $page['notes'] - and $notes = charger_fonction('notes', 'inc', true) + && $page['notes'] + && ($notes = charger_fonction('notes', 'inc', true)) ) { $notes($page['notes'], 'restaurer_etat'); } ob_start(); - if (strpos($page['texte'], '?xml') !== false) { - $page['texte'] = str_replace('<' . '?xml', "<\1?xml", $page['texte']); + if (str_contains($page['texte'], '?xml')) { + $page['texte'] = str_replace('<?xml', "<\1?xml", $page['texte']); } try { @@ -69,11 +69,11 @@ if (empty($page['process_ins']) or $page['process_ins'] != 'html') { $page['process_ins'] = 'html'; - if (strpos($page['texte'], '?xml') !== false) { - $page['texte'] = str_replace("<\1?xml", '<' . '?xml', $page['texte']); + if (str_contains($page['texte'], '?xml')) { + $page['texte'] = str_replace("<\1?xml", '<?xml', $page['texte']); } } // le résultat de calcul d'un squelette est toujours de type string -$page['texte'] = strval($page['texte']); +$page['texte'] = (string) $page['texte']; page_base_href($page['texte']); diff --git a/ecrire/public/fonctions.php b/ecrire/public/fonctions.php index 00a5e9f4f4..6f9363d395 100644 --- a/ecrire/public/fonctions.php +++ b/ecrire/public/fonctions.php @@ -65,7 +65,7 @@ function filtre_introduction_dist($descriptif, $texte, $longueur, $connect, $sui while ($fin = strpos($texte, '</intro>')) { $zone = substr($texte, 0, $fin); $texte = substr($texte, $fin + strlen('</intro>')); - if ($deb = strpos($zone, '<intro>') or substr($zone, 0, 7) == '<intro>') { + if (($deb = strpos($zone, '<intro>')) || str_starts_with($zone, '<intro>')) { $zone = substr($zone, $deb + 7); } $intro .= $zone; @@ -86,10 +86,10 @@ function filtre_introduction_dist($descriptif, $texte, $longueur, $connect, $sui $texte = $intro; } else { if ( - strpos("\n" . $texte, "\n|") === false - and strlen($texte) > 2.5 * $longueur + !str_contains("\n" . $texte, "\n|") + && strlen($texte) > 2.5 * $longueur ) { - if (strpos($texte, '<multi') !== false) { + if (str_contains($texte, '<multi')) { $texte = extraire_multi($texte); } $texte = couper($texte, 2 * $longueur); @@ -109,7 +109,7 @@ function filtre_introduction_dist($descriptif, $texte, $longueur, $connect, $sui $notes('', 'depiler'); } - if (is_null($suite) and defined('_INTRODUCTION_SUITE')) { + if (is_null($suite) && defined('_INTRODUCTION_SUITE')) { $suite = _INTRODUCTION_SUITE; } $texte = couper($texte, $longueur, $suite); @@ -174,11 +174,7 @@ function filtre_pagination_dist( $debut = 'debut' . $nom; // 'debut_articles' // n'afficher l'ancre qu'une fois - if (!isset($ancres[$ancre])) { - $bloc_ancre = $ancres[$ancre] = "<a id='" . $ancre . "' class='pagination_ancre'></a>"; - } else { - $bloc_ancre = ''; - } + $bloc_ancre = isset($ancres[$ancre]) ? '' : ($ancres[$ancre] = "<a id='" . $ancre . "' class='pagination_ancre'></a>"); // liste = false : on ne veut que l'ancre if (!$liste) { return $ancres[$ancre]; @@ -189,10 +185,10 @@ function filtre_pagination_dist( 'debut' => $debut, 'url' => parametre_url($self, 'fragment', ''), // nettoyer l'id ahah eventuel 'total' => $total, - 'position' => intval($position), + 'position' => (int) $position, 'pas' => $pas, 'nombre_pages' => floor(($total - 1) / $pas) + 1, - 'page_courante' => floor(intval($position) / $pas) + 1, + 'page_courante' => floor((int) $position / $pas) + 1, 'ancre' => $ancre, 'bloc_ancre' => $bloc_ancre ]; @@ -207,12 +203,7 @@ function filtre_pagination_dist( if ($modele) { $pagination['type_pagination'] = $modele; - if (trouver_fond('pagination_' . $modele, 'modeles')) { - $modele = '_' . $modele; - } - else { - $modele = ''; - } + $modele = trouver_fond('pagination_' . $modele, 'modeles') ? '_' . $modele : ''; } if (!defined('_PAGINATION_NOMBRE_LIENS_MAX')) { @@ -242,7 +233,7 @@ function filtre_pagination_dist( * Liste (première page, dernière page). **/ function filtre_bornes_pagination_dist($courante, $nombre, $max = 10) { - if ($max <= 0 or $max >= $nombre) { + if ($max <= 0 || $max >= $nombre) { return [1, $nombre]; } if ($max <= 1) { @@ -267,19 +258,13 @@ function filtre_pagination_affiche_texte_lien_page_dist($type_pagination, $numer return '>'; } - switch ($type_pagination) { - case 'resultats': - return $rang_item + 1; // 1 11 21 31... - case 'naturel': - return $rang_item ?: 1; // 1 10 20 30... - case 'rang': - return $rang_item; // 0 10 20 30... - - case 'page': - case 'prive': - default: - return $numero_page; // 1 2 3 4 5... - } + return match ($type_pagination) { + 'resultats' => $rang_item + 1, // 1 11 21 31... + 'naturel' => $rang_item ?: 1, // 1 10 20 30... + 'rang' => $rang_item, // 0 10 20 30... + 'page', 'prive' => $numero_page, // 1 2 3 4 5... + default => $numero_page, // 1 2 3 4 5... + }; } /** @@ -364,7 +349,7 @@ function lister_objets_liens($objet_source, $objet, $id_objet, $objet_lien) { if (!isset($liens["$objet_source-$objet-$id_objet-$objet_lien"])) { include_spip('action/editer_liens'); // quand $objet == $objet_lien == $objet_source on reste sur le cas par defaut de $objet_lien == $objet_source - if ($objet_lien == $objet and $objet_lien !== $objet_source) { + if ($objet_lien == $objet && $objet_lien !== $objet_source) { $res = objet_trouver_liens([$objet => $id_objet], [$objet_source => '*']); } else { $res = objet_trouver_liens([$objet_source => '*'], [$objet => $id_objet]); @@ -389,16 +374,16 @@ function calculer_rang_smart($titre, $objet_source, $id, $env) { // Cas du #RANG utilisé dans #FORMULAIRE_EDITER_LIENS -> attraper le rang du lien // permet de voir le rang du lien si il y en a un en base, meme avant un squelette xxxx-lies.html ne gerant pas les liens if ( - isset($env['form']) and $env['form'] - 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 [$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'] - and $objet_source - and $id = intval($id) + isset($env['form']) && $env['form'] + && isset($env['_objet_lien']) && $env['_objet_lien'] + && (function_exists('lien_triables') || include_spip('action/editer_liens')) + && ($r = objet_associable($env['_objet_lien'])) + && ([$p, $table_lien] = $r) + && lien_triables($table_lien) + && isset($env['objet']) && $env['objet'] + && isset($env['id_objet']) && $env['id_objet'] + && $objet_source + && ($id = (int) $id) ) { $rang = retrouver_rang_lien($objet_source, $id, $env['objet'], $env['id_objet'], $env['_objet_lien']); return ($rang ?: ''); @@ -481,8 +466,8 @@ function calculer_balise_tri(string $champ_ou_sens, string $libelle, string $cla } // Drapeau pour garder en session ? - $param_memo = (!$is_sens_fixe ? $param_tri : $param_sens); - $url = parametre_url($url, 'var_memotri', strncmp($tri_nom, 'session', 7) == 0 ? $param_memo : ''); + $param_memo = ($is_sens_fixe ? $param_sens : $param_tri); + $url = parametre_url($url, 'var_memotri', str_starts_with($tri_nom, 'session') ? $param_memo : ''); // Classes : on indique le sens de tri et l'item exposé if (!$is_sens_fixe) { @@ -524,7 +509,7 @@ function tri_protege_champ($t) { * @return string */ function tri_champ_order($t, $from = null, $senstri = '') { - if (strncmp($t, 'multi ', 6) == 0) { + if (str_starts_with($t, 'multi ')) { return 'multi' . $senstri; } @@ -532,7 +517,7 @@ function tri_champ_order($t, $from = null, $senstri = '') { $prefixe = ''; foreach (['num ', 'sinum '] as $p) { - if (strpos($t, $p) === 0) { + if (str_starts_with($t, $p)) { $champ = substr($t, strlen($p)); $prefixe = $p; } @@ -545,22 +530,18 @@ function tri_champ_order($t, $from = null, $senstri = '') { $trouver_table = charger_fonction('trouver_table', 'base'); foreach ($from as $idt => $table_sql) { if ( - $desc = $trouver_table($table_sql) - and isset($desc['field'][$champ]) + ($desc = $trouver_table($table_sql)) && isset($desc['field'][$champ]) ) { $champ = "$idt.$champ"; break; } } } - switch ($prefixe) { - case 'num ': - return "CASE( 0+$champ ) WHEN 0 THEN 1 ELSE 0 END{$senstri}, 0+$champ{$senstri}"; - case 'sinum ': - return "CASE( 0+$champ ) WHEN 0 THEN 1 ELSE 0 END{$senstri}"; - default: - return $champ . $senstri; - } + return match ($prefixe) { + 'num ' => "CASE( 0+$champ ) WHEN 0 THEN 1 ELSE 0 END{$senstri}, 0+$champ{$senstri}", + 'sinum ' => "CASE( 0+$champ ) WHEN 0 THEN 1 ELSE 0 END{$senstri}", + default => $champ . $senstri, + }; } /** @@ -574,12 +555,11 @@ function tri_champ_order($t, $from = null, $senstri = '') { * @return string */ function tri_champ_select($t) { - if (strncmp($t, 'multi ', 6) == 0) { + if (str_starts_with($t, 'multi ')) { $t = substr($t, 6); $t = preg_replace(',\s,', '', $t); - $t = sql_multi($t, $GLOBALS['spip_lang']); - return $t; + return sql_multi($t, $GLOBALS['spip_lang']); } if (trim($t) == 'hasard') { return 'rand() AS hasard'; @@ -601,12 +581,11 @@ function formate_liste_critere_par_ordre_liste($valeurs, $serveur = '') { return ''; } $f = sql_serveur('quote', $serveur, true); - if (!is_string($f) or !$f) { + if (!is_string($f) || !$f) { return ''; } - $valeurs = implode(',', array_map($f, array_unique($valeurs))); - return $valeurs; + return implode(',', array_map($f, array_unique($valeurs))); } /** @@ -631,7 +610,7 @@ function formate_liste_critere_par_ordre_liste($valeurs, $serveur = '') { function appliquer_filtre_sinon($arg, $filtre, $args, $defaut = '') { // Si c'est un filtre d'image, on utilise image_filtrer() // Attention : les 2 premiers arguments sont inversés dans ce cas - if (trouver_filtre_matrice($filtre) and substr($filtre, 0, 6) == 'image_') { + if (trouver_filtre_matrice($filtre) && str_starts_with($filtre, 'image_')) { include_spip('inc/filtres_images_lib_mini'); $args[1] = $args[0]; $args[0] = $filtre; diff --git a/ecrire/public/format_html.php b/ecrire/public/format_html.php index 400fb8c267..354001de7a 100644 --- a/ecrire/public/format_html.php +++ b/ecrire/public/format_html.php @@ -19,22 +19,18 @@ function format_boucle_html($preaff, $avant, $nom, $type, $crit, $corps, $apres, $apres = $apres ? "$apres</B$nom>" : ''; $altern = $altern ? "$altern<//B$nom>" : ''; $postaff = $postaff ? "$postaff</BB$nom>" : ''; - if (!$corps) { - $corps = ' />'; - } else { - $corps = ">$corps</BOUCLE$nom>"; - } + $corps = $corps ? ">$corps</BOUCLE$nom>" : ' />'; return "$preaff$avant<BOUCLE$nom($type)$crit$corps$apres$altern$postaff"; } function format_inclure_html($file, $args, $prof) { - if (strpos($file, '#') === false) { + if (!str_contains($file, '#')) { $t = $file ? ('(' . $file . ')') : ''; } else { $t = '{fond=' . $file . '}'; } - $args = !$args ? '' : ('{' . join(', ', $args) . '}'); + $args = $args ? '{' . implode(', ', $args) . '}' : (''); return ('<INCLURE' . $t . $args . '>'); } @@ -45,14 +41,14 @@ function format_polyglotte_html($args, $prof) { $contenu[] = ($l ? "[$l]" : '') . $t; } - return ('<multi>' . join(' ', $contenu) . '</multi>'); + return ('<multi>' . implode(' ', $contenu) . '</multi>'); } function format_idiome_html($nom, $module, $args, $filtres, $prof) { foreach ($args as $k => $v) { $args[$k] = "$k=$v"; } - $args = (!$args ? '' : ('{' . join(',', $args) . '}')); + $args = ($args ? '{' . implode(',', $args) . '}' : ('')); return ('<:' . ($module ? "$module:" : '') . $nom . $args . $filtres . ':>'); } @@ -67,8 +63,7 @@ function format_champ_html($nom, $boucle, $etoile, $avant, $apres, $args, $filtr // Determiner si c'est un champ etendu, - $s = ($avant or $apres or $filtres - or (strpos($args, '(#') !== false)); + $s = ($avant || $apres || $filtres || str_contains($args, '(#')); return ($s ? "[$avant($nom)$apres]" : $nom); } @@ -78,7 +73,7 @@ function format_critere_html($critere) { $crit_s = ''; foreach ($crit as $operande) { [$type, $valeur] = $operande; - if ($type == 'champ' and $valeur[0] == '[') { + if ($type == 'champ' && $valeur[0] == '[') { $valeur = substr($valeur, 1, -1); if (preg_match(',^[(](#[^|]*)[)]$,sS', $valeur)) { $valeur = substr($valeur, 1, -1); @@ -89,27 +84,28 @@ function format_critere_html($critere) { $critere[$k] = $crit_s; } - return (!$critere ? '' : ('{' . join(',', $critere) . '}')); + return ($critere ? '{' . implode(',', $critere) . '}' : ('')); } function format_liste_html($fonc, $args, $prof) { return ((($fonc !== '') ? "|$fonc" : $fonc) - . (!$args ? '' : ('{' . join(',', $args) . '}'))); + . ($args ? '{' . implode(',', $args) . '}' : (''))); } // Concatenation sans separateur: verifier qu'on ne cree pas de faux lexemes function format_suite_html($args) { - for ($i = 0; $i < (is_countable($args) ? count($args) : 0) - 1; $i++) { + $argsCount = count($args); + for ($i = 0; $i < (is_countable($args) ? $argsCount : 0) - 1; $i++) { [$texte, $type] = $args[$i]; [$texte2, $type2] = $args[$i + 1]; - if (!$texte or !$texte2) { + if (!$texte || !$texte2) { continue; } $c1 = substr($texte, -1); if ($type2 !== 'texte') { // si un texte se termine par ( et est suivi d'un champ // ou assimiles, forcer la notation pleine - if ($c1 == '(' and substr($texte2, 0, 1) == '#') { + if ($c1 == '(' && str_starts_with($texte2, '#')) { $args[$i + 1][0] = '[(' . $texte2 . ')]'; } } else { @@ -120,15 +116,15 @@ function format_suite_html($args) { // et si celui-ci commence par un caractere de champ // forcer la notation pleine if ( - ($c1 == '}' and substr(ltrim($texte2), 0, 1) == '|') - or (preg_match('/[\w\d_*]/', $c1) and preg_match('/^[\w\d_*{|]/', $texte2)) + $c1 == '}' && str_starts_with(ltrim($texte2), '|') + || preg_match('/[\w\d_*]/', $c1) && preg_match('/^[\w\d_*{|]/', $texte2) ) { $args[$i][0] = '[(' . $texte . ')]'; } } } - return join('', array_map(fn($arg) => reset($arg), $args)); + return implode('', array_map(fn($arg) => reset($arg), $args)); } function format_texte_html($texte) { diff --git a/ecrire/public/interfaces.php b/ecrire/public/interfaces.php index 0a63f034b3..15477ff68f 100644 --- a/ecrire/public/interfaces.php +++ b/ecrire/public/interfaces.php @@ -27,13 +27,13 @@ global $exception_des_connect; $exception_des_connect[] = ''; // ne pas transmettre le connect='' par les inclure /** @deprecated 4.2 Uses nampespaced classes */ -class_alias('Spip\\Compilateur\\Noeud\\Boucle', 'Boucle'); -class_alias('Spip\\Compilateur\\Noeud\\Champ', 'Champ'); -class_alias('Spip\\Compilateur\\Noeud\\Contexte', 'Contexte'); -class_alias('Spip\\Compilateur\\Noeud\\Critere', 'Critere'); -class_alias('Spip\\Compilateur\\Noeud\\Idiome', 'Idiome'); -class_alias('Spip\\Compilateur\\Noeud\\Polyglotte', 'Polyglotte'); -class_alias('Spip\\Compilateur\\Noeud\\Texte', 'Texte'); +class_alias(\Spip\Compilateur\Noeud\Boucle::class, 'Boucle'); +class_alias(\Spip\Compilateur\Noeud\Champ::class, 'Champ'); +class_alias(\Spip\Compilateur\Noeud\Contexte::class, 'Contexte'); +class_alias(\Spip\Compilateur\Noeud\Critere::class, 'Critere'); +class_alias(\Spip\Compilateur\Noeud\Idiome::class, 'Idiome'); +class_alias(\Spip\Compilateur\Noeud\Polyglotte::class, 'Polyglotte'); +class_alias(\Spip\Compilateur\Noeud\Texte::class, 'Texte'); /** * Déclarer les interfaces de la base pour le compilateur diff --git a/ecrire/public/jointures.php b/ecrire/public/jointures.php index a1043add9b..e8bba13994 100644 --- a/ecrire/public/jointures.php +++ b/ecrire/public/jointures.php @@ -34,7 +34,7 @@ if (!defined('_ECRIRE_INC_VERSION')) { * Chaine sinon : le nom du champ (non décomposable donc) */ function decompose_champ_id_objet($champ) { - if (($champ !== 'id_objet') and preg_match(',^id_([a-z_]+)$,', $champ, $regs)) { + if ($champ !== 'id_objet' && preg_match(',^id_([a-z_]+)$,', $champ, $regs)) { return ['id_objet', 'objet', objet_type($champ)]; } @@ -58,15 +58,15 @@ function decompose_champ_id_objet($champ) { */ function trouver_champs_decomposes($champ, $desc) { if ( - !is_array($desc) // on ne se risque pas en conjectures si on ne connait pas la table - or array_key_exists($champ, $desc['field']) + !is_array($desc) + || array_key_exists($champ, $desc['field']) ) { return [$champ]; } // si le champ se décompose, tester que les colonnes décomposées sont présentes if (is_array($decompose = decompose_champ_id_objet($champ))) { array_pop($decompose); - if (count(array_intersect($decompose, array_keys($desc['field']))) == count($decompose)) { + if (count(array_intersect($decompose, array_keys($desc['field']))) === count($decompose)) { return $decompose; } } @@ -107,7 +107,7 @@ function calculer_jointure(&$boucle, $depart, $arrivee, $col = '', $cond = false $max = 1; $res = false; $milieu_exclus = ($col ?: []); - while ($max <= $max_liens and !$res) { + while ($max <= $max_liens && !$res) { $res = calculer_chaine_jointures($boucle, $depart, $arrivee, [], $milieu_exclus, $max); $max++; } @@ -171,11 +171,7 @@ function fabrique_jointures(&$boucle, $res, $cond = false, $desc = [], $nom = '' if (is_array($j)) { // c'est un lien sur un champ du type id_objet,objet,'article' [$j1, $j2, $obj, $type] = $j; // trouver de quel cote est (id_objet,objet) - if ($j1 == "id_$obj") { - $obj = "$id_table.$obj"; - } else { - $obj = "L$n.$obj"; - } + $obj = $j1 == "id_$obj" ? "$id_table.$obj" : "L$n.$obj"; // le where complementaire est envoye dans la jointure et dans le where // on utilise une clé qui le relie a la jointure pour que l'optimiseur // sache qu'il peut enlever ce where si il enleve la jointure @@ -211,9 +207,9 @@ function fabrique_jointures(&$boucle, $res, $cond = false, $desc = [], $nom = '' // et si l'index de jointure est une primary key a l'arrivee ! if ( !$pk - and (count($boucle->from) == 2) - and isset($a[1]['key']['PRIMARY KEY']) - and ($j == $a[1]['key']['PRIMARY KEY']) + && count($boucle->from) == 2 + && isset($a[1]['key']['PRIMARY KEY']) + && $j == $a[1]['key']['PRIMARY KEY'] ) { $pk = true; } @@ -248,8 +244,8 @@ function fabrique_jointures(&$boucle, $res, $cond = false, $desc = [], $nom = '' function nogroupby_if($depart, $arrivee, $col) { if ( empty($arrivee['key']['PRIMARY KEY']) - or !($pk = $arrivee['key']['PRIMARY KEY']) - or empty($depart['key']['PRIMARY KEY']) + || !($pk = $arrivee['key']['PRIMARY KEY']) + || empty($depart['key']['PRIMARY KEY']) ) { return false; } @@ -257,8 +253,7 @@ function nogroupby_if($depart, $arrivee, $col) { if (is_array($col)) { $col = implode(', *', $col); } // cas id_objet, objet - return (preg_match("/^$id_primary, *$col$/", $pk) or - preg_match("/^$col, *$id_primary$/", $pk)); + return (preg_match("/^$id_primary, *$col$/", $pk) || preg_match("/^$col, *$id_primary$/", $pk)); } /** @@ -327,7 +322,7 @@ function liste_champs_jointures($nom, $desc, $primary = false) { */ function split_key($v, $join = []) { foreach (preg_split('/,\s*/', $v) as $k) { - if (strpos($k, '(') !== false) { + if (str_contains($k, '(')) { $k = explode('(', $k); $k = trim(reset($k)); } @@ -373,13 +368,13 @@ function calculer_chaine_jointures( } // quand on a exclus id_objet comme cle de jointure, il faut aussi exclure objet // faire une jointure sur objet tout seul n'a pas de sens - if (in_array('id_objet', $milieu_exclus) and !in_array('objet', $milieu_exclus)) { + if (in_array('id_objet', $milieu_exclus) && !in_array('objet', $milieu_exclus)) { $milieu_exclus[] = 'objet'; } [$dnom, $ddesc] = $depart; [$anom, $adesc] = $arrivee; - if (!count($vu)) { + if ($vu === []) { $vu[] = $dnom; // ne pas oublier la table de depart $vu[] = $anom; // ne pas oublier la table d'arrivee } @@ -398,7 +393,7 @@ function calculer_chaine_jointures( // enlever les cles dde depart exclues par l'appel $keys = array_diff($keys, $milieu_exclus); - $v = !$keys ? false : array_intersect(array_values($keys), $akeys); + $v = $keys ? array_intersect(array_values($keys), $akeys) : false; if ($v) { return [[$dnom, [$adesc['table'], $adesc], array_shift($v)]]; @@ -423,12 +418,12 @@ function calculer_chaine_jointures( // id_objet,objet a l'arrivee // si oui on la prend foreach ($keys as $key) { - if (count($v = trouver_champs_decomposes($key, $adesc)) > 1) { - if (count($v) == count(array_intersect($v, $akeys))) { - $v = decompose_champ_id_objet($key); // id_objet,objet,'article' - array_unshift($v, $key); // id_article,id_objet,objet,'article' - return [[$dnom, [$adesc['table'], $adesc], $v]]; - } + if (count($v = trouver_champs_decomposes($key, $adesc)) > 1 && count($v) == count(array_intersect($v, $akeys))) { + $v = decompose_champ_id_objet($key); + // id_objet,objet,'article' + array_unshift($v, $key); + // id_article,id_objet,objet,'article' + return [[$dnom, [$adesc['table'], $adesc], $v]]; } } } @@ -442,9 +437,9 @@ function calculer_chaine_jointures( foreach ($boucle->jointures as $v) { if ( $v - and !in_array($v, $vu) - and $def = $trouver_table($v, $boucle->sql_serveur) - and !in_array($def['table_sql'], $vu) + && !in_array($v, $vu) + && ($def = $trouver_table($v, $boucle->sql_serveur)) + && !in_array($def['table_sql'], $vu) ) { // ne pas tester les cles qui sont exclues a l'appel // ie la cle de la jointure precedente @@ -459,8 +454,7 @@ function calculer_chaine_jointures( $vu, $test_cles, 1 - )) - and $max_iter-- + )) && $max_iter-- ) { $jointure_directe_possible = reset($jointure_directe_possible); $milieu = end($jointure_directe_possible); @@ -543,20 +537,20 @@ function chercher_champ_dans_tables($cle, $tables, $connect, $checkarrivee = fal } foreach ($tables as $k => $table) { - if ($table && $desc = $trouver_table($table, $connect)) { - if ( + if ( + $table + && $desc = $trouver_table($table, $connect) + && ( isset($desc['field']) - // verifier que toutes les cles cherchees sont la - and (count(array_intersect($cle, array_keys($desc['field']))) == count($cle)) - // si on sait ou on veut arriver, il faut que ca colle - and ($checkarrivee == false || $checkarrivee == $desc['table']) - ) { - return [ - 'desc' => $desc, - 'table' => $desc['table'], - 'alias' => $k, - ]; - } + && count(array_intersect($cle, array_keys($desc['field']))) === count($cle) + && ($checkarrivee == false || $checkarrivee == $desc['table']) + ) + ) { + return [ + 'desc' => $desc, + 'table' => $desc['table'], + 'alias' => $k, + ]; } } @@ -601,8 +595,8 @@ function trouver_champ_exterieur($cle, $joints, &$boucle, $checkarrivee = false) // au premier coup, on essaye de decomposer, si possible if ( count($cle) == 1 - and $c = reset($cle) - and is_array($decompose = decompose_champ_id_objet($c)) + && ($c = reset($cle)) + && is_array($decompose = decompose_champ_id_objet($c)) ) { $desc = $boucle->show; diff --git a/ecrire/public/normaliser.php b/ecrire/public/normaliser.php index 1f918f8ca0..fb9cc382f4 100644 --- a/ecrire/public/normaliser.php +++ b/ecrire/public/normaliser.php @@ -27,11 +27,7 @@ if (!defined('_ECRIRE_INC_VERSION')) { // -> https://www.spip.net/fr_article901.html function phraser_vieux_logos(&$p) { - if ($p->param[0][0]) { - $args = ['']; - } else { - $args = array_shift($p->param); - } + $args = $p->param[0][0] ? [''] : array_shift($p->param); foreach ($p->param as $couple) { $nom = trim($couple[0]); @@ -75,20 +71,12 @@ function phraser_vieux_logos(&$p) { function phraser_logo_faux_filtres($nom) { - switch ($nom) { - case 'top': - case 'left': - case 'right': - case 'center': - case 'bottom': - return 0; - case 'lien': - return 1; - case 'fichier': - return 2; - default: - return $nom; - } + return match ($nom) { + 'top', 'left', 'right', 'center', 'bottom' => 0, + 'lien' => 1, + 'fichier' => 2, + default => $nom, + }; } @@ -105,7 +93,8 @@ function phraser_vieux_emb(&$p) { $param = ['', [$texte]]; // Transformer les filtres en arguments - for ($i = 0; $i < (is_countable($p->param) ? count($p->param) : 0); $i++) { + $paramCount = is_countable($p->param) ? count($p->param) : 0; + for ($i = 0; $i < $paramCount; $i++) { if ($p->param[$i][0]) { if (!strstr($p->param[$i][0], '=')) { break; @@ -187,16 +176,16 @@ function normaliser_args_inclumodel($p) { function normaliser_inclure($champ) { normaliser_args_inclumodel($champ); $l = $champ->param[0]; - if (is_array($l) and !$l[0]) { + if (is_array($l) && !$l[0]) { foreach ($l as $k => $p) { - if ($p and $p[0]->type == 'texte' and !strpos($p[0]->texte, '=')) { + if ($p && $p[0]->type == 'texte' && !strpos($p[0]->texte, '=')) { $p[0]->texte = trim($p[0]->texte); } } foreach ($l as $k => $p) { if ( - !$p or $p[0]->type != 'texte' or - !preg_match('/^fond\s*=\s*(.*)$/', $p[0]->texte, $r) + !$p || $p[0]->type != 'texte' + || !preg_match('/^fond\s*=\s*(.*)$/', $p[0]->texte, $r) ) { continue; } diff --git a/ecrire/public/parametrer.php b/ecrire/public/parametrer.php index 88cc4ce85c..7de666bc39 100644 --- a/ecrire/public/parametrer.php +++ b/ecrire/public/parametrer.php @@ -41,7 +41,7 @@ function public_parametrer_dist($fond, $contexte = '', $cache = '', string $conn $lang = $GLOBALS['meta']['langue_site']; } - $select = ((!isset($GLOBALS['forcer_lang']) or !$GLOBALS['forcer_lang']) and $lang <> $GLOBALS['spip_lang']); + $select = ((!isset($GLOBALS['forcer_lang']) || !$GLOBALS['forcer_lang']) && $lang != $GLOBALS['spip_lang']); if ($select) { $select = lang_select($lang); } @@ -144,7 +144,7 @@ function public_parametrer_dist($fond, $contexte = '', $cache = '', string $conn spip_log("calcul ($profile) [$skel] $infos" . ' (' . strlen($page['texte']) . ' octets)'); - if (defined('_CALCUL_PROFILER') and intval($profile) > _CALCUL_PROFILER) { + if (defined('_CALCUL_PROFILER') && (int) $profile > _CALCUL_PROFILER) { spip_log("calcul ($profile) [$skel] $infos" . ' (' . strlen($page['texte']) . ' octets) | ' . $_SERVER['REQUEST_URI'], 'profiler' . _LOG_AVERTISSEMENT); } @@ -157,8 +157,8 @@ function public_parametrer_dist($fond, $contexte = '', $cache = '', string $conn $GLOBALS['debug_objets']['profile'][$sourcefile] = $profile; if ( $GLOBALS['debug_objets']['sourcefile'] - and (_request('var_mode_objet') == $fonc) - and (_request('var_mode_affiche') == 'resultat') + && _request('var_mode_objet') == $fonc + && _request('var_mode_affiche') == 'resultat' ) { erreur_squelette(); } @@ -169,7 +169,7 @@ function public_parametrer_dist($fond, $contexte = '', $cache = '', string $conn // si aucun #CACHE{} spécifié // le contexte implicite qui conditionne le cache assure qu'on retombe pas sur le meme // entre public et prive - if (test_espace_prive() or strncmp($fond, 'modeles/', 8) == 0) { + if (test_espace_prive() || str_starts_with($fond, 'modeles/')) { $page['entetes']['X-Spip-Cache'] = 0; } else { $page['entetes']['X-Spip-Cache'] = $GLOBALS['delais'] ?? 36000; @@ -180,7 +180,7 @@ function public_parametrer_dist($fond, $contexte = '', $cache = '', string $conn // faire remonter le fichier source static $js_inclus = false; - if (defined('_VAR_INCLURE') and _VAR_INCLURE) { + if (defined('_VAR_INCLURE') && _VAR_INCLURE) { $page['sourcefile'] = $sourcefile; $page['texte'] = "<div class='inclure_blocs'><h6>" . $page['sourcefile'] . '</h6>' . $page['texte'] . '</div>' @@ -212,7 +212,7 @@ function presenter_contexte($contexte, $profondeur_max = 1, $max_lines = 0) { $line = 0; foreach ($contexte as $var => $val) { $line++; - if ($max_lines and $max_lines < $line) { + if ($max_lines && $max_lines < $line) { $infos[] = '…'; break; } @@ -225,7 +225,7 @@ function presenter_contexte($contexte, $profondeur_max = 1, $max_lines = 0) { $val = 'array:' . count($val); } } elseif (is_object($val)) { - $val = get_class($val); + $val = $val::class; } elseif (strlen("$val") > 30) { $val = substr("$val", 0, 29) . '…'; if (strstr($val, ' ')) { @@ -238,7 +238,7 @@ function presenter_contexte($contexte, $profondeur_max = 1, $max_lines = 0) { } $infos[] = $var . '=' . $val; } - return join(', ', $infos); + return implode(', ', $infos); } @@ -277,8 +277,8 @@ function tester_redirection($fond, $contexte, $connect) { function public_tester_redirection_dist($fond, $contexte, $connect) { if ( $fond == 'article' - and !empty($contexte['id_article']) - and $id_article = intval($contexte['id_article']) + && !empty($contexte['id_article']) + && ($id_article = (int) $contexte['id_article']) ) { include_spip('public/quete'); // pour quete_virtuel et ses dependances $m = quete_virtuel($id_article, $connect) ?? ''; diff --git a/ecrire/public/phraser_html.php b/ecrire/public/phraser_html.php index 46b37469cf..ed9b993c78 100644 --- a/ecrire/public/phraser_html.php +++ b/ecrire/public/phraser_html.php @@ -85,7 +85,7 @@ function phraser_inclure($texte, $ligne, $result) { $fichier = $match[2]; # assurer ici la migration .php3 => .php # et de l'ancienne syntaxe INCLURE(page.php3) devenue surperflue - if ($fichier and preg_match(',^(.*[.]php)3$,', $fichier, $r)) { + if ($fichier && preg_match(',^(.*[.]php)3$,', $fichier, $r)) { $fichier = $r[1]; } $champ->texte = ($fichier !== 'page.php') ? $fichier : ''; @@ -93,7 +93,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 (is_countable($champ->param) ? count($champ->param) : 0) > 1) { + if (!$champ->texte || (is_countable($champ->param) ? count($champ->param) : 0) > 1) { if (!function_exists('normaliser_inclure')) { include_spip('public/normaliser'); } @@ -129,7 +129,7 @@ function phraser_polyglotte($texte, $ligne, $result) { $texte = substr($texte, $p + strlen($match[0])); while (preg_match('/^[[:space:]]*([^[{]*)[[:space:]]*[[{]([a-z_]+)[]}](.*)$/si', $bloc, $regs)) { $trad = $regs[1]; - if ($trad or $lang) { + if ($trad || $lang) { $champ->traductions[$lang] = $trad; } $lang = $regs[2]; @@ -239,7 +239,7 @@ function phraser_champs($texte, $ligne, $result) { $champ->nom_champ = $match[3]; $champ->etoile = $match[5]; - if ($suite and $suite[0] == '{') { + if ($suite && $suite[0] == '{') { phraser_arg($suite, '', [], $champ); // ce ltrim est une ereur de conception // mais on le conserve par souci de compatibilite @@ -275,7 +275,7 @@ function phraser_champs_etendus($texte, $ligne, $result) { return $result; } $sep = '##'; - while (strpos($texte, (string) $sep) !== false) { + while (str_contains($texte, (string) $sep)) { $sep .= '#'; } @@ -289,7 +289,6 @@ function phraser_champs_etendus($texte, $ligne, $result) { * sert aussi aux arguments des includes et aux criteres de boucles * Tres chevelu * - * @param string $texte * @param string $fin * @param string $sep * @param $result @@ -299,7 +298,7 @@ function phraser_champs_etendus($texte, $ligne, $result) { */ function phraser_args(string $texte, $fin, $sep, $result, &$pointeur_champ, &$pos_debut) { $length = strlen($texte); - while ($pos_debut < $length and trim($texte[$pos_debut]) === '') { + while ($pos_debut < $length && trim($texte[$pos_debut]) === '') { $pos_debut++; } while (($pos_debut < $length) && !str_contains($fin, $texte[$pos_debut])) { @@ -307,7 +306,7 @@ function phraser_args(string $texte, $fin, $sep, $result, &$pointeur_champ, &$po $st = substr($texte, $pos_debut); $result = phraser_arg($st, $sep, $result, $pointeur_champ); $pos_debut = $length - strlen($st); - while ($pos_debut < $length and trim($texte[$pos_debut]) === '') { + while ($pos_debut < $length && trim($texte[$pos_debut]) === '') { $pos_debut++; } } @@ -353,7 +352,7 @@ function phraser_arg(&$texte, $sep, $result, &$pointeur_champ) { preg_match("/^(')([^']*)(')(.*)$/ms", $args, $regs); } else { preg_match('/^([[:space:]]*)([^,([{}]*([(\[{][^])}]*[])}])?[^,}]*)([,}].*)$/ms', $args, $regs); - if (!isset($regs[2]) or !strlen($regs[2])) { + if (!isset($regs[2]) || !strlen($regs[2])) { $err_f = ['zbug_erreur_filtre', ['filtre' => $args]]; erreur_squelette($err_f, $pointeur_champ); $champ = new Texte(); @@ -422,7 +421,7 @@ function phraser_arg(&$texte, $sep, $result, &$pointeur_champ) { $result[] = $champ; } } - if (isset($args[0]) and $args[0] == ',') { + if (isset($args[0]) && $args[0] == ',') { $args = ltrim(substr($args, 1)); if ($collecte) { $res[] = $collecte; @@ -454,7 +453,7 @@ function phraser_arg(&$texte, $sep, $result, &$pointeur_champ) { function phraser_champs_exterieurs($texte, $ligne, $sep, $nested) { $res = []; while (($p = strpos($texte, (string) "%$sep")) !== false) { - if (!preg_match(',^%' . preg_quote($sep) . '([0-9]+)@,', substr($texte, $p), $m)) { + if (!preg_match(',^%' . preg_quote($sep, ',') . '([0-9]+)@,', substr($texte, $p), $m)) { break; } $debut = substr($texte, 0, $p); @@ -560,7 +559,7 @@ function phraser_vieux(&$champ) { include_spip('public/normaliser'); } phraser_vieux_modele($champ); - } elseif ($nom == 'INCLURE' or $nom == 'INCLUDE') { + } elseif ($nom == 'INCLURE' || $nom == 'INCLUDE') { if (!function_exists('phraser_vieux_inclu')) { include_spip('public/normaliser'); } @@ -605,15 +604,14 @@ function phraser_criteres($params, &$result) { // plus d'un argument et pas le critere IN: // detecter comme on peut si c'est le critere implicite LIMIT debut, fin if ( - $var->type != 'texte' - or preg_match('/^(n|n-|(n-)?\d+)$/S', $param) + $var->type != 'texte' || preg_match('/^(n|n-|(n-)?\d+)$/S', $param) ) { $op = ','; $not = false; $cond = false; } else { // Le debut du premier argument est l'operateur - preg_match('/^([!]?)([a-zA-Z][a-zA-Z0-9_]*)[[:space:]]*(\??)[[:space:]]*(.*)$/ms', $param, $m); + preg_match('/^([!]?)([a-zA-Z]\w*)[[:space:]]*(\??)[[:space:]]*(.*)$/ms', $param, $m); $op = $m[2]; $not = (bool) $m[1]; $cond = (bool) $m[3]; @@ -668,7 +666,7 @@ function phraser_criteres($params, &$result) { // les separateurs if ($var->apres) { $result->separateur[] = $param; - } elseif (($param == 'tout') or ($param == 'tous')) { + } elseif ($param == 'tout' || $param == 'tous') { $result->modificateur['tout'] = true; } elseif ($param == 'plat') { $result->modificateur['plat'] = true; @@ -681,11 +679,11 @@ function phraser_criteres($params, &$result) { // traités normalement. elseif ( strcasecmp($type, 'hierarchie') == 0 - and !preg_match(",^id_rubrique\b,", $param) - and preg_match(',^id_\w+\s*$,', $param) + && !preg_match(",^id_rubrique\b,", $param) + && preg_match(',^id_\w+\s*$,', $param) ) { $result->modificateur['tout'] = true; - } elseif (strcasecmp($type, 'hierarchie') == 0 and $param == 'id_rubrique') { + } elseif (strcasecmp($type, 'hierarchie') == 0 && $param == 'id_rubrique') { // rien a faire sur {id_rubrique} tout seul } else { // pas d'emplacement statique, faut un dynamique @@ -709,7 +707,7 @@ function phraser_criteres($params, &$result) { ')[[:space:]]*(\??)(!?)(<=?|>=?|==?|\b(?:IN|LIKE)\b)(.*)$,is', $param, $m) ) { $a2 = trim($m[8]); - if ($a2 and ($a2[0] == "'" or $a2[0] == '"') and ($a2[0] == substr($a2, -1))) { + if ($a2 && ($a2[0] == "'" || $a2[0] == '"') && $a2[0] == substr($a2, -1)) { $a2 = substr($a2, 1, -1); } $crit = phraser_critere_infixe( @@ -833,7 +831,7 @@ function public_trouver_premiere_boucle($texte, $id_parent, $descr, $pos_debut_t } if ( $pos_parent === false - or (strlen($id_boucle) and !(is_numeric($id_boucle) or strpos($id_boucle, '_') === 0)) + || strlen($id_boucle) && (!is_numeric($id_boucle) && !str_starts_with($id_boucle, '_')) ) { $result = new Boucle(); $result->id_parent = $id_parent; @@ -872,7 +870,7 @@ function public_trouver_premiere_boucle($texte, $id_parent, $descr, $pos_debut_t $pos_precond = strpos($texte, $precond_boucle, $id_boucle ? $pos_debut_texte : $pos_derniere_boucle_anonyme); if ( $pos_precond !== false - and $pos_precond < $boucle['debut_boucle'] + && $pos_precond < $boucle['debut_boucle'] ) { $boucle['debut_boucle'] = $pos_precond; $boucle['pos_precond'] = $pos_precond; @@ -883,7 +881,7 @@ function public_trouver_premiere_boucle($texte, $id_parent, $descr, $pos_debut_t $pos_preaff = strpos($texte, $preaff_boucle, $id_boucle ? $pos_debut_texte : $pos_derniere_boucle_anonyme); if ( $pos_preaff !== false - and $pos_preaff < $boucle['debut_boucle'] + && $pos_preaff < $boucle['debut_boucle'] ) { $boucle['debut_boucle'] = $pos_preaff; $boucle['pos_preaff'] = $pos_preaff; @@ -893,7 +891,7 @@ function public_trouver_premiere_boucle($texte, $id_parent, $descr, $pos_debut_t $pos_derniere_boucle_anonyme = $pos_boucle; } - if (is_null($premiere_boucle) or $premiere_boucle['debut_boucle'] > $boucle['debut_boucle']) { + if (is_null($premiere_boucle) || $premiere_boucle['debut_boucle'] > $boucle['debut_boucle']) { $premiere_boucle = $boucle; } } @@ -937,7 +935,7 @@ function public_trouver_fin_boucle($texte, $id_parent, $boucle, $pos_debut_texte $pos_apres = strpos($texte, $apres_boucle, $pos_courante); if ( $pos_apres !== false - and (!$pos_anonyme_next or $pos_apres < $pos_anonyme_next) + && (!$pos_anonyme_next || $pos_apres < $pos_anonyme_next) ) { $boucle['pos_postcond'] = $pos_apres; $pos_apres += strlen($apres_boucle); @@ -952,7 +950,7 @@ function public_trouver_fin_boucle($texte, $id_parent, $boucle, $pos_debut_texte $pos_altern = strpos($texte, $altern_boucle, $pos_courante); if ( $pos_altern !== false - and (!$pos_anonyme_next or $pos_altern < $pos_anonyme_next) + && (!$pos_anonyme_next || $pos_altern < $pos_anonyme_next) ) { $boucle['pos_altern'] = $pos_altern; $pos_altern += strlen($altern_boucle); @@ -967,7 +965,7 @@ function public_trouver_fin_boucle($texte, $id_parent, $boucle, $pos_debut_texte $pos_postaff = strpos($texte, $postaff_boucle, $pos_courante); if ( $pos_postaff !== false - and (!$pos_anonyme_next or $pos_postaff < $pos_anonyme_next) + && (!$pos_anonyme_next || $pos_postaff < $pos_anonyme_next) ) { $boucle['pos_postaff'] = $pos_postaff; $pos_postaff += strlen($postaff_boucle); @@ -987,11 +985,11 @@ function public_trouver_fin_boucle($texte, $id_parent, $boucle, $pos_debut_texte function phraser_boucle_placeholder(&$champ, $boucle_placeholder = null, $boucle = null) { static $boucles_connues = []; // si c'est un appel pour memoriser une boucle, memorisons la - if (is_string($champ) and !empty($boucle_placeholder) and !empty($boucle)) { + if (is_string($champ) && !empty($boucle_placeholder) && !empty($boucle)) { $boucles_connues[$boucle_placeholder][$champ] = &$boucle; } else { - if (!empty($champ->nom_champ) and !empty($boucles_connues[$champ->nom_champ])) { + if (!empty($champ->nom_champ) && !empty($boucles_connues[$champ->nom_champ])) { $placeholder = $champ->nom_champ; $id = reset($champ->param[0][1]); $id = $id->texte; @@ -1026,7 +1024,7 @@ function public_phraser_html_dist($texte, $id_parent, &$boucles, $descr, $ligne_ if (is_null($boucle_placeholder)) { do { $boucle_placeholder = 'BOUCLE_PLACEHOLDER_' . strtoupper(md5(uniqid())); - } while (strpos($texte, $boucle_placeholder) !== false); + } while (str_contains($texte, $boucle_placeholder)); } $ligne_debut_initial = $ligne_debut_texte; @@ -1074,8 +1072,8 @@ 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, (string) $match[0], $pos_milieu)) === false - or $pos_match > $pos_milieu + || ($pos_match = strpos($texte, (string) $match[0], $pos_milieu)) === false + || $pos_match > $pos_milieu ) { $err_b = ['zbug_erreur_boucle_syntaxe', ['id' => $id_boucle]]; erreur_squelette($err_b, $result); @@ -1145,7 +1143,7 @@ function public_phraser_html_dist($texte, $id_parent, &$boucles, $descr, $ligne_ do { while ( $nb_close < $nb_open - and $p = strpos($texte, $fin_boucle, $pos_fin + 1) + && ($p = strpos($texte, $fin_boucle, $pos_fin + 1)) ) { $nb_close++; $pos_fin = $p; @@ -1155,13 +1153,13 @@ function public_phraser_html_dist($texte, $id_parent, &$boucles, $descr, $ligne_ break; } while ( - $p = strpos($texte, $search_debut_boucle, $search_from) - and $p < $pos_fin + ($p = strpos($texte, $search_debut_boucle, $search_from)) + && $p < $pos_fin ) { $nb_open++; $search_from = $p + 1; } - } while ($nb_close < $nb_open and $maxiter++ < 5); + } while ($nb_close < $nb_open && $maxiter++ < 5); $pos_courante = $pos_fin + strlen($fin_boucle); } @@ -1279,7 +1277,5 @@ function public_phraser_html_dist($texte, $id_parent, &$boucles, $descr, $ligne_ $pos_debut_texte = $pos_courante; } - $all_res = phraser_champs_etendus($texte, $ligne_debut_initial, $all_res); - - return $all_res; + return phraser_champs_etendus($texte, $ligne_debut_initial, $all_res); } diff --git a/ecrire/public/quete.php b/ecrire/public/quete.php index be97dda63d..37d1e9a5c4 100644 --- a/ecrire/public/quete.php +++ b/ecrire/public/quete.php @@ -35,7 +35,7 @@ function quete_virtuel($id_article, $connect) { return sql_getfetsel( 'virtuel', 'spip_articles', - ['id_article=' . intval($id_article), "statut='publie'"], + ['id_article=' . (int) $id_article, "statut='publie'"], '', '', '', @@ -65,7 +65,7 @@ function quete_parent_lang($table, $id, string $connect = '') { !$desc = $trouver_table( $table, $connect - ) or !isset($desc['field']['id_rubrique']) + ) || !isset($desc['field']['id_rubrique']) ) { // pas de parent rubrique, on passe $cache_quete[$connect][$table]['_select'] = false; @@ -80,7 +80,7 @@ function quete_parent_lang($table, $id, string $connect = '') { $cache_quete[$connect][$table][$id] = sql_fetsel( $cache_quete[$connect][$table]['_select'], $table, - $cache_quete[$connect][$table]['_id'] . '=' . intval($id), + $cache_quete[$connect][$table]['_id'] . '=' . (int) $id, '', '', '', @@ -107,7 +107,7 @@ function quete_parent_lang($table, $id, string $connect = '') { * @return int */ function quete_parent($id_rubrique, string $connect = '') { - if (!$id_rubrique = intval($id_rubrique)) { + if (!$id_rubrique = (int) $id_rubrique) { return 0; } $id_parent = quete_parent_lang('spip_rubriques', $id_rubrique, $connect); @@ -139,7 +139,6 @@ function quete_rubrique($id_article, $serveur) { * @uses quete_parent() * * @param int $id - * @param string $connect * @return int */ function quete_profondeur($id, string $connect = '') { @@ -165,13 +164,13 @@ function quete_profondeur($id, string $connect = '') { * Morceau de la requête SQL testant la date */ function quete_condition_postdates($champ_date, $serveur = '', $ignore_previsu = false) { - if (defined('_VAR_PREVIEW') and _VAR_PREVIEW and !$ignore_previsu) { + if (defined('_VAR_PREVIEW') && _VAR_PREVIEW && !$ignore_previsu) { return '1=1'; } return (isset($GLOBALS['meta']['date_prochain_postdate']) - and $GLOBALS['meta']['date_prochain_postdate'] > time()) + && $GLOBALS['meta']['date_prochain_postdate'] > time()) ? "$champ_date<" . sql_quote(date('Y-m-d H:i:s', $GLOBALS['meta']['date_prochain_postdate']), $serveur) : '1=1'; } @@ -201,11 +200,11 @@ function quete_condition_statut($mstatut, $previsu, $publie, $serveur = '', $ign } $liste_statuts = $publie; - if (defined('_VAR_PREVIEW') and _VAR_PREVIEW and !$ignore_previsu) { + if (defined('_VAR_PREVIEW') && _VAR_PREVIEW && !$ignore_previsu) { $liste_statuts = $previsu; } $not = false; - if (strncmp($liste_statuts, '!', 1) == 0) { + if (str_starts_with($liste_statuts, '!')) { $not = true; $liste_statuts = substr($liste_statuts, 1); } @@ -219,17 +218,17 @@ function quete_condition_statut($mstatut, $previsu, $publie, $serveur = '', $ign foreach ($liste_statuts as $k => $v) { // filtrage /auteur pour limiter les objets d'un statut (prepa en general) // a ceux de l'auteur identifie - if (strpos($v, '/') !== false) { + if (str_contains($v, '/')) { $v = explode('/', $v); $filtre = end($v); $v = reset($v); $v = preg_replace(',\W,', '', $v); if ( $filtre == 'auteur' - and (strpos($mstatut, '.') !== false) - and $objet = explode('.', $mstatut) - and $id_table = reset($objet) - and $objet = objet_type($id_table) + && str_contains($mstatut, '.') + && ($objet = explode('.', $mstatut)) + && ($id_table = reset($objet)) + && ($objet = objet_type($id_table)) ) { $w = "$mstatut<>" . sql_quote($v); @@ -239,7 +238,7 @@ function quete_condition_statut($mstatut, $previsu, $publie, $serveur = '', $ign if ($desc = decrire_token_previsu()) { $id_auteur = $desc['id_auteur']; } elseif (isset($GLOBALS['visiteur_session']['id_auteur'])) { - $id_auteur = intval($GLOBALS['visiteur_session']['id_auteur']); + $id_auteur = (int) $GLOBALS['visiteur_session']['id_auteur']; } else { $id_auteur = null; } @@ -254,7 +253,7 @@ function quete_condition_statut($mstatut, $previsu, $publie, $serveur = '', $ign $where[] = "($w OR $id_table.$primary IN (" . sql_get_select( 'ssss.id_objet', 'spip_auteurs_liens AS ssss', - 'ssss.objet=' . sql_quote($objet) . ' AND ssss.id_auteur=' . intval($id_auteur), + 'ssss.objet=' . sql_quote($objet) . ' AND ssss.id_auteur=' . (int) $id_auteur, '', '', '', @@ -298,7 +297,7 @@ function quete_condition_statut($mstatut, $previsu, $publie, $serveur = '', $ign * @return array|bool|null */ function quete_fichier($id_document, $serveur = '') { - return sql_getfetsel('fichier', 'spip_documents', ('id_document=' . intval($id_document)), '', [], '', '', $serveur); + return sql_getfetsel('fichier', 'spip_documents', ('id_document=' . (int) $id_document), '', [], '', '', $serveur); } /** @@ -309,7 +308,7 @@ function quete_fichier($id_document, $serveur = '') { * @return array|bool */ function quete_document($id_document, $serveur = '') { - return sql_fetsel('*', 'spip_documents', ('id_document=' . intval($id_document)), '', [], '', '', $serveur); + return sql_fetsel('*', 'spip_documents', ('id_document=' . (int) $id_document), '', [], '', '', $serveur); } /** @@ -365,12 +364,7 @@ function quete_logo($cle_objet, $onoff, $id, $id_rubrique, $flag = false) { // Si on a déjà demandé un survol directement ($onoff = off) // ou qu'on a demandé uniquement le normal ($onoff = on) // alors on ne cherche pas du tout le survol ici - if ($onoff != 'ON') { - $off = ''; - } else { - // Sinon, c'est qu'on demande normal ET survol à la fois, donc on cherche maintenant le survol - $off = quete_logo_objet($id, $objet, 'off'); - } + $off = $onoff != 'ON' ? '' : quete_logo_objet($id, $objet, 'off'); // on retourne une url du type IMG/artonXX?timestamp // qui permet de distinguer le changement de logo @@ -378,7 +372,7 @@ function quete_logo($cle_objet, $onoff, $id, $id_rubrique, $flag = false) { $res = [ $on['chemin'] . ($on['timestamp'] ? "?{$on['timestamp']}" : ''), ($off ? $off['chemin'] . ($off['timestamp'] ? "?{$off['timestamp']}" : '') : ''), - (!$taille ? '' : (' ' . $taille[3])) + ($taille ? ' ' . $taille[3] : ('')) ]; $res['src'] = $res[0]; $res['logo_on'] = $res[0]; @@ -403,7 +397,7 @@ function quete_logo($cle_objet, $onoff, $id, $id_rubrique, $flag = false) { $id = $id_rubrique; $id_rubrique = 0; } else { - if ($id and $cle_objet == 'id_rubrique') { + if ($id && $cle_objet == 'id_rubrique') { $id = quete_parent($id); } else { return ''; @@ -487,8 +481,8 @@ function quete_logo_file($row, $connect = null) { // si c'est une vignette type doc, la renvoyer direct if ( strcmp($logo, _DIR_PLUGINS) == 0 - or strcmp($logo, _DIR_PLUGINS_DIST) == 0 - or strcmp($logo, _DIR_RACINE . 'prive/') == 0 + || strcmp($logo, _DIR_PLUGINS_DIST) == 0 + || strcmp($logo, _DIR_RACINE . 'prive/') == 0 ) { return $logo; } @@ -527,7 +521,7 @@ function quete_logo_document($row, $lien, $align, $mode_logo, $x, $y, string $co $logo = vignette_logo_document($row, $connect); } // si on veut explicitement la vignette, ne rien renvoyer si il n'y en a pas - if ($mode_logo == 'vignette' and !$logo) { + if ($mode_logo == 'vignette' && !$logo) { return ''; } if ($mode_logo == 'icone') { @@ -595,12 +589,11 @@ function document_spip_externe($fichier, $connect) { * ou vide si pas de vignette * * @param array $row - * @param string $connect * @return string */ function vignette_logo_document($row, string $connect = '') { - if (!$row or empty($row['id_vignette'])) { + if (!$row || empty($row['id_vignette'])) { return ''; } $fichier = quete_fichier($row['id_vignette'], $connect); @@ -609,7 +602,7 @@ function vignette_logo_document($row, string $connect = '') { } $f = get_spip_doc($fichier); - if ($f and @file_exists($f)) { + if ($f && @file_exists($f)) { return $f; } if ($row['mode'] !== 'vignette') { @@ -628,7 +621,6 @@ function vignette_logo_document($row, string $connect = '') { * @param array $reference * @param int $parent * @param string $type - * @param string $connect * @return bool|string */ function calcul_exposer($id, $prim, $reference, $parent, $type, string $connect = '') { @@ -650,7 +642,7 @@ function calcul_exposer($id, $prim, $reference, $parent, $type, string $connect if ( isset($reference[$t]) // cas de la reference donnee dynamiquement par la pagination - or isset($reference["@$t"]) + || isset($reference["@$t"]) ) { $type = $t; $principal = $reference[$type] ?? $reference["@$type"]; @@ -666,7 +658,7 @@ function calcul_exposer($id, $prim, $reference, $parent, $type, string $connect $exposer[$m][$type][$principal] = true; if ($type == 'id_mot') { if (!$parent) { - $parent = sql_getfetsel('id_groupe', 'spip_mots', 'id_mot=' . intval($principal), '', '', '', '', $connect); + $parent = sql_getfetsel('id_groupe', 'spip_mots', 'id_mot=' . (int) $principal, '', '', '', '', $connect); } if ($parent) { $exposer[$m]['id_groupe'][$parent] = true; @@ -708,16 +700,16 @@ function calcul_exposer($id, $prim, $reference, $parent, $type, string $connect function quete_debut_pagination($primary, $valeur, $pas, $iter) { // on ne devrait pas arriver ici si la cle primaire est inexistante // ou composee, mais verifions - if (!$primary or preg_match('/[,\s]/', $primary)) { + if (!$primary || preg_match('/[,\s]/', $primary)) { return 0; } $pos = 0; - while ($row = $iter->fetch() and $row[$primary] != $valeur) { + while (($row = $iter->fetch()) && $row[$primary] != $valeur) { $pos++; } // si on a pas trouve - if (!$row or $row[$primary] != $valeur) { + if (!$row || $row[$primary] != $valeur) { return 0; } @@ -729,15 +721,11 @@ function quete_debut_pagination($primary, $valeur, $pas, $iter) { * Retourne true si ce where doit être appliqué, * dans le cas des critères avec ? tel que `{id_article ?}` * - * @param mixed $value * @return boolean */ -function is_whereable($value): bool { +function is_whereable(mixed $value): bool { if (is_array($value) && count($value)) { return true; } - if (is_scalar($value) && strlen($value)) { - return true; - } - return false; + return is_scalar($value) && strlen($value); } diff --git a/ecrire/public/sandbox.php b/ecrire/public/sandbox.php index 7362119818..aaf0085474 100644 --- a/ecrire/public/sandbox.php +++ b/ecrire/public/sandbox.php @@ -40,9 +40,7 @@ if (!defined('_ECRIRE_INC_VERSION')) { * texte */ function sandbox_composer_texte($texte, &$p) { - $code = "'" . str_replace(['\\', "'"], ['\\\\', "\\'"], $texte) . "'"; - - return $code; + return "'" . str_replace(['\\', "'"], ['\\\\', "\\'"], $texte) . "'"; } @@ -67,13 +65,9 @@ function sandbox_composer_filtre($fonc, $code, $arglist, &$p, $nb_arg_droite = 1 elseif ($f = chercher_filtre($fonc)) { // cas particulier : le filtre |set doit acceder a la $Pile // proto: filtre_set(&$Pile, $val, $args...) - if (strpbrk($f, ':')) { // Class::method - $refl = new ReflectionMethod($f); - } else { - $refl = new ReflectionFunction($f); - } + $refl = strpbrk($f, ':') ? new ReflectionMethod($f) : new ReflectionFunction($f); $refs = $refl->getParameters(); - if (isset($refs[0]) and $refs[0]->name == 'Pile') { + if (isset($refs[0]) && $refs[0]->name == 'Pile') { $code = "$f(\$Pile,$code$arglist)"; $nb_arg_gauche = 2; // la balise à laquelle s'applique le filtre + $Pile } else { @@ -118,11 +112,7 @@ else { function sandbox_composer_inclure_php($fichier, &$p, $_contexte) { $compil = texte_script(memoriser_contexte_compil($p)); // si inexistant, on essaiera a l'execution - if ($path = find_in_path($fichier)) { - $path = "\"$path\""; - } else { - $path = "find_in_path(\"$fichier\")"; - } + $path = ($path = find_in_path($fichier)) ? "\"$path\"" : "find_in_path(\"$fichier\")"; return sprintf(CODE_INCLURE_SCRIPT, $path, $fichier, $compil, $_contexte); } @@ -139,7 +129,7 @@ function sandbox_composer_interdire_scripts($code, &$p) { // Securite if ( $p->interdire_scripts - and $p->etoile != '**' + && $p->etoile != '**' ) { if (!preg_match("/^sinon[(](.*),'([^']*)'[)]$/", $code, $r)) { $code = "interdire_scripts($code)"; @@ -183,7 +173,7 @@ function sandbox_filtrer_squelette($skel, $corps, $filtres) { foreach ($series_filtres as $filtres) { if (is_countable($filtres) ? count($filtres) : 0) { foreach ($filtres as $filtre) { - if ($filtre and $f = chercher_filtre($filtre)) { + if ($filtre && ($f = chercher_filtre($filtre))) { $corps = $f($corps); } } diff --git a/ecrire/public/styliser.php b/ecrire/public/styliser.php index 5808092c6f..85a4bcf21c 100644 --- a/ecrire/public/styliser.php +++ b/ecrire/public/styliser.php @@ -42,11 +42,11 @@ function public_styliser_dist($fond, $contexte, $lang = '', string $connect = '' // s'assurer que le fond est licite // car il peut etre construit a partir d'une variable d'environnement - if (strpos($fond, '../') !== false or strncmp($fond, '/', 1) == 0) { + if (str_contains($fond, '../') || str_starts_with($fond, '/')) { $fond = '404'; } - if (strncmp($fond, 'modeles/', 8) == 0) { + if (str_starts_with($fond, 'modeles/')) { $modele = substr($fond, 8); $modele = styliser_modele($modele, null, $contexte); $fond = "modeles/$modele"; @@ -78,7 +78,7 @@ function public_styliser_dist($fond, $contexte, $lang = '', string $connect = '' 'data' => $squelette['fond'], ]; - if (test_espace_prive() or defined('_ZPIP')) { + if (test_espace_prive() || defined('_ZPIP')) { if (!$styliser_par_z) { $styliser_par_z = charger_fonction('styliser_par_z', 'public'); } @@ -111,11 +111,11 @@ function public_styliser_dist($fond, $contexte, $lang = '', string $connect = '' function styliser_par_objets($flux) { if ( test_espace_prive() - and !$squelette = $flux['data'] - and strncmp($flux['args']['fond'], 'prive/objets/', 13) == 0 - and $echafauder = charger_fonction('echafauder', 'prive', true) + && !($squelette = $flux['data']) + && str_starts_with($flux['args']['fond'], 'prive/objets/') + && ($echafauder = charger_fonction('echafauder', 'prive', true)) ) { - if (strncmp($flux['args']['fond'], 'prive/objets/liste/', 19) == 0) { + if (str_starts_with($flux['args']['fond'], 'prive/objets/liste/')) { $table = table_objet(substr($flux['args']['fond'], 19)); $table_sql = table_objet_sql($table); $objets = lister_tables_objets_sql(); @@ -123,7 +123,7 @@ function styliser_par_objets($flux) { $flux['data'] = $echafauder($table, $table, $table_sql, 'prive/objets/liste/objets', $flux['args']['ext']); } } - if (strncmp($flux['args']['fond'], 'prive/objets/contenu/', 21) == 0) { + if (str_starts_with($flux['args']['fond'], 'prive/objets/contenu/')) { $type = substr($flux['args']['fond'], 21); $table = table_objet($type); $table_sql = table_objet_sql($table); @@ -147,7 +147,7 @@ function styliser_par_objets($flux) { * * @staticvar array $liste_objets * @param array $contexte - * @return array + * @return array|false */ function quete_rubrique_fond($contexte) { static $liste_objets = null; @@ -168,7 +168,7 @@ function quete_rubrique_fond($contexte) { } } $c = array_intersect_key($contexte, $liste_objets); - if (!count($c)) { + if ($c === []) { return false; } @@ -178,18 +178,15 @@ function quete_rubrique_fond($contexte) { return $quete[$s]; } - if (isset($c['id_rubrique']) and $r = $c['id_rubrique']) { + if (isset($c['id_rubrique']) && ($r = $c['id_rubrique'])) { unset($c['id_rubrique']); $c = ['id_rubrique' => $r] + $c; } foreach ($c as $_id => $id) { - if ( - $id - and $row = quete_parent_lang(table_objet_sql($liste_objets[$_id]), $id) - ) { + if ($id && ($row = quete_parent_lang(table_objet_sql($liste_objets[$_id]), $id))) { $lang = $row['lang'] ?? ''; - if ($_id == 'id_rubrique' or (isset($row['id_rubrique']) and $id = $row['id_rubrique'])) { + if ($_id == 'id_rubrique' || isset($row['id_rubrique']) && ($id = $row['id_rubrique'])) { return $quete[$s] = [$id, $lang]; } } diff --git a/ecrire/public/styliser_par_z.php b/ecrire/public/styliser_par_z.php index 5306e3d2c3..fd4821280b 100644 --- a/ecrire/public/styliser_par_z.php +++ b/ecrire/public/styliser_par_z.php @@ -63,20 +63,20 @@ function public_styliser_par_z_dist($flux) { $fond = $flux['args']['fond']; - if ($prepend or strncmp($fond, $prefix_path, $prefix_length) == 0) { + if ($prepend || strncmp($fond, $prefix_path, $prefix_length) == 0) { $fond = substr($fond, $prefix_length); $squelette = $flux['data']; $ext = $flux['args']['ext']; // Ajax Parallel loading : ne pas calculer le bloc, mais renvoyer un js qui le loadera en ajax if ( defined('_Z_AJAX_PARALLEL_LOAD_OK') - and $dir = explode('/', $fond) - and count($dir) == 2 // pas un sous repertoire - and $dir = reset($dir) - and in_array($dir, $z_blocs) // verifier deja qu'on est dans un bloc Z - and defined($apl_constant) - and in_array($dir, explode(',', constant($apl_constant))) // et dans un demande en APL - and $pipe = z_trouver_bloc($prefix_path . $prepend, $dir, 'z_apl', $ext) // et qui contient le squelette APL + && ($dir = explode('/', $fond)) + && count($dir) == 2 // pas un sous repertoire + && ($dir = reset($dir)) + && in_array($dir, $z_blocs) // verifier deja qu'on est dans un bloc Z + && defined($apl_constant) + && in_array($dir, explode(',', constant($apl_constant))) // et dans un demande en APL + && ($pipe = z_trouver_bloc($prefix_path . $prepend, $dir, 'z_apl', $ext)) // et qui contient le squelette APL ) { $flux['data'] = $pipe; @@ -84,7 +84,7 @@ function public_styliser_par_z_dist($flux) { } // surcharger aussi les squelettes venant de squelettes-dist/ - if ($squelette and !z_fond_valide($squelette)) { + if ($squelette && !z_fond_valide($squelette)) { $squelette = ''; $echafauder = ''; } @@ -101,12 +101,9 @@ function public_styliser_par_z_dist($flux) { if (!$squelette) { // si on est sur un ?page=XX non trouve if ( - (isset($flux['args']['contexte'][$page]) - and $flux['args']['contexte'][$page] == $fond) - or (isset($flux['args']['contexte']['type-page']) - and $flux['args']['contexte']['type-page'] == $fond) - or ($fond == 'sommaire' - and (!isset($flux['args']['contexte'][$page]) or !$flux['args']['contexte'][$page])) + isset($flux['args']['contexte'][$page]) && $flux['args']['contexte'][$page] == $fond + || isset($flux['args']['contexte']['type-page']) && $flux['args']['contexte']['type-page'] == $fond + || $fond == 'sommaire' && (!isset($flux['args']['contexte'][$page]) || !$flux['args']['contexte'][$page]) ) { // si on est sur un ?page=XX non trouve // se brancher sur contenu/xx si il existe @@ -125,7 +122,7 @@ function public_styliser_par_z_dist($flux) { // generer un fond automatique a la volee pour les webmestres elseif (strncmp($fond, "$z_contenu/", strlen($z_contenu) + 1) == 0) { $type = substr($fond, strlen($z_contenu) + 1); - if (($type == 'page') and isset($flux['args']['contexte'][$page])) { + if ($type == 'page' && isset($flux['args']['contexte'][$page])) { $type = $flux['args']['contexte'][$page]; } if (!isset($disponible[$type])) { @@ -135,11 +132,11 @@ function public_styliser_par_z_dist($flux) { $flux['data'] = $disponible[$type]; } elseif ( $echafauder - and include_spip('inc/autoriser') - and isset($GLOBALS['visiteur_session']['statut']) // performance - and autoriser('echafauder', $type) - and $is = $disponible[$type] - and is_array($is) + && include_spip('inc/autoriser') + && isset($GLOBALS['visiteur_session']['statut']) + && autoriser('echafauder', $type) + && ($is = $disponible[$type]) + && is_array($is) ) { $flux['data'] = $echafauder($type, $is[0], $is[1], $is[2], $ext); } else { @@ -158,19 +155,19 @@ function public_styliser_par_z_dist($flux) { // se rabbatre sur le dist.html du bloc concerne else { if ( - $dir = explode('/', $fond) - and $dir = reset($dir) - and $dir !== $z_contenu - and in_array($dir, $z_blocs) + ($dir = explode('/', $fond)) + && ($dir = reset($dir)) + && $dir !== $z_contenu + && in_array($dir, $z_blocs) ) { $type = substr($fond, strlen("$dir/")); - if (($type == 'page') and isset($flux['args']['contexte'][$page])) { + if ($type == 'page' && isset($flux['args']['contexte'][$page])) { $type = $flux['args']['contexte'][$page]; } - if ($type !== 'page' and !isset($disponible[$type])) { + if ($type !== 'page' && !isset($disponible[$type])) { $disponible[$type] = z_contenu_disponible($prefix_path . $prepend, $z_contenu, $type, $ext, $echafauder); } - if ($type == 'page' or $disponible[$type]) { + if ($type == 'page' || $disponible[$type]) { $flux['data'] = z_trouver_bloc($prefix_path . $prepend, $dir, 'dist', $ext); } } @@ -182,33 +179,31 @@ function public_styliser_par_z_dist($flux) { // body-sommaire.html // pour des raisons de perfo, les declinaisons doivent etre dans le // meme dossier que body.html - if ($fond == 'body' and substr($squelette, -strlen($fond)) == $fond) { + if ($fond == 'body' && str_ends_with($squelette, $fond)) { if ( isset($flux['args']['contexte']['type-page']) - and ( - (isset($flux['args']['contexte']['composition']) - and file_exists(($f = $squelette . '-' . $flux['args']['contexte']['type-page'] . '-' . $flux['args']['contexte']['composition']) . ".$ext")) - or - file_exists(($f = $squelette . '-' . $flux['args']['contexte']['type-page']) . ".$ext") + && ( + isset($flux['args']['contexte']['composition']) && file_exists(($f = $squelette . '-' . $flux['args']['contexte']['type-page'] . '-' . $flux['args']['contexte']['composition']) . ".$ext") + || file_exists(($f = $squelette . '-' . $flux['args']['contexte']['type-page']) . ".$ext") ) ) { $flux['data'] = $f; } } elseif ( $fond == 'structure' - and z_sanitize_var_zajax() - and $f = find_in_path($prefix_path . $prepend . 'ajax' . ".$ext") + && z_sanitize_var_zajax() + && ($f = find_in_path($prefix_path . $prepend . 'ajax' . ".$ext")) ) { $flux['data'] = substr($f, 0, -strlen(".$ext")); } // chercher le fond correspondant a la composition elseif ( isset($flux['args']['contexte']['composition']) - and (basename($fond) == 'page' or ($squelette and substr($squelette, -strlen($fond)) == $fond)) - and $dir = substr($fond, $prefix_length) - and $dir = explode('/', $dir) - and $dir = reset($dir) - and in_array($dir, $z_blocs) - and $f = find_in_path($prefix_path . $prepend . $fond . '-' . $flux['args']['contexte']['composition'] . ".$ext") + && (basename($fond) == 'page' || $squelette && str_ends_with($squelette, $fond)) + && ($dir = substr($fond, $prefix_length)) + && ($dir = explode('/', $dir)) + && ($dir = reset($dir)) + && in_array($dir, $z_blocs) + && ($f = find_in_path($prefix_path . $prepend . $fond . '-' . $flux['args']['contexte']['composition'] . ".$ext")) ) { $flux['data'] = substr($f, 0, -strlen(".$ext")); } @@ -267,15 +262,9 @@ function z_contenu_disponible($prefix_path, $z_contenu, $type, $ext, $echafauder * @return bool * `true` si on peut l'utiliser, `false` sinon. **/ -function z_fond_valide($squelette) { - if ( - !_ZCORE_EXCLURE_PATH - or !preg_match(',(' . _ZCORE_EXCLURE_PATH . ')/,', $squelette) - ) { - return true; - } - - return false; +function z_fond_valide($squelette) +{ + return !_ZCORE_EXCLURE_PATH || !preg_match(',(' . _ZCORE_EXCLURE_PATH . ')/,', $squelette); } /** @@ -294,8 +283,8 @@ function z_fond_valide($squelette) { */ function z_trouver_bloc($prefix_path, $bloc, $fond, $ext) { if ( - (defined('_ZCORE_BLOC_PREFIX_SKEL') and $f = find_in_path("$prefix_path$bloc/$bloc.$fond.$ext") and z_fond_valide($f)) - or ($f = find_in_path("$prefix_path$bloc/$fond.$ext") and z_fond_valide($f)) + defined('_ZCORE_BLOC_PREFIX_SKEL') && ($f = find_in_path("$prefix_path$bloc/$bloc.$fond.$ext")) && z_fond_valide($f) + || ($f = find_in_path("$prefix_path$bloc/$fond.$ext")) && z_fond_valide($f) ) { return substr($f, 0, -strlen(".$ext")); } @@ -331,7 +320,7 @@ function z_echafaudable($type) { // peut etre c'est un exec=types qui liste tous les objets "type" if ( ($t = objet_type($type, false)) !== $type - and $e = trouver_objet_exec($t) + && ($e = trouver_objet_exec($t)) ) { return $echafaudable[$type] = [$e['table'], $e['table_objet_sql'], $t]; } @@ -386,17 +375,13 @@ function prive_echafauder_dist($exec, $table, $table_sql, $desc_exec, $ext) { } else { $trouver_table = charger_fonction('trouver_table', 'base'); $desc = $trouver_table($table_sql); - if (isset($desc['field']['id_rubrique'])) { - $fond = 'objet_edit'; - } else { - $fond = 'objet_edit.sans_rubrique'; - } + $fond = isset($desc['field']['id_rubrique']) ? 'objet_edit' : 'objet_edit.sans_rubrique'; } $dir = z_blocs(test_espace_prive()); $dir = reset($dir); $scaffold = "<INCLURE{fond=prive/echafaudage/$dir/" . $fond . ',objet=' . $type . ',id_objet=#' . strtoupper($primary) . ',env}>'; } // page objets - elseif ($type = $desc_exec and !str_contains($type, '/')) { + elseif (($type = $desc_exec) && !str_contains($type, '/')) { $dir = z_blocs(test_espace_prive()); $dir = reset($dir); $scaffold = "<INCLURE{fond=prive/echafaudage/$dir/objets,objet=" . $type . ',env} />'; @@ -428,7 +413,7 @@ function z_sanitize_var_zajax() { } if ( !$z_blocs = z_blocs(test_espace_prive()) - or !in_array($z_ajax, $z_blocs) + || !in_array($z_ajax, $z_blocs) ) { set_request('var_zajax'); // enlever cette demande incongrue $z_ajax = false; diff --git a/ecrire/public/tracer.php b/ecrire/public/tracer.php index ee0651fd58..b9ceccd244 100644 --- a/ecrire/public/tracer.php +++ b/ecrire/public/tracer.php @@ -15,8 +15,8 @@ if (!defined('_ECRIRE_INC_VERSION')) { function trace_query_start() { static $trace = '?'; - if ($trace === '?' or defined('_DEBUG_TRACE_QUERIES')) { - if (defined('_DEBUG_TRACE_QUERIES') and _DEBUG_TRACE_QUERIES) { + if ($trace === '?' || defined('_DEBUG_TRACE_QUERIES')) { + if (defined('_DEBUG_TRACE_QUERIES') && _DEBUG_TRACE_QUERIES) { $trace = true; } else { @@ -24,14 +24,14 @@ function trace_query_start() { // si un anonyme fait un var_profile on est oblige de remplir le tableau des temps en attendant de savoir // car ici on ne sait pas si c'est un hit anonyme // ou une requete SQL faite avant chargement de la session - $trace = (!empty($_GET['var_profile']) ? '?' : false); + $trace = (empty($_GET['var_profile']) ? false : '?'); } else { include_spip('inc/autoriser'); // gare au bouclage sur calcul de droits au premier appel // A fortiori quand on demande une trace $trace = false; // on ne trace pas la requete provoquee par autoriser('debug') - $trace = (!empty($_GET['var_profile']) and autoriser('debug')); + $trace = (!empty($_GET['var_profile']) && autoriser('debug')); } } } @@ -46,14 +46,14 @@ function trace_query_end($query, $start, $result, $erreur, $serveur = '') { // si un anonyme fait un var_profile on est oblige de remplir le tableau des temps en attendant de savoir // car ici on ne sait pas si c'est un hit anonyme // ou une requete SQL faite avant chargement de la session - $trace = (!empty($_GET['var_profile']) ? '?' : false); + $trace = (empty($_GET['var_profile']) ? false : '?'); } else { include_spip('inc/autoriser'); // gare au bouclage sur calcul de droits au premier appel // A fortiori quand on demande une trace $trace = false; // on ne trace pas la requete provoquee par autoriser('debug') - $trace = (!empty($_GET['var_profile']) and autoriser('debug')); + $trace = (!empty($_GET['var_profile']) && autoriser('debug')); } } if ($start) { @@ -67,7 +67,7 @@ function trace_query_end($query, $start, $result, $erreur, $serveur = '') { } } // tracer les erreurs, sauf pour select, c'est fait dans abstract_sql - if ($trace and $erreur and !preg_match('/^select\b/i', $query)) { + if ($trace && $erreur && !preg_match('/^select\b/i', $query)) { erreur_squelette([sql_errno($serveur), $erreur, $query]); } @@ -81,7 +81,7 @@ function trace_query_chrono($dt, $query, $result, $serveur = '') { $x = _request('var_mode_objet'); if (isset($GLOBALS['debug']['aucasou'])) { [, $boucle, $serveur, $contexte] = $GLOBALS['debug']['aucasou']; - if ($x and !preg_match("/$boucle\$/", $x)) { + if ($x && !preg_match("/$boucle\$/", $x)) { return; } if ($serveur) { @@ -100,7 +100,7 @@ function trace_query_chrono($dt, $query, $result, $serveur = '') { $q = preg_replace('/([a-z)`])\s+([A-Z])/', "$1\n<br />$2", spip_htmlentities($query)); $e = sql_explain($query, $serveur); - $r = str_replace('Resource id ', '', (is_object($result) ? get_class($result) : $result)); + $r = str_replace('Resource id ', '', (is_object($result) ? $result::class : $result)); $GLOBALS['tableau_des_temps'][] = [$dt, $nb, $boucle, $q, $e, $r, $contexte]; } @@ -145,7 +145,7 @@ function chrono_requete($temps) { . "<tr><th>Time</th><td>$dt</td></tr>" . "<tr><th>Order</th><td>$nb</td></tr>" . "<tr><th>Res</th><td>$res</td></tr>" - . join('', $explain) + . implode('', $explain) . '</table>'; $temps[$key] = [$e, $env, $k]; @@ -180,13 +180,13 @@ function chrono_requete($temps) { // Fabriquer le tableau des liens de navigation dans le grand tableau foreach ($d as $k => $v) { $d[$k] = $n[$k] . "</td><td>$k</td><td class='time'>$v</td><td class='liste-reqs'>" - . join('', $t[$k]); + . implode('', $t[$k]); } $navigation = [ _T('zbug_statistiques'), '<tr><td>' - . join("</td></tr>\n<tr><td>", $d) + . implode("</td></tr>\n<tr><td>", $d) . "</td></tr>\n" . (# _request('var_mode_objet') ? '' : ('<tr><td>' . (is_countable($temps) ? count($temps) : 0) . '</td><td>' . _T('info_total') . '</td><td class="time">' . $total . '</td><td></td></tr>')) -- GitLab