From 24fa887d0d7885194cea27d71efa64c6476b5ccd Mon Sep 17 00:00:00 2001 From: Matthieu Marcillaud <marcimat@rezo.net> Date: Sat, 22 Jan 2022 12:10:46 +0100 Subject: [PATCH] =?UTF-8?q?Tol=C3=A9rance=20finalement=20sur=20le=20typage?= =?UTF-8?q?=20du=20premier=20param=C3=A8tre=20(int=20$id,=20int=20$id=5Fob?= =?UTF-8?q?jet)=20des=20nouvelles=20fonctions=20d=E2=80=99URL,=20car=20il?= =?UTF-8?q?=20y=20a=20des=20appels=20avec=20""=20ou=20"new"=20ou=20null,?= =?UTF-8?q?=20qui=20ne=20peuvent=20=C3=AAtre=20transform=C3=A9s=20en=20int?= =?UTF-8?q?=20par=20PHP=20de=20la=20sorte.=20On=20enl=C3=A8ve=20le=20type,?= =?UTF-8?q?=20et=20on=20applique=20intval=20dessus=20dans=20la=20foul?= =?UTF-8?q?=C3=A9e.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/inc/filtres.php | 6 +++--- ecrire/inc/urls.php | 5 +++-- ecrire/inc/utils.php | 19 +++++++++++-------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php index ac6cc65bb9..6d7fa72ae3 100644 --- a/ecrire/inc/filtres.php +++ b/ecrire/inc/filtres.php @@ -4685,7 +4685,7 @@ function bouton_action($libelle, $url, $class = '', $confirm = '', $title = '', * $ligne correspond a la ligne SQL de tous les champs de l'objet, les fonctions * de personnalisation n'ont donc pas a refaire de requete. * - * @param int $id_objet + * @param int|string|null $id_objet * @param string $type_objet * @param string $info * @param string $etoile @@ -4693,7 +4693,7 @@ function bouton_action($libelle, $url, $class = '', $confirm = '', $title = '', * Tableau de paramètres supplémentaires transmis aux fonctions generer_xxx * @return string */ -function generer_objet_info(int $id_objet, string $type_objet, string $info, string $etoile = '', array $params = []): string { +function generer_objet_info($id_objet, string $type_objet, string $info, string $etoile = '', array $params = []): string { static $trouver_table = null; static $objets; @@ -4925,7 +4925,7 @@ function appliquer_traitement_champ($texte, $champ, $table_objet = '', $env = [] * Generer un lien (titre clicable vers url) vers un objet * * @param int $id_objet - * @param $objet + * @param string $objet * @param int $longueur * @param null|string $connect * @return string diff --git a/ecrire/inc/urls.php b/ecrire/inc/urls.php index 6ab3fb4d02..f4c1085c11 100644 --- a/ecrire/inc/urls.php +++ b/ecrire/inc/urls.php @@ -301,7 +301,7 @@ function nettoyer_url_page($url, $contexte = []) { * L'URL est calculée en fonction de son état publié ou non, * calculé à partir de la déclaration de statut. * - * @param int $id Identifiant de l'objet + * @param int|string|null $id Identifiant de l'objet * @param string $objet Type d'objet * @param string $args * @param string $ancre @@ -309,8 +309,9 @@ function nettoyer_url_page($url, $contexte = []) { * @param string $connect * @return string */ -function generer_objet_url_ecrire(int $id, string $objet, string $args = '', string $ancre = '', ?bool $public = null, string $connect = ''): string { +function generer_objet_url_ecrire($id, string $objet, string $args = '', string $ancre = '', ?bool $public = null, string $connect = ''): string { static $furls = []; + $id = intval($id); if (!isset($furls[$objet])) { if ( function_exists($f = 'generer_' . $objet . '_url_ecrire') diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index b9c2734ecd..1b4578d929 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -1826,11 +1826,11 @@ function charger_fonction_url(string $quoi, string $type = '') { /** - * Fonction codant et décodant les URLs des objets SQL mis en page par SPIP + * Fonction codant les URLs des objets SQL mis en page par SPIP * * @api - * @param string $id - * numero de la cle primaire si nombre, URL a decoder si pas numerique + * @param int|string|null $id + * numero de la cle primaire si nombre * @param string $entite * surnom de la table SQL (donne acces au nom de cle primaire) * @param string $args @@ -1849,10 +1849,11 @@ function charger_fonction_url(string $quoi, string $type = '') { * array : derogatoire, la fonction d'url retourne (objet,id_objet) utilises par nettoyer_raccourcis_typo() pour generer un lien titre * (cas des raccourcis personalises [->spip20] : il faut implementer une fonction generer_spip_url et une fonction generer_spip_url_ecrire) */ -function generer_objet_url(int $id, string $entite, string $args = '', string $ancre = '', ?bool $public = null, string $type = '', string $connect = ''): string { +function generer_objet_url($id, string $entite, string $args = '', string $ancre = '', ?bool $public = null, string $type = '', string $connect = ''): string { if ($public === null) { $public = !test_espace_prive(); } + $id = intval($id); $entite = objet_type($entite); // cas particulier d'appels sur objet/id_objet... if (!$public) { @@ -1905,13 +1906,14 @@ function generer_url_entite($id = 0, $entite = '', $args = '', $ancre = '', $pub /** * Generer l'url vers la page d'edition dans ecrire/ - * @param int $id + * @param int|string|null $id * @param string $entite * @param string $args * @param string $ancre * @return string */ -function generer_objet_url_ecrire_edit(int $id, string $entite, string $args = '', string $ancre = ''): string { +function generer_objet_url_ecrire_edit($id, string $entite, string $args = '', string $ancre = ''): string { + $id = intval($id); $exec = objet_info($entite, 'url_edit'); $url = generer_url_ecrire($exec, $args); if (intval($id)) { @@ -1970,7 +1972,7 @@ function urlencode_1738($url) { /** * Generer l'url absolue vers un objet * - * @param int $id + * @param int|string|null $id * @param string $entite * @param string $args * @param string $ancre @@ -1979,7 +1981,8 @@ function urlencode_1738($url) { * @param string $connect * @return string */ -function generer_objet_url_absolue(int $id = 0, string $entite = '', string $args = '', string $ancre = '', ?bool $public = null, string $type = '', string $connect = ''): string { +function generer_objet_url_absolue($id = 0, string $entite = '', string $args = '', string $ancre = '', ?bool $public = null, string $type = '', string $connect = ''): string { + $id = intval($id); $h = generer_objet_url($id, $entite, $args, $ancre, $public, $type, $connect); if (!preg_match(',^\w+:,', $h)) { include_spip('inc/filtres_mini'); -- GitLab