diff --git a/ecrire/action/redirect.php b/ecrire/action/redirect.php index 289d04bcd43c0539173941bf875026da690b5b9d..2c5f6f98c48e47e5ef5905892d92b811542e214f 100644 --- a/ecrire/action/redirect.php +++ b/ecrire/action/redirect.php @@ -20,38 +20,40 @@ charger_generer_url(); // http://doc.spip.org/@action_redirect_dist function action_redirect_dist() { - global $id_article, $id_auteur, $id_breve, $id_forum, $id_mot, $id_rubrique, $id_site, $id_syndic, $var_mode; + global $var_mode, $redirect; - - if ($id_article = intval($id_article)) { - $url = generer_url_article($id_article); + if ($id_article = intval(_request('id_article'))) { + $redirect = generer_url_article($id_article,'',_request('ancre')); } - else if ($id_breve = intval($id_breve)) { - $url = generer_url_breve($id_breve); + else if ($id_breve = intval(_request('id_breve'))) { + $redirect = generer_url_breve($id_breve,'',_request('ancre')); } - else if ($id_forum = intval($id_forum)) { - $url = generer_url_forum($id_forum); + else if ($id_forum = intval(_request('id_forum'))) { + $redirect = generer_url_forum($id_forum,'',_request('ancre')); } - else if ($id_rubrique = intval($id_rubrique)) { - $url = generer_url_rubrique($id_rubrique); + else if ($id_rubrique = intval(_request('id_rubrique'))) { + $redirect = generer_url_rubrique($id_rubrique,'',_request('ancre')); } - else if ($id_mot = intval($id_mot)) { - $url = generer_url_mot($id_mot); + else if ($id_mot = intval(_request('id_mot'))) { + $redirect = generer_url_mot($id_mot,'',_request('ancre')); } - else if ($id_auteur = intval($id_auteur)) { - $url = generer_url_auteur($id_auteur); + else if ($id_auteur = intval(_request('id_auteur'))) { + $redirect = generer_url_auteur($id_auteur,'',_request('ancre')); } - else if ($id_syndic = intval($id_syndic) OR $id_syndic = intval($id_site)) { - $url = generer_url_site($id_syndic); + else if ($id_syndic = intval(_request('id_syndic')) OR $id_syndic = intval(_request('id_site'))) { + $redirect = generer_url_site($id_syndic,'',_request('ancre')); } else { - $url = _DIR_RESTREINT_ABS; -} - // Ne pas masquer cette eventuelle erreur (aide a detecter des lignes vides // dans inc-urls ou mes_fonctions/mes_options) - header("Location: " . (!$var_mode ? $url : ($url . (strpos($url,'?') ? '&' : '?') ."var_mode=" . $var_mode))); + $redirect = _DIR_RESTREINT_ABS; +} + if ($var_mode) { + $var_mode = (strpos($redirect,'?') ? '&' : '?') ."var_mode=" + . $var_mode; + $redirect = strpos($redirect,'#') + ? str_replace('#', "$var_mode#", $redirect) + : "$redirect$var_mode"; + } } - - ?> diff --git a/ecrire/balise/formulaire_admin.php b/ecrire/balise/formulaire_admin.php index c476096b4cdfb11abae4fa1c11252fa1d92f8eca..22caea822445ee307e41cb016089b263f0ed8705 100644 --- a/ecrire/balise/formulaire_admin.php +++ b/ecrire/balise/formulaire_admin.php @@ -185,7 +185,7 @@ function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') { $env['id_'.$id] = ${'id_'.$id}; $g = 'generer_url_ecrire_'.$obj; $env['voir_'.$obj] = str_replace('&', '&', - $g(${'id_'.$id}, 'prop')); + $g(${'id_'.$id}, '','', 'prop')); } } diff --git a/ecrire/inc/agenda.php b/ecrire/inc/agenda.php index 0aa65521f53fb58feada31613683aeb6e21f6399..d166721e88c5387e6453ab07c275207582ceb5fa 100644 --- a/ecrire/inc/agenda.php +++ b/ecrire/inc/agenda.php @@ -1399,10 +1399,10 @@ function sql_calendrier_interval_articles($avant, $apres, &$evenements) { if (autoriser('voir','article',$id)) $evenements[$amj][]= array( - 'CATEGORIES' => calendrier_categories('spip_articles', $id, 'id_article'), - 'DESCRIPTION' => $row['descriptif'] ? $row['descriptif'] : $langues[$row['lang']], + 'CATEGORIES' => calendrier_categories('spip_articles', $id, 'id_article'), + 'DESCRIPTION' => $row['descriptif'] ? $row['descriptif'] : $langues[$row['lang']], 'SUMMARY' => $row['titre'], - 'URL' => generer_url_article($id, 'prop')); + 'URL' => generer_url_article($id, '','','prop')); } } @@ -1416,10 +1416,10 @@ function sql_calendrier_interval_rubriques($avant, $apres, &$evenements) { if (autoriser('voir','rubrique',$id)) $evenements[$amj][]= array( - 'CATEGORIES' => calendrier_categories('spip_rubriques', $id, 'id_rubrique'), + 'CATEGORIES' => calendrier_categories('spip_rubriques', $id, 'id_rubrique'), 'DESCRIPTION' => $row['descriptif'], 'SUMMARY' => $row['titre'], - 'URL' => generer_url_rubrique($id, 'prop')); + 'URL' => generer_url_rubrique($id, '','', 'prop')); } } @@ -1433,7 +1433,7 @@ function sql_calendrier_interval_breves($avant, $apres, &$evenements) { if (autoriser('voir','breve',$id)) $evenements[$amj][]= array( - 'URL' => generer_url_breve($id, 'prop'), + 'URL' => generer_url_breve($id, '','', 'prop'), 'CATEGORIES' => calendrier_categories('spip_breves', $ir, 'id_breve'), 'SUMMARY' => $row['titre']); } diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php index 8784359761841d688eb6bf17f60514a8d7f4c4a8..cf74e08861d7ae777c0ee6ea2828d03c2eb60f68 100644 --- a/ecrire/inc/documents.php +++ b/ecrire/inc/documents.php @@ -39,23 +39,18 @@ function get_spip_doc($fichier) { } // http://doc.spip.org/@generer_url_document_dist -function generer_url_document_dist($id_document) { +function generer_url_document_dist($id_document, $args='', $ancre='') { if (intval($id_document) <= 0) return ''; $row = spip_fetch_array(spip_query("SELECT fichier,distant FROM spip_documents WHERE id_document="._q($id_document))); - if ($row) { - - // Cette variable de configuration peut etre posee par un plugin - // par exemple acces_restreint - if ($GLOBALS['meta']["creer_htaccess"] == 'oui' - AND $row['distant'] != 'oui') - return parametre_url( - generer_url_action('acceder_document', "arg=$id_document"), - 'file', $row['fichier'], '&'); - else - return get_spip_doc($row['fichier']); - } - return ''; + if (!$row) return ''; + // Cette variable de configuration peut etre posee par un plugin + // par exemple acces_restreint + if ($GLOBALS['meta']["creer_htaccess"] == 'oui' + AND $row['distant'] != 'oui') { + $args .= ($args ? "&" : '') . "arg=$id_document&file=" . $row['fichier'] . ($ancre ? "&ancre=$ancre" : ''); + return generer_url_action('acceder_document', $args); + } else return get_spip_doc($row['fichier']); } // diff --git a/ecrire/inc/forum.php b/ecrire/inc/forum.php index d66aa2cd41267c27cff54a965bd720b31dad105d..55bc4c975f583bb379df9310c48b22ea2e8b858c 100644 --- a/ecrire/inc/forum.php +++ b/ecrire/inc/forum.php @@ -257,23 +257,22 @@ function racine_forum($id_forum){ } // http://doc.spip.org/@generer_url_forum_dist -function generer_url_forum_dist($id_forum, $show_thread=false) { +function generer_url_forum_dist($id_forum, $args='', $ancre='') { if (!$id_forum) return ''; list($type, $id, $id_thread) = racine_forum($id_forum); - if ($id_thread>0 AND $show_thread) - $id_forum = $id_thread; + if (!$ancre) $ancre = "forum$id_forum"; switch($type) { case 'article': - return generer_url_article($id)."#forum$id_forum"; + return generer_url_article($id, $args, $ancre); break; case 'breve': - return generer_url_breve($id)."#forum$id_forum"; + return generer_url_breve($id, $args, $ancre); break; case 'rubrique': - return generer_url_rubrique($id)."#forum$id_forum"; + return generer_url_rubrique($id, $args, $ancre); break; case 'site': - return generer_url_site($id)."#forum$id_forum"; + return generer_url_site($id, $args, $ancre); break; default: return ''; diff --git a/ecrire/inc/notifications.php b/ecrire/inc/notifications.php index 3d471d837b234ba4431621a59ba1751dd6a44060..dbf34d1c988a7f008274a76f254c108007e97c32 100644 --- a/ecrire/inc/notifications.php +++ b/ecrire/inc/notifications.php @@ -88,7 +88,7 @@ function notifier_publication_article($id_article) { // URL de l'article charger_generer_url(); - $url = url_absolue(generer_url_article($id_article, true)); + $url = url_absolue(generer_url_article($id_article, '','', 'publie')); $titre = nettoyer_titre_email($row['titre']); diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php index 01ae4bb8a75fdaac3c4e9803f40bbbdce22ab258..9f16bc08441ecc1e836d4cde9a0cf991608c786c 100644 --- a/ecrire/inc/texte.php +++ b/ecrire/inc/texte.php @@ -16,7 +16,6 @@ include_spip('inc/filtres'); include_spip('inc/charsets'); include_spip('inc/lang'); - // // Gerer les variables de personnalisation, qui peuvent provenir // des fichiers d'appel, en verifiant qu'elles n'ont pas ete passees @@ -514,13 +513,13 @@ function typo($letexte, $echapper=true) { return $letexte; } -// traitement des raccourcis issus de [TITRE->RACCOURCInnn] et connexes +// analyse des raccourcis issus de [TITRE->RACCOURCInnn] et connexes -define('_RACCOURCI_URL', ',^(\S*?)\s*(\d+)(\?.*?)?(#[^\s]*)?$,S'); +define('_RACCOURCI_URL', ',^\s*(\w*?)\s*(\d+)(\?(.*?))?(#([^\s]*))?\s*$,S'); // http://doc.spip.org/@typer_raccourci function typer_raccourci ($lien) { - if (!preg_match(_RACCOURCI_URL, trim($lien), $match)) return false; + if (!preg_match(_RACCOURCI_URL, $lien, $match)) return array(); $f = $match[1]; // valeur par defaut et alias historiques if (!$f) $f = 'article'; @@ -539,37 +538,28 @@ function typer_raccourci ($lien) { // associe a une fonction generer_url_raccourci() // // Valeur retournee selon le parametre $pour: -// 'tout' : <a href="L">T</a> +// 'tout' : tableau [U,C,T,L] (vise <a href="U" class='C' hreflang='L'>T</a>) // 'titre': seulement T ci-dessus (i.e. le TITRE ci-dessus ou dans table SQL) -// 'url': seulement L (i.e. generer_url_RACCOURCI) +// 'url': seulement U (i.e. generer_url_RACCOURCI) // http://doc.spip.org/@calculer_url function calculer_url ($lien, $texte='', $pour='url') { - $lien = vider_url($lien); # supprimer 'http://' ou 'mailto:' + $lien = vider_url($lien); # 'http://' ou 'mailto:' seuls == "" if ($match = typer_raccourci ($lien)) { - @list($f,$objet,$id,$params,$ancre) = $match; - // chercher la fonction nommee generer_url_$raccourci - // ou calculer_url_raccourci si on n'a besoin que du lien - $f=(($pour == 'url') ? 'generer' : 'calculer') . '_url_' . $f; + @list($f,,$id,,$param,,$ancre) = $match; charger_generer_url(); - if (function_exists($f) OR function_exists($f .= '_dist')) { - if ($pour == 'url') { - $url = $f($id); - if ($params) - $url .= (strstr($url, '?') ? '&' : '?') - . substr($params,1); - return $url . $ancre; - } - - $res = $f($id, $texte, $ancre); - if ($pour == 'titre') + $g = 'generer_url_' . $f; + if (function_exists($g) OR function_exists($g .= '_dist')) { + $res = $g($id, $param, $ancre); + if ($pour == 'url') return $res; + $g = 'calculer_url_' . $f; + if (function_exists($g) OR function_exists($g .= '_dist')) { + if ($pour == 'tout') + return $g($id, $texte, $res); + $res = $g($id, $texte, $res); return $res[2]; - if ($params) - $res[0] .= (strstr($res[0], '?') ? '&' : '?') - . substr($params,1); - $res[0] .= $ancre; - return $res; - } + } + } else spip_log("raccourci indefini $f"); } $lien = ltrim($lien); @@ -606,8 +596,7 @@ function calculer_url ($lien, $texte='', $pour='url') { } // http://doc.spip.org/@calculer_url_article_dist -function calculer_url_article_dist($id, $texte='') { - $lien = generer_url_article($id); +function calculer_url_article_dist($id, $texte, $lien) { $s = spip_query("SELECT titre,lang FROM spip_articles WHERE id_article=$id"); $row = spip_fetch_array($s); if (!trim($texte)) @@ -618,60 +607,58 @@ function calculer_url_article_dist($id, $texte='') { } // http://doc.spip.org/@calculer_url_rubrique_dist -function calculer_url_rubrique_dist($id, $texte='') +function calculer_url_rubrique_dist($id, $texte, $lien) { - $lien = generer_url_rubrique($id); $s = spip_query("SELECT titre,lang FROM spip_rubriques WHERE id_rubrique=$id"); $row = spip_fetch_array($s); - if (!trim($texte)) + if (!trim($texte)) { $texte = supprimer_numero($row['titre']); - if (!trim($texte)) - $texte = $id; + if (!trim($texte)) + $texte = $id; + } return array($lien, 'spip_in', $texte, $row['lang']); } -// http://doc.spip.org/@calculer_url_mot_dist -function calculer_url_mot_dist($id, $texte='') -{ - $lien = generer_url_mot($id); - $s = spip_query("SELECT titre FROM spip_mots WHERE id_mot=$id"); - $row = spip_fetch_array($s); - if (!trim($texte)) - $texte = supprimer_numero($row['titre']); - if (!trim($texte)) - $texte = $id; - return array($lien, 'spip_in', $texte); -} - // http://doc.spip.org/@calculer_url_breve_dist -function calculer_url_breve_dist($id, $texte='') + function calculer_url_breve_dist($id, $texte, $lien) { - $lien = generer_url_breve($id); $s = spip_query("SELECT titre,lang FROM spip_breves WHERE id_breve=$id"); $row = spip_fetch_array($s); - if (!trim($texte)) + if (!trim($texte)) { $texte = supprimer_numero($row['titre']); - if (!trim($texte)) - $texte = $id; + if (!trim($texte)) + $texte = $id; + } return array($lien, 'spip_in', $texte, $row['lang']); } // http://doc.spip.org/@calculer_url_auteur_dist -function calculer_url_auteur_dist($id, $texte='') + function calculer_url_auteur_dist($id, $texte, $lien) { - $lien = generer_url_auteur($id); if ($texte=='') { $s = spip_query("SELECT nom FROM spip_auteurs WHERE id_auteur=$id"); - $row = spip_fetch_array($s); + $row = spip_fetch_array($s); $texte = $row['nom']; } return array($lien, 'spip_in', $texte); # pas de hreflang } +// http://doc.spip.org/@calculer_url_mot_dist +function calculer_url_mot_dist($id, $texte, $lien) +{ + if (!trim($texte)) { + $s = spip_query("SELECT titre FROM spip_mots WHERE id_mot=$id"); + $row = spip_fetch_array($s); + $texte = supprimer_numero($row['titre']); + if (!trim($texte)) + $texte = $id; + } + return array($lien, 'spip_in', $texte); +} + // http://doc.spip.org/@calculer_url_document_dist -function calculer_url_document_dist($id, $texte='') + function calculer_url_document_dist($id, $texte, $lien) { - $lien = generer_url_document($id); if ($texte=='') { $s = spip_query("SELECT titre,fichier FROM spip_documents WHERE id_document=$id"); $row = spip_fetch_array($s); @@ -685,7 +672,7 @@ function calculer_url_document_dist($id, $texte='') } // http://doc.spip.org/@calculer_url_site_dist -function calculer_url_site_dist($id, $texte='') +function calculer_url_site_dist($id, $texte, $lien) { # attention dans le cas des sites le lien pointe non pas sur # la page locale du site, mais directement sur le site lui-meme @@ -702,9 +689,8 @@ function calculer_url_site_dist($id, $texte='') } // http://doc.spip.org/@calculer_url_forum_dist -function calculer_url_forum_dist($id, $texte='') +function calculer_url_forum_dist($id, $texte, $lien) { - $lien = generer_url_forum($id); if (!trim($texte)) { $s = spip_query("SELECT titre FROM spip_forum WHERE id_forum=$id AND statut='publie'"); $row = spip_fetch_array($s); @@ -715,7 +701,6 @@ function calculer_url_forum_dist($id, $texte='') return array($lien, 'spip_in', $texte); # pas de hreflang } - // // Tableaux // diff --git a/ecrire/inc/urls.php b/ecrire/inc/urls.php index 5f819339f587f0683a0770f951869df7bf0f9911..a98f46a37279ea1f7073dd876ff5f8c3e0a92246 100644 --- a/ecrire/inc/urls.php +++ b/ecrire/inc/urls.php @@ -16,69 +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_article, $statut='') { - $args = "id_article=" . intval($id_article); - if (!$statut) - $statut = spip_fetch_array(spip_query("SELECT statut FROM spip_articles WHERE $args")); - if ($statut['statut'] == 'publie') - return generer_url_action('redirect', $args); - else return generer_url_ecrire('articles', $args); +function generer_url_ecrire_article($id, $suite='', $ancre='', $statut='') { + $a = "id_article=" . intval($id); + if (!$statut) { + $statut = spip_fetch_array(spip_query("SELECT statut FROM spip_articles WHERE $a"), SPIP_NUM); + $statut = $statut[0]; + } + if ($suite) $a .= "&$suite"; + if ($statut == 'publie') { + $a .= "&ancre=" . $ancre; + return generer_url_action('redirect', $a); + } else return generer_url_ecrire('articles', $a) . ($ancre ? "#$ancre" : ''); } // http://doc.spip.org/@generer_url_ecrire_rubrique -function generer_url_ecrire_rubrique($id_rubrique, $statut='') { - $args = "id_rubrique=" . intval($id_rubrique); - if (!$statut) - $statut = spip_fetch_array(spip_query("SELECT statut FROM spip_rubriques WHERE $args")); - if ($statut['statut'] == 'publie') - return generer_url_action('redirect', $args); - else return generer_url_ecrire('naviguer',$args); +function generer_url_ecrire_rubrique($id, $suite='', $ancre='', $statut='') { + $a = "id_rubrique=" . intval($id); + if (!$statut) { + $statut = spip_fetch_array(spip_query("SELECT statut FROM spip_rubriques WHERE $a"), SPIP_NUM); + $statut = $statut[0]; + } + if ($suite) $a .= "&$suite"; + if ($statut == 'publie') { + $a .= "&ancre=" . $ancre; + return generer_url_action('redirect', $a); + } else return generer_url_ecrire('naviguer',$a) . ($ancre ? "#$ancre" : ''); } // http://doc.spip.org/@generer_url_ecrire_breve -function generer_url_ecrire_breve($id_breve, $statut='') { - $args = "id_breve=" . intval($id_breve); - if (!$statut) - $statut = spip_fetch_array(spip_query("SELECT statut FROM spip_breves WHERE $args")); - if ($statut['statut'] == 'publie') - return generer_url_action('redirect', $args); - else return generer_url_ecrire('breves_voir',$args); +function generer_url_ecrire_breve($id, $suite='', $ancre='', $statut='') { + $a = "id_breve=" . intval($id); + if (!$statut) { + $statut = spip_fetch_array(spip_query("SELECT statut FROM spip_breves WHERE $a"), SPIP_NUM); + $statut = $statut[0]; + } + if ($suite) $a .= "&$suite"; + if ($statut == 'publie') { + $a .= "&ancre=" . $ancre; + return generer_url_action('redirect', $a); + } else return generer_url_ecrire('breves_voir',$a) . ($ancre ? "#$ancre" : ''); } // http://doc.spip.org/@generer_url_ecrire_mot -function generer_url_ecrire_mot($id_mot, $statut='') { - $args = "id_mot=" . intval($id_mot); - if (!$statut) - return generer_url_action('redirect', $args); - else return generer_url_ecrire('mots_edit',$args); +function generer_url_ecrire_mot($id, $suite='', $ancre='', $statut='') { + $a = "id_mot=" . intval($id); + if ($suite) $a .= "&$suite"; + if (!$statut) { + $a .= "&ancre=" . $ancre; + return generer_url_action('redirect', $a); + } else return generer_url_ecrire('mots_edit',$a) . ($ancre ? "#$ancre" : ''); } // http://doc.spip.org/@generer_url_ecrire_site -function generer_url_ecrire_site($id_syndic, $statut='') { - $args = "id_syndic=" . intval($id_syndic); - if (!$statut) - return generer_url_action('redirect', $args); - else return generer_url_ecrire('sites',$args); +function generer_url_ecrire_site($id, $suite='', $ancre='', $statut='') { + $a = "id_syndic=" . intval($id); + if ($suite) $a .= "&$suite"; + if (!$statut) { + $a .= "&ancre=" . $ancre; + return generer_url_action('redirect', $a); + } else return generer_url_ecrire('sites',$a) . ($ancre ? "#$ancre" : ''); } // http://doc.spip.org/@generer_url_ecrire_auteur -function generer_url_ecrire_auteur($id_auteur, $statut='') { - $args = "id_auteur=" . intval($id_auteur); - if (!$statut) - return generer_url_action('redirect', $args); - else - return generer_url_ecrire('auteur_infos',$args); +function generer_url_ecrire_auteur($id, $suite='', $ancre='', $statut='') { + $a = "id_auteur=" . intval($id); + if ($suite) $a .= "&$suite"; + if (!$statut) { + $a .= "&ancre=" . $ancre; + return generer_url_action('redirect', $a); + } else return generer_url_ecrire('auteur_infos',$a) . ($ancre ? "#$ancre" : ''); } // http://doc.spip.org/@generer_url_ecrire_forum -function generer_url_ecrire_forum($id_forum, $statut='') { - return generer_url_action('redirect', "id_forum=$id_forum"); +function generer_url_ecrire_forum($id, $suite='', $ancre='', $statut='') { + $a = "id_forum=" . intval($id); + if ($suite) $a .= "&$suite"; + $a .= "&ancre=" . $ancre; + return generer_url_action('redirect', $a); } // http://doc.spip.org/@generer_url_ecrire_document -function generer_url_ecrire_document($id_document, $statut='') { +function generer_url_ecrire_document($id, $suite='', $ancre='', $statut='') { include_spip('inc/documents'); - return generer_url_document_dist($id_document); + return generer_url_document_dist($id); } // http://doc.spip.org/@generer_url_ecrire_statistiques @@ -93,43 +113,43 @@ if (!_DIR_RESTREINT) { if (!function_exists('generer_url_article')) { // http://doc.spip.org/@generer_url_article - function generer_url_article($id, $stat='') - { return generer_url_ecrire_article($id, $stat);} + function generer_url_article($id, $args='', $ancre='', $stat='') + { return generer_url_ecrire_article($id, $args, $ancre, $stat);} } if (!function_exists('generer_url_rubrique')) { // http://doc.spip.org/@generer_url_rubrique - function generer_url_rubrique($id, $stat='') - { return generer_url_ecrire_rubrique($id, $stat);} + function generer_url_rubrique($id, $args='', $ancre='', $stat='') + { return generer_url_ecrire_rubrique($id, $args, $ancre, $stat);} } if (!function_exists('generer_url_breve')) { // http://doc.spip.org/@generer_url_breve - function generer_url_breve($id, $stat='') - { return generer_url_ecrire_breve($id, $stat);} + function generer_url_breve($id, $args='', $ancre='', $stat='') + { return generer_url_ecrire_breve($id, $args, $ancre, $stat);} } if (!function_exists('generer_url_mot')) { // http://doc.spip.org/@generer_url_mot - function generer_url_mot($id, $stat='') - { return generer_url_ecrire_mot($id, $stat);} + function generer_url_mot($id, $args='', $ancre='', $stat='') + { return generer_url_ecrire_mot($id, $args, $ancre, $stat);} } if (!function_exists('generer_url_site')) { // http://doc.spip.org/@generer_url_site - function generer_url_site($id, $stat='') - { return generer_url_ecrire_site($id, $stat);} + function generer_url_site($id, $args='', $ancre='', $stat='') + { return generer_url_ecrire_site($id, $args, $ancre, $stat);} } if (!function_exists('generer_url_auteur')) { // http://doc.spip.org/@generer_url_auteur - function generer_url_auteur($id, $stat='') - { return generer_url_ecrire_auteur($id, $stat);} + function generer_url_auteur($id, $args='', $ancre='', $stat='') + { return generer_url_ecrire_auteur($id, $args, $ancre, $stat);} } if (!function_exists('generer_url_forum')) { // http://doc.spip.org/@generer_url_forum - function generer_url_forum($id, $stat='') - { return generer_url_ecrire_forum($id, $stat);} + function generer_url_forum($id, $args='', $ancre='', $stat='') + { return generer_url_ecrire_forum($id, $args, $ancre, $stat);} } if (!function_exists('generer_url_document')) { // http://doc.spip.org/@generer_url_document - function generer_url_document($id, $stat='') - { return generer_url_ecrire_document($id, $stat);} + function generer_url_document($id, $args='', $ancre='', $stat='') + { return generer_url_ecrire_document($id, $args, $ancre, $stat);} } } ?> \ No newline at end of file diff --git a/ecrire/urls/html.php b/ecrire/urls/html.php index c6bd0cc9cbeb633c690a19583a0cb416686e4431..5358a161b2f7d8902c04639edfa57d868e2b47a8 100644 --- a/ecrire/urls/html.php +++ b/ecrire/urls/html.php @@ -37,39 +37,39 @@ if (!defined("_ECRIRE_INC_VERSION")) return; // securiser if (!function_exists('generer_url_article')) { // si la place n'est pas prise // http://doc.spip.org/@generer_url_article -function generer_url_article($id_article) { - return "article$id_article.html"; +function generer_url_article($id_article, $args='', $ancre='') { + return "article$id_article.html" . ($args ? "?$args" : '') . ($ancre ? "#$ancre" : ''); } // http://doc.spip.org/@generer_url_rubrique -function generer_url_rubrique($id_rubrique) { - return "rubrique$id_rubrique.html"; +function generer_url_rubrique($id_rubrique, $args='', $ancre='') { + return "rubrique$id_rubrique.html" . ($args ? "?$args" : '') . ($ancre ? "#$ancre" : ''); } // http://doc.spip.org/@generer_url_breve -function generer_url_breve($id_breve) { - return "breve$id_breve.html"; +function generer_url_breve($id_breve, $args='', $ancre='') { + return "breve$id_breve.html" . ($args ? "?$args" : '') .($ancre ? "#$ancre" : ''); } // http://doc.spip.org/@generer_url_mot -function generer_url_mot($id_mot) { - return "mot$id_mot.html"; +function generer_url_mot($id_mot, $args='', $ancre='') { + return "mot$id_mot.html" . ($args ? "?$args" : '') .($ancre ? "#$ancre" : ''); } // http://doc.spip.org/@generer_url_site -function generer_url_site($id_syndic) { - return "site$id_syndic.html"; +function generer_url_site($id_syndic, $args='', $ancre='') { + return "site$id_syndic.html" . ($args ? "?$args" : '') .($ancre ? "#$ancre" : ''); } // http://doc.spip.org/@generer_url_auteur -function generer_url_auteur($id_auteur) { - return "auteur$id_auteur.html"; +function generer_url_auteur($id_auteur, $args='', $ancre='') { + return "auteur$id_auteur.html" . ($args ? "?$args" : '') .($ancre ? "#$ancre" : ''); } // http://doc.spip.org/@generer_url_document -function generer_url_document($id_document) { +function generer_url_document($id_document, $args='', $ancre='') { include_spip('inc/documents'); - return generer_url_document_dist($id_document); + return generer_url_document_dist($id_document, $args, $ancre); } @@ -108,9 +108,9 @@ function recuperer_parametres_url($fond, $url) { // // http://doc.spip.org/@generer_url_forum -function generer_url_forum($id_forum, $show_thread=false) { +function generer_url_forum($id_forum, $args='', $ancre='') { include_spip('inc/forum'); - return generer_url_forum_dist($id_forum, $show_thread); + return generer_url_forum_dist($id_forum, $args, $ancre); } } ?> diff --git a/ecrire/urls/page.php b/ecrire/urls/page.php index bbb6147fedf2903ae76a77b83b717167c6d1ebb4..654bb7218c22ad5e89aa9ea804b4811f759d0ade 100644 --- a/ecrire/urls/page.php +++ b/ecrire/urls/page.php @@ -26,43 +26,45 @@ define ('_debut_urls_page', get_spip_script('./').'?'); // http://doc.spip.org/@composer_url_page -function composer_url_page($page,$id) { - return _debut_urls_page . $page . _separateur_urls_page - . $id . _terminaison_urls_page; +function composer_url_page($page,$id, $args='', $ancre='') { + $url = _debut_urls_page . $page . _separateur_urls_page + . $id . _terminaison_urls_page; + if ($args) $args = strpos($url,'?') ? "&args" : "?$args"; + return $url . $args . ($ancre ? "#$ancre" : ''); } // http://doc.spip.org/@generer_url_article -function generer_url_article($id_article) { - return composer_url_page('article', $id_article); +function generer_url_article($id_article, $args='', $ancre='') { + return composer_url_page('article', $id_article, $args, $ancre); } // http://doc.spip.org/@generer_url_rubrique -function generer_url_rubrique($id_rubrique) { - return composer_url_page('rubrique', $id_rubrique); +function generer_url_rubrique($id_rubrique, $args='', $ancre='') { + return composer_url_page('rubrique', $id_rubrique, $args, $ancre); } // http://doc.spip.org/@generer_url_breve -function generer_url_breve($id_breve) { - return composer_url_page('breve', $id_breve); +function generer_url_breve($id_breve, $args='', $ancre='') { + return composer_url_page('breve', $id_breve, $args, $ancre); } // http://doc.spip.org/@generer_url_mot -function generer_url_mot($id_mot) { - return composer_url_page('mot', $id_mot); +function generer_url_mot($id_mot, $args='', $ancre='') { + return composer_url_page('mot', $id_mot, $args, $ancre); } // http://doc.spip.org/@generer_url_site -function generer_url_site($id_syndic) { - return composer_url_page('site', $id_syndic); +function generer_url_site($id_syndic, $args='', $ancre='') { + return composer_url_page('site', $id_syndic, $args, $ancre); } // http://doc.spip.org/@generer_url_auteur -function generer_url_auteur($id_auteur) { - return composer_url_page('auteur', $id_auteur); +function generer_url_auteur($id_auteur, $args='', $ancre='') { + return composer_url_page('auteur', $id_auteur, $args, $ancre); } // http://doc.spip.org/@generer_url_document -function generer_url_document($id_document) { +function generer_url_document($id_document, $args='', $ancre='') { include_spip('inc/documents'); return generer_url_document_dist($id_document); } @@ -117,9 +119,9 @@ function recuperer_parametres_url(&$fond, $url) { // // http://doc.spip.org/@generer_url_forum -function generer_url_forum($id_forum, $show_thread=false) { +function generer_url_forum($id_forum, $args='', $ancre='') { include_spip('inc/forum'); - return generer_url_forum_dist($id_forum, $show_thread); + return generer_url_forum_dist($id_forum, $args, $ancre); } } ?> diff --git a/ecrire/urls/propres.php b/ecrire/urls/propres.php index 16a4324c1ef1d1724d1ddd41b4b9302481e98d81..18a9a3048fe042c8545a9b16b446ee65f0b0edd5 100644 --- a/ecrire/urls/propres.php +++ b/ecrire/urls/propres.php @@ -136,69 +136,82 @@ function _generer_url_propre($type, $id_objet) { } // http://doc.spip.org/@generer_url_article -function generer_url_article($id_article) { +function generer_url_article($id_article, $args='', $ancre='') { + spip_log("generer_url_article($id_article, $args='', $ancre"); $url = _generer_url_propre('article', $id_article); if ($url) - return _debut_urls_propres . $url . _terminaison_urls_propres; + $url = _debut_urls_propres . $url . _terminaison_urls_propres . ($args ? "?$args" : ''); else - return get_spip_script('./')."?page=article&id_article=$id_article"; + $url = get_spip_script('./')."?page=article&id_article=$id_article" . ($args ? "&$args" : ''); + if ($ancre) $url .= "#$ancre"; + return $url; } // http://doc.spip.org/@generer_url_rubrique -function generer_url_rubrique($id_rubrique) { +function generer_url_rubrique($id_rubrique, $args='', $ancre='') { $url = _generer_url_propre('rubrique', $id_rubrique); if ($url) - return _debut_urls_propres . '-'.$url.'-'._terminaison_urls_propres; + $url = _debut_urls_propres . '-'.$url.'-'._terminaison_urls_propres . ($args ? "?$args" : ''); else - return get_spip_script('./')."?page=rubrique&id_rubrique=$id_rubrique"; + $url = get_spip_script('./')."?page=rubrique&id_rubrique=$id_rubrique" . ($args ? "&$args" : ''); + if ($ancre) $url .= "#$ancre"; + return $url; } // http://doc.spip.org/@generer_url_breve -function generer_url_breve($id_breve) { +function generer_url_breve($id_breve, $args='', $ancre='') { $url = _generer_url_propre('breve', $id_breve); if ($url) - return _debut_urls_propres . '+'.$url.'+'._terminaison_urls_propres; + $url = _debut_urls_propres . '+'.$url.'+'._terminaison_urls_propres . ($args ? "?$args" : ''); else - return get_spip_script('./')."?page=breve&id_breve=$id_breve"; + $url = get_spip_script('./')."?page=breve&id_breve=$id_breve" . ($args ? "&$args" : ''); + if ($ancre) $url .= "#$ancre"; + return $url; } // http://doc.spip.org/@generer_url_forum -function generer_url_forum($id_forum, $show_thread=false) { +function generer_url_forum($id_forum, $args='', $ancre='') { include_spip('inc/forum'); - return generer_url_forum_dist($id_forum, $show_thread); + return generer_url_forum_dist($id_forum, $args, $ancre); } // http://doc.spip.org/@generer_url_mot -function generer_url_mot($id_mot) { +function generer_url_mot($id_mot, $args='', $ancre='') { $url = _generer_url_propre('mot', $id_mot); if ($url) - return _debut_urls_propres . '+-'.$url.'-+'._terminaison_urls_propres; + $url = _debut_urls_propres . '+-'.$url.'-+'._terminaison_urls_propres . ($args ? "?$args" : ''); else - return get_spip_script('./')."?page=mot&id_mot=$id_mot"; + $url = get_spip_script('./')."?page=mot&id_mot=$id_mot" . ($args ? "&$args" : ''); + if ($ancre) $url .= "#$ancre"; + return $url; } // http://doc.spip.org/@generer_url_auteur -function generer_url_auteur($id_auteur) { +function generer_url_auteur($id_auteur, $args='', $ancre='') { $url = _generer_url_propre('auteur', $id_auteur); if ($url) - return _debut_urls_propres . '_'.$url.'_'._terminaison_urls_propres; + $url = _debut_urls_propres . '_'.$url.'_'._terminaison_urls_propres . ($args ? "?$args" : ''); else - return get_spip_script('./')."?page=auteur&id_auteur=$id_auteur"; + $url = get_spip_script('./')."?page=auteur&id_auteur=$id_auteur" . ($args ? "&$args" : ''); + if ($ancre) $url .= "#$ancre"; + return $url; } // http://doc.spip.org/@generer_url_site -function generer_url_site($id_syndic) { +function generer_url_site($id_syndic, $args='', $ancre='') { $url = _generer_url_propre('site', $id_syndic); if ($url) - return _debut_urls_propres . '@'.$url.'@'._terminaison_urls_propres; + $url = _debut_urls_propres . '@'.$url.'@'._terminaison_urls_propres . ($args ? "?$args" : ''); else - return get_spip_script('./')."?page=site&id_syndic=$id_syndic"; + $url = get_spip_script('./')."?page=site&id_syndic=$id_syndic" . ($args ? "&$args" : ''); + if ($ancre) $url .= "#$ancre"; + return $url; } // http://doc.spip.org/@generer_url_document -function generer_url_document($id_document) { +function generer_url_document($id_document, $args='', $ancre='') { include_spip('inc/documents'); - return generer_url_document_dist($id_document); + return generer_url_document_dist($id_document, $args, $ancre); } // http://doc.spip.org/@recuperer_parametres_url