diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php index a25da17477dd7dff2e0dc5919d6cf57d71c3995d..3e6e8d31a0c8c4ecd7ff3123f97b3f1d3588f12c 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 cada318cd4946b95db6f6a8d541efd5e230b2a3f..99d33ee4261e045eb608d63623323e7e11e45aa1 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 58073eb28ecb4d772f6d8bcc835057e1ee4ec225..28249c82566349a6a780e23590cf584dba807a97 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 4423633ebe554c12253dcbb2baf0b10bffaf5839..ae54c81c3c64f0c252d740e0a8bfceff37bb545a 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); } /**