[SPIP] ~2.1.12 -->2.1.25
[velocampus/web/www.git] / www / ecrire / exec / auteurs.php
index 99c82cc..663ee84 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -56,9 +56,14 @@ function exec_auteurs_args($statut, $tri, $debut, $recherche=NULL, $trouve='', $
                  lettres_d_auteurs(requete_auteurs($tri, $statut, $recherche), $debut, MAX_AUTEURS_PAR_PAGE, $tri);
 
 
-               $recherche = auteurs_tranches(afficher_n_auteurs($auteurs), $debut, $lettre, $tri, $statut, MAX_AUTEURS_PAR_PAGE, $nombre_auteurs,$cherche);
+
+               $arg = ($statut ? ("&statut=" .urlencode($statut)) : '')
+                 .  ($cherche ? ("&recherche=" . urlencode($cherche)) : '');
+
+               $recherche = auteurs_tranches(afficher_n_auteurs($auteurs), $debut, $lettre, $tri, $statut, MAX_AUTEURS_PAR_PAGE, $nombre_auteurs, $arg);
 
                if ($cherche){
+                       $cherche = htmlspecialchars($cherche);
                        if (count($auteurs))
                                $recherche = "<h3>". _T('info_resultat_recherche')." &laquo;$cherche&raquo;</h3>" . $recherche;
                        else
@@ -79,7 +84,7 @@ function exec_auteurs_args($statut, $tri, $debut, $recherche=NULL, $trouve='', $
                        $visiteurs ? _T('info_visiteurs') :  _T('info_auteurs'),
                                     "auteurs","redacteurs");
 
-               echo bandeau_auteurs($tri, $visiteurs);
+               echo bandeau_auteurs($visiteurs);
                
                echo  $trouve, "<div class='nettoyeur'></div>";
 
@@ -90,9 +95,9 @@ function exec_auteurs_args($statut, $tri, $debut, $recherche=NULL, $trouve='', $
 }
 
 // http://doc.spip.org/@bandeau_auteurs
-function bandeau_auteurs($tri, $visiteurs)
+function bandeau_auteurs($visiteurs)
 {
-       global $connect_id_auteur,   $connect_statut,   $connect_toutes_rubriques;
+       global $connect_id_auteur;
 
        $ret = debut_gauche("auteurs",true) . debut_boite_info(true);
 
@@ -101,16 +106,16 @@ function bandeau_auteurs($tri, $visiteurs)
        else 
                $ret .= "\n<p class='arial1'>"._T('info_gauche_auteurs'). '</p>';
 
-       if ($connect_statut == '0minirezo')
+       if (autoriser('voir', 'auteur'))
                $ret .= "\n<p class='arial1'>". _T('info_gauche_auteurs_exterieurs') . '</p>';
 
        $ret .= fin_boite_info(true);
 
        $ret .= pipeline('affiche_gauche',array('args'=>array('exec'=>'auteurs'),'data'=>''));
 
-       if ($connect_statut == '0minirezo') {
+       if (autoriser('voir', 'auteur')) {
 
-               if ($connect_toutes_rubriques) 
+               if (autoriser('creer', 'auteur'))
                        $res = icone_horizontale(_T('icone_creer_nouvel_auteur'), generer_url_ecrire("auteur_infos", 'new=oui'), "auteur-24.gif", "creer.gif", false);
                else $res = '';
 
@@ -173,13 +178,10 @@ function lettres_d_auteurs($query, $debut, $max_par_page, $tri)
 }
 
 // http://doc.spip.org/@auteurs_tranches
-function auteurs_tranches($auteurs, $debut, $lettre, $tri, $statut, $max_par_page, $nombre_auteurs, $cherche='')
+function auteurs_tranches($auteurs, $debut, $lettre, $tri, $statut, $max_par_page, $nombre_auteurs, $arg='')
 {
        global $spip_lang_right;
 
-       $arg = ($statut ? ("&statut=" .urlencode($statut)) : '')
-          .  ($cherche ? ("&recherche=" . urlencode($cherche)) : '');
-
        $res ="\n<tr class='titrem'>"
        . "\n<th style='width: 20px'>";
 
@@ -291,37 +293,40 @@ function auteurs_href($clic, $args='', $att='')
 // http://doc.spip.org/@requete_auteurs
 function requete_auteurs($tri, $statut, $recherche=NULL)
 {
-       global $connect_statut, $spip_lang, $connect_id_auteur;
+       global $connect_id_auteur;
 
-       //
-       // Construire la requete
-       //
-       
        // si on n'est pas minirezo, ignorer les auteurs sans article
        // sauf les admins, toujours visibles.
 
        // limiter les statuts affiches
-       if ($connect_statut == '0minirezo') {
+       if (autoriser('voir', 'auteur')) {
                if ($statut[0]=='!') {
                          $statut = substr($statut,1); $not = "NOT";
                } else $not = '';
                $visit = !statut_min_redac($statut);
                $statut = preg_split('/\W+/', $statut); 
-               $sql_visible = sql_in("aut.statut", $statut, $not);
+               $where = sql_in("aut.statut", $statut, $not);
        } else {
-               $sql_visible = "(
+               $where = "(
                        aut.statut = '0minirezo'
                        OR aut.id_auteur=$connect_id_auteur
                        OR " . sql_in('art.statut', array('prop', 'publie'))
                . ')';
                $visit = false;
        }
+       if ($recherche) $where .= " AND $recherche" ;
+       return requete_auteurs_tri($tri, $where, $visit);
+}
+
+function requete_auteurs_tri($tri, $where, $visit=false)
+{
+       global $spip_lang;
 
        $sql_sel = '';
        $join = $visit ?
         ""
         : 
-        (strpos($sql_visible,'art.statut')?("LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur" . " LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)"):"");
+        (strpos($where,'art.statut')?("LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur" . " LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)"):"");
        
        // tri
        switch ($tri) {
@@ -331,7 +336,7 @@ function requete_auteurs($tri, $statut, $recherche=NULL)
                $join = $visit ?
                 "LEFT JOIN spip_forum AS lien ON aut.id_auteur=lien.id_auteur"
                 : ("LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur" 
-               . (strpos($sql_visible,'art.statut')?" LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)":""));
+               . (strpos($where,'art.statut')?" LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)":""));
                break;
        
        case 'site':
@@ -360,9 +365,7 @@ function requete_auteurs($tri, $statut, $recherche=NULL)
                                "UPPER(aut.nom) AS unom", 
                                $sql_sel),array('',null)),
                     'FROM' => "spip_auteurs AS aut $join",
-                    'WHERE' => $sql_visible . ($recherche 
-                               ? " AND $recherche" 
-                               : ''),
+                    'WHERE' => $where,
                     'GROUP BY' => "aut.statut, aut.nom_site, aut.nom, aut.id_auteur", 
                     'ORDER BY' => $sql_order);
 }