diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php index ac6cc65bb957506c733f97271478c59869b7e77c..6d7fa72ae372fd64545036b0bc904280c615e7d5 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 6ab3fb4d02992c110cee4637e6aa5c1a1a94f598..f4c1085c11819ea6dfe35cf64c09ab9b83a3b65d 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 b9c2734ecd9f8aaff8acc1803574ef514553e117..1b4578d9292b887b2a4ca80abb3ed31afcc9a14e 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');