/***************************************************************************\
* 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. *
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')." «$cherche»</h3>" . $recherche;
else
$visiteurs ? _T('info_visiteurs') : _T('info_auteurs'),
"auteurs","redacteurs");
- echo bandeau_auteurs($tri, $visiteurs);
+ echo bandeau_auteurs($visiteurs);
echo $trouve, "<div class='nettoyeur'></div>";
}
// 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);
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 = '';
}
// 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'>";
// 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) {
$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':
"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);
}