From 7406ba2593f74d728438145341feb4fdfaac20fb Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Fri, 21 Jan 2022 15:24:59 +0100 Subject: [PATCH] Mieux typer la fonction generer_objet_url() : on en profite pour separer public et connect en 2 arguments distincts, meme si c'est plus long a ecrire (vive les arguments nommes) --- ecrire/inc/filtres.php | 2 +- ecrire/inc/lien.php | 4 ++-- ecrire/inc/utils.php | 24 ++++++++++++++---------- ecrire/public/quete.php | 2 +- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php index a25da17477..3e6e8d31a0 100644 --- a/ecrire/inc/filtres.php +++ b/ecrire/inc/filtres.php @@ -4942,7 +4942,7 @@ function generer_objet_lien($id_objet, $objet, $longueur = 80, $connect = null) if (!strlen($titre)) { $titre = _T('info_sans_titre'); } - $url = generer_objet_url($id_objet, $objet, '', '', $connect); + $url = generer_objet_url($id_objet, $objet, '', '', null, '', $connect); return "<a href='$url' class='$objet'>" . couper($titre, $longueur) . '</a>'; } diff --git a/ecrire/inc/lien.php b/ecrire/inc/lien.php index cada318cd4..99d33ee426 100644 --- a/ecrire/inc/lien.php +++ b/ecrire/inc/lien.php @@ -163,14 +163,14 @@ function traiter_lien_implicite($ref, $texte = '', $pour = 'url', string $connec $url = $f($texte, $id, $type, $args, $ancre, $connect); } if (!$url) { - $url = generer_objet_url($id, $type, $args, $ancre, $connect ?: null); + $url = generer_objet_url($id, $type, $args, $ancre, null, '', $connect); } if (!$url) { return false; } if (is_array($url)) { [$type, $id] = array_pad($url, 2, null); - $url = generer_objet_url($id, $type, $args, $ancre, $connect ?: null); + $url = generer_objet_url($id, $type, $args, $ancre, null, '', $connect); } if ($pour === 'url') { return $url; diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 58073eb28e..28249c8256 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -1837,17 +1837,19 @@ function charger_fonction_url(string $quoi, string $type = '') { * query_string a placer apres cle=$id&.... * @param string $ancre * ancre a mettre a la fin de l'URL a produire - * @param bool|string $public + * @param ?bool $public * produire l'URL publique ou privee (par defaut: selon espace) * si string : serveur de base de donnee (nom du connect) * @param string $type * fichier dans le repertoire ecrire/urls determinant l'apparence - * @return string|array + * @param string $connect + * fichier dans le repertoire ecrire/urls determinant l'apparence + * @return string * url codee ou fonction de decodage * 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($id = '', $entite = '', $args = '', $ancre = '', $public = null, $type = null) { +function generer_objet_url(int $id, string $entite, string $args = '', string $ancre = '', ?bool $public = null, string $type = '', string $connect = ''): string { if ($public === null) { $public = !test_espace_prive(); } @@ -1860,7 +1862,7 @@ function generer_objet_url($id = '', $entite = '', $args = '', $ancre = '', $pub if (!function_exists('generer_objet_url_ecrire')) { include_spip('inc/urls'); } - $res = generer_objet_url_ecrire($entite, $id, $args, $ancre, false); + $res = generer_objet_url_ecrire($entite, $id, $args, $ancre, false, $connect); } else { $f = charger_fonction_url('objet', $type ?? ''); @@ -1872,21 +1874,20 @@ function generer_objet_url($id = '', $entite = '', $args = '', $ancre = '', $pub // mais d'abord il faut tester le cas des urls sur une // base distante - if ( - is_string($public) + if ($connect and $g = charger_fonction('connect', 'urls', true) ) { $f = $g; } - $res = $f(intval($id), $entite, $args ?: '', $ancre ?: '', $public); + $res = $f(intval($id), $entite, $args ?: '', $ancre ?: '', $connect); } if ($res) { return $res; } // On a ete gentil mais la .... - spip_log("generer_objet_url: entite $entite ($f) inconnue $type $public"); + spip_log("generer_objet_url: entite $entite ($f) inconnue $type $public $connect", _LOG_ERREUR); return ''; } @@ -1896,7 +1897,10 @@ function generer_objet_url($id = '', $entite = '', $args = '', $ancre = '', $pub * @see generer_objet_url */ function generer_url_entite($id = '', $entite = '', $args = '', $ancre = '', $public = null, $type = null){ - return generer_objet_url($id, $entite, $args, $ancre, $public, $type); + if ($public and is_string($public)) { + return generer_objet_url($id, $entite, $args, $ancre, true, $type ?? '', $public); + } + return generer_objet_url($id, $entite, $args, $ancre, $public, $type ?? ''); } /** @@ -1977,7 +1981,7 @@ function generer_objet_url_absolue($id = '', $entite = '', $args = '', $ancre = if (!$connect) { $connect = true; } - $h = generer_objet_url($id, $entite, $args, $ancre, $connect); + $h = generer_objet_url($id, $entite, $args, $ancre, null, '', $connect); if (!preg_match(',^\w+:,', $h)) { include_spip('inc/filtres_mini'); $h = url_absolue($h); diff --git a/ecrire/public/quete.php b/ecrire/public/quete.php index 4423633ebe..ae54c81c3c 100644 --- a/ecrire/public/quete.php +++ b/ecrire/public/quete.php @@ -597,7 +597,7 @@ function vignette_logo_document($row, string $connect = '') { return ''; } - return generer_objet_url($row['id_document'], 'document', '', '', $connect); + return generer_objet_url($row['id_document'], 'document', '', '', null, '', $connect); } /** -- GitLab