diff --git a/ecrire/balise/formulaire_admin.php b/ecrire/balise/formulaire_admin.php index 0a919ace44bb6466e5b854875c173b1ea2c01de2..fbc44311642110cdef9843e64c0faf2c9afd87b9 100644 --- a/ecrire/balise/formulaire_admin.php +++ b/ecrire/balise/formulaire_admin.php @@ -31,8 +31,8 @@ function balise_FORMULAIRE_ADMIN_stat($args, $filtres) { # Le debuger transmet donc ses donnees, et cette balise y retrouve son petit. function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') { - global $var_preview, $use_cache, $forcer_debug, $xhtml; + global $var_preview, $use_cache, $forcer_debug, $xhtml; global $id_article, $id_breve, $id_rubrique, $id_mot, $id_auteur, $id_syndic; static $dejafait = false; @@ -53,14 +53,13 @@ function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') { } } $dejafait = true; + include_spip('inc/urls'); // Ne pas afficher le bouton 'Modifier ce...' si l'objet n'existe pas foreach (array('article', 'breve', 'rubrique', 'mot', 'auteur', 'syndic') as $type) { $id_type = id_table_objet($type); if (!($$id_type = intval($$id_type) - AND $s = spip_query( - "SELECT $id_type FROM spip_".table_objet($type)." - WHERE $id_type=".$$id_type) + AND $s = spip_query("SELECT $id_type FROM spip_".table_objet($type)." WHERE $id_type=".$$id_type) AND spip_num_rows($s))) $$id_type=''; else { @@ -72,17 +71,13 @@ function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') { // Bouton statistiques if ($GLOBALS['meta']["activer_statistiques"] != "non" AND $id_article - AND !$var_preview - AND ($GLOBALS['auteur_session']['statut'] == '0minirezo')) { - if ($s = spip_query("SELECT id_article - FROM spip_articles WHERE statut='publie' - AND id_article = $id_article") - AND spip_fetch_array($s)) { - include_spip ('public/stats'); - $r = afficher_raccourci_stats($id_article); - $visites = $r['visites']; - $popularite = $r['popularite']; - $statistiques = generer_url_ecrire('statistiques_visites', "id_article=$id_article", true); + AND !$var_preview) { + $result = spip_query("SELECT visites, popularite FROM spip_articles WHERE id_article=$id_article AND statut='publie'"); + + if ($row = @spip_fetch_array($result)) { + $visites = intval($row['visites']); + $popularite = ceil($row['popularite']); + $statistiques = str_replace('&', '&', generer_url_ecrire_statistiques($id_article)); } } @@ -129,8 +124,7 @@ function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') { OR $objet_affiche == 'breve' OR $objet_affiche == 'rubrique' OR $objet_affiche == 'syndic') - if (spip_num_rows(spip_query( - "SELECT id_$objet_affiche FROM spip_".table_objet($objet_affiche)." + if (spip_num_rows(spip_query("SELECT id_$objet_affiche FROM spip_".table_objet($objet_affiche)." WHERE ".id_table_objet($objet_affiche)."=".$$id_type." AND ( (statut IN ('prop', 'prive')) @@ -147,19 +141,19 @@ function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') { 'id_breve' => $id_breve, 'id_mot' => $id_mot, 'id_syndic' => $id_syndic, - 'voir_article' => generer_url_ecrire('articles', "id_article=$id_article", true), - 'voir_breve' => generer_url_ecrire('breves_voir', "id_breve=$id_breve", true), - 'voir_rubrique' => generer_url_ecrire('naviguer', "id_rubrique=$id_rubrique", true), - 'voir_mot' => generer_url_ecrire('mots_edit', "id_mot=$id_mot", true), - 'voir_site' => generer_url_ecrire('sites', "id_syndic=$id_syndic", true), - 'voir_auteur' => generer_url_ecrire('auteurs_edit', "id_auteur=$id_auteur", true), + 'voir_article' => str_replace('&', '&', generer_url_ecrire_article($id_article, 'prop')), + 'voir_breve' => str_replace('&', '&', generer_url_ecrire_breve($id_breve, 'prop')), + 'voir_rubrique' => str_replace('&', '&', generer_url_ecrire_rubrique($id_rubrique, 'prop')), + 'voir_mot' => str_replace('&', '&', generer_url_ecrire_mot($id_mot, 'prop')), + 'voir_site' => str_replace('&', '&', generer_url_ecrire_site($id_syndic, 'prop')), + 'voir_auteur' => str_replace('&', '&', generer_url_ecrire_auteur($id_auteur, 'prop')), 'ecrire' => $ecrire, 'action' => self(), 'preview' => $preview?parametre_url(self(),'var_mode','preview','&'):'', 'debug' => $debug, 'popularite' => ceil($popularite), 'statistiques' => $statistiques, - 'visites' => intval($visites), + 'visites' => $visites, 'use_cache' => ($use_cache ? '' : ' *'), 'divclass' => $float, 'analyser' => $analyser, @@ -167,18 +161,4 @@ function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') { ) ); } - -// Un outil pour le bouton d'amin "statistiques" -function afficher_raccourci_stats($id_article) { - $query = "SELECT visites, popularite FROM spip_articles WHERE id_article=$id_article AND statut='publie'"; - $result = spip_query($query); - if ($row = @spip_fetch_array($result)) { - $visites = intval($row['visites']); - $popularite = ceil($row['popularite']); - - return array('visites' => $visites, 'popularite' => $popularite); - } -} - - ?> diff --git a/ecrire/inc/urls.php b/ecrire/inc/urls.php index 74aa85f77acff94670e0f2f22bea315f38cc0fba..fec0406fc5d04f925055d6f55e39e9e2402924bd 100644 --- a/ecrire/inc/urls.php +++ b/ecrire/inc/urls.php @@ -12,7 +12,10 @@ if (!defined("_ECRIRE_INC_VERSION")) return; -function generer_url_article($id_article, $statut='') { +// fonction produisant les URL d'acces en lecture ou en ecriture +// des items des tables SQL principales, selon le statut de publication + +function generer_url_ecrire_article($id_article, $statut='') { $args = "id_article=" . intval($id_article); if (!$statut) list($statut) = spip_fetch_array(spip_query("SELECT statut FROM spip_articles WHERE $args")); @@ -21,7 +24,7 @@ function generer_url_article($id_article, $statut='') { else return generer_url_ecrire('articles', $args); } -function generer_url_rubrique($id_rubrique, $statut='') { +function generer_url_ecrire_rubrique($id_rubrique, $statut='') { $args = "id_rubrique=" . intval($id_rubrique); if (!$statut) list($statut) = spip_fetch_array(spip_query("SELECT statut FROM spip_rubriques WHERE $args")); @@ -30,7 +33,7 @@ function generer_url_rubrique($id_rubrique, $statut='') { else return generer_url_ecrire('naviguer',$args); } -function generer_url_breve($id_breve, $statut='') { +function generer_url_ecrire_breve($id_breve, $statut='') { $args = "id_breve=" . intval($id_breve); if (!$statut) list($statut) = spip_fetch_array(spip_query("SELECT statut FROM spip_breves WHERE $args")); @@ -39,32 +42,32 @@ function generer_url_breve($id_breve, $statut='') { else return generer_url_ecrire('breves_voir',$args); } -function generer_url_mot($id_mot, $statut='') { +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_site($id_syndic, $statut='') { +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_auteur($id_auteur, $statut='') { +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('auteurs_edit',$args); } -function generer_url_forum($id_forum) { +function generer_url_ecrire_forum($id_forum) { return generer_url_action('redirect', "id_forum=$id_forum"); } -function generer_url_document($id_document) { +function generer_url_ecrire_document($id_document) { if (intval($id_document) <= 0) return ''; if ($row = @spip_fetch_array(spip_query("SELECT fichier,distant @@ -80,4 +83,22 @@ function generer_url_document($id_document) { } -?> +function generer_url_ecrire_statistiques($id_article) { + return generer_url_ecrire('statistiques_visites', "id_article=$id_article"); +} + +// en cas de chargement a partir de l'espace de redac, rabattre la production +// des URL publiques vers les URL privees en cas d'item non publies + +if (!function_exists('generer_url_article')) { + $generer_url_article = 'generer_url_ecrire_article'; + $generer_url_rubrique = 'generer_url_ecrire_rubrique'; + $generer_url_breve = 'generer_url_ecrire_breve'; + $generer_url_mot = 'generer_url_ecrire_mot'; + $generer_url_site = 'generer_url_ecrire_site'; + $generer_url_auteur = 'generer_url_ecrire_auteur'; + $generer_url_forum = 'generer_url_ecrire_forum'; + $generer_url_document = 'generer_url_ecrire_document'; + } + +?> \ No newline at end of file diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index bc9d16c285c531c069156b32867bc2efd5d7f252..fb5ec4a319718df934d9bf05356aeaf1873a4c8e 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -649,14 +649,13 @@ function autoriser_sans_cookie($nom) function charger_generer_url() { static $ok; - if ($ok++) return; # fichier deja charge - // espace prive if (!_DIR_RESTREINT) include_spip('inc/urls'); // espace public else { + if ($ok++) return; # fichier deja charge // fichier inc-urls ? (old style) if (@is_readable($f = _DIR_RACINE.'inc-urls.php3') OR @is_readable($f = _DIR_RACINE.'inc-urls.php')