From 7517b77864da407b5b96d2e8103ed5d55a09b489 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Fri, 19 Sep 2008 06:31:00 +0000 Subject: [PATCH] =?UTF-8?q?Appliquer=20la=20solution=20[12716]=C2=A0=C3=A0?= =?UTF-8?q?=20[12689].?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/inc/presentation.php | 6 +-- ecrire/inc/urls.php | 79 ++++++++++++++++++++----------------- ecrire/inc/utils.php | 8 ++++ 3 files changed, 52 insertions(+), 41 deletions(-) diff --git a/ecrire/inc/presentation.php b/ecrire/inc/presentation.php index 313791fcca..aa590524a1 100644 --- a/ecrire/inc/presentation.php +++ b/ecrire/inc/presentation.php @@ -1137,14 +1137,10 @@ function voir_en_ligne ($type, $id, $statut=false, $image='racine-24.gif', $af = else return ''; - $h = generer_url_entite($id, $type, "var_mode=$en_ligne", '', true); + $h = generer_url_entite_absolue($id, $type, "var_mode=$en_ligne", '', true); $h = str_replace('&', '&', $h); - // Forcer l'URL absolue si ce n'est fait. - if (!preg_match(',^\w+:,', $h)) - $h = url_absolue(_DIR_RACINE . $h); - return $inline ? icone_inline($message, $h, $image, "rien.gif", $GLOBALS['spip_lang_left']) : icone_horizontale($message, $h, $image, "rien.gif",$af); diff --git a/ecrire/inc/urls.php b/ecrire/inc/urls.php index e25405cc29..f3bacecb1d 100644 --- a/ecrire/inc/urls.php +++ b/ecrire/inc/urls.php @@ -16,82 +16,89 @@ if (!defined("_ECRIRE_INC_VERSION")) return; // des items des tables SQL principales, selon le statut de publication // http://doc.spip.org/@generer_url_ecrire_article -function generer_url_ecrire_article($id, $suite='', $ancre='', $statut='', $connect='') { +function generer_url_ecrire_article($id, $args='', $ancre='', $statut='', $connect='') { $a = "id_article=" . intval($id); if (!$statut) { $statut = sql_getfetsel('statut', 'spip_articles', $a,'','','','',$connect); } - if ($suite) $a .= "&$suite"; - if ($statut == 'publie') { - return url_absolue(suivre_lien(_DIR_RACINE, generer_url_entite($id, 'article', $suite, $ancre, true))); - } else return generer_url_ecrire('articles', $a) . ($ancre ? "#$ancre" : ''); + $h = ($statut == 'publie' OR $connect) + ? generer_url_entite_absolue($id, 'article', $args, $ancre, $connect) + : (generer_url_ecrire('articles', $a . ($args ? "&$args" : '')) + . ($ancre ? "#$ancre" : '')); + return $h; } // http://doc.spip.org/@generer_url_ecrire_rubrique -function generer_url_ecrire_rubrique($id, $suite='', $ancre='', $statut='', $connect='') { +function generer_url_ecrire_rubrique($id, $args='', $ancre='', $statut='', $connect='') { $a = "id_rubrique=" . intval($id); if (!$statut) { $statut = sql_getfetsel('statut', 'spip_rubriques', $a,'','','','',$connect); } - if ($suite) $a .= "&$suite"; - if ($statut == 'publie') { - return url_absolue(suivre_lien(_DIR_RACINE, generer_url_entite($id, 'rubrique', $suite, $ancre, true))); - } else return generer_url_ecrire('naviguer',$a) . ($ancre ? "#$ancre" : ''); + $h = ($statut == 'publie' OR $connect) + ? generer_url_entite_absolue($id, 'rubrique', $args, $ancre, $connect) + : (generer_url_ecrire('naviguer',$a . ($args ? "&$args" : '')) + . ($ancre ? "#$ancre" : '')); + return $h; } // http://doc.spip.org/@generer_url_ecrire_breve -function generer_url_ecrire_breve($id, $suite='', $ancre='', $statut='', $connect='') { +function generer_url_ecrire_breve($id, $args='', $ancre='', $statut='', $connect='') { $a = "id_breve=" . intval($id); if (!$statut) { $statut = sql_getfetsel('statut', 'spip_breves', $a,'','','','',$connect); } - if ($suite) $a .= "&$suite"; - if ($statut == 'publie') { - return url_absolue(suivre_lien(_DIR_RACINE, generer_url_entite($id, 'breve', $suite, $ancre, true))); - } else return generer_url_ecrire('breves_voir',$a) . ($ancre ? "#$ancre" : ''); + $h = ($statut == 'publie' OR $connect) + ? generer_url_entite_absolue($id, 'breve', $args, $ancre, $connect) + : (generer_url_ecrire('breves_voir',$a . ($args ? "&$args" : '')) + . ($ancre ? "#$ancre" : '')); + return $h; } // http://doc.spip.org/@generer_url_ecrire_mot -function generer_url_ecrire_mot($id, $suite='', $ancre='', $statut='', $connect='') { +function generer_url_ecrire_mot($id, $args='', $ancre='', $statut='', $connect='') { $a = "id_mot=" . intval($id); - if ($suite) $a .= "&$suite"; - if (!$statut) { - return url_absolue(suivre_lien(_DIR_RACINE, generer_url_entite($id, 'mot', $suite, $ancre, true))); - } else return generer_url_ecrire('mots_edit',$a) . ($ancre ? "#$ancre" : ''); + $h = (!$statut OR $connect) + ? generer_url_entite_absolue($id, 'mot', $args, $ancre, $connect) + : (generer_url_ecrire('mots_edit',$a . ($args ? "&$args" : '')) + . ($ancre ? "#$ancre" : '')); + return $h; } // http://doc.spip.org/@generer_url_ecrire_site -function generer_url_ecrire_site($id, $suite='', $ancre='', $statut='', $connect='') { +function generer_url_ecrire_site($id, $args='', $ancre='', $statut='', $connect='') { $a = "id_syndic=" . intval($id); - if ($suite) $a .= "&$suite"; - if (!$statut) { - return url_absolue(suivre_lien(_DIR_RACINE, generer_url_entite($id, 'site', $suite, $ancre, true))); - } else return generer_url_ecrire('sites',$a) . ($ancre ? "#$ancre" : ''); + $h = (!$statut OR $connect) + ? generer_url_entite_absolue($id, 'site', $args, $ancre, $connect) + : (generer_url_ecrire('sites',$a . ($args ? "&$args" : '')) + . ($ancre ? "#$ancre" : '')); + return $h; } // http://doc.spip.org/@generer_url_ecrire_auteur -function generer_url_ecrire_auteur($id, $suite='', $ancre='', $statut='', $connect='') { +function generer_url_ecrire_auteur($id, $args='', $ancre='', $statut='', $connect='') { $a = "id_auteur=" . intval($id); - if ($suite) $a .= "&$suite"; - if (!$statut) { - return url_absolue(suivre_lien(_DIR_RACINE, generer_url_entite($id, 'auteur', $suite, $ancre, true))); - } else return generer_url_ecrire('auteur_infos',$a) . ($ancre ? "#$ancre" : ''); + $h = (!$statut OR $connect) + ? generer_url_entite_absolue($id, 'auteur', $args, $ancre, $connect) + : (generer_url_ecrire('auteur_infos',$a . ($args ? "&$args" : '')) + . ($ancre ? "#$ancre" : '')); + return $h; } // http://doc.spip.org/@generer_url_ecrire_forum -function generer_url_ecrire_forum($id, $suite='', $ancre='', $statut='', $connect='') { +function generer_url_ecrire_forum($id, $args='', $ancre='', $statut='', $connect='') { $a = "id_forum=" . intval($id); if (!$statut) { $statut = sql_getfetsel('statut', 'spip_forum', $a,'','','','',$connect); } - if ($suite) $a .= "&$suite"; - if ($statut == 'publie') { - return url_absolue(suivre_lien(_DIR_RACINE, generer_url_entite($id, 'forum', $suite, $ancre, true))); - } else return generer_url_ecrire('controle_forum', "debut_id_forum=$id"); + $h = ($statut == 'publie' OR $connect) + ? generer_url_entite_absolue($id, 'forum', $args, $ancre, $connect) + : (generer_url_ecrire('controle_forum', "debut_id_forum=$id" . ($args ? "&$args" : '')) + . ($ancre ? "#$ancre" : '')); + return $h; } // http://doc.spip.org/@generer_url_ecrire_document -function generer_url_ecrire_document($id, $suite='', $ancre='', $statut='', $connect='') { +function generer_url_ecrire_document($id, $args='', $ancre='', $statut='', $connect='') { include_spip('inc/documents'); return generer_url_document_dist($id); } diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 0a254f5770..30df63fe93 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -768,6 +768,14 @@ function generer_url_entite($id='', $entite='', $args='', $ancre='', $public=NUL return ''; } +function generer_url_entite_absolue($id='', $entite='', $args='', $ancre='', $connect=NULL) +{ + if (!$connect) $connect = true; + $h = generer_url_entite($id, $entite, $args, $ancre, $connect); + if (!preg_match(',^\w+:,', $h)) $h = url_absolue(_DIR_RACINE . $h); + return $h; +} + // Sur certains serveurs, la valeur 'Off' tient lieu de false dans certaines // variables d'environnement comme $_SERVER[HTTPS] ou ini_get(register_globals) // http://doc.spip.org/@test_valeur_serveur -- GitLab